独立性卡方检验是一种统计程序,用于评估两个分类变量之间的关系——确定它们是相关还是独立。探索房产的视觉吸引力及其对估价的影响是很有趣的。但是,您多久会将房屋的外观与车库等功能性特征联系起来?通过卡方检验,您可以确定特征之间是否存在统计学上的显著关联。
让我们开始吧。

有车库还是没有?通过卡方检验对爱荷华州艾姆斯市的住房洞察
图片来源:Damir Kopezhanov。保留部分权利。
概述
本文分为四个部分;它们是:
- 理解卡方检验
- 卡方检验的工作原理
- 揭示外部质量与车库存在之间的关联
- 重要注意事项
理解卡方检验
卡方($\chi^2$)检验因其能够检验**分类变量**之间的关系而非常有用。它在处理名义或序数数据时尤其有价值,因为这些变量被划分为类别或组。卡方检验的主要目的是确定两个分类变量之间是否存在统计学上的显著关联。换句话说,它有助于回答以下问题:
- 两个分类变量是否相互独立?
- 如果变量是独立的,则一个变量的变化与另一个变量的变化无关。它们之间没有关联。
- 两个分类变量之间是否存在显著关联?
- 如果变量之间存在关联,则一个变量的变化与另一个变量的变化有关。卡方检验有助于量化这种关联是否具有统计学意义。
在您的研究中,您关注房屋的外部质量(分为“好”或“一般”)及其与车库存在与否的关系。为了使卡方检验的结果有效,必须满足以下条件:
- 独立性:观察结果必须是独立的,这意味着一个结果的发生不应影响另一个结果。我们的数据集满足这一条件,因为每个条目都代表一栋不同的房屋。
- 样本量:数据集不仅应该随机抽样,而且应该足够大以具有代表性。我们的数据来源于爱荷华州埃姆斯市,满足这一标准。
- 期望频率:列联表中的每个单元格都应具有至少5的期望频率。这对于检验的可靠性至关重要,因为卡方检验依赖于大样本近似。您将在下面通过创建和可视化期望频率来证明这一条件。
通过我的书籍《数据科学初学者指南》启动您的项目。它提供了自学教程和可运行的代码。
卡方检验的工作原理
卡方检验将数据中的观测频率与基于假设的期望频率进行比较。
卡方检验通过将列联表中类别的观测频率与在独立性假设下预期的期望频率进行比较来工作。列联表是两个分类变量的交叉制表,显示了有多少观测值落入每个类别组合中。
- 零假设($H_0$):卡方检验中的零假设假定两个变量之间是独立的,即观测频率(有车库或无车库)应该匹配。
- 备择假设($H_1$):备择假设表明两个变量之间存在显著关联,即观测频率(有车库或无车库)应该根据另一个变量(房屋质量)的值而不同。
卡方检验的检验统计量是通过比较列联表中每个单元格的观测频率和期望频率来计算的。观测频率和期望频率之间的差异越大,卡方统计量就越大。卡方检验会产生一个p值,它表示在独立性假设下观测到的关联(或更极端的关联)的概率。如果p值低于所选择的显著性水平 $\alpha$(通常为0.05),则拒绝独立性的零假设,表明存在显著关联。
揭示外部质量与车库存在之间的关联
使用埃姆斯住房数据集,您将着手确定房屋的外部质量与车库是否存在之间是否存在关联。让我们深入分析的具体细节,并辅以相应的Python代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# 导入基本库 import pandas as pd from scipy.stats import chi2_contingency # 加载数据集 Ames = pd.read_csv('Ames.csv') # 提取相关列 exterqual_garagefinish_data = Ames[['ExterQual', 'GarageFinish']].copy() # 用“无车库”填充“GarageFinish”列中的缺失值 exterqual_garagefinish_data['GarageFinish'].fillna('No Garage', inplace=True) # 将“GarageFinish”分组为“有车库”和“无车库” exterqual_garagefinish_data['Garage Group'] \ = exterqual_garagefinish_data['GarageFinish'] \ .apply(lambda x: 'With Garage' if x != 'No Garage' else 'No Garage') # 将“ExterQual”分组为“好”和“一般” exterqual_garagefinish_data['Quality Group'] \ = exterqual_garagefinish_data['ExterQual'] \ .apply(lambda x: 'Great' if x in ['Ex', 'Gd'] else 'Average') # 构建简化列联表 simplified_contingency_table \ = pd.crosstab(exterqual_garagefinish_data['Quality Group'], exterqual_garagefinish_data['Garage Group']) # 打印观测频率 print("Observed Frequencies:") observed_df = pd.DataFrame(simplified_contingency_table, index=["Average", "Great"], columns=["No Garage", "With Garage"]) print(observed_df) print() # 执行卡方检验 chi2_stat, p_value, _, expected_freq = chi2_contingency(simplified_contingency_table) # 打印期望频率 print("Expected Frequencies:") print(pd.DataFrame(expected_freq, index=["Average", "Great"], columns=["No Garage", "With Garage"]).round(1)) print() # 打印测试结果 print(f"Chi-squared Statistic: {chi2_stat:.4f}") print(f"p-value: {p_value:.4e}") |
输出结果应为:
1 2 3 4 5 6 7 8 9 10 11 12 |
观测频率 无车库 有车库 一般 121 1544 好 8 906 期望频率 无车库 有车库 一般 83.3 1581.7 好 45.7 868.3 卡方统计量:49.4012 p值:2.0862e-12 |
上述代码执行了三个步骤:
数据加载与准备
- 您首先加载数据集并提取相关列:
ExterQual
(外部质量)和GarageFinish
(车库装修)。 - 识别到
GarageFinish
中存在缺失值后,您明智地将其替换为标签"No Garage"
,表示没有车库的房屋。
数据分组以简化
- 您进一步将
GarageFinish
数据分为两组:“有车库”(适用于任何类型车库的房屋)和“无车库”。 - 同样,您将
ExterQual
数据分为“好”(外部质量极佳或良好的房屋)和“一般”(外部质量一般或尚可的房屋)。
卡方检验
- 数据准备妥当后,您构建了一个列联表,以描绘新形成的类别之间的观测频率。它们是输出中打印的两个表格。
- 然后,您使用 SciPy 对此列联表执行了卡方检验。打印出的p值远小于 $\alpha$。从检验中获得的极低p值表明,在此数据集中,房屋的外部质量与车库的存在之间存在统计学上的显著关联。
- 快速浏览期望频率即可满足卡方检验的第三个条件,即每个单元格中至少有5个事件。
通过这项分析,您不仅优化和简化了数据以使其更易于解释,还为两个感兴趣的分类变量之间的关联提供了统计证据。
想开始学习数据科学新手指南吗?
立即参加我的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
重要注意事项
卡方检验尽管有用,但也有其局限性:
- 无因果关系:虽然该检验可以确定关联,但它不能推断因果关系。因此,即使房屋的外部质量与其车库的存在之间存在显著关联,您也不能得出两者之间存在因果关系的结论。
- 方向性:该检验表明存在关联,但未指定其方向。但是,我们的数据表明,外部质量评级为“好”的房屋比评级为“一般”的房屋更有可能拥有车库。
- 幅度:该检验不提供对关系强度洞察。在这方面,像 Cramér’s V 这样的其他指标将提供更多信息。
- 外部有效性:我们的结论仅适用于埃姆斯数据集。在将这些发现推广到其他地区时,建议谨慎。
进一步阅读
在线资源
资源
总结
在这篇文章中,您深入探讨了卡方检验及其在埃姆斯住房数据集上的应用。您发现房屋的外部质量与车库的存在之间存在显著关联。
具体来说,你学到了:
- 卡方检验的基础和实用性。
- 卡方检验揭示了埃姆斯数据集中房屋外部质量与车库存在之间的显著关联。与外部质量评级为“一般”的房屋相比,外部质量评级为“好”的房屋拥有车库的可能性更高,这一趋势具有统计学意义。
- 卡方检验的重要注意事项和局限性。
您有任何问题吗?请在下面的评论中提出您的问题,我将尽力回答。
暂无评论。