在 R 中具有交互作用的 logit 模型的预测概率(分类变量)

时间:2021-03-18 05:06:13

标签: r prediction glm interaction

大家好,

1) 问题。

我正在尝试通过两个分类变量的交互来获得 logit 模型的预测概率(摘要和绘图)。但是,我一直无法这样做。

2) 描述。

2.1) 研究问题。

执法官员 (LEO) 在将吸毒者 (PWUD) 转介到卫生计划方面的机构、态度和规范是否决定了墨西哥蒂华纳的此类转介?

2.2) 变量

2.2.1) 因变量。

推荐(参考)。在过去 6 个月内,您将吸毒者介绍给社会或健康计划多少次?分类变量:0 = 有时或总是,1 = 从不或很少。

2.2.2) 自变量。
  • Agency (agen)。 如果我想将吸毒者推荐给健康计划,我会知道如何做。分类变量:0 = 同意,1 = 既不同意也不反对,2 = 不同意。

  • 态度(atti)。警察的职责是将吸毒者转介到健康和社会服务机构。分类变量:0 = 同意,1 = 既不同意也不反对,2 = 不同意。

  • Norm(规范)。我的上司会表扬我将吸毒者推荐给健康和社会服务机构。分类变量:0 = 同意,1 = 既不同意也不反对,2 = 不同意。

  • 逮捕(逮捕)。在过去 6 个月中,您因持有注射器而逮捕过某人的频率如何?分类变量:0 = 同意,1 = 既不同意也不反对,2 = 不同意。

  • 年龄(年龄)。您的年龄是多少?数值变量:20-70。

2.3) 假设

H1. 同意知道如何将 PWUD 推荐给健康计划与在过去六个月中总是或有时向他们推荐此类计划呈正相关。

H2. 同意警察的职责是将 PWUD 转介到健康计划与在过去六个月中总是或有时将它们转介到此类计划呈正相关.

H3. 同意主管将 PWUD 推荐给健康计划与他们在过去六个月中总是或有时推荐给此类计划正相关。 >

H4. 在过去六个月中总是或有时因持有注射器而逮捕某人与在同一时期总是或有时将吸毒者推荐给健康计划呈正相关时间。

H5. 在过去六个月中总是或有时因持有注射器而逮捕某人正在缓和规范对警方转介的影响。

H6.多一岁与警方转介呈正相关。

我知道如何在 R 中计算没有交互效应的预测概率。但是,我无法通过交互效应来计算。

3) 代码。

3.1) 打开数据集。

d<-read.dta("./d4.dta")

3.2) Logit 回归。

library(ggplot2)

# Model 1
summary(m1<-glm(refe~agen+atti+norm+arre+age,d4,family=binomial(link="logit")))
exp(cbind(OR = coef(m1), confint(m1)))
100*(exp(m1$coef)-1)

# Model 2
summary(m2<-glm(refe~agen+atti+norm+arre+age+arre:norm,d4,family=binomial(link="logit")))
exp(cbind(OR = coef(m2), confint(m2)))
100*(exp(m2$coef)-1)

3.3) 模型 1 的预测概率

nd2<-with(d4,data.frame(age=rep(seq(from=20,to=70)),
                        agen=factor(rep(0:2, each = 51)),
                        atti=factor(rep(0:2, each = 153)),
                        norm=factor(rep(0:2, each = 459)),
                        arre=factor(rep(0:1, each = 1377))))
nd3<-cbind(nd2, predict(m1,newdata =nd2, type = "link",
                        se = TRUE))
nd3<- within(nd3, {
  PredictedProb <- plogis(fit)
  LL <- plogis(fit - (1.96 * se.fit))
  UL <- plogis(fit + (1.96 * se.fit))
})
summary(nd3)

3.4) 模型 1 具有特定值的预测概率图

nd3%>%
  filter(agen == 0)%>% # 0=agree
  filter(atti == 0)%>% # 0=agree
  filter(norm == 0)%>% # 0=agree
  filter(arre == 1)%>% # 0=never/rarely
  ggplot(aes(age, PredictedProb))+ geom_line(aes(), colour="blue", size = 1)+
  geom_ribbon(aes(ymin = LL,ymax = UL), colour="blue", alpha = 0.2)+ 
  labs(title="Profile 1. Agency, attitude & Norm = Agree and Arrest = Never/Rarely",
       caption="SHIELD project")+
  xlab("Age")+ylab("Probability")+ylim(0,1)

我想为模型 2 执行步骤 3.3) 和 3.4)。我尝试使用不同的包(即“效果”、“mfx”、“边距”和“中介”)来执行此操作”)。我还查阅了有关该主题的 William Greene (2010) 和 Ai & Norton (2003) 论文。但是,我无法获得具有交互作用的预测概率。

欢迎任何指导,感谢您的时间。

最好,

马里奥。

0 个答案:

没有答案