Как тиражировать 75-процентные и 95% доверительные интервалы SUDAAN по возрастным группам в пакете «обследования» R? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь повторить квантильные оценки с 95% доверительными интервалами по возрастным группам из SAS и SUDAAN в пакете «опрос» в R с данными NHANES.Функция пакета svyby в сочетании с функцией svyquantile позволяет довольно легко выполнить этот анализ;мои результаты близки, но не совсем совпадают с результатами, генерируемыми SUDAAN.

Я полагаю, что это может быть связано с рядом аргументов, которые функции svyby и svyquantile позволяют настраивать.Аргументы, которые принимает функция 'svyquantile', включают 'method', 'interval.type', 'связей,' interval.type ',' return.replicates 'и т. Д.

Я нашел эта статья , которая объясняет, как реплицировать некоторые функции SUDAAN с пакетом 'survey', но не объясняет, как копировать квантильные оценки.В результате некоторых исследований того, как SUDAAN оценивает квантили, я считаю, что аргумент «метод» должен быть установлен как «линейный».Кроме того, я попытался установить различные аргументы для различных параметров, но не повезло, точно воспроизводя оценки SUDAAN.

Кто-нибудь знает, как реплицировать квантильные оценки SUDAAN и 95% доверительные интервалы по группам, илииметь какую-либо документацию по методологии, которую использует SUDAAN, чтобы лучше воспроизвести этот анализ, используя пакет 'survey' в R?

В приведенном ниже коде я продемонстрировал свой подход.Результаты функции 'svyby' представляются разумными оценками, однако они не идентичны результатам, полученным от SUDAAN и SAS.У меня нет доступа к SUDAAN и SAS, но моя цель - воспроизвести их результаты в R. В частности, 75-й процентиль для возрастной группы 60+ по SUDAAN и SAS для PCB 118 составляет 25,89 нг / г липидов (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")

1 Ответ

0 голосов
/ 07 февраля 2019

Из документации к пакету 'survey': «Объединение интервал

Итак,

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")
...