提问人:Alex 提问时间:10/19/2023 更新时间:10/19/2023 访问量:29
当我不想调整任何内容时,使用 R 的“调查”包预测利润率(简单的 GLM)
Predictive margins using R's "survey" package when I don't want to adjust for anything (simple GLM)
问:
library(survey) # Analysis of Complex Survey Samples
library(srvyr) # 'dplyr' inspired syntactic style
# complex survey design
design <- data %>% as_survey_design(ids = HOSP_NRD, weights = DISCWT, strata = NRD_STRATUM)
# create my survey-weighted GLM
fit_cost <- svyglm(Costs1 ~ 1,
design = design,
family = Gamma(link = "log"))
# predictive marginal means works
svypredmeans(fit_cost, ~group)
我无法弄清楚如何在不调整任何内容的情况下让 marginpred 命令工作。我只想要一个简单的 GLM。
它给出以下错误:“eval(e[[2L]], where) 中的错误: 缺少参数“adjustfor”,无默认值”。
# Standardised predictions (predictive margins) for regression models
marginpred(fit_cost,
predictat = data.frame(group = c("a", "b")))
答:
0赞
IRTFM
10/19/2023
#1
我首先阅读了帮助页面,看到首先进行了一些调整,然后移交给该功能。在没有合适的示例的情况下,我继续查看该页面上的示例,然后执行“svyglm”示例并尝试我的评论建议,结果显然令人满意:?marginpred
marginpred
predict
> set.seed(42)
> df<-data.frame(x=rnorm(100))
> df$time<-rexp(100)*exp(df$x-1)
> df$status<-1
> df$group<-(df$x+rnorm(100))>0
> des<-svydesign(id=~1,data=df)
Warning message:
In svydesign.default(id = ~1, data = df) :
No weights or probabilities supplied, assuming equal probability
> newdf<-data.frame(group=c(FALSE,TRUE), x=c(0,0))
>
> logisticm <- svyglm(group~time, family=quasibinomial, design=des)
> newdf$time<-c(0.1,0.8)
> logisticpred <- marginpred(logisticm, adjustfor=~x, predictat=newdf)
> predict(logisticm)
link SE
1 -0.279206 0.2156
2 -0.719218 0.2707
3 -0.813465 0.2988
4 -0.856459 0.3127
5 -0.722535 0.2716
# elided next 95 results
评论