我大致复制了this代码:
library(haven)
library(survey)
library(dplyr)
nhanesDemo <- read_xpt(url("https://wwwn.cdc.gov/Nchs/Nhanes/2015-2016/DEMO_I.XPT"))
# Rename variables into something more readable
nhanesDemo$fpl <- nhanesDemo$INDFMPIR
nhanesDemo$age <- nhanesDemo$RIDAGEYR
nhanesDemo$gender <- nhanesDemo$RIAGENDR
nhanesDemo$persWeight <- nhanesDemo$WTINT2YR
nhanesDemo$psu <- nhanesDemo$SDMVPSU
nhanesDemo$strata <- nhanesDemo$SDMVSTRA
# Select the necessary columns
nhanesAnalysis <- nhanesDemo %>%
select(fpl, age, gender, persWeight, psu, strata)
# Set up the design
nhanesDesign <- svydesign(id = ~psu,
strata = ~strata,
weights = ~persWeight,
nest = TRUE,
data = nhanesAnalysis)
# Select those between the agest of 18 and 79
ageDesign <- subset(nhanesDesign, age > 17 & age < 80)
他们计算简单的算术平均值如下:
# Arithmetic mean
svymean(~age, ageDesign, na.rm = TRUE)
我想计算(1)使用svymean
或一些相关方法计算几何平均值(2)几何平均值的95%置信区间,如果可能的话,无需手动使用SE。
svymean(~log(age), log(ageDesign), na.rm = TRUE)
但这会引发一个错误,我该怎么做
1条答案
按热度按时间7dl7o3gd1#
您希望取变量的对数,而不是整个调查设计的对数(这没有任何意义)
下面介绍如何计算log(年龄)的平均值,获得置信区间,然后将其取幂到几何平均值尺度
或者,您可以先求幂,然后构造置信区间:
我希望第一种方法一般能给予更好的置信区间,但在这里几乎没有什么区别。