卡方检验
卡方检验主要是检验两个分类变量之间的关系,主要检验是否相关,不能表示强弱。 两个分类变量,其中有一个必须是二分类,不能都是多分类。
下面代码实践,使用的是泰坦尼克号人员信息的数据。分析船舱等级与存活是否存在关系:titanic.csv数据下载
1 2 3 4 5 6 7 8 9 |
import pandas as pd from scipy import stats titanic = pd.read_csv('titanic.csv') print(titanic.head(10)) table1 = pd.crosstab(titanic['pclass'],titanic['survived'],margins=False)#交叉表,用于统计两个变量之间的数据个数。 result = stats.chi2_contingency(table1)#卡方检验函数 print(result) #不同等级舱与是否存活是由显著差异的 |
1 2 3 4 |
看一下结果: (103.54712429415649, 3.273615369619628e-23, 2, array([[133.09090909, 82.90909091], [113.37373737, 70.62626263], [302.53535354, 188.46464646]])) |
这里咱们只看第二个值,这个值为pvalue,为 3.273615369619628e-23,明显小于0.05 这表明船舱等级与存活是存在显著差异的,也就是说,人们是否最终存活与所在的船舱有很大关系。至于有多大的关系,卡方检验无法给出程度。
方差分析
方差分析用于检验多个样本的均值是否有显著性差异,所以用于分析多于两个分类的离散型变量与连续变量的关系。例如不同教育程度的人收入水平是否有显著影响。
单因素方差分析
衡量不同因素对观测变量的影响程度,在数据分析中,不同因素可以理解为一个变量去不同值时对观测变量的影响,例如收入水平手否收教育程度影响,不同行业的股票收益率是否有显著差异。
多因素方差分析
考虑的是多个分类变量连续变量的影响,以及分类变量之间的交互效应,例如在考虑股票收益率与行业和地区关系时,还要考虑行业和地区的交互效应。
下面使用小费数据来分析,服务员获得的小费与性别、日期、时间的关系。tips数据下载
1 2 3 4 5 6 7 8 9 |
import pandas as pd from statsmodels.stats.anova import anova_lm from statsmodels.formula.api import ols tips = pd.read_csv('tips.csv') print(tips.head(10)) model = ols('tip ~ C(sex)+C(day)+C(time)',data=tips).fit()#用来配置几个相关联的变量 result = anova_lm(model)#方差分析函数 print(result) |
结果:
最后一个PR表示Pvalue,可以看出,tip与sex、day、time 的pvalue的值均大于0.05,表示服务员所获得的小费与性别,星期,时间没有明显的关系。
转载请注明:徐自远的乱七八糟小站 » python统计分析-卡方分析和方差分析