我正在尝试使用 NHANES 数据在 R 中的“调查”包中复制来自 SAS 和 SUDAAN 年龄组的分位数估计,置信区间为 95%。包的 'svyby' 函数与它的 'svyquantile' 函数相结合,使您可以很容易地执行此分析;我的结果很接近,但与 SUDAAN 生成的结果不完全相同。
我相信这可能是由于“svyby”和“svyquantile”函数允许您自定义的一些参数。'svyquantile' 函数采用的参数包括 'method'、'interval.type'、'ties、'interval.type'、'return.replicates' 等。
我发现这篇文章解释了如何使用“调查”包复制一些 SUDAAN 函数,但没有解释如何复制分位数估计。通过对 SUDAAN 如何估计分位数的一些研究,我认为应该将“方法”参数设置为“线性”。除此之外,我尝试将各种参数设置为不同的参数,但没有准确地复制 SUDAAN 估计值。
有谁知道如何按组复制 SUDAAN 分位数估计和 95% 置信区间,或者有关于 SUDAAN 使用的方法的任何文档,以便使用 R 中的“调查”包更好地复制此分析?
在下面的代码中,我展示了我的方法。'svyby' 函数的结果似乎是合理的估计,但是,它们与 SUDAAN 和 SAS 产生的结果不同。我无法使用 SUDAAN 和 SAS,但我的目标是在 R 中复制他们的结果。具体来说,根据 SUDAAN 和 SAS 的 PCB 118,60 岁以上年龄组的第 75 个百分位数是 25.89 ng/g 脂质(95% CI:22.97-30.17)。谢谢你。
library(RNHANES)
library(survey)
# import NHANES 2003-2004 PCB Dataset
pcbs <- nhanes_load_data("L28DFP_C", "2003-2004", demographics = T)
# create appropriate age groups
pcbs$age <- ifelse(pcbs$RIDAGEYR < 20, "<20",
ifelse(pcbs$RIDAGEYR >= 20 & pcbs$RIDAGEYR <= 39, "20-39",
ifelse(pcbs$RIDAGEYR >= 40 & pcbs$RIDAGEYR <= 59, "40-59",
ifelse(pcbs$RIDAGEYR >= 60, "60+", ""))))
pcbs$age <- as.factor(pcbs$age)
levels(pcbs$age) = c("<20", "20-39", "40-59", "60+")
# assign survey design
nhanes.dsgn <- svydesign(id = ~SDMVPSU, strata = ~SDMVSTRA , weights = ~ WTSC2YR, data = pcbs, nest = TRUE)
# quantiles for subpopulations
svyby(~LBX118LA, ~age, nhanes.dsgn, svyquantile, quantiles=0.75, ci=TRUE, alpha=0.05,vartype="ci", na.rm=T, method = "linear")