我正在尝试用NHANES数据在R中复制SAS和SUDAAN中年龄组的95%置信区间的分位数估计值。该软件包的'svyby‘函数与其'svyquantile’函数相结合,使您可以非常轻松地执行此分析;我的结果很接近,但与SUDAAN生成的结果并不完全相同。
我相信这可能是因为'svyby‘和'svyquantile’函数允许你自定义的一些参数。'svyquantile‘函数接受的参数包括'method’、'interval.type‘、'ties’、'interval.type‘、’function .replates‘等。
我找到了一个调查,它解释了如何用‘this article’包复制一些SUDAAN函数,但没有解释如何复制分位数估计。通过对SUDAAN如何估计分位数的一些研究,我认为“方法”参数应该设置为“线性”。除此之外,我还尝试将各种参数设置为不同的参数,但没有幸运地准确地复制SUDAAN估计。
有谁知道如何按组复制SUDAAN分位数估计值和95%置信区间,或者有任何关于SUDAAN使用的方法的文档,以便更好地使用R中的“调查”包复制此分析?
在下面的代码中,我展示了我的方法。'svyby‘函数的结果似乎是合理的估计,然而,它们与SUDAAN和SAS产生的结果并不相同。我无法访问SUDAAN和SAS,但我的目标是在R中复制他们的结果。具体来说,根据SUDAAN和SAS,PCB118的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")
发布于 2019-02-07 09:44:21
从“调查”包的文档中可以看出:“结合interval.type="betaWald”和ties=“离散”是(接近)沙阿和瓦伊什(2006)在某些版本的SUDAAN中使用的建议。“
所以,
PCB118LA <- svyby(~LBX118LA, ~age, nhanes.dsgn, svyquantile, quantiles = 0.75, ci=TRUE, alpha=0.05, vartype="ci", na.rm=T, method = "linear", ties = "discrete", interval.type="betaWald")
https://stackoverflow.com/questions/54542230
复制相似问题