【发布时间】:2020-09-08 09:29:48
【问题描述】:
我正在使用调查设计进行一项研究,以预测 2017 年至 2030 年数据集中每年的手术总数。我目前正在使用泊松回归来创建这些预测估计值。
svydesign(
data = four,
strata = ~NIS_STRATUMnew,
ids = ~NISIDnew,
weights = ~DISCWTnew,
nest = T
)
我能够成功地使用以下方法为我们拥有数据的年份(2017 年之前)生成估计值和准确的置信区间:
kneetotal1<- svyby(~kneePJI, ~YEAR, design = mydesign, FUN = svytotal, vartype = "ci")
但是,如果我尝试直接使用我的数据进行预测 (1) 或使用 svyby (2) 结果做出预测:
(1)
AdjPoissonKnee <- svyglm(kneePJI ~ YEAR, family = poisson(), design = mydesign)
years <- data.frame(YEAR = 2018:2030)
predictHip <- predict(AdjPoissonHip, newdata = data.frame(YEAR = 2018:2030), type = "response", se.fit =TRUE, interval = "predict")
(这似乎只是产生了每个人的程序可能性。我不确定如何为此产生年度累积总和以及置信区间)
(2)
futureyears <- data.table(YEAR = 2018:2030)
AdjPoissonKnee <- glm(kneePJI ~ YEAR, family = poisson(), data=kneetotal1)
kneepredict <- predict(object = AdjPoissonKnee, newdata=futureyears, type = "response")
数据集非常大,因此可能会导致预测间隔非常窄的问题。 Lmk 如果有办法我可以通过添加一些数据的 sn-p 来提供帮助。
示例输出 (2) 与 2002-2017 年的 svyby 相结合:
kneetotal1<- svyby(~kneePJI, ~YEAR, design = mydesign, FUN = svytotal, vartype = "ci")
> kneetotal1
YEAR kneePJI
2002 8205.194
2003 9648.019
2004 10362.076
2005 11771.961
2006 12099.399
2007 12993.681
2008 15438.871
2009 14303.562
2010 16051.562
2011 17158.166
2012 17055.006
2013 18064.991
2014 19080.006
2015 19429.988
2016 18070.002
2017 18399.995
AdjPoissonKnee <- glm(kneePJI ~ YEAR, family = poisson(), data=kneetotal1)
kneese <- predict(object = AdjPoissonKnee, newdata=futureyears, type = "response", interval = "prediction", se.fit =TRUE)
> kneese
$fit
1 2 3 4 5 6 7 8 9 10 11 12 13
22107.84 23232.34 24414.04 25655.84 26960.81 28332.15 29773.25 31287.64 32879.07 34551.44 36308.87 38155.70 40096.46
$se.fit
1 2 3 4 5 6 7 8 9 10 11 12 13
87.14235 100.68424 115.63713 132.05885 150.02228 169.61303 190.92798 214.07449 239.16993 266.34157 295.72666 327.47263 361.73741
> stderrKnee <- kneese$se.fit
> predfitKnee <- kneese$fit
> reserrsqKnee <- predfitKnee^2*summary(AdjPoissonKnee)$dispersion^2
> prederrsqKnee <- stderrKnee^2 + reserrsqKnee
> lower_pi <- predfitKnee - 1.96 * sqrt(prederrsqKnee)
> upper_pi <- predfitKnee + 1.96 * sqrt(prederrsqKnee)
> lower_pi
1 2 3 4 5 6 7 8 9 10 11 12 13
-21223.86 -22303.48 -23438.01 -24630.27 -25883.19 -27199.86 -28583.52 -30037.57 -31565.61 -33171.39 -34858.88 -36632.22 -38495.80
> upper_pi
1 2 3 4 5 6 7 8 9 10 11 12 13
65439.55 68768.16 72266.09 75941.96 79804.81 83864.16 88130.01 92612.86 97323.74 102274.27 107476.62 112943.62 118688.72
【问题讨论】:
标签: r prediction survey poisson