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))
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    
# }