Skip to contents

This dataset contains responses from the General Social Survey (GSS) for the years 1976 and 1977, focusing on social status and tolerance towards minorities. The dataset can be used to replicate the analyses conducted in McCutcheon (1985) and Bakk et al. (2014).
It includes covariates such as interview year, age, sex, race, education level, and income. Social status-related variables include father's occupation and education level, as well as mother's education level. Tolerance towards minorities is measured by agreement with three questions: (1) allowing public speaking, (2) allowing teaching, and (3) allowing literature publication.

Usage

gss7677

Format

A data frame with 2942 rows and 14 variables:

YEAR

Interview year (1976, 1977).

COHORT

Respondent's age cohort.
Levels: (1) YOUNG, (2) YOUNG-MIDDLE, (4) MIDDLE, (5) OLD.

SEX

Respondent's sex.
Levels: (1) MALE, (2) FEMALE.

RACE

Respondent's race.
Levels: (1) WHITE, (2) BLACK, (3) OTHER.

DEGREE

Respondent's education level.
Levels: (1) LT HS, (2) HIGH-SCH, (3) HIGHER.

REALRINC

Respondent's income.

PAPRES

Father's occupational prestige.
Levels: (1) LOW, (2) MEDIUM, (3) HIGH.

PADEG

Father's education level.
Levels: (1) LT HS, (2) HIGH-SCH, (3) COLLEGE, (4) BACHELOR, (5) GRADUATE.

MADEG

Mother's education level.
Levels: (1) LT HS, (2) HIGH-SCH, (3) COLLEGE, (4) BACHELOR, (5) GRADUATE.

TOLRAC

Tolerance towards racists.

TOLCOM

Tolerance towards communists.

TOLHOMO

Tolerance towards homosexuals.

TOLATH

Tolerance towards atheists.

TOLMIL

Tolerance towards militarists.

Source

General Social Survey (GSS) 1976, 1977

References

Bakk Z, Kuha J. (2021) Relating latent class membership to external variables: An overview. Br J Math Stat Psychol. 74(2):340-362.

McCutcheon, A. L. (1985). A latent class analysis of tolerance for nonconformity in the American public. Public Opinion Quarterly, 49, 474–488.

Examples

library(magrittr)
gss500 <- gss7677[1:500,] %>% na.omit
model_stat <- slca(status(3) ~ PAPRES + PADEG + MADEG) %>%
   estimate(data = gss500, control = list(em.tol = 1e-6))
#> Error in stats::nlm(llf, logit[-c(fix0, fix1, arg$ref_idx)], fix0, fix1,     arg$ref_idx, arg$id, y = attr(mf, "y"), nobs = arg$nobs,     nvar = arg$nvar, nlev = unlist(arg$nlev), nlv = arg$nlv,     nrl = arg$nrl, nlf = arg$nlf, npi = arg$npi, ntau = arg$ntau,     nrho = arg$nrho, ul = arg$ul, vl = arg$vl, lf = arg$lf, tr = arg$tr,     rt = arg$rt, eqrl = arg$eqrl, eqlf = arg$eqlf, nc = arg$nc,     nk = arg$nk, nl = arg$nl, ncl = arg$ncl, nc_pi = arg$nc_pi,     nk_tau = arg$nk_tau, nl_tau = arg$nl_tau, nc_rho = arg$nc_rho,     nr_rho = arg$nr_rho, iterlim = 1, hessian = TRUE): missing value in parameter
summary(model_stat)
#> Error: object 'model_stat' not found
param(model_stat)
#> Error: object 'model_stat' not found

model_tol <- slca(tol(4) ~ TOLRAC + TOLCOM + TOLHOMO + TOLATH + TOLMIL) %>%
   estimate(data = gss500, control = list(em.tol = 1e-6))
summary(model_tol)
#> Structural Latent Class Model
#> 
#> Summary of model structure
#>                                    
#>  Number of manifest variables     5
#>  Number of latent class variables 1
#> 
#>  Latent variables (Root*):             
#>   Label: tol*
#>  nclass: 4   
#> 
#>  Measurement model:                                                       
#>   tol -> { TOLRAC, TOLCOM, TOLHOMO, TOLATH, TOLMIL }  a
#> 
#> 
#> Summary of manifest variables
#> 
#>  Categories for each variable:
#>           response
#>             1         2         
#>    TOLRAC   TOLERANT  INTOLERANT
#>    TOLCOM   TOLERANT  INTOLERANT
#>    TOLHOMO  TOLERANT  INTOLERANT
#>    TOLATH   TOLERANT  INTOLERANT
#>    TOLMIL   TOLERANT  INTOLERANT
#> 
#>  Frequencies for each categories:
#>           response
#>              1    2  <NA>
#>    TOLRAC   80  103     0
#>    TOLCOM   78  105     0
#>    TOLHOMO  92   91     0
#>    TOLATH   88   95     0
#>    TOLMIL   83  100     0
#> 
#> 
#> Summary of model fit
#>                                            
#>  Number of observations                 183
#>  Number of free parameters               23
#>  Log-likelihood                    -442.330
#>  Information criteria                      
#>    Akaike (AIC)                     930.659
#>    Bayesian (BIC)                  1004.477
#>  Chi-squared Tests                         
#>    Residual degree of freedom (df)        8
#>    Pearson Chi-squared (X-squared)   13.697
#>      P(>Chi)                          0.090
#>    Likelihood Ratio (G-squared)      16.458
#>      P(>Chi)                          0.036
param(model_tol)
#> PI :
#> (tol)
#>   class
#>          1       2       3       4
#>     0.2610  0.1405  0.2596  0.3390
#> 
#> RHO :
#> (a)
#>         class
#> response       1       2       3       4
#>    1(V1)  0.0598  0.0000  0.3234  0.9959
#>    2      0.9402  1.0000  0.6766  0.0041
#>    1(V2)  0.0000  0.2233  0.3765  0.8766
#>    2      1.0000  0.7767  0.6235  0.1234
#>    1(V3)  0.0001  0.2613  0.6087  0.9086
#>    2      0.9999  0.7387  0.3913  0.0914
#>    1(V4)  0.0000  0.0000  0.5896  0.9671
#>    2      1.0000  1.0000  0.4104  0.0329
#>    1(V5)  0.0000  0.3416  0.2565  1.0000
#>    2      1.0000  0.6584  0.7435  0.0000
#> 
#>     V1     V2     V3      V4     V5    
#> tol TOLRAC TOLCOM TOLHOMO TOLATH TOLMIL

model_lta <- slca(
   status(3) ~ PAPRES + PADEG + MADEG,
   tol(4) ~ TOLRAC + TOLCOM + TOLHOMO + TOLATH + TOLMIL,
   status ~ tol
) %>% estimate(data = gss500, control = list(em.tol = 1e-6))
#> Error in stats::nlm(llf, logit[-c(fix0, fix1, arg$ref_idx)], fix0, fix1,     arg$ref_idx, arg$id, y = attr(mf, "y"), nobs = arg$nobs,     nvar = arg$nvar, nlev = unlist(arg$nlev), nlv = arg$nlv,     nrl = arg$nrl, nlf = arg$nlf, npi = arg$npi, ntau = arg$ntau,     nrho = arg$nrho, ul = arg$ul, vl = arg$vl, lf = arg$lf, tr = arg$tr,     rt = arg$rt, eqrl = arg$eqrl, eqlf = arg$eqlf, nc = arg$nc,     nk = arg$nk, nl = arg$nl, ncl = arg$ncl, nc_pi = arg$nc_pi,     nk_tau = arg$nk_tau, nl_tau = arg$nl_tau, nc_rho = arg$nc_rho,     nr_rho = arg$nr_rho, iterlim = 1, hessian = TRUE): missing value in parameter
summary(model_lta)
#> Error: object 'model_lta' not found
param(model_lta)
#> Error: object 'model_lta' not found

# \donttest{
regress(model_lta, status ~ SEX, gss500)
#> Error: object 'model_lta' not found
regress(model_lta, status ~ SEX, gss500, method = "BCH")
#> Error: object 'model_lta' not found
regress(model_lta, status ~ SEX, gss500, method = "ML")
#> Error: object 'model_lta' not found
# }