有人可以帮我复制这些相对风险计算(及其置信区间)吗?
描述了Stata中使用的类似程序here。任何人都可以告诉我如何在R中做到这一点(我的数据有集群和分层,但我采取了一个更简单的例子)?我已经尝试了relrisk.est功能,但我宁愿使用调查包,因为它处理非常复杂的设计。我还想比较Stata和R估计。我正在使用Poisson作为建议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))
答案 0 :(得分:6)
您的示例是一个简单的数据集,因此您根本不需要使用调查包。我还建议,在使用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()
不是必需的,因为它是family="poisson"
时的默认链接功能。
为了得出“稳健”的估计值,我必须阅读this,这非常有帮助。您必须使用三明治包中的vcovHC()
函数来获得与glm()
计算的方差不同的方差 - 协方差矩阵,并使用它来计算标准误差和参数估计值。
“强劲”估计几乎与我从Stata得到的估计相同,直到小数点后三位。所有其他结果完全相同;运行代码并亲自查看。
哦,还有一件事:当您使用非分层设计的glm()找到自己的方式时,请在survey
包中找到自己的方式,该包中包含此对象以及为复杂修改的其他分析函数设计。我还建议您阅读Thomas Lumley的书“复杂调查:使用R分析指南”。