Python统计学06——分类变量分析

参考书目:贾俊平. 统计学——Python实现. 北京: 高等教育出版社,2021.

(最近很多同学找我要这个数据,可以参考:贾俊平统计学,整本书的实验数据都在里面) 


方差分析的定义是检验分类型自变量对数值型因变量是否有显著性影响。

分类的变量检验,一个分类变量叫做拟合优度检验,两个分类变量叫做独立性检验。

原理是概率论里面的事件独立性原理。


期望频数相等

导入包

import pandas as pd
from scipy.stats import chisquare

读取案例数据

example7_1=pd.read_csv("example7_1.csv",encoding="gbk")
example7_1

chi2, p_value=chisquare(f_obs=example7_1["人数"])
print(f"卡方统计量={chi2:.2f},  p值={p_value:.4g}")

 p小于0.05,说明拒绝原假设,不同饮料之间的买的人数有差异


期望频数不相等

example7_2=pd.read_csv("example7_2.csv",encoding="gbk")
example7_2

 计算

chi2, p_value=chisquare(f_obs=example7_2["离婚家庭数"],f_exp=example7_2["离婚家庭数"].sum()*example7_2["期望比例"])
print(f"卡方统计量={chi2:.3f},  p值={p_value:.4g}")

 p小于0.05,说明拒绝原假设,不同教育程度的离婚家庭数与期望频数有显著性差异


两个类别变量的拟合优度检验

#数据已经是列联表情形下的检验
from scipy.stats import chi2_contingency
x=[[126,158,35],[34,82,65]]
df = pd.DataFrame(x,index=['满意','不满意'],columns=['东部','中部','西部'])
chi2, p_value,df,f_exp=chi2_contingency(df)
print(f"卡方统计量={chi2:.3f}, 自由度={df} ,p值={p_value:.4g}。\n期望频数为: \n{f_exp}")

 上面是生成数据,下面是读取案例数据

#根据原始数据进行检验
example7_3=pd.read_csv("example7_3.csv",encoding="gbk")
example7_3

 生成列联表

count = pd.crosstab(index=example7_3['满意度'],columns=example7_3['地区']) #生成列联表count
count

 检验

chi2_contingency(count) #检验列联表
print(f"卡方统计量={chi2:.3f}, 自由度={df}, p值={p_value:.4g}。\n期望频数为: \n{f_exp}")

 p值很小,说明很显著,不同地区的满意程度是显著性不一样的。


两个类别变量的相关性度量

分类变量有三个相关系数,phi,v,c,计算如下

import math
n=500
chi2=51.827
phi =math.sqrt(chi2/n)
v=math.sqrt(chi2/n*(2-1))
c=math.sqrt(chi2/(chi2+n))
print(f"phi系数={phi:.5f}, v系数 ={v:.5f}, c系数={c:.5f}")

 三个数都是越大越相关。

Python中,可以使用概率论中的随机变量分布来进行统计计算。常见的离散型分布包括二项分布和泊松分布,连续性分布包括正态分布、均匀分布和指数分布等。这些分布可以用来计算概率、期望和方差等统计量。 对于正态分布,可以使用scipy.stats库中的norm模块进行计算。例如,可以使用norm.cdf函数计算小于某个值的概率,使用norm.ppf函数计算给定累积概率时的反函数值。代码示例如下: ``` from scipy.stats import norm # 计算小于40的概率 p1 = norm.cdf(40, loc=50, scale=10) # 计算30到40之间的概率 p2 = norm.cdf(40, loc=50, scale=10) - norm.cdf(30, loc=50, scale=10) # 计算小于2.5的概率 p3 = norm.cdf(2.5, 0, 1) # 计算-1.5到2之间的概率 p4 = norm.cdf(2) - norm.cdf(-1.5) # 计算累计概率为0.025时的反函数值 q1 = norm.ppf(0.025, loc=0, scale=1) # 计算累计概率为0.975时的反函数值 q2 = norm.ppf(0.975, 0, 1) print(p1, p2, p3, p4, q1, q2) ``` 对于计算随机变量的概率分布的均值和方差,可以使用numpy库进行计算。代码示例如下: ``` import numpy as np # 假设有一个数据框df,其中包含了不合格品数和概率 mymean = sum(df['不合格品数'] * df['概率']) # 计算均值 myvar = sum((df['不合格品数'] - mymean) ** 2 * df['概率']) # 计算方差 mystd = np.sqrt(myvar) # 计算标准差 print(mymean, myvar, mystd) ``` 以上是关于Python统计学中随机变量的概率分布的一些基本操作和计算方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python统计学03——随机变量的概率分布](https://blog.csdn.net/weixin_46277779/article/details/126673517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡之尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值