当前位置: 首页 > news >正文

机器学习预备知识

目录

卡方检验

卡方检验的主要用途

卡方检验的基本原理

卡方统计量

卡方检验的statsmodels实现

配对卡方检验

相关分析(关联性分析)概述

什么是相关分析(关联性分析)

各种相关系数

统计图/统计表在相关分析中的重要性

相关系数的计算原理

常用术语(针对两连续变量的相关)

Pearson相关系数

Spearman秩相关系数

相关分析的Python实现

RR与OR

RR(Relative Risk)——相对危险度

OR(Odds Ratio)——优势比

代码实现


卡方检验

注意

在统计分析阶段的假设检验中也提及到了卡方检验,那是针对"单个总体方差的检验";本章中的卡方检验是针对"分类变量的比较"。

卡方检验的主要用途
  • 两个率或两个构成比比较的卡方检验
  • 多个率或多个构成比比较的卡方检验
  • 分类资料的相关分析
卡方检验的基本原理

H~0~:观察频数与期望频数没有差别

其原理为考察基于H~0~的理论频数分布和实际频数分布间的差异大小,据此求出相应的P值

案例:

所有受访家庭会按照家庭年收入被分为低收入家庭和高收入家庭两类,现希望考察不同收入级别的家庭其轿车拥有率是否相同

基于H~0~成立,即观察频数和期望频数无差别,也就是两组变量(家庭收入级别与是否拥有轿车)相互不产生影响,两组变量不相关,如果检验P值很高,则接受H~0~;如果检验P值很低,则检验不通过,观察频数和期望频数有差别,两组变量相关。

卡方统计量

卡方统计量的计算公式:

χ2=∑(A−E)2E

其中A为实际频数,E为期望频数(理论频数)。

卡方统计量的理解:

  • 当观察频数与期望频数完全一致时,卡方值为0
  • 观察频数与期望频数越接近,两者之间的差异越小,卡方值越小
  • 观察频数与期望频数差异越大,卡方值越大
  • 卡方值的大小也和自由度有关

卡方检验的statsmodels实现

案例:

所有受访家庭会按照家庭年收入被分为低收入家庭和高收入家庭两类,现希望考察不同收入级别的家庭其轿车拥有率是否相同

statsmodels中首先需要建立对应的列联表对象

class statsmodels.stats.contingency_tables.Table( table shift_zeros = True : 如果有单元格频数为0,则所有单元格频数一律+0.5防止计算溢出 )

Table类的方法:

test_nominal_association() 无序分类行、列变量的独立性检验

配对卡方检验

McNemar's检验(配对卡方检验)用于分析两个相关率的变化是否有统计学意义

案例:

用A、B两种方法检查已确诊的某种疾病患者140名,A法检出91名(65%),B法检出77名(55%),A、B两法一致的检出56名(40%),问哪种方法阳性检出率更高?

分析思路:

  • H~0~:两种方法阳性检出率无差别,即b单元格=c单元格
  • 对同一个体,分别有两次不同的测量,并最终构成了两组数据,因此研究框架是自身配对设计
  • 求出各对的差值,然后考察样本中差值的分布是否按照H~0~假设的情况对称分布
  • 主对角线上的样本,两种检验方法的结论相同
  • 非主对角线上的单元格才携带检验方法的差异信息
  • 根据H~0~得到b、c两格的理论数均为(b+c)/2,对应的配对检验统计量,经过化简后是:

χ2=(b−c)2b+c

一般在 b + c < 40 时,需用确切概率法进行检验,或者进行校正

代码实现

statsmodels.stats.contingency_tables中常用的配对卡方的分析使用:

  1. tbl.SquareTable 用于分析行列变量类别相同的对称结构方表(近似结果)

  2. tbl.mcnemar 用于分析配对四格表(确切概率结果)

  • 用SquareTable类分析
import numpy as np import statsmodels.stats.contingency_tables as tbl # 必须为方阵结构数据 table = tbl.SquareTable(np.array([[56, 35], [21, 28]])) print(table.summary()) # 打印汇总信息 print(table.symmetry()) # 只打印symmetry
  • 用mcnemar类分析
import statsmodels.stats.contingency_tables as tbl table = tbl.mcnemar(pd.DataFrame([[56, 35], [21, 28]])) print(table.pvalue) # 确切概率结果

相关分析(关联性分析)概述

什么是相关分析(关联性分析)

相关分析是用于考察变量间数量关系密切程度的分析方法,例如:身高与体重的关系

几乎所有涉及到多个变量的假设检验方法,都可以被看作是这些变量间的关联性分析

  • t检验:分组变量与连续因变量间的关联性分析
  • 卡方检验:行、列分类变量间的关联性分析
  • 聚类分析:案例(case)间的关联性分析
  • 多变量回归:因变量和一组自变量间的关联性分析
各种相关系数
  • 连续 vs 连续:Pearson相关系数(双变量正态分布);Spearman秩相关系数(不符合双变量正态分布)

  • 有序 vs 有序:Gamma系数、肯德尔相关系数等(例如:医生级别与治疗效果的相关关系);也可使用Spearman秩相关系数

  • 无序 vs 无序:列联系数等(例如:民族与职业的关系)

    • 基于卡方统计量进一步推导而来
    • 无方向 0~1
    • OR/RR:一类特殊的关联强度指标
  • 连续 vs 分类:Eta(本质上是方差解释度,即连续变量的离散度有多少可以被另外的分类指标所解释)

统计图/统计表在相关分析中的重要性
  • 连续变量:用散点图先确认关联趋势是否为直线
  • 分类变量:分组条图、马赛克图(分组百分条图)等工具

相关系数的计算原理

常用术语(针对两连续变量的相关)
  • 直线相关:两变量呈线性共同增大,或者呈线性一增一减的情况
  • 曲线相关:两变量存在相关趋势,但是为各种可能的曲线趋势
  • 正相关与负相关:如果A变量增加时B变量也增加,则为正相关,如果A变量增加时B变量减小,则为负相关
  • 完全相关:完全正相关;完全负相关
  • 零相关:自变量的变化,不会影响因变量的变化
Pearson相关系数
  • 计算公式

ρ(X,Y)=cov(X,Y)σXσY=E(XY)−E(X)E(Y)σXσY

公式理解:标准差代表变量的离散程度(信息量大小);

协方差Cov(X,Y)代表各变量共同携带的信息量大小;

相关系数代表两个变量总信息量中的共同部分占比

  • 相关系数ρ的取值范围:-1 < ρ < 1

    • 其正负反映了相关的方向
    • |ρ|越接近于1,说明相关性越好
    • |ρ|越接近于0,说明相关性越差
  • Pearson相关系数的检验:

    • H~0~:两变量间无直线相关关系,ρ=0

    • 检验方法:t检验

      t=r−0sr,df=n−2

  • Pearson相关系数的适用条件:

    • 必须是线性相关的情形(可以先绘制散点图观察一下)
    • 针对两连续变量的相关系数
    • 极端值对相关系数的计算影响极大,因此要慎重考虑和使用
    • 要求相应的变量呈双变量正态分布(近似也可以)

Spearman秩相关系数
  • 不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数
  • Spearman提出首先对数据做秩变换,然后再计算两组秩间的直线相关系数(秩变换分析思想)

相关分析的Python实现

相关分析作为比较简单的方法,在statsmodels中并未作进一步的完善,因此主要使用scipy实现

  • 两个连续变量,且符合双变量正态分布:Pearson相关系数
    scipy.stats.kendalltau(a, b) # 肯德尔相关系数 scipy.stats.spearmanr(a, b) # 斯皮尔曼秩相关系数
scipy.stats.pearsonr(a, b)
  • 两个连续变量,不符合双变量正态分布:Spearman秩相关系数
scipy.stats.spearmanr(a, b)
  • 两个有序变量:Kendall's Tau;Spearman秩相关系数
scipy.stats.kendalltau(a, b) # 肯德尔相关系数 scipy.stats.spearmanr(a, b) # 斯皮尔曼秩相关系数

RR与OR

RR(Relative Risk)——相对危险度
  • 表示两种情况下发病密度或者说发病概率之比

    • P~t~:实验组人群反应阳性概率

    • P~c~:对照组人群反应阳性概率

      RR=PtPc=a/ntc/nc

  • 如果RR > 1,说明相应的自变量取值增加,会导致个体发病/死亡风险增加若干倍,例如:吸烟者的发病概率是非吸烟者的5倍

  • RR在医学中得到了极为广泛的应用

  • RR的计算条件比较苛刻(观察周期长)

OR(Odds Ratio)——优势比
  • 为下列两种比例之比

    • 反应阳性人群中实验因素有无的比例 a/b
    • 反应阴性人群中实验因素有无的比例 c/d

    OR=a/bc/d

    例如:某疾病病例中吸烟/非吸烟者的比例是非病例中吸烟/非吸烟者比例的3倍

  • OR可以间接反映关联强度,但是理解上比较困难

  • 发病概率较低时,OR往往近似的在按照RR的含义进行解释和使用

代码实现
  • scipy的实现方式

scipy.stats.fisher_exact()中可以计算OR值,相应的检验P值则是确切概率法的P值

OR, P = ss.fisher_exact(pd.crosstab(home.Ts9, home.O1))
  • statsmodels的实现方式
import numpy as np import statsmodels.stats.contingency_tables as tbl # 这里必须使用np.array函数进行数组转换,否则后续计算会出问题 table = tbl.Table2x2(np.array(pd.crosstab(home.Ts9, home.O1))) print(table.oddsratio) # OR值 print(table.summary()) # 汇总信息
http://www.jsqmd.com/news/712783/

相关文章:

  • 2026市场比较好的化工pvdf管生产商推荐榜 - 品牌排行榜
  • 【大模型-SLAM】LingBot-Map:Geometric Context Transformer for Streaming 3D Reconstruction
  • Phi-3-mini-4k-instruct-gguf Chainlit生产化:Nginx负载均衡+HTTPS证书配置
  • 4月28日成都地区华岐产螺旋焊管(Q235B;内径DN200-3500mm)厂家直供 - 四川盛世钢联营销中心
  • Qwen-Image-Layered实战体验:5分钟部署,像编辑PSD一样编辑AI图片
  • AI Agent开发入门:基于Nanbeige 4.1-3B构建自主任务执行智能体
  • 【2026年版|收藏级】RAG系统延迟优化实战:从链路拆解到面试通关,小白也能看懂
  • Azure DevOps 中的权限问题:Docker镜像上传的误区与解决之道
  • NVIDIA Profile Inspector完整指南:解锁隐藏显卡设置,彻底解决游戏性能问题
  • 从JSP到Vue单文件:用FileViewProvider理解IDEA如何‘读懂’混合语言文件
  • Vulkan 入门教程五:命令缓冲、同步机制与渲染循环
  • 广东省CPPM官方报名中心授权机构及联系方式(官方正规报名通道) - 中供国培
  • 电磁 + 散热 + 电路全仿真,看懂新版 ANSYS 2025 详细下载安装教程附安装包
  • postgresql 拼接字段
  • 算力市场转型深度解析:从建设部署到行业赋能,核心趋势与实践路径
  • 基于SimAM无参数注意力机制的YOLOv10改进:提升目标检测性能的新范式
  • AI Agent 记忆机制详解:程序员进阶大模型开发必备(收藏版)
  • QQ音乐解密终极指南:3步轻松将加密音频转换为通用格式
  • 4月28日成都地区安泰产热轧H型钢(1998-Q355B;100-1000mm)厂家直供 - 四川盛世钢联营销中心
  • RAG技术入门:轻松搭建本地知识库,提升大模型应用效果(收藏版)
  • 百万组内码永不重复:EV1527学习码编码芯片让遥控器更“聪明”
  • Godot资源解包终极指南:快速提取游戏资源的完整实践教程
  • 2026年6月PMP考试:40天“摆烂式”冲刺,用最短时间拿证!
  • 终极SketchUp STL插件指南:5分钟实现3D打印模型转换
  • 投标必看:如何快速完成标书查重?几分钟避免人工通宵核对
  • 4月28日成都地区包钢产热轧H型钢(1998-Q355B;100-1000mm)厂家直供 - 四川盛世钢联营销中心
  • 园区管理系统哪家好?5大正规品牌推荐
  • 国内首款“真无图”L4级无人车,破解万亿市场规模化困局
  • 利用DA可变形注意力机制的YOLOv10增强形变目标检测
  • 大模型---温度与其他采样方法