效应大小及其在Python中的应用

效应大小是衡量变量间关系强度的重要指标,尤其在机器学习领域中,它帮助了解模型特征的重要性。不同于p值仅告诉关系是否显著,效应大小还告诉这种关系有多强。例如,在评估新药物效果时,不仅需要知道新药是否比旧药更好(通过p值),还需要知道它好了多少(通过效应大小)。

数据分析中,可以根据变量的类型(例如,分类变量或连续变量)来选择不同的效应大小指标。以下是一些常见的效应大小指标及其在Python中的计算方法。

连续-连续变量的效应大小

当数据符合参数分布(即数据呈正态分布且相关性为线性)时,可以使用皮尔逊相关系数来衡量两个连续变量之间的相关性。皮尔逊相关系数的取值范围在-1到1之间,接近0表示相关性弱,接近-1或1表示相关性强。

import numpy as np # 计算变量x和y之间的皮尔逊相关系数矩阵 np.corrcoef(x, y)

如果数据存储在Pandas的DataFrame中,可以使用以下函数来计算数值变量之间的相关系数矩阵。

import pandas as pd # 计算DataFrame中数值变量的相关系数矩阵 df.corr()

当数据不符合参数分布时,可以使用斯皮尔曼等级相关系数。斯皮尔曼等级相关系数比较的是每个变量值的等级而非实际值。

from scipy import stats # 计算斯皮尔曼等级相关系数 print(stats.spearmanr([1,2,3,4,5], [5,6,7,8,7]))

使用Pandas计算斯皮尔曼等级相关系数的方法如下:

df.corr(method='spearman')

分类-连续变量的效应大小

当一个变量是分类的,另一个是连续的,可以使用相关比率(eta)来衡量分类变量对连续变量的影响。相关比率的计算涉及到每个类别的平均值和总体平均值。

import numpy as np import pandas as pd def correlation_ratio(categories, measurements): # 计算相关比率的代码实现 pass

相关比率的取值范围在0到1之间,接近0表示所有类别的值相似,没有单一类别对变量y有较大影响;接近1表示一个或多个类别的值与其他类别不同,对变量y有较大影响。

Cohen's d

Cohen's d用于计算两个类别之间的标准化差异。以下是计算Cohen's d值的Python函数。

import numpy as np def cohend(d1, d2): # 计算Cohen's d的代码实现 pass

克拉默V(Cramer's V)用于基于卡方检验统计量来衡量两个分类变量之间的相关性。以下是计算克拉默V的Python函数。

import scipy from itertools import product def cramers_v(x, y): # 计算克拉默V的代码实现 pass def cat_cat(df, cat_features): # 在DataFrame中计算克拉默V的代码实现 pass
  • 效应大小是衡量变量关系强度的重要指标,尤其在机器学习问题中。
  • 可以为分类变量和连续变量的不同组合计算效应大小。
  • 通过自定义函数,可以计算DataFrame中所有列的效应大小。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485