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.
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.
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))
summary(model_stat)
#> Structural Latent Class Model
#>
#> Summary of model structure
#>
#> Number of manifest variables 3
#> Number of latent class variables 1
#>
#> Latent variables (Root*):
#> Label: status*
#> nclass: 3
#>
#> Measurement model:
#> status -> { PAPRES, PADEG, MADEG } a
#>
#>
#> Summary of manifest variables
#>
#> Categories for each variable:
#> response
#> 1 2 3 4 5
#> PAPRES LOW MIDIUM HIGH
#> PADEG LT-HS HIGH-SCH COLLEGE BACHELOR GRADUATE
#> MADEG LT-HS HIGH-SCH COLLEGE BACHELOR GRADUATE
#>
#> Frequencies for each categories:
#> response
#> 1 2 3 4 5 <NA>
#> PAPRES 62 102 19 0
#> PADEG 104 63 11 5 0
#> MADEG 86 84 4 8 1 0
#>
#>
#> Summary of model fit
#>
#> Number of observations 183
#> Number of free parameters 32
#> Log-likelihood -475.869
#> Information criteria
#> Akaike (AIC) 1015.738
#> Bayesian (BIC) 1118.442
#> Chi-squared Tests
#> Residual degree of freedom (df) 42
#> Pearson Chi-squared (X-squared) 21.078
#> P(>Chi) 0.997
#> Likelihood Ratio (G-squared) 19.658
#> P(>Chi) 0.999
param(model_stat)
#> PI :
#> (status)
#> class
#> 1 2 3
#> 0.6010 0.0965 0.3024
#>
#> RHO :
#> (a)
#> class
#> response 1 2 3
#> 1(V1) 0.4309 0.0000 0.2638
#> 2 0.5350 0.3506 0.6679
#> 3 0.0341 0.6494 0.0683
#> 1(V2) 0.9073 0.2381 0.0000
#> 2 0.0927 0.1729 0.8989
#> 3 0.0000 0.0000 0.0000
#> 4 0.0000 0.3060 0.1011
#> 5 0.0000 0.2830 0.0000
#> 1(V3) 0.7264 0.3456 0.0000
#> 2 0.2542 0.6544 0.8037
#> 3 0.0000 0.0000 0.0723
#> 4 0.0194 0.0000 0.1060
#> 5 0.0000 0.0000 0.0181
#>
#> V1 V2 V3
#> status PAPRES PADEG MADEG
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 -439.750
#> Information criteria
#> Akaike (AIC) 925.500
#> Bayesian (BIC) 999.318
#> Chi-squared Tests
#> Residual degree of freedom (df) 8
#> Pearson Chi-squared (X-squared) 10.766
#> P(>Chi) 0.215
#> Likelihood Ratio (G-squared) 11.299
#> P(>Chi) 0.185
param(model_tol)
#> PI :
#> (tol)
#> class
#> 1 2 3 4
#> 0.3569 0.3590 0.2059 0.0782
#>
#> RHO :
#> (a)
#> class
#> response 1 2 3 4
#> 1(V1) 0.0000 1.0000 0.0000 0.9999
#> 2 1.0000 0.0000 1.0000 0.0001
#> 1(V2) 0.0541 0.8620 0.3839 0.2359
#> 2 0.9459 0.1380 0.6161 0.7641
#> 1(V3) 0.0191 0.8924 0.7365 0.3059
#> 2 0.9809 0.1076 0.2635 0.6941
#> 1(V4) 0.0114 0.9536 0.4846 0.4442
#> 2 0.9886 0.0464 0.5154 0.5558
#> 1(V5) 0.0889 0.9894 0.3237 0.0000
#> 2 0.9111 0.0106 0.6763 1.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))
summary(model_lta)
#> Structural Latent Class Model
#>
#> Summary of model structure
#>
#> Number of manifest variables 8
#> Number of latent class variables 2
#>
#> Latent variables (Root*):
#> Label: status* tol
#> nclass: 3 4
#>
#> Measurement model:
#> status -> { PAPRES, PADEG, MADEG } a
#> tol -> { TOLRAC, TOLCOM, TOLHOMO, TOLATH, TOLMIL } b
#>
#> Structural model:
#> status -> { tol }
#>
#> Dependency constraints:
#> A
#> status -> tol
#>
#> Tree of structural model:
#> status -> tol
#>
#>
#> Summary of manifest variables
#>
#> Categories for each variable:
#> response
#> 1 2 3 4 5
#> PAPRES LOW MIDIUM HIGH
#> PADEG LT-HS HIGH-SCH COLLEGE BACHELOR GRADUATE
#> MADEG LT-HS HIGH-SCH COLLEGE BACHELOR GRADUATE
#> TOLRAC TOLERANT INTOLERANT
#> TOLCOM TOLERANT INTOLERANT
#> TOLHOMO TOLERANT INTOLERANT
#> TOLATH TOLERANT INTOLERANT
#> TOLMIL TOLERANT INTOLERANT
#>
#> Frequencies for each categories:
#> response
#> 1 2 3 4 5 <NA>
#> PAPRES 62 102 19 0
#> PADEG 104 63 11 5 0
#> MADEG 86 84 4 8 1 0
#> 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 61
#> Log-likelihood -897.906
#> Information criteria
#> Akaike (AIC) 1917.812
#> Bayesian (BIC) 2113.590
#> Chi-squared Tests
#> Residual degree of freedom (df) 2338
#> Pearson Chi-squared (X-squared) 641.038
#> P(>Chi) 1.000
#> Likelihood Ratio (G-squared) 276.662
#> P(>Chi) 1.000
param(model_lta)
#> PI :
#> (status)
#> class
#> 1 2 3
#> 0.4194 0.2801 0.3005
#>
#> TAU :
#> (A)
#> parent
#> child 1 2 3
#> 1 0.0000 0.1307 0.2879
#> 2 0.1907 0.2814 0.0000
#> 3 0.2134 0.5880 0.2933
#> 4 0.5959 0.0000 0.4188
#>
#> parent status
#> child tol
#>
#> RHO :
#> (a)
#> class
#> response 1 2 3
#> 1(V1) 0.3404 0.1527 0.5100
#> 2 0.6596 0.7158 0.2669
#> 3 0.0000 0.1314 0.2230
#> 1(V2) 0.9861 0.0000 0.5149
#> 2 0.0000 0.7876 0.4115
#> 3 0.0000 0.0000 0.0000
#> 4 0.0139 0.1937 0.0000
#> 5 0.0000 0.0187 0.0735
#> 1(V3) 0.8134 0.0000 0.4287
#> 2 0.1664 0.8062 0.5438
#> 3 0.0000 0.0780 0.0000
#> 4 0.0202 0.0962 0.0276
#> 5 0.0000 0.0195 0.0000
#>
#> V1 V2 V3
#> status PAPRES PADEG MADEG
#> (b)
#> class
#> response 1 2 3 4
#> 1(V1) 0.3644 0.2036 0.9901 0.0560
#> 2 0.6356 0.7964 0.0099 0.9440
#> 1(V2) 0.2640 0.5740 0.8766 0.0067
#> 2 0.7360 0.4260 0.1234 0.9933
#> 1(V3) 0.6506 0.5053 0.9074 0.0846
#> 2 0.3494 0.4947 0.0926 0.9154
#> 1(V4) 1.0000 0.1669 0.9677 0.0000
#> 2 0.0000 0.8331 0.0323 1.0000
#> 1(V5) 0.2232 0.3475 1.0000 0.0760
#> 2 0.7768 0.6525 0.0000 0.9240
#>
#> V1 V2 V3 V4 V5
#> tol TOLRAC TOLCOM TOLHOMO TOLATH TOLMIL
# \donttest{
regress(model_lta, status ~ SEX, gss500)
#> Coefficients:
#> class (Intercept) SEXFEMALE
#> 1/3 0.4700 0.2231
#> 2/3 0.0953 0.1160
regress(model_lta, status ~ SEX, gss500, method = "BCH")
#> Coefficients:
#> class (Intercept) SEXFEMALE
#> 1/3 0.556 0.361
#> 2/3 0.179 0.246
regress(model_lta, status ~ SEX, gss500, method = "ML")
#> Coefficients:
#> class (Intercept) SEXFEMALE
#> 1/3 1.112 0.449
#> 2/3 0.701 0.338
# }