1 votos

Problema con los pesos en el análisis de los datos transversales de la GSS

Tengo un conjunto de datos hecho de https://gss.norc.org/get-the-data

En el libro de códigos se describe cómo utilizar los pesos:

cluster VPSU;
strata VSTRAT;
weight WTSSPS /* For years before 2021, use WTSSALL or WTSSNR */; 

Voy a utilizar WTSSALL con todos los datos anteriores a 2021, así que he seleccionado todos los años que tienen estas variables: VPSU,VSTRAT y WTSSPS en mi conjunto de datos gss y luego seleccioné algunas otras variables para el análisis.

> head(gss)

# A tibble: 6 × 10
    uid class         health      age  vpsu vstrat wtssall  year race  age_group
  <int> <fct>         <fct>     <dbl> <dbl>  <dbl>   <dbl> <dbl> <fct> <fct>    
1  4602 working class excellent    38     1   7001   1.40   1975 White 25-44    
2  4603 middle class  excellent    20     1   7001   1.40   1975 White 18-24    
3  4604 working class fair         61     1   7001   0.466  1975 White 45-64    
4  4605 middle class  excellent    19     1   7001   0.932  1975 White 18-24    
5  4606 middle class  good         28     1   7001   1.40   1975 White 25-44    
6  4607 middle class  excellent    28     1   7002   0.932  1975 White 25-44   

creación de un diseño de encuesta

gss_a_design <-svydesign(id = ~vpsu, 
                           strata = ~vstrat, 
                           data = subset(gss, 
                                         !is.na(class) & 
                                         class!="no class" & 
                                         !is.na(health)), 
                           weights = ~wtssall, 
                           nest = TRUE)

resumen(gss_a_design)

Stratified 1 - level Cluster Sampling design (with replacement)
With (4153) clusters.
svydesign(id = ~vpsu, strata = ~vstrat, data = subset(gss, !is.na(class) & 
    class != "no class" & !is.na(health)), weights = ~wtssall, 
    nest = TRUE)
Probabilities:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.1144  0.9103  0.9897  1.2086  1.8179  2.5522 
Stratum Sizes: 
           1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019

No puedo decir si esto es correcto en absoluto, pero cuando estoy tratando de obtener estadísticas básicas de este diseño, hay un problema

svyby(~health, ~class, gss_a_design, svymean, deff=TRUE, ci=TRUE, vartype="ci")
                      class healthexcellent healthgood healthfair healthpoor ci_l.healthexcellent
lower class     lower class       0.1554207  0.3593957  0.3069389 0.17824468            0.1379645
working class working class       0.2580988  0.4909776  0.2021652 0.04875846            0.2508581
middle class   middle class       0.3583512  0.4477918  0.1543764 0.03948070            0.3501909
upper class     upper class       0.4787682  0.3578701  0.1250240 0.03833767            0.4486061
              ci_l.healthgood ci_l.healthfair ci_l.healthpoor ci_u.healthexcellent ci_u.healthgood
lower class         0.3368265       0.2853632      0.16147377            0.1728769       0.3819650
working class       0.4828618       0.1956606      0.04537990            0.2653394       0.4990935
middle class        0.4396152       0.1484209      0.03639970            0.3665115       0.4559683
upper class         0.3293159       0.1055183      0.02731352            0.5089303       0.3864243
              ci_u.healthfair ci_u.healthpoor DEff.healthexcellent DEff.healthgood DEff.healthfair
lower class         0.3285147      0.19501558                   NA              NA              NA
working class       0.2086697      0.05213701             131.1441        126.2381        125.6425
middle class        0.1603318      0.04256171             158.8733        148.3204        149.0428
upper class         0.1445298      0.04936182                   NA              NA              NA
              DEff.healthpoor
lower class                NA
working class         117.881
middle class          137.321
upper class                NA
Warning messages:
1: In svymean.survey.design2(data, design[byfactor %in% byfactor[i],  :
  Sample size greater than population size: are weights correctly scaled?
2: In svymean.survey.design2(data, design[byfactor %in% byfactor[i],  :
  Sample size greater than population size: are weights correctly scaled?

En las clases inferiores y superiores no veo la diferencia de efecto de diseño y esto también me confunde. ¿Significa esto que las ponderaciones están mal aplicadas y que mi resultado estará sesgado y la inferencia también será errónea? ¿Cuál es la solución para este problema y cómo analizar esta encuesta correctamente?

Gracias

1voto

l1feh4ck3r Puntos 81

Si no recuerdo mal, nrow(gss) == sum( gss$wtssall ) en lugar de sumar a toda la población no institucionalizada de nosotros los adultos (258M en 2020) como una simple solución para eliminar tanto la advertencia como la NA , tal vez antes de la svydesign() llamar, sólo inflar la columna de pesos para que realmente sume el número de individuos que realmente representa en lugar del número de encuestados..

gss[ , 'wtssall_scaled' ] <- gss[ , 'wtssall' ] * 258000000 / nrow( gss )

y luego usar weights = ~ wtssall_scaled como su peso en lugar de ~ wtssall al hacer el diseño de la encuesta?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X