R语言逻辑回归、方差分析 、伪R平方分析

Logistic回归可以使用glm  (广义线性模型)函数在R中执行  。

怎么做测试?

该函数使用链接函数来确定要使用哪种模型,例如逻辑模型,概率模型或泊松模型。 

假设条件

广义线性模型的假设少于大多数常见的参数检验。观测值仍然需要独立,并且需要指定正确的链接函数。因此,例如应该了解何时使用泊松回归以及何时使用逻辑回归。但是,不需要数据或残差的正态分布。

并非所有比例或计数都适用于逻辑回归分析

一个不采用逻辑回归的例子中,饮食研究中人们减肥的体重无法用初始体重的比例来解释作为“成功”和“失败”的计数。在这里,只要满足模型假设,就可以使用常用的参数方法。

过度分散

使用广义线性模型时要注意的一个潜在问题是过度分散。当模型的残余偏差相对于残余自由度较高时,就会发生这种情况。这基本上表明该模型不能很好地拟合数据。 

但是据我了解,从技术上讲,过度分散对于简单的逻辑回归而言不是问题,即具有二项式因果关系和单个连续自变量的问题。

伪R平方

对于广义线性模型(glm),R不产生r平方值。pscl  包中的  pR2  可以产生伪R平方值。

测试p值

检验逻辑对数或泊松回归的p值使用卡方检验。方差分析  来测试每一个系数的显着性。似然比检验也可以用来检验整体模型的重要性。

Logistic回归示例



Data = read.table(textConnection(Input),header=TRUE)

Data$Total = Data$mpi90 + Data$mpi100

Data$Percent = Data$mpi100 / + Data$Total

模型拟合

Trials = cbind(Data$mpi100, Data$mpi90)         # Sucesses, Failures

model = glm(Trials ~ Latitude, 
            data = Data, 
            family = binomial(link="logit"))

系数和指数系数


Coefficients:

            Estimate Std. Error z value Pr(>|z|)   

(Intercept) -7.64686    0.92487  -8.268   <2e-16 ***

Latitude     0.17864    0.02104   8.490   <2e-16 ***

 

 


                 2.5 %     97.5 %

(Intercept) -9.5003746 -5.8702453

Latitude     0.1382141  0.2208032

 

 
 # exponentiated coefficients

 

(Intercept)     Latitude

0.0004775391 1.1955899446

 

 
 # 95% CI for exponentiated coefficients

 

                   2.5 %      97.5 %

(Intercept) 7.482379e-05 0.002822181

Latitude    1.148221e+00 1.247077992

方差分析 



Analysis of Deviance Table (Type II tests)

 

Response: Trials

          Df  Chisq Pr(>Chisq)   

Latitude   1 72.076  < 2.2e-16 ***

伪R平方


$Models

                                                                

Model: "glm, Trials ~ Latitude, binomial(link = \"logit\"), Data"

Null:  "glm, Trials ~ 1, binomial(link = \"logit\"), Data"      

 

$Pseudo.R.squared.for.model.vs.null

                             Pseudo.R.squared

McFadden                             0.425248

Cox and Snell (ML)                   0.999970

Nagelkerke (Cragg and Uhler)         0.999970

模型的整体p值


 

Analysis of Deviance Table

 

Model 1: Trials ~ Latitude

Model 2: Trials ~ 1

  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)   

1         6     70.333                         

2         7    153.633 -1  -83.301 < 2.2e-16 ***

 


Likelihood ratio test

 

Model 1: Trials ~ Latitude

Model 2: Trials ~ 1

  #Df  LogLik Df  Chisq Pr(>Chisq)   

1   2 -56.293                        

2   1 -97.944 -1 83.301  < 2.2e-16 ***

标准化残差图

 ​

标准化残差与预测值的关系图。残差应无偏且均等。 

绘制模型

 ​

Logistic回归示例



Data = read.table(textConnection(Input),header=TRUE)

 

模型拟合

model 

系数和指数系数



Coefficients:

            Estimate Std. Error z value Pr(>|z|)

(Intercept)  4.41379    6.66190   0.663    0.508

Height      -0.05016    0.09577  -0.524    0.600

 

 


 

                 2.5 %     97.5 %

(Intercept) -8.4723648 18.4667731

Height      -0.2498133  0.1374819

 

  # exponentiated coefficients

 

(Intercept)      Height

 82.5821122   0.9510757

 

 
 # 95% CI for exponentiated coefficients

 

                   2.5 %       97.5 %

(Intercept) 0.0002091697 1.047171e+08

Height      0.7789461738 1.147381e+0

 

方差分析



Analysis of Deviance Table (Type II tests)

 

Response: Insect

          Df  Chisq Pr(>Chisq)

Height     1 0.2743     0.6004

Residuals 23

伪R平方



$Pseudo.R.squared.for.model.vs.null

                             Pseudo.R.squared

McFadden                           0.00936978

Cox and Snell (ML)                 0.01105020

Nagelkerke (Cragg and Uhler)       0.01591030

模型的整体p值



Analysis of Deviance Table

 

Model 1: Insect ~ Height

Model 2: Insect ~ 1

  Resid. Df Resid. Dev Df Deviance Pr(>Chi)

1        23     29.370                    

2        24     29.648 -1 -0.27779   0.5982

 

 
 

Likelihood ratio test

 

Model 1: Insect ~ Height

Model 2: Insect ~ 1

  #Df  LogLik Df  Chisq Pr(>Chisq)

1   2 -14.685                     

2   1 -14.824 -1 0.2778     0.5982

标准化残差图

 ​

绘制模型


 

   Height Insect Insect.num

1      62 beetle          0

2      66  other          1

3      61 beetle          0

23     72  other          1

24     70 beetle          0

25     74  other          1

 

 ​


 

   Height Insect Insect.num Insect.log

1      62 beetle          0      FALSE

2      66  other          1       TRUE

3      61 beetle          0      FALSE

23     72  other          1       TRUE

24     70 beetle          0      FALSE

25     74  other          1       TRUE

 ​

Logistic回归示例



Data = read.table(textConnection(Input),header=TRUE)


model

Coefficients:

            Estimate Std. Error z value Pr(>|z|) 

(Intercept) -66.4981    32.3787  -2.054   0.0400 *

Continuous    0.9027     0.4389   2.056   0.0397 *

 

 
 

Analysis of Deviance Table (Type II tests)

 

Response: Factor

           Df Chisq Pr(>Chisq) 

Continuous  1 4.229    0.03974 *

Residuals  27                  

 

 

                             Pseudo.R.squared

McFadden                             0.697579

Cox and Snell (ML)                   0.619482

Nagelkerke (Cragg and Uhler)         0.826303

 

 
 

  Resid. Df Resid. Dev Df Deviance Pr(>Chi)   

1        27     12.148                        

2        28     40.168 -1   -28.02  1.2e-07 ***

 

 

​ 

将因子转换为数字变量,级别为0和1 



   Continuous Factor Factor.num

1          62      A          0

2          63      A          0

3          64      A          0

27         84      B          1

28         85      B          1

29         86      B          1

 

 ​

将Factor转换为逻辑变量,级别为TRUE和FALSE 


 

   Continuous Factor Factor.num Factor.log

1          62      A          0      FALSE

2          63      A          0      FALSE

3          64      A          0      FALSE

27         84      B          1       TRUE

28         85      B          1       TRUE

29         86      B          1       TRUE

 

可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds