使用R进行逻辑回归

3

请注意,还有一个网站 http://stats.stackexchange.com/ - NPE
2
不完全是重复,但肯定是相关和相关的:http://stackoverflow.com/questions/3439248/logistic-regression-in-r-sas-like-output - joran
链接中的所有统计数据都可以以某种方式获得...你具体要找什么?此外,R有各种进行回归分析的方法,这些方法取决于您的数据格式,因此如果您在问题中提供您所寻找的内容、数据样本甚至是您现在分析的方式,将为您提供更好的答案。 - John
你能否在你的问题中更具体地说明拟合优度统计量?我在浏览列表时注意到的仅有AIC、BIC(SC)和对数似然,这些在R中非常容易计算/显示。你能确认一下吗?或者还有其他的统计量(例如Nagelkerke's R^2等)吗? - Ben Bolker
具体而言,我正在寻找AIC、对数似然比(LR)、自由度(DF)、LR DF、LR Pr > Chi Sq用于截距和回归系数。 - josephmisiti
好的。有点让人烦恼的是,你一开始没有说清楚,因为当你说你想要“有用的模型拟合”统计数据时,那不是我推断出来的... - Ben Bolker
3个回答

5
这是一个泊松回归的例子:
## from ?glm:
d.AD <- data.frame(counts=c(18,17,15,20,10,20,25,13,12),
      outcome=gl(3,1,9),
      treatment=gl(3,3))
glm.D93 <- glm(counts ~ outcome + treatment,data = d.AD, family=poisson())

现在定义一个函数,使用相同的响应、家族等拟合仅截距模型,计算摘要统计信息,并将它们组合成表格(矩阵)。下面update命令中的公式.~1表示“重新拟合具有相同响应变量的模型[由左手边波浪线上的点表示],但只有一个截距项[由右手边波浪线上的1表示]”。
glmsumfun <- function(model) {
   glm0 <- update(model,.~1)  ## refit with intercept only
   ## apply built-in logLik (log-likelihood), AIC,
   ##  BIC (Bayesian/Schwarz Information Criterion) functions
   ## to models with and without intercept ('model' and 'glm0');
   ## combine the results in a two-column matrix with appropriate
   ## row and column names
   matrix(c(logLik(glm.D93),BIC(glm.D93),AIC(glm.D93),
           logLik(glm0),BIC(glm0),AIC(glm0)),ncol=2,
     dimnames=list(c("logLik","SC","AIC"),c("full","intercept_only")))
}

现在应用这个函数:
glmsumfun(glm.D93)

结果:
            full intercept_only
logLik -23.38066      -26.10681
SC      57.74744       54.41085
AIC     56.76132       54.21362

编辑:

  • anova(glm.D93,test="Chisq") 方法提供了一个顺序的差异分析表,其中包含df、偏差(=-2对数似然值)、剩余df、剩余偏差和似然比检验(卡方检验)的p值。
  • drop1(glm.D93) 方法提供了每个单项删除的AIC值(df、偏差等),drop1(glm.D93,test="Chisq") 方法还提供了LRT检验p值。

你能解释一下这里在干什么吗?我对R语言还比较陌生。 - josephmisiti

5
当涉及到逻辑回归时,带有"binomial"参数的glm函数是最常用的函数。因素对比的默认处理方式不同。R使用treatment对比,而SAS则使用sum对比。你可以在R-help上查找这些技术问题。在过去的十年中,它们已经被讨论了很多次。
我看到Greg Snow在'rms'中提到了lrm。它有一个优点,就是被'rms'方法套件中的其他几个函数支持。我也会使用它,但学习rms包可能需要额外的时间。我没有看到可以创建类似SAS输出的选项。
如果您想在类似问题上比较软件包,则UCLA StatComputing页面还有另一资源:http://www.ats.ucla.edu/stat/r/dae/default.htm,其中展示了SPSS、SAS、Stata和R中大量的方法。

3
实际上,SAS也使用处理对比;不同的是,它将最后一个水平作为参考水平,而不是第一个。您可以在R中使用options(contrasts=c("contr.SAS", "contr.poly"))来获得类似SAS的行为。 - Hong Ooi
@Hong Doi。感谢您的纠正。是SPSS使用总和对比吗? - IRTFM

2
使用rms包中的lrm函数可能会给您所需的输出结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接