卡方检验python程序_Python从零开始第二章(1)卡方检验(python)

如果我们想确定两个独立分类数据组的统计显着性,会发生什么?这是卡方检验独立性有用的地方。

Chi-Square检验

我们将在1994年查看人口普查数据。具体来说,我们对“性别和“每周工作时间”之间的关系感兴趣。在我们的案例中,每个人只能有一个“性别”,且只有一个工作时间类别。为了这个例子,我们将使用pandas将数字列'每周小时'转换为一个分类列。然后我们将'sex'和'hours_per_week_categories'分配给新的数据帧。# -*- coding: utf-8 -*-

"""

Created on Sun Feb 3 19:24:55 2019

@author: czh

"""

# In[*]

import matplotlib.pyplot as plt

import numpy as np

import math

import seaborn as sns

import pandas as pd

%matplotlib inline

import os

os.chdir('D:\\train')

# In[*]

cols = ['age', 'workclass', 'fnlwg', 'education', 'education-num',

'marital-status','occupation','relationship', 'race','sex',

'capital-gain', 'capital-loss', 'hours-per-week', 'native-country', 'income']

data = pd.read_csv('census.csv', names=cols,sep=', ')

# In[*]

#Create a column for work hour categories.

def process_hours(df):

cut_points = [0,9,19,29,39,49,1000]

label_names = ["0-9","10-19","20-29","30-39","40-49","50+"]

df["hours_per_week_categories"] = pd.cut(df["hours-per-week"],

cut_points,labels=label_names)

return df

# In[*]

data = process_hours(data)

workhour_by_sex = data[['sex', 'hours_per_week_categories']]

workhour_by_sex.head()sex hours_per_week_categories

0 Male 40-49

1 Male 10-19

2 Male 40-49

3 Male 40-49

4 Female 40-49

查看workhour_by_sex['sex'].value_counts()

Out[31]:

Male 21790

Female 10771

Name: sex, dtype: int64workhour_by_sex['hours_per_week_categories'].value_counts()

Out[33]:

40-49 18336

50+ 6462

30-39 3667

20-29 2392

10-19 1246

0-9 458

Name: hours_per_week_categories, dtype: int64原假设

回想一下,我们有兴趣知道'sex'和'hours_per_week_categories'之间是否存在关系。 为此,我们必须使用卡方检验。 但首先,让我们陈述我们的零假设和另类假设。H0:性别与每周工作小时数没有统计学上的显着关系.H0:性别与每周工作小时数之间没有统计学上的显着关系。

H1:性别和每周工作小时数之间存在统计学上的显着关系.

下一步是将数据格式化为频率计数表。 这称为列联表,我们可以通过在pandas中使用pd.crosstab()函数来实现。contingency_table = pd.crosstab(

workhour_by_sex['sex'],

workhour_by_sex['hours_per_week_categories'],

margins = True

)

contingency_table

Out[34]:

hours_per_week_categories 0-9 10-19 20-29 30-39 40-49 50+ All

sex

Female 235 671 1287 1914 5636 1028 10771

Male 223 575 1105 1753 12700 5434 21790

All 6462 1246 18336 3667 458 2392 32561

该表中的每个单元表示频率计数。 例如,表格中“男性”行和“10 -19”列的交集将表示从我们的样本数据集中每周工作10-19小时的男性人数。 “全部”行和“50 +”列的交叉点表示每周工作50小时以上的人员总数。# In[*]

#Assigns the frequency values

malecount = contingency_table.iloc[0][0:6].values

femalecount = contingency_table.iloc[1][0:6].values

#Plots the bar chart

fig = plt.figure(figsize=(10, 5))

sns.set(font_scale=1.8)

categories = ["0-9","10-19","20-29","30-39","40-49","50+"]

p1 = plt.bar(categories, malecount, 0.55, color='#d62728')

p2 = plt.bar(categories, femalecount, 0.55, bottom=malecount)

plt.legend((p2[0], p1[0]), ('Male', 'Female'))

plt.xlabel('Hours per Week Worked')

plt.ylabel('Count')

plt.show()

image.png

上图显示了人口普查中的样本数据。如果性别与每周工作小时数之间确实没有关系。然后,数据将显示每个时间类别的“男性”和“女性”之间的均匀比率。例如,如果5%的女性工作50+小时,我们预计工作50小时以上的男性的百分比相同。

使用Scipy进行卡方检验

现在我们已经完成了所有计算,现在是时候寻找捷径了。f_obs = np.array([contingency_table.iloc[0][0:6].values,

contingency_table.iloc[1][0:6].values])

f_obs

from scipy import stats

stats.chi2_contingency(f_obs)[0:3]

Out[38]: (2287.190943926107, 0.0, 5)

p值= ~0,自由度= 5。

结论

如果p值<0.05,我们可以拒绝零假设。 “性别”和“每周工作时间”之间肯定存在某种关系。 我们不知道这种关系是什么,但我们知道这两个变量并不是彼此独立的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当使用makemigrations时报错No changes detected

在修改了models.py后&#xff0c;有些用户会喜欢用python manage.py makemigrations生成对应的py代码。 但有时执行python manage.py makemigrations命令&#xff08;也可能人比较皮&#xff0c;把migrations文件夹给删了&#xff09;&#xff0c;会提示"No changes detec…

以下是ECMAScript 2016、2017和2018中所有新增功能的示例

by rajaraodv通过rajaraodv 以下是ECMAScript 2016、2017和2018中所有新增功能的示例 (Here are examples of everything new in ECMAScript 2016, 2017, and 2018) It’s hard to keep track of what’s new in JavaScript (ECMAScript). And it’s even harder to find usef…

win10下markdownpad2显示问题

win10下解决html渲染问题 下载如下文件安装后&#xff0c;亲测可用 http://markdownpad.com/download/awesomium_v1.6.6_sdk_win.exe转载于:https://www.cnblogs.com/liuqidongprogram/p/6049295.html

php原生函数应用

php常见基本的函数 一、字符串函数implode — 将一个一维数组的值转化为字符串 lcfirst — 使一个字符串的第一个字符小写 ltrim — 删除字符串开头的空白字符&#xff08;或其他字符&#xff09; rtrim — 删除字符串末端的空白字符&#xff08;或者其他字符&#xff09; str_…

android 申请usb权限,USB 权限申请流程

USB android授权方式权限的控制分三块&#xff1a;1:USB host端有个线程循环检测系统是否USB设备插拔&#xff0c;如果有就找到申请权限的APP并调用起来2:APP运行后主动申请权限&#xff0c;也就是requestPermission()接口3:APP运行后直接打开USB设备&#xff0c;这时候USB hos…

ai人工智能程序_简单解释:一个AI程序如何掌握Go的古老游戏

ai人工智能程序by Aman Agarwal通过阿曼阿加瓦尔(Aman Agarwal) 简单解释&#xff1a;一个AI程序如何掌握Go的古老游戏 (Explained Simply: How an AI program mastered the ancient game of Go) This is about AlphaGo, Google DeepMind’s Go playing AI that shook the tec…

python提取hbase数据_详解python操作hbase数据的方法介绍

配置 thrift python使用的包 thrift 个人使用的python 编译器是pycharm community edition. 在工程中设置中&#xff0c;找到project interpreter&#xff0c; 在相应的工程下&#xff0c;找到package&#xff0c;然后选择 “” 添加&#xff0c; 搜索 hbase-thrift (Python cl…

工作随记

td自动换行:设置table 的 style"table-layout:fixed;" 然后设置td的 style"word-wrap:break-word;" white-space: nowrap 文本不换行 Intelidea创建好项目之后&#xff0c;右键新建Java class的时候发现没有改选项,在Project Structure设置源码目录 DOM4j中…

qt for android 图片可拉伸,qt实现九宫格布局,图片拉伸

在实现qt播放时&#xff0c;调用的mplayer,由于采用的是自定义绘图&#xff0c;用的是setAttribute(Qt::WA_TranslucentBackground);结果不能正常在上面显示播放画面&#xff0c;在默认皮肤下是没有问题的&#xff0c;决定用九宫格图片拉伸方式(效果如图)附件图片&#xff1a;文…

第一次作业-李纯锐201731084433

作业属于课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业要求位置 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706 我在这个课程的目标是&#xff1a; 认真学习好软件工程原理以及科学的软件项目开发与管理方法&…

定点化_mif文件生成

clc; %全屏清零 clear all; %变量清零 N2^8; %设置ROM深度&#xff08;字变量&#xff09;的变量参数&#xff0c; s_p0:255; …

zeppelin连接数据源_使用开放源代码合同(open-zeppelin)创建以太坊令牌

zeppelin连接数据源by Danny通过丹尼 使用开放源代码合同(open-zeppelin)创建以太坊令牌 (Create an Ethereum token using open source contracts (open-zeppelin)) I want to show you that creating a best practice token is a simple process. To be honest, we are goin…

python不是内部文件_已安装python,但是出现‘python’不是内部或外部命令,也不是可运行的程序或批处理文件。...

解决方法&#xff1a; 1.打开python shell查看你的python安装路径&#xff08;黄色标注&#xff09; >>> import sys >>> sys.path [, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\Lib\\idlelib, C:\\Users\\Administrator\\App…

使用canvas绘制时钟

使用canvas绘制时钟 什么使canvas呢&#xff1f;HTML5 <canvas> 元素用于图形的绘制&#xff0c;通过脚本 (通常是JavaScript)来完成。<canvas> 标签只是图形容器&#xff0c;所以我们必须使用脚本来绘制图形。通过它可以绘制路径,盒、圆、字符以及添加图像等等。 …

Visual Studio 2017创建XAML文件

Visual Studio 2017创建XAML文件在Visual Stuido 2015中&#xff0c;在已经创建好的项目中添加XAML文件&#xff0c;只要右击项目&#xff0c;单击“添加”|“新建项”命令&#xff0c;然后从“添加新项”对话框中&#xff0c;选择“Cross-Platform”|“Forms Xaml Page”选项即…

android 安装assets中的apk,如何安装assets下apk,附源码(原创)

publicstaticvoidInstall(Context ctx, String strLocalFile) {Intent intentInstallnewIntent();String apkPath"/data/data/"ctx.getPackageName()"/files";String apkName"yuan.apk";File filenewFile(apkPath, apkName);try{//assets下对于超…

FtpWebRequest.UsePassive属性:设置FTP工作模式

默认值&#xff1a;true&#xff0c;被动模式 PASV&#xff08;被动&#xff09;方式的连接过程是&#xff1a;客户端向服务器的FTP端口&#xff08;默认是21&#xff09;发送连接请求&#xff0c;服务器接受连接&#xff0c;建立一条命令链路。 当需要传送数据时&#xff0c; …

angular面试题及答案_关于最流行的Angular问题的StackOverflow上的48个答案

angular面试题及答案by Shlomi Levi通过Shlomi Levi 关于最流行的Angular问题的StackOverflow上的48个答案 (48 answers on StackOverflow to the most popular Angular questions) I gathered the most common questions and answers from Stackoverflow. These questions we…

c++分治法求最大最小值实现_最优化计算与matlab实现(12)——非线性最小二乘优化问题——G-N法...

参考资料《精通MATLAB最优化计算&#xff08;第二版&#xff09;》编程工具Matlab 2019a目录石中居士&#xff1a;最优化计算与Matlab实现——目录​zhuanlan.zhihu.com非线性最小二乘优化问题非线性最小二乘优化也叫无约束极小平方和函数问题&#xff0c;它是如下无约束极小问…

win7 IIS7环境下部署PHP 7.0

最近在本机电脑win7 II7环境下部署PHP 7.0遇到一些问题&#xff0c;将之记录下来 简要步骤如下&#xff1a; 1、到php官网下载php&#xff0c;由于是IIS环境要下载非线程安全的版本&#xff0c;我下载的是7.0.13 2、解压到本地文件目录下 3、通过控制台进入到php文件目录&#…