R中的因果推论:治疗变量对观测数据的影响

问题描述

我的同事在大学里曾被问到这个问题,他已经设法利用该网站的帮助回答了这个问题。鉴于我们中没有人既没有大量经验,也没有很好的因果推理理论基础,因此,如果他们能够验证他的结果的正确性,他将对堆栈溢出社区表示感谢。更具体地说,他不确定是否要从方程式中删除Di是唯一需要处理无治疗变量情况的事情,或者他是否还应该做其他事情。 问题来了:

*考虑一种情况,在这种情况下,我们知道线性模型是包含三个变量(Yi,Xi,Di)的感兴趣关系的正确规范。让Yi代表个体i的一些因变量。令Di表示治疗变量。大约一半的样品被处理。如果个体i,Di取值为1 被处理,否则为0。令Xi表示i的一个混杂变量。 Xi是均值为0和标准偏差为1的随机变量。附带地讲,在生成Yi时,请不要忘记添加误差项。误差项的平均值为0,标准差为1。使用R可以从该模型生成假设数据(10,000个观测值)。对没有治疗效果的情况和有治疗效果的情况执行以下三个任务,这样您将获得两个数字。首先写下回归方程。

  1. 创建一个图,其中因变量在y轴上,混杂变量在x轴上。
  2. 在该图中,为治疗组中的个人创建一个散点,为对照组中的个人创建一个可区分的散点。
  3. 在治疗组中添加个体的回归线,在对照组中添加不同的回归线。*

这是代码

#Question 3 treatment effect

Xi <- rnorm(10000,mean=0,sd=1) 
Di <- sample(c(1,0),size =  10000,replace = TRUE,prob= c(0.5,0.5))
e <- rnorm(10000,sd=1)
Yi <- Xi + Di + e
g <- data.frame(Yi,Xi,Di,e)
plot(Yi)

www <- lm(Yi ~ Xi + e,data = g)
lm(Yi ~ Di + e,data=g)

Yi0 <- g %>% filter(Di=="0") 
Yi1 <- g %>% filter(Di=="1")

Yi2 = rbind(Yi0,Yi1)
Yi2$g = c(rep("Yi0",5044),rep("Yi1",4956))

ggplot(Yi2,aes(x= Xi,y= Yi,group=g,col=Di==("0"))) + geom_point() + 
  ggtitle("Hypothetical data") + xlab("Xi") + ylab("Xi")+ ylab("Yi")+geom_smooth(method = "lm",se=FALSE)



Yi <- Xi + e
ggplot(Yi2,se=FALSE)

#no treatment effect



Xi<-rnorm(10000,sd=1)
summary(Xi)
Ei <- rnorm(10000,sd=1)
Yi3<-Xi+Ei
df<-data.frame(Xi,Ei,Yi)

Yi3 <- lm(Yi~Xi+Ei,data=df)
ggplot(Yi3,aes(x=Xi,y=Yi,))+ 
  geom_point()+
  ggtitle("No treatment effect") +
  xlab("Xi")+ylab("Yi") +
  geom_smooth(method="lm",se=FALSE,col="blue")+theme_classic()

另外,他被问到以下问题: 您刚刚绘制了两个图表。解释为什么在控制和控制之间的简单方法差异可能无法给出正确的治疗效果答案,而对Di和Xi进行Yi回归则可以。

除了验证先前任务的正确性之外,如果有人可以解释这一点,那将是非常不错的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)