分类变量的卡方检验(python实现&SPSS实现)「建议收藏」

分类变量的卡方检验(python实现&SPSS实现)「建议收藏」卡方介绍卡方检验是针对自变量和因变量都是分类数据,也就是说带有属性的数据;而单因素方差分析是自变量是分类数据,因变量是连续型的数据。还有一点:方差分析是参数检验,而卡方检验是属于非参数检验。卡方检验是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小:卡方值越大,偏差越大,越趋于不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。案例介绍本次实验是研究聚类结果和标签DR的关系,即检验我们的聚类有没有意义。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

卡方介绍

卡方检验是针对自变量和因变量都是分类数据,也就是说带有属性的数据;而单因素方差分析是自变量是分类数据,因变量是连续型的数据。还有一点:方差分析是参数检验,而卡方检验是属于非参数检验。

卡方检验是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小:卡方值越大,偏差越大,越趋于不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。

案例介绍

本次实验是研究聚类结果和标签DR的关系,即检验我们的聚类有没有意义。标签是0、1区分,聚类是0、1、2区分的
在这里插入图片描述
首先我们需要检查他们的交叉表,即
在这里插入图片描述

然后我们通过这个表看不出聚类结果的簇间患病差异性大小,因此采用卡方检验,首先做出假设:
在这里插入图片描述
然后计算理论值:
示例:比如cluster0&DR=0的理论值是:sum(cluster0)*sum(DR=0)/总数
在这里插入图片描述
然后通过卡方的公式:
在这里插入图片描述
A是实际值,T是理论值,

再计算卡方的 自由度 v:

						v=(行数-1)(列数-1)=(2-1)(3-1) = 2

最后根据计算结果查表即可。
在这里插入图片描述
卡方临界值 为 (一般取 p=0.05),因此对应表中的结果是5.99,我们的程序结果:
在这里插入图片描述

22.6>5.99,因此拒绝0假设,即两个因素之间存在联系。

python实现

程序示例如下:

# -*- encoding: utf-8 -*-
""" @Modify Time 2021/6/26 15:44 @Author Tunan @Filename test1.py @Desciption """
from scipy.stats import chi2_contingency


class CHISQUARE:
    def __init__(self, d0, d1):
        self.d0 = d0
        self.d1 = d1

    def get_tabel(self):
        dd0 = []
        dd1 = []
        y0 = sum(self.d0)
        y1 = sum(self.d1)
        x0 = self.d0[0] + self.d1[0]
        x1 = self.d0[1] + self.d1[1]
        x2 = self.d0[2] + self.d1[2]
        total = y0+y1

        dd0.append(x0 * y0 / total)
        dd0.append(x1 * y0 / total)
        dd0.append(x2 * y0 / total)
        dd1.append(x0 * y1 / total)
        dd1.append(x1 * y1 / total)
        dd1.append(x2 * y1 / total)

        return dd0, dd1

    def get_classification(self):
        print('=======================================')
        print('实际频率 cluster0 cluster1 cluster2')
        # d0, d1 = [93, 83, 143], [143, 45, 131]
        print("DR=0 %(dd0)d %(dd1)d %(dd2)d" % { 
   'dd0': self.d0[0], 'dd1': self.d0[1], 'dd2': self.d0[2]})
        print("DR=1 %(dd0)d %(dd1)d %(dd2)d" % { 
   'dd0': self.d1[0], 'dd1': self.d1[1], 'dd2': self.d1[2]})
        print('=======================================')

        print('理论频率 cluster0 cluster1 cluster2')
        dd0, dd1 = self.get_tabel()
        print("DR=0 %(dd0)d %(dd1)d %(dd2)d" % { 
   'dd0': dd0[0], 'dd1': dd0[1], 'dd2': dd0[2]})
        print("DR=1 %(dd0)d %(dd1)d %(dd2)d" % { 
   'dd0': dd1[0], 'dd1': dd1[1], 'dd2': dd1[2]})
        print('=======================================')
        x = [self.d0, self.d1]
        chi2, p, df, expected = chi2_contingency(x)  # 卡方值、P值、自由度、理论值
        print('卡方值:χ2 = %s' % chi2)
        print('p值:p-value = %s' % p)
        print('自由度:v = %s' % df)


if __name__ == "__main__":
    y = [95, 90, 134]
    y_pred = [143, 48, 128]
    chi = CHISQUARE(y, y_pred)
    chi.get_classification()

SPSS实现

第一步:
在这里插入图片描述

第二步:

选择你要比较的因素,分别加入行和列中:
在这里插入图片描述
第三步:
在统计选显卡中,选择卡方检验
在这里插入图片描述
第四步,点击确定,分析结果:
在这里插入图片描述
常用的是皮尔逊卡方,他的显著性远小于0.05,因此拒绝原假设,与我们程序分析结果一样。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179198.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php 长轮询_js轮训

    php 长轮询_js轮训今天帮人改了个在线聊天室的作业,用PHP+Ajax实现了一个长轮询(longpolling)。服务端主要是两点,一个是用set_time_limit(0);去除页面执行时间的限制。再就是用一个while判断是否有数据,没有的话就sleep几秒钟再重新取。客户端就是一个Ajax,把当前页面的最后一条的记录传给服务器,请求这之后的数据。回调函数sucess和error中都包括调用当前函数。以保证会一…

    2022年8月31日
  • 磁盘在磁盘管理中显示没有初始化找回文件方案「建议收藏」

    磁盘在磁盘管理中显示没有初始化找回文件方案「建议收藏」磁盘没有初始化是因为0号扇区损坏,导致机械硬盘分区表读取不出来,从而机械硬盘出现磁盘没有初始化。工具/软件:极限数据恢复软件步骤1:程序打开后,直接双击需要恢复数据的物理盘。步骤2:等待程序扫描完毕大概需要几分钟到半个小时,稍微耐心等下即可。步骤3:软件扫描到资料后,软件会将扫描到的分区列出来。步骤4:勾上所有需要恢复的资料,右击选择《复制勾选的文件》,…

    2022年9月21日
  • 弹性网络回归模型_数据模型剪枝

    弹性网络回归模型_数据模型剪枝本文首发于PandaCV公众号。导语:模型剪枝算法核心在于找到“不重要”的参数并且实现裁剪。为寻找到较优的剪枝策略,我们往往需要尝试多种剪枝策略和剪枝策略性能评估。通常剪枝策略评估方法是将剪枝后的模型训练到收敛或者训练规定好数量epoch后进行性能比较。不管是人工调试剪枝策略还是自动搜索剪枝策略,都需要多次评估剪枝策略。剪枝策略的评估效率一定程度上影响了整体压缩效率。因此,本文提出了一种能够快速衡量剪枝后模型性能的方法,经实验能够对MobilenetV1减少50%的FLOPs情况下,仍能保证在Image

    2022年8月16日
  • Java8 新特性 —— 函数式编程

    Java8 新特性 —— 函数式编程

    2020年11月19日
  • python长度单位换算表_长度单位换算表大全

    python长度单位换算表_长度单位换算表大全长度单位换算表大全我国传统的长度单位有里、丈、尺、寸等。1里=150丈=500米。2里=1公里(1000米)1丈=10尺,1尺=10寸。1丈=3.33米,1尺=3.33分米,1寸=3.33厘米。国际单位制中,长度的标准单位是“米”,用符号“m”表示。1960年第十一届国际计量大会:“米的长度等于氪-86原子的2P10和5d1能级之间跃迁的辐射在真空中波长的1650763.73倍”。其他的长度单位还…

    2022年7月11日
  • 如何利用IDM加速下载百度网盘大文件

    如何利用IDM加速下载百度网盘大文件如何利用IDM加速下载百度网盘大文件(以下内容来自扩展迷EXTFANS,侵权可删)一、开发背景二、功能介绍三、如何下载百度网盘大文件1、安装IDM软件2、配置IDM软件3、安装油猴脚本4、下载百度网盘文件一、开发背景谷歌浏览器纵使有许多优点,但下载管理这方面依然是其劣势。Chrome的原生下载管理功能,谁用了大概都要说一句“鸡肋”。不仅入口需要打开二级菜单,而且连最基本的一些执行操作都不支持。每当在浏览网页时,我们经常看到一些有趣的视频想要下载下来。这时候,就只有通过视频嗅探工具来实现。而在面对百度网盘

    2022年6月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号