执行t检验相关Python代码出现ValueError,无法确定具体报错原因
错误原因排查
- 存在无效导入语句
开头的import libraries不属于合法Python语法,运行会直接触发导入报错,需要删除。
- 存在无效导入语句
- 统计函数使用不匹配
你的需求是对两组独立样本做t检验,也已经提前导入了scipy.stats.ttest_ind,但实际调用的是stats.pearsonr。后者是计算两个变量皮尔逊相关系数的函数,要求输入的两个数组长度必须完全相等,而按性别拆分后的男性、女性样本量大概率不一致,调用pearsonr就会触发ValueError。
- 统计函数使用不匹配
- 打印逻辑错误
第4步检验bmi的代码中,两次打印都输出了t值tb,漏了p值pb的输出。
- 打印逻辑错误
修正后代码
1. 导入依赖库
import pandas as pd from scipy import stats from scipy.stats import ttest_ind df = pd.read_csv('https://tf-assets-prod.s3.amazonaws.com/tf-curric/data-analytics-bootcamp/medicalcosts.csv')
2. 按性别字段拆分生成两个独立的DataFrame
df_male = df.loc[df['sex'] == 'male'] df_female = df.loc[df['sex'] == 'female']
3. 对男性和女性的charges列执行t检验并打印结果
# 若假设两组方差齐可删除equal_var=False参数 tc, pc = ttest_ind(df_male.charges, df_female.charges, equal_var=False) print(tc) print(pc)
4. 对男性和女性的bmi列执行t检验并打印结果
# 若假设两组方差齐可删除equal_var=False参数 tb, pb = ttest_ind(df_male.bmi, df_female.bmi, equal_var=False) print(tb) print(pb)
内容的提问来源于stack exchange,提问作者Jeffrey Lueken
相关产品推荐
相关产品推荐

