卡方分布

卡方分布主要有两个作用其中一个是检验拟合优度,另外一个作用是检验变量之间的相关性

拟合优度检验

依据总体分布状况,计算出分类变量中各类别的期望频数,与分布的观察频数进行对比,判断期望频数观察频数是否有显著差异,从而达到从分类变量进行分析的目的。

如何观察显著差异呢?
用卡方分布进行检验为单尾检验,右尾被作为拒绝域。则通过查看检验统计量是否位于右尾的拒绝域以内,可以通过期望分布得到的结果的可能性来判断显著性水平,再通过查询卡方概率表来判断拒绝域范围。

主要步骤

确定检验的零假设与备选假设
a、零假设:H0:O-T=0;备择假设: O-T≠0
求出期望频数与自由度
b、期望频数与观察频数总量相同,再根据变量实际概率分布来确定期望频数,自由度则是组数减去限制数

确定用于决策的拒绝域
c、根据显著性水平与自由度确定拒绝域

计算检验统计量x^2
d、
在这里插入图片描述
检查统计量是否位于拒绝域之内
根据卡方统计表查看x^2是否在拒绝域之内
做出决策
如果位于拒绝域之内说明在要求的显著性水平之内有足够证据拒绝原假设,并且接受备选假设。

相关性分析

下面我们来讨论一下如何做相关性分析
相关性分析是指对两个或者多个具备相关性的变量元素进行分析,从而衡量两个变量因素的密切程度相关性,换句话说这两个变量之间如果有联系那么他们有多大的联系?

线性拟合

第一步当有两组变量需要判断是否具有相关性的时候,一般可能成线性关系,我们可以按照顺序列出他们的散点图在做线性拟合如图

#创建两组数据分别从0-100,0-1000
data_value1 = pd.DataFrame(np.random.rand(100)*100).sort_values(by=0) 
data_value2 = pd.DataFrame(np.random.rand(100)*1000).sort_values(by=0)
print(data_value1)

在这里插入图片描述

from sklearn.linear_model import LinearRegression#导入线性回归包
lin_reg = LinearRegression()
lin_reg.fit(data_value1,data_value2)
lin_reg.coef_#存放回归系数array([[10.1031104]])
lin_reg.intercept_#array([-23.32940877])
y = 10.1031104*(data_value1)-23.32940877
#做散点图
plt.scatter(data_value1,data_value2)
plt.plot(data_value1,y,color='b')
plt.grid()

在这里插入图片描述
则结果:通过线性拟合得到两个变量之间存在线性关系

但是在一般情况下很难有完美的线性拟合的数据,并且不够有说服力,所以可以通过下面一种方法来进行相关性判断。

皮尔逊相关系数

皮尔逊相关系数是用于度量两个变量之间的相关(线性相关),其值介于-1与1之间。
公式为
在这里插入图片描述
皮尔逊相关系数,两个变量之间的相关性可以等于其协方差除以他们的标准差。
其中r值大小在(-1,1)之间,其正负号代表正相关与负相关
r相关系数的绝对值大小与相关性成正比如下

  • 0.8-1.0 极强相关
  • 0.6-0.8 强相关
  • 0.4-0.6 中等程度相关
  • 0.2-0.4 弱相关
  • 0.0-0.2 极弱相关或无相关

如何用皮尔逊相关系数进行测试相关性

# Pearson相关系数 - 算法

data1 = pd.Series(np.random.rand(100)*100).sort_values()
data2 = pd.Series(np.random.rand(100)*50).sort_values()
data = pd.DataFrame({'value1':data1.values,
                     'value2':data2.values})
print(data.head())
print('------')
# 创建样本数据

data.corr()
# pandas相关性方法:data.corr(method='pearson', min_periods=1) → 直接给出数据字段的相关系数矩阵
# method默认pearson

r= 0.985717可以看出value1,value2的相关性很强
在这里插入图片描述

用皮尔逊相关系数来检验变量的相关性一般满足两个条件
1.实验数据通常假设是成对的来自于正态分布的总体。为啥通常会假设为正态分布呢?因为我们在求皮尔森相关性系数以后,通常还会用t检验之类的方法来进行皮尔森相关性系数检验,而 t检验是基于数据呈正态分布的假设的。
2.实验数据之间的差距不能太大,或者说皮尔森相关性系数受异常值的影响比较大。

斯皮尔曼相关性系数

斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。对于样本容量为n的样本,n个原始数据被转换成等级数据,相关系数ρ为
在这里插入图片描述
他与皮尔逊相关系数不同的地方在于在计算之前他会先对数据进行排序防止出现异常值,如下列数据未进行排序其person相关系数为
下面一组数据表示小朋友智商与每周看电视小时数的关系,其中数据是无排序状态,我们先使用Perason相关系数来看看情况

# Pearson相关系数 - 算法

data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],
                    '每周看电视小时数':[7,0,27,50,28,29,20,12,6,17]})
print(data)
print('------')
# 创建样本数据
data.corr()

如图可以看到用person测基本不相关
在这里插入图片描述
再使用spearman相关系数测试

data.corr(method='spearman')#修改

在这里插入图片描述
可以看到看电视与智商成负相关,但影响不大。

肯德尔相关性系数

肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。

分类变量可以理解成有类别的变量,可以分为
无序的,比如性别(男、女)、血型(A、B、O、AB);
有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。
通常需要求相关性系数的都是有序分类变量。

举个例子。比如评委对选手的评分(优、中、差等),我们想看两个(或者多个)评委对几位选手的评价标准是否一致;或者医院的尿糖化验报告,想检验各个医院对尿糖的化验结果是否一致,这时候就可以使用肯德尔相关性系数进行衡量。

由于数据情况不同,求得肯德尔相关性系数的计算公式不一样,一般有3种计算公式,这里列出其中一种
R=(P-(n*(n-1)/2-P))/(n*(n-1)/2)=(4P/(n*(n-1)))-1

还是用cor函数求,这时候把method这个参数设成“kendall”,这时我们假设老师对选手的评价等级—3表示优,2表示中,1表示差:

data = pd.DataFrame({'老师A':[3,1,2,2,1,3],
                    '老师B':[1,2,3,2,1,1]})
data.corr(method='kendall')

在这里插入图片描述
这时候就可以理解为两位老师对选手们的看法是呈相反趋势的,不过这种相反的程度不很大。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值