引言:logistic回归中,我们了解到R2和P值的计算方法。但josh starmer老师指出,广义线性模型中R2更常见的计算方法还包括饱和模型(参考:Logistic回归:R2与P-value的计算)。在Logistic模型中,LL(saturated model)=0,故可以忽略LL(saturated model);但其在其他类型广义线性模型中并不一定为0,不能忽略LL(saturated model)。

1. 零模型、创建的模型、饱和模型

  1. 零模型(null model): 含一个参数的模型,也可记作空模型。假设在如下的正态分布数据中,标准差已知,故我们只需要估计均值以拟合该正态分布曲线。仅含1个参数(一个均值)的模型是最简单的模型,故称该模型为零模型。基于零模型的似然值与似然对数值计算如下:似然值=0.03;似然值的对数值=-3.51。似然值和似然值对数值的计算可参考先前的笔记:最大似然估计法拟合logistic回归曲线;概率与似然值。

  1. 创建的模型(proposed model):在同样的数据中,标准差已知,通过估计2个均值参数拟合两条正态分布曲线的含2个参数的模型。这一模型是我们根据数据的实际情况创建的个性化模型,参数个数介于零模型与饱和模型之间,是我们感兴趣的目标模型。基于该模型的似然值与似然对数值计算如下:似然值=3.57;似然值的对数值=1.27。

  1. 饱和模型:每个数据点对应一个参数的超级模型,称为饱和模型。该模型所含的参数数量是我们所能估计参数的最大数量。在饱和模型中,似然值与似然对数值计算如下:似然值=1291.5;似然值的对数值=7.16。

小结: 零模型的似然估计值最低,而饱和模型的似然估计值达到最大。我们的目标是,使数据在我们创建的模型(感兴趣模型)中的似然估计值大于零模型、接近饱和模型。

2. 基于零模型和饱和模型计算创建模型的R2

在使用似然值估计时,常常使用零模型和饱和模型来判定创建模型的显著性。也就是说,使用零模型和饱和模型计算创建模型的R2和P值。具体计算公式如下:


饱和模型在计算R2中的作用

  • 基于残差平方和的R2

    • 线性回归 :R2=(SS(零模型)-SS(创建的模型))/SS(零模型)(参考:线性回归中的R方与R方显著性)


    • SS(零模型)仅包含一个参数(均值),也就是均值直线,展示最差模型的性能;SS(创建的模型)包含两个参数(均值和斜率),展示创建的模型性能。如果创建的模型能够完美预测,残差平方和SS(创建的模型)为0。

    • 线性模型中能够完美预测的理想模型的残差平方和为固定值,始终为0,对应的R2=1。

  • 基于似然值对数的R2(Log-likelihood based R2)


    • 零模型(null model)只用一个参数估计位置变量,展示最差模型的性能(右上角);饱和模型(saturated model)的参数个数与样本的个数一致,饱和模型的似然值对数值并不固定,展示理想状态模型的最佳性能;创建模型(proposed model)是根据数据的实际情况创建的模型。

    • 如果创建模型的效果与饱和模型一致,那么两者的对数似然值相等,使得R2=1。

  • 饱和模型确保R2的取值范围为[0,1]。

    • 假设不存在饱和模型,计算R2的1.36,超过了R2的取值范围。


  • 将饱和模型的似然值估计(7.16)重新带入公式,R2=0.45。

3. 模型间的偏差(deviance)计算p值

在零模型、创建的模型和饱和模型间,存在两种偏差,即残余偏差(residual deviance)和零偏差(null deviance)。

1.residual deviance是饱和模型与创建模型之间的差异。 其直观的定义如下:


  • 计算残余偏差的前提:创建的模型与饱和模型必须是巢式结构(nested)。说的更直白一点,饱和模型中删减一些参数后形成创建的模型。

  • residual deviance的解读:饱和模型能完美预测,其预测值与真实值相等。故小编认为这里的残余偏差可以类比线性回归中的残差(residual),即真实值与预测值的差异。

  • 饱和模型与创建模型的差异乘以2,使对数似然值的差异与对应自由度的卡方分布一致。例如饱和模型中的参数为6,创建模型的参数为2,那么对应卡方分布的自由度为4。

将数据带入公式可得,在自由度为4的卡方分布中,卡方值为11.78,卡方值>11.78的曲线下面积为0.02,故对应的p值为0.02。下结论:p=0.02<0.05,表示饱和模型与创建模型间有显著差异。

2.Null deviance是饱和模型与零模型之间的差异。 其直观的定义如下:


Null deviance的解读与residual deviance的解读一致。将数据带入公式可得:在自由度为5(6-1=5)的卡方分布中,卡方值为21.34,对应的p接近0。故下结论:p <<0.05,表示饱和模型与零模型间有显著差异。

3.基于两种偏差,计算创建模型的p值。

Null deviance 与residual deviance相减,抵消饱和模型,可以理解为构建模型与零模型的差异。通过该公式,计算出的差值与相同自由度的分布分布相同(自由度为创建模型与零模型的参数数量差异),进而可计算p值。如在本例中,创建模型的参数为2,零模型的参数为1,故对应卡方分布的自由度为1(2-1)。带入公式得出:null deviance - residual deviance = 9.56,对应自由度为1的卡方分布,p值=0.002。

4. p值与R2的统一


在本小结提及的案例中,R2=0.45,p=0.002。故我们可以得出结论:创建模型的效应量为0.45,该效应量具有统计显著性(p=0.002)。

5. p值的其他计算方法

在前面我们提及偏差的计算时,强调进行比较的两种模型必须是巢式结构。而创建的模型与零模型也属于巢式结构,故我们可以通过二者的直接比较判定两种模型之间是否具有显著差异。

对于该公式结果的解读同前。虽然这种方法更加简单直接,但是在实际工作中经常报告的仍然是null deviance 和 residual deviance。

6. logistic回归中,可忽略饱和模型

  • 忽略基于对数似然值的R2计算中的饱和模型

在logistic回归中,饱和模型能够实现完美预测,故其对数似然值等于0,故我们可以忽略logistic回归R2计算中的饱和模型。简化后的公式如下:



  • 简化residual deviance和null deviance的计算公式
    简化后的结果如下:

7. 小结

饱和模型提供了完美预测模型的对数似然值最大值,对于计算基于似然值的R2非常有用。但是在logistic回归中,完美预测模型的对数似然值为0,故我们可以忽略饱和模型。我们也了解了两种偏差residual deviance和null deviance,可以基于这两种偏差检验基于似然值的R2的显著性。

参考视频:https://www.youtube.com/watch?v=9T0wlKdew6I&t=561s

编辑:吕琼

校审:罗鹏

python 卡方分布值_饱和模型与偏差计算R方与p值相关推荐

  1. python整数类型在每一台计算机上的取值范围是一样的_第四章、Python数据类型

    1.前面第三章有说过了Python有的数据类型,在开始介绍各种数据类型之前,我们先要知道Python的一个内置函数 type() ,用以查询变量所赋值的数据类型. >>> a=1 & ...

  2. python 卡方分布函数_卡方检验2-python代码实现

    统计学,风控建模经常遇到卡方分箱算法ChiMerge.卡方分箱在金融信贷风控领域是逻辑回归评分卡的核心,让分箱具有统计学意义(单调性).卡方分箱在生物医药领域可以比较两种药物或两组病人是否具有显著区别 ...

  3. python整数类型在每一台计算机上的取值范围是一样的_Python编程知识点总结

    Python编程知识点总结 Python语法特点 注释规则 [概念]注释是指在程序代码中添加的标注性的文字. 1.单行注释 #注释内容 2.多行注释 代码缩进 [概念]代码缩进是指在每一行代码左端空出 ...

  4. sql如何处理null值_如何正确处理SQL中的NULL值

    sql如何处理null值 前言 (Preface) A friend who has recently started learning SQL asked me about NULL values ...

  5. java 数组的索引值_按索引访问Java数组位置的值

    我是 Java的新手,我只是在努力使用数组.我有一段代码,我在编写教程时已经编写过,但我很难理解它,如果有人能向我解释,我会很高兴. 我尝试过各种不同的方法(向我的鸭子解释,写下来等等)并且仍然无法理 ...

  6. python整数类型在每一台计算机上的取值范围是一样的_人工智能第一章:Python语言基础...

    1 Python简介 Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的 ...

  7. python整数类型在每一台计算机上的取值范围是一样的_关于python统计一个整数列表中不同数值种类数的问题。...

    下面这段代码中,kind_num用于统计那个整数列表中有几种不同数值的整数. class Solution(object): def distributeCandies(self, candies): ...

  8. 如何用python画钝角三角形_使用math.atan2计算线段(Python)之间的角度

    我正在研究空间分析问题,该工作流程的一部分是计算连接线段之间的角度. 每个线段仅由两个点组成,每个点都有一对XY坐标(笛卡尔坐标).这是GeoGebra的图像.我总是对在0到180范围内获得正角度感兴 ...

  9. arcgis 分区 属性值_如何使用ArcGIS计算分区河流(管线)总长度

    1. 概述 已知有一个河流的线图层(HydroL)和多个不同用地类型的图层(WoodyA表示绿化用地,ResidentialA表示公共用地,BoundaryA表示其他类型用地),目标是获得每个分区内的 ...

最新文章

  1. Exchange与ADFS单点登录 PART 2:部署和配置ADFS
  2. LeetCode Median of Two Sorted Arrays (DFS)
  3. glibc(ptmalloc)内存暴增问题解决
  4. 智慧医疗机器人的普及还需很长一段路要走!
  5. Operation category READ is not supported in state standby
  6. 正则表达式使用及常见表达式汇总
  7. 每输入四个字符添加一个中划线
  8. C++ — 智能指针的简单实现以及循环引用问题
  9. 洛谷 P3367 ---- 【模板】并查集
  10. Spring-ConfigurationClassParser类
  11. pythonmysql数据分析_利用Mysql进行python的数据分析
  12. JVM内存模型及垃圾回收算法
  13. Android 蓝牙手柄开发
  14. 最美的教育最简单-净化育儿观念
  15. hello world!——VS使用教程
  16. 几个离线笔记软件推荐
  17. Charles手机 APP 抓包仅需这三步
  18. Android 使用so库的遇到的坑
  19. Ubuntu20.04.iso光盘镜像源文件百度云下载
  20. QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)

热门文章

  1. 【CV】第 8 章:语义分割和神经风格迁移
  2. 基于Spring boot的小区物业管理系统
  3. CAN FD总线详细介绍
  4. mysql批量插入没有返回主键id
  5. js获取屏幕、浏览器、页面的宽度和高度
  6. PostGre Sql 列转行
  7. 电脑无法运行msi软件
  8. Unicode和GB的转换库和UrlEncode和getSpell函数
  9. [QT操作XML]QT读写XML文件,QT修改XML文件
  10. 【工具】Idea翻译插件中Google翻译修复