您好我想用二项式响应变量运行两阶段最小二乘回归。 对于连续响应变量,我使用" tsls" R包中的选项" sem"。
这是我的命令,想知道我做得对。
(x:内生变量,z:工具变量,y:响应变量(0或1))
xhat<-lm(x~z)$fitted.values
R<-glm(y~xhat, family=binomial)
R$residuals<-c(y - R$coef[1]+x*R$coef[2])
谢谢
答案 0 :(得分:0)
这不是很正确。对于R中的glm()
函数,family=binomial
选项默认为逻辑回归。因此,您的残差计算不会根据需要转换残差。
您可以使用residuals.glm()
函数自动生成广义线性模型的残差。您可以将residuals()
函数用于线性模型。同样,您可以使用predict()
函数而不是lm(x~z)$fitted.values
来获取xhats。但是,因为在这种情况下你有xhat和x(不是同一个变量),所以使用接近上面解决方案的代码(但使用plogis()
函数进行logit转换):
stageOne <- lm(x ~ z)
xhat <- predict(stageOne)
stageTwo <- glm(y ~ xhat, family=binomial)
residuals <- y - plogis(stageTwo$coef[1] + stageTwo$coef[2]*x)
predict()
和residuals()
或residuals.glm()
函数的一个不错的功能是它们可以扩展到其他数据集。