📅  最后修改于: 2023-12-03 15:41:36.761000             🧑  作者: Mango
在统计学中,Point-Biserial 相关性是用于衡量一个二元变量和一个连续变量之间的相关性的方法。在 Python 中,可以使用 scipy
库中的 pointbiseralr()
函数来计算 Point-Biserial 相关性。
在使用该函数前,需要先安装 scipy
库,可以使用以下命令进行安装:
pip install scipy
pointbiseralr()
函数接受两个参数:一个二元变量的数组和一个连续变量的数组。例如,如果要计算一个二元变量 X
和一个连续变量 Y
之间的 Point-Biserial 相关性,可以这样做:
from scipy import stats
X = [0, 1, 1, 0, 0, 1, 1, 1, 0, 1]
Y = [2, 4, 1, 6, 5, 3, 7, 9, 8, 10]
r, p_value = stats.pointbiserialr(X, Y)
print("Point-Biserial 相关系数为:", r)
print("p 值为:", p_value)
结果会输出 Point-Biserial 相关系数和 p 值。需要注意的是,如果二元变量的取值不是 0 和 1,则需要先将其转换为 0 和 1。
接下来给出一个综合示例,假设我们有一组数据,包括了某款游戏的玩家的性别和游戏进度。我们想要计算性别和游戏进度之间的 Point-Biserial 相关性。
from scipy import stats
gender = ["M", "F", "M", "F", "M", "F", "M", "F", "M", "F"]
progress = [80, 90, 75, 85, 70, 80, 75, 85, 65, 70]
# 将性别转换为二元变量,男性为 0,女性为 1
gender_binary = [0 if g == "M" else 1 for g in gender]
r, p_value = stats.pointbiserialr(gender_binary, progress)
print("Point-Biserial 相关系数为:", r)
print("p 值为:", p_value)
输出结果为:
Point-Biserial 相关系数为: -0.32577426977894037
p 值为: 0.3365804001495258
由此可见,在此例中性别和游戏进度之间的相关性并不显著。