gpt4 book ai didi

r - glm 和相对风险 - 在 R 中复制 Stata 代码

转载 作者:行者123 更新时间:2023-12-03 20:20:22 25 4
gpt4 key购买 nike

谁能帮我在 R 中复制这些相对风险计算(及其置信区间)?

描述了在 Stata 中使用的类似过程 here .谁能告诉我如何在 R 中做到这一点(我的数据有集群和层,但我举了一个更简单的例子)?我已经尝试过 relrisk.est 函数,但我宁愿使用调查包,因为它可以处理非常复杂的设计。我还想比较 Stata 和 R 的估计值。我按照建议使用泊松 here .

###STATA CODE
use http://www.ats.ucla.edu/stat/stata/faq/eyestudy
tabulate carrot lenses
*same as R binomial svyglm below
xi: glm lenses carrot, fam(bin)
*switch reference code
char carrot[omit] 1
xi: glm lenses i.carrot, fam(poisson) link(log) nolog robust eform

###R
library(foreign)
library(survey)
D<-read.dta("http://www.ats.ucla.edu/stat/stata/faq/eyestudy.dta")
table(D$lenses,D$carrot)
D$wgt<-rep(1,nrow(D))
Dd<-svydesign(id=~1,data=D,weights=~wgt)
#change category and eform....?
svyglm(lenses~carrot,Dd,family=binomial)
svyglm(lenses~carrot,Dd,family=quasipoisson(log))

最佳答案

您的示例是一个简单的数据集,因此您根本不需要使用调查包。我还建议,在使用 R 学习多元回归时,您可以从更简单的示例开始,逐步建立对所涉及方法的理解。

毕竟,我的观点是 Stata 和 R 的哲学不同。 Stata 很容易向您抛出大量信息,而您不知道它的含义或它是如何得出的。另一方面,R 可以同样(或什至更)强大和更通用,但缺乏 Stata 的“自动化”并迫使您慢慢来获得想要的结果。

这是您的Stata代码的更字面翻译:

require(foreign)
data <- read.dta("http://www.ats.ucla.edu/stat/stata/faq/eyestudy.dta")
with(data, table(carrot, lenses))
glm.out.1 <- glm(lenses ~ carrot, family="binomial", data=data)
summary(glm.out.1)
logLik(glm.out.1) # get the log-likelihood for the model, as well
glm.out.2 <- glm(lenses ~ factor(carrot, levels=c(1,0)), family="poisson"(link="log"), data=data)
summary(glm.out.2)
logLik(glm.out.2)
exp(cbind(coefficients(glm.out.2), confint(glm.out.2)))

# deriving robust estimates. vcovHC() is in the sandwich package.
require(sandwich)
robSE <- sqrt(diag(vcovHC(glm.out.2, type="HC")))[2]
rob <- coef(glm.out.2)[2]
rob <- exp(c(rob, rob+qnorm(0.025)*robSE, rob-qnorm(0.025)*robSE))
names(rob) <- c("", "2.5 %", "97.5 %")
rob

请注意 (link="log")在第二个 glm() call 不是必须的,因为它是 family="poisson" 时的默认链接函数.

为了得出“稳健”的估计,我必须阅读 this ,这非常有帮助。您必须使用 vcovHC()使用三明治包中的函数来获得与由 glm() 计算的矩阵不同的方差-协方差矩阵,并使用它来计算标准误差和参数估计。

“可靠”的估计与我从 Stata 得到的几乎相同,精确到小数点后第三位。所有其他结果完全相同;运行代码并亲自查看。

哦,还有一件事:当你在非分层设计中使用 glm() 找到自己的方式时,然后在 survey 上映射你的方式包,其中包含针对复杂设计修改的此分析功能和其他分析功能的对应项。我还建议您阅读 Thomas Lumley 的书“Complex Surveys: A guide to analysis using R”。

关于r - glm 和相对风险 - 在 R 中复制 Stata 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14301999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com