什么是卡方检验

卡方检验是一种用途很广的基于卡方分布的假设检验方法,其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。其主要应用于分类变量,根据样本数据推断总体分布与期望分布是否有显著差异或推断两个分类变量是否相关或相互独立。

卡方检验分类

卡方检验步骤

卡方检验可以参照一般假设检验步骤:设置原假设与备择假设

设置显著性水平

根据问题选择具体的假设检验方式

计算统计量,并通过统计量获取P值

根据P值与显著性水平,决定接受原假设还是备择假设

一般可以设原假设为:观察频数与期望频数没有差异,或者两个变量相互独立不相关。

卡方检验的计算公式为:

从公式也可以看出它是利用类别变量的观测值频数与期望值频数进行构建的。

卡方检验的应用实例应用实例--拟合优度检验

以掷骰子为例,有一天小王同学闲来无事,发现桌上刚好有一枚骰子,身为数据分析师的他,好奇骰子是不是均匀的,于是他连着投掷了120次,并统计了各点出现的次数。由于原假设骰子是均衡的,所以每点数期望值都为20。

第一步我们确定原假设即骰子是均衡的,第二步设置显著性水平α=0.05,在确立使用卡方检验之后

确定上述统计值之后,并结合卡方表就可对其进行判断。

接下来用python实现

import pandas as pd

import numpy as np

from scipy import stats

#创建上述表

observed_pd = pd.DataFrame(['1点']*23+['2点']*20+['3点']*18+['4点']*19+['5点']*24+['6点']*16)

expected_pd = pd.DataFrame(['1点']*20+['2点']*20+['3点']*20+['4点']*20+['5点']*20+['6点']*20)

observed_table = pd.crosstab(index=observed_pd[0],columns='count')

expected_table = pd.crosstab(index=expected_pd[0],columns='count')

print(observed_table)

print('——————')

print(expected_table)

#通过公式算出卡方值

observed = observed_table

expected = expected_table

chi_squared_stat = ((observed-expected)**2/expected).sum()

print('chi_squared_stat')

print(chi_squared_stat)

有两种实现方式

#方法一

crit = stats.chi2.ppf(q=0.95,df=5) #95置信水平 df = 自由度

print(crit) #临界值,拒绝域的边界 当卡方值大于临界值,则原假设不成立,备择假设成立

P_value = 1-stats.chi2.cdf(x=chi_squared_stat,df=5)

print('P_value')

print(P_value)

# 方法二

stats.chisquare(f_obs=observed, #Array of obversed counts

f_exp=expected) #Array of expected counts

可以看出P值要远大于显著性水平α,所以我们没有理由拒绝原假设,即骰子是均匀的。

2.应用实例--交叉表卡方

在日常的数据分析工作中,卡方检验主要用于留存率,渗透率等漏斗指标,下面我们就以留存率为例,假设平台从微博、微信、知乎渠道引流,现在我们要确定留存率是否与渠道有关。(示例数据皆为虚构)

第一步我们先设立原假设:留存率与渠道无关;第二步设置显著性水平α=0.05,在确立使用卡方检验之后接下来用python实现

df = pd.DataFrame(columns = ['register','stay'],index = ['weibo','zhihu','weixin'],

data=[[11570,3173],[15113,3901],[18244,4899]])

df['lost'] = df['register']- df['stay']

df

observed = df[['stay','lost']]

stats.chi2_contingency(observed=observed)

可以看出P值要小于我们原先定的显著性水平α,所以我们有理由拒绝原假设,即用户渠道的确影响了留存情况,两者并不是相互独立的。

卡方检验python程序_卡方检验及其python实现相关推荐

  1. anaconda怎么运行python程序_第一个python程序,从安装python环境到人生第一个py脚本运行全过程...

    文章目录 前言一.安装python运行环境 1.官网https://www.python.org下载安装包.exe 2.安装python二.python模块下载 1.配置pip环境变量 2.下载pyt ...

  2. atom编写python程序_如何进行Python程序的编写

    一.使用Python自身提供的交互式解释器 在Linux.Windows.Mac OS的命令行窗口或Shell窗口,执行python命令,启动Python交互式解释器.交互式解释器会等待用户输入Pyt ...

  3. python程序_正确配置Python应用程序

    让我们来讨论一下如何配置Python应用程序,特别是那些可能存在于多个环境中的应用程序--开发环境.模拟环境.生产环境等等-- 应用程序中使用的工具和框架并不是特别重要,因为我将在下面概述的方法是基于 ...

  4. 编写python程序_如何进行Python程序的编写

    一.使用Python自身提供的交互式解释器 在Linux.Windows.Mac OS的命令行窗口或Shell窗口,执行python命令,启动Python交互式解释器.交互式解释器会等待用户输入Pyt ...

  5. 宝塔面板执行python程序_利用宝塔+python+搭建falsk项目_详

    首先安装python3 安装python3后安装宝塔面板 Centos安装脚本 : yum install -y wget && wget -O install.sh http://d ...

  6. python代码怎么运行-Python程序执行原理,python程序怎么运行的?

    随着人工智能时代的来临,python成为了人们学习编程的首先语言.那么,python程序的程序的执行原理什么呢?python程序怎么运行的?我们下面来介绍下. 我们都知道,使用CC++之类的编译性语言 ...

  7. python程序-Python程序执行原理,python程序怎么运行的?

    随着人工智能时代的来临,python成为了人们学习编程的首先语言.那么,python程序的程序的执行原理什么呢?python程序怎么运行的?我们下面来介绍下. 我们都知道,使用CC++之类的编译性语言 ...

  8. python编程第一程序_第一个Python程序_Python编程开发教程

    第一个Python程序 用notepad++编写程序代码 语言设置为python(高量显示函数和关键字)(注意:行首不能有空格,Python对缩进要求严格) 命令提示符运行 cd \文件名 #打开py ...

  9. 服务器跑python程序_远程编写+调试服务器上的Python程序

    原帖参见(需自备梯子):https://webcache.googleusercontent.com/search?q=cache:1htdR2EXj5wJ:https://www.digitaloc ...

  10. python怎么开发安卓程序_怎样用python开发安卓app-到底如何使用Python开发Android程序.txt...

    Python是一种动态语言,是比较简单的. Android不直接支持使用Python开发的应用程序,它需要使用它的中间件或数据库.它提供了在Android平台上的Python语言的支持; Python ...

最新文章

  1. DLL注入-APC注入
  2. vdsm的SSL证书验证过程
  3. (Hook)SetWindowsHookEx和UnhookWindowsHookEx
  4. if you are alone with your mac connected to Internet
  5. asp.net中实现文件批量上传
  6. 【STM32】DMA程序示例
  7. wasm-simd入门(卷积指令)
  8. 为什么使用中间件下载时总是收到警告消息Object is in status Wait
  9. opensll、libcurl库安装的使用,树莓派CSI摄像头的配置,树莓派调用智能API平台实现人脸识别、树莓派配置中文环境
  10. 【零散积累】 vim常用操作
  11. 云计算应用之路--第三届中国云计算大会
  12. 联姻寺库,一次半斤八两的合作,趣店的奢侈品生意仍看不见未来
  13. MEF入门之不求甚解,但力求简单能讲明白(四)
  14. 生命科学研究需求推动云计算发展
  15. SQL Server 各版本密钥
  16. ADC的DMA多通道数据采集(雨滴传感器+光敏传感器)
  17. 坦克大战源代码java_Java版坦克大战游戏源码示例
  18. 百度杀毒+7654联盟
  19. java后台实现HTTPS协议方法
  20. 十八、疑案系列之——永远的无头公案

热门文章

  1. 最全地理数据下载网址
  2. 智能泊车技术及现状详解
  3. SpringCloud微服务---学习笔记(二)--多级缓存
  4. ByteBuf浅层复制的使用
  5. 一起学Python_Day05_常用模块及相关操作
  6. linux usb 存储设备,找到哪个驱动器对应于Linux中的哪个USB大容量存储设备
  7. 毕业论文html代码查重吗,毕业论文中的代码内容重复了怎么办? 毕业论文代码重复率高...
  8. 李时珍食物疗法150条 百年难遇的养生千古名方
  9. LuatOS之LVGL字体篇
  10. 自我觉察的心理测试软件,看见自己|自我觉察的11个妙招