0

我正在尝试使用 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")
4

1 回答 1

0

从“调查”包的文档中:“结合 interval.type="betaWald" 和 ties="discrete" 是(接近)Shah 和 Vaish(2006)在某些版本的 SUDAAN 中使用的提议。”</p >

所以,

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")
于 2019-02-07T01:44:20.603 回答