什么是卡方分析
卡方分析有两个常见的应用——适合度分析和独立性分析。这个笔记着重于适合度分析。从我目前的经验来看,这也是应用十分广泛的一种统计分析方式。那么什么是卡方适合度分析呢?且听我慢慢道来。
现象1 现象2 现象3
观测值 a b c
预期值 A B C
常见的适合度分析的结构如下,一般有两组数据,一组是你统计或者观察到的值,另一组是理论上的预期值。如果这两组值十分接近,证明观测到的结果很“合适”,如果差距较大,则证明观测到的数据不够“合适”,这就是“适合度分析”名字的含义。
这种统计分析在科学研究中是十分常用的,因为科学家经常按照理论预期来推测试验结果,而实际上由于各种误差的存在,实验数据不可能和理论预期完全一致,这时卡方检验就能很好地检验理论的正确性。
举个栗子
某科学家预言抛一个色子,各面向上的几率都相同。为了验证自己理论的正确性,该科学家抛了600次硬币,结果为一点102次,二点102次,三点96次,四点105次,五点95次,六点100次。显然这个结果和理论预期并不完全一样,那么,科学家的理论有错吗?我们就用Python来验证一下。
from scipy import stats
obs = [102, 102, 96, 105, 95, 100]
exp = [100, 100, 100, 100, 100, 100]
stats.chisquare(obs, f_exp = exp)
输出
(0.73999999999999999, 0.98070147251964801)
从结果来看,p 值为0.98,可以认为观测到的值和预期值是相近即“合适”的。科学家的理论没有错,观测值和理论值的不同是由偶然误差造成的。(一般 p 值大于0.95即可)
解释一下
Python中进行卡方分析的函数chisquare()位于scipy的stats模块中。注意:stats在Python2.7的环境下使用是十分正常的,但是在Python3中使用就会报错。说来惭愧,笔者之前试着在Py3下运行,结果折腾了大半天都没成功,换到Py2.7下,一点问题都没了。如果用Python进行数据分析,个人感觉还是Py2.7好使,很多模块都没有稳定的Py3版啊。当然之前的栗子也要求在Py2.7下运行。
scipy.stats.chisquare(f_obs, f_exp=None, ddof=0, axis=0)
参数解释如下:
f_obs : 观测值,为一个数列
f_exp : 理论值,为一个数列。如果不赋值,默认为所有情况出现的可能相等。所以栗子中可以不赋值
>>>stats.chisquare(obs)
(0.73999999999999999, 0.98070147251964801)
ddof : 即自由度, df = C - 1,数值上等于所有可能的情况数-1。可以不用赋值,只要obs和exp没问题,程序可以自己算出来。
输出的结果是:
chisq: 即k值
p : p 值,大于0.95即统计显著。
作者:ironbeak_owl
链接:https://www.jianshu.com/p/c307d04eee56
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。