GLM的伪R平方公式


Answers:


22

GLiM 有很多伪。优秀的UCLA统计帮助站点在此处对它们进行了全面概述。您列出的那个称为McFadden的伪R 2。相对于UCLA的类型学,从某种意义上说,它像R 2索引了拟合模型相对于空模型的改进。如果我没记错的话,一些统计软件,尤其是SPSS,默认情况下会打印出McFadden的伪R 2以及诸如logistic回归之类的分析结果,因此我怀疑它很普遍,尽管Cox&Snell和Nagelkerke伪R 2 s可能更是如此。但是,麦克法登(McFadden)的伪[R2[R2[R2[R2[R2不具有所有的属性 - [R 2(无伪 - [R 2一样)。如果有人对使用伪 R 2来理解模型感兴趣,我强烈建议您阅读以下出色的CV线程:哪种伪 R 2度量是要报告的逻辑回归(Cox&Snell或Nagelkerke)? (对于它的价值, [R 2本身就是slipperier比人们意识到,一个伟大的示范,其可以在@ whuber的答案在这里看到: - [R 2?有用的或危险的[R2[R2[R2[R2[R2[R2[R2


我想知道是否所有这些伪R2都是专门为逻辑回归设计的吗?还是他们也对泊松和伽马凝胶泛化?我在Colin Cameron, A., & Windmeijer, F. A. (1997). An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77(2), 329-342.
Jens 2014年

@Jens,其中一些确实看起来是LR特定的,但是其他使用了异常,您可以从任何GLiM中获得异常。
gung-恢复莫妮卡

1
请注意,McFadden的通常是根据对数似然来定义的,对数似然仅被定义为加法常数,而不是OP问题中的偏差。没有规定加性常数,McFadden的R 2定义不清。偏差是加性常数的唯一选择,如果泛化应与线性模型中的R 2相当,则偏差是最合适的选择。R2R2[R2
NRH

鉴于GLMS是使用迭代重加权最小二乘法,如在适合bwlewis.github.io/GLM,这将是异议实际上在GLM链路规模计算加权R2的,使用1 /方差的权重作为权(其GLM还给在插槽重量中适合)
Tom Wenseleers

@TomWenseleers,您可以随心所欲地做,但是基本参数在我链接的“哪个伪 ...要报告...”线程中,尤其是概率逻辑的答案[R2
gung-恢复莫妮卡

9

R在输出中给出零偏差和残余偏差,glm以便您可以精确地进行这种比较(请参阅下面的最后两行)。

> x = log(1:10)

> y = 1:10

> glm(y ~ x, family = poisson)

>Call:  glm(formula = y ~ x, family = poisson)

Coefficients:
(Intercept)            x  
  5.564e-13    1.000e+00  

Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
Null Deviance:      16.64 
Residual Deviance: 2.887e-15    AIC: 37.97

您也可以使用model$null.deviance和将这些值从对象中拉出model$deviance


啊好吧。我只是按照书面回答这个问题。我会添加更多,但我不确定自己如何计算零偏差(这与饱和模型的对数似然有关,但我不记得足够多的饱和度细节来确信我可以给我很好的直觉)
David J. Harris

我在glm输出(家庭位置或准定位)中没有它。
好奇的2013年

@Tomas看到我的编辑。我不知道两年前我是否弄错了,或者自那时以来默认输出是否已更改。
David J. Harris

summary.glm[R2

1
阅读问题。您认为您回答了吗?问题不是“我在哪里可以得到公式的组成部分?”。
2014年

6

您提出的公式由Maddala(1983)和Magee(1990)提出,用于估计逻辑模型的R平方。因此,我认为它不适用于所有glm模型(请参阅第266页的Thomas P. Ryan写的《现代回归方法》一书)。

如果您制作了一个伪数据集,您会发现它低估了R平方...对于每个示例来说,都是高斯glm。

我认为对于高斯函数,您可以使用基本的(lm)R平方公式...

R2gauss<- function(y,model){
    moy<-mean(y)
    N<- length(y)
    p<-length(model$coefficients)-1
    SSres<- sum((y-predict(model))^2)
    SStot<-sum((y-moy)^2)
    R2<-1-(SSres/SStot)
    Rajust<-1-(((1-R2)*(N-1))/(N-p-1))
    return(data.frame(R2,Rajust,SSres,SStot))
}

对于后勤(或r中的二项式族),我将使用您建议的公式...

    R2logit<- function(y,model){
    R2<- 1-(model$deviance/model$null.deviance)
    return(R2)
    }

到目前为止,对于泊松glm,我已经使用了这篇文章中的公式。

https://stackoverflow.com/questions/23067475/how-do-i-obtain-pseudo-r2-measures-in-stata-when-using-glm-regression

在研究部门也有一篇关于伪R2的好文章...这里是链接:

https://www.researchgate.net/publication/222802021_Pseudo_R-squared_measures_for_Poisson_regression_models_with_over-_or_underdispersion

希望对您有所帮助。


只需使用family = gaussian(link = identity)拟合GLM模型并检查的值,1-summary(GLM)$deviance/summary(GLM)$null.deviance您就会发现R2确实与常规OLS回归的R2值匹配,因此上述答案是正确的!另请参见我的文章在这里- stats.stackexchange.com/questions/412580/...
汤姆Wenseleers

3

将R包modEvA计算d平方 作为1 - (mod$deviance/mod$null.deviance)如由David J.哈里斯提到

set.seed(1)
data <- data.frame(y=rpois(n=10, lambda=exp(1 + 0.2 * x)), x=runif(n=10, min=0, max=1.5))

mod <- glm(y~x,data,family = poisson)

1- (mod$deviance/mod$null.deviance)
[1] 0.01133757
library(modEvA);modEvA::Dsquared(mod)
[1] 0.01133757

模型的D平方或解释的偏差在(Guisan&Zimmermann 2000)https://doi.org/10.1016/S0304-3800 (00)00354-9中引入

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.