当我不想调整任何东西时使用 R 的“调查”包来预测利润(简单的 GLM)

问题描述 投票:0回答:1
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")))
r glm marginal-effects
1个回答
0
投票

我首先阅读了

?marginpred
的帮助页面,看到
marginpred
首先做了一些调整,然后交给了
predict
功能。在没有正确示例的情况下,我继续查看该页面上的示例,然后执行“svyglm 示例”并尝试我的评论建议,结果显然令人满意:

> 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
© www.soinside.com 2019 - 2024. All rights reserved.