1 votos

Estimaciones cuantílicas a partir de imputación múltiple (paquete de encuestas en R)

Actualmente estoy leyendo "Encuestas complejas: A Guide to Analysis Using R", de Thomas Lumley. Me interesan especialmente los métodos estadísticos utilizados para tratar los datos que faltan en las encuestas complejas. En el capítulo 9 del libro de Lumley se analizan los métodos de estimación bifásica e imputación múltiple.

Intento encontrar estimaciones de medias y cuantiles combinando 5 conjuntos de datos generados por imputación múltiple (es decir, valores perdidos imputados). Más concretamente, estoy utilizando datos de NHANES III (disponibles como archivo .db en el sitio web de Lumley, es decir. http://r-survey.r-forge.r-project.org/svybook/ ), y estoy intentando estimar la media así como los cuantiles 0,5 y 0,9 para el colesterol total (chol) estratificado por edad (agegp) y sexo (HSSEX). Puedo obtener estimaciones adecuadas para la media, pero recibo un mensaje de error cuando intento calcular estimaciones para los cuantiles (véase el código más abajo).

imp <- imputationList(c("set1","set2","set3","set4","set5"),dbtype="SQLite",dbname="imp.db")
design <- svydesign(id=~SDPPSU6,strat=~SDPSTRA6,weight=~WTPFQX6,data=imp,nest=TRUE)    

res_mean <- with(subset(designs,age>=20),svyby(~chol,~agegp+HSSEX,svymean))
summary(MIcombine(res_mean),digits=2)

    Multiple imputation results:
          with(subset(design, age >= 20), svyby(~chol,~agegp+HSSEX,svymean))
          MIcombine.default(res_mean)
               results  se (lower upper) missInfo
    [20,40).1      191 1.2    188    193     13 %
    [40,60).1      213 1.3    210    215     15 %
    [60,Inf).1     212 1.3    210    215      2 %
    [20,40).2      186 1.0    184    188      7 %
    [40,60).2      213 1.4    211    216     12 %
    [60,Inf).2     233 1.6    230    236     15 %

res_quantile <- with(subset(designs,age>=20),svyby(~chol,~agegp+HSSEX,svyquantile,quantiles=c(0.5,0.9),se=TRUE))

Error in t(sapply(results, unwrap)) : 
  error in evaluating the argument 'x' in selecting a method for function 't': Error in t(matrix(as.vector(object$CIs), nrow = 2)) : 
  error in evaluating the argument 'x' in selecting a method for function 't': Error in matrix(as.vector(object$CIs), nrow = 2) : 
  'data' must be of a vector type, was 'NULL'

Agradecería cualquier ayuda... Gracias.

2voto

l1feh4ck3r Puntos 81

Ejemplo mínimo reproducible la próxima vez por favor

library(survey)
library(mitools)
data.dir<-system.file("dta",package="mitools")
files.men<-list.files(data.dir,pattern="m.\\.dta$",full=TRUE)
    men<-imputationList(lapply(files.men, foreign::read.dta))
    files.women<-list.files(data.dir,pattern="f.\\.dta$",full=TRUE)
women<-imputationList(lapply(files.women, foreign::read.dta))
men<-update(men, sex=1)
women<-update(women,sex=0)
all<-rbind(men,women)

designs<-svydesign(id=~id, strata=~sex, data=all)

results<-with(designs, svyby(~cistot,~sex,svyquantile,c(0.5,0.9),keep.var=TRUE,se=T,ci=T))

MIcombine(results)

results2<-with(subset(designs,wave>2), svyby(~cistot,~sex,svyquantile,c(0.5,0.9),keep.var=TRUE,se=T,ci=T))

MIcombine(results2)

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