Как рассчитать взвешенный z-показатель в R? - PullRequest
0 голосов
/ 26 мая 2020

Я хочу рассчитать z-оценку возраста в данных NHANES со сложной схемой выборки. Как невзвешенные (age_z1), так и взвешенные (age_z2) z-значения были получены с использованием следующего кода R. Уместно ли оценивать взвешенный z-показатель как («наблюдаемые данные» - «взвешенное среднее») / «взвешенное стандартное отклонение»? Или невзвешенный z-показатель широко используется в анализе данных NHANES? Любые предложения и комментарии приветствуются.

# ----- download data
library("nhanesA")
demo<-nhanes("DEMO_G")

names(demo)<-tolower(names(demo)) # rename to lower
demo$age=demo$ridageyr # generate age

# ----- designate weight to data 
library("survey") 
sampdesign<-svydesign(id=~sdmvpsu,
                      strata=~sdmvstra,
                      weights=~wtint2yr,
                      nest=TRUE,
                      data=demo)

# ----- calculate z-score of age

# method 1
# unweighted
demo$age_z1<-scale(demo$age,center=TRUE, scale=TRUE)

# method 2
# weighted?
mean<-svymean(~age, sampdesign, na.rm=TRUE) # weighted mean
variance<-svyvar(~age, sampdesign, na.rm=TRUE) # weighted variance
sd<-sqrt(variance) # weighted standard deviation

cbind(mean,sd)
        mean       sd
age 37.18519 22.36971

demo$age_z2<-(demo$age-37.18519)/22.36971 # z-score=(age-mean)/sd

# compare age_z1 and age_z2
compdata<-subset(demo,select=c(age,age_z1,age_z2))
head(compdata)

age     age_z1     age_z2
1  22 -0.3825472 -0.6788282
2   3 -1.1555651 -1.5281910
3  14 -0.7080284 -1.0364547
4  44  0.5125262  0.3046445
5  14 -0.7080284 -1.0364547
6   9 -0.9114542 -1.2599712

apply(compdata,2,mean)
      age        age_z1        age_z2 
 3.140262e+01  6.409979e-17 -2.584998e-01 

apply(compdata,2,sd)
      age    age_z1    age_z2 
24.578990  1.000000  1.098762 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...