【Python・统计学】皮尔逊相关分析(原理及代码)

前言

自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎)

本文重点:皮尔逊相关分析

【1.皮尔逊相关分析的简单原理

2.皮尔逊相关分析的数据实例

3.皮尔逊相关分析代码

▷重要:相关关系不等于因果关系

1.皮尔逊相关分析的简单原理(简单看看就行)

  • 假设检验:皮尔逊相关检验的零假设(H0)是两个变量之间没有线性关系,即相关系数等于0;备择假设(H1)是两个变量之间存在线性关系,即相关系数不等于0。
  • 计算相关系数(皮尔逊相关系数(r)的计算公式):

     r = (Σ((X - μX)(Y - μY))) / (n * σX * σY) 

   其中,X和Y是两个变量,μX和μY分别是X和Y的均值,σX和σY分别是X和Y的标准差,n是样本量。

  • 计算 p 值:根据样本量和相关系数,可以计算出 p 值,用于判断相关性的显著性水平。通常,如果 p 值小于显著性水平(如0.05),则拒绝零假设,认为两个变量之间存在显著的线性关系。
▷重要:相关关系不等于因果关系

因此相关分析的结果只能说明随着自变量的变化因变量的变化,并不能说明两者之间存在因果关系

【需要注意】

  1. 样本量:皮尔逊相关分析对样本量有一定要求。当样本量较小时,相关系数的估计可能不稳定,导致结果不可靠。一般来说,样本量应至少达到30个,以确保分析的稳健性。
  2. 数据类型:皮尔逊相关分析要求两个变量都是连续型变量,且数据应该在区间或比率尺度上。如果使用序数尺度或分类变量,则应考虑使用其他方法,如斯皮尔曼相关分析或卡方检验。
  3. 数据分布:皮尔逊相关分析假设两个变量呈正态分布。如果数据严重偏离正态分布,相关系数可能会被扭曲。在这种情况下,可以考虑对数据进行转换(如对数转换)或使用非参数方法,如斯皮尔曼相关分析。
  4. 异常值:异常值可能对皮尔逊相关系数产生很大影响。异常值可能会夸大或缩小相关性,导致误导性的结果。在进行分析之前,应该仔细检查数据并处理任何异常值。

2.皮尔逊相关分析的数据实例

  1. 学生的学习时间和考试成绩之间是否相关:
    • 学习时间(小时): 10, 15, 20, 25, 30, 35, 40, 45, 50, 55
    • 考试成绩(分数): 60, 65, 70, 75, 80, 85, 90, 95, 100, 105
  2. 广告支出与产品销售额之间是否相关:
    • 广告支出(千元): 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
    • 产品销售额(万元): 50, 60, 70, 80, 90, 100, 110, 120, 130, 140
  3. 汽车的马力与油耗之间是否相关:
    • 马力(PS): 100, 120, 140, 160, 180, 200, 220, 240, 260, 280
    • 油耗(L/100km): 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5

通过计算皮尔逊相关系数和 p 值,我们可以确定这些变量之间是否存在显著的线性相关性,以及相关性的强度和方向。

3.皮尔逊相关分析代码

探究国家人均 GDP 与预期寿命之间的关系

以下是 20 个国家的人均 GDP(美元)和预期寿命(年)数据:

国家人均 GDP预期寿命
美国62,79478.5
日本39,28684.1
德国47,60380.8
英国42,94380.9
法国41,46482.3
意大利34,48382.8
加拿大46,23381.9
韩国31,36282.0
俄罗斯11,28972.4
巴西8,92075.1
中国9,77176.4
印度2,01068.8
澳大利亚57,30582.6
西班牙30,37183.1
墨西哥9,94675.0
印度尼西亚3,89471.5
荷兰52,36781.6
沙特阿拉伯23,21974.8
土耳其9,37077.4
瑞士82,95083.3
import numpy as np
from scipy.stats import pearsonr

gdp = np.array([62794, 39286, 47603, 42943, 41464, 34483, 46233, 31362, 11289, 8920,
                9771, 2010, 57305, 30371, 9946, 3894, 52367, 23219, 9370, 82950])
life_expectancy = np.array([78.5, 84.1, 80.8, 80.9, 82.3, 82.8, 81.9, 82.0, 72.4, 75.1,
                            76.4, 68.8, 82.6, 83.1, 75.0, 71.5, 81.6, 74.8, 77.4, 83.3])

corr, p_value = pearsonr(gdp, life_expectancy)

print(f"皮尔逊相关系数: {corr:.2f}")
print(f"p 值: {p_value:.4f}")
皮尔逊相关系数: 0.80
p 值: 0.0000

根据结果,人均 GDP 和预期寿命之间的皮尔逊相关系数为 0.80,表示两个变量之间存在较强的正相关关系。p 值非常小(远小于 0.05),因此我们可以拒绝零假设,认为人均 GDP 和预期寿命之间存在显著的线性相关性。

这个实例表明,通常情况下,人均 GDP 较高的国家,其公民的预期寿命也较高。当然,这种关系可能受到其他因素的影响,如医疗保健质量、生活方式等。

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 答:可以使用以下代码进行皮尔逊相关性分析: import numpy as np from scipy.stats import pearsonr # 测试数据 x = np.arange(10) y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])# 计算皮尔逊关性 corr, _ = pearsonr(x, y) print('Pearson correlation: %.3f' % corr) ### 回答2: 皮尔逊相关性分析是一种用于度量两个变量之间线性关程度的统计方法。在Python中,可以使用`scipy.stats`模块中的`pearsonr`函数来进行皮尔逊相关性分析。 以下是一个示例代码: ```python import numpy as np from scipy.stats import pearsonr # 创建两个变量的示例数据 x = np.array([1, 2, 3, 4, 5]) y = np.array([2, 4, 6, 8, 10]) # 计算皮尔逊关系数和p值 corr_coef, p_value = pearsonr(x, y) print("皮尔逊关系数:", corr_coef) print("P值:", p_value) ``` 在这个例子中,我们假设`x`和`y`分别代表两个变量的数据。`pearsonr`函数的参数为两个一维数组,它返回的结果是皮尔逊关系数和对应的p值。 请注意,在使用`pearsonr`函数之前,你需要确保已经安装了`scipy`模块,可以使用以下命令进行安装: ``` pip install scipy ``` 通过以上的代码,你可以获得`x`和`y`之间的皮尔逊关系数以及对应的p值。请注意,皮尔逊关系数的取值范围在-1到1之间,-1表示完全负关,+1表示完全正关,而0表示没有线性关系。p值是对皮尔逊关系数的显著性进行评估的指标,一般用于检验关系数是否显著。 ### 回答3: 皮尔逊相关性分析是一种衡量两个变量之间关联程度的统计方法,可以用来判断两个变量之间的线性关系强度及方向。在Python中,可以使用scipy库进行皮尔逊相关性分析。 以下是一个用Python进行皮尔逊相关性分析代码示例: ```python import numpy as np from scipy import stats # 定义两个变量 x = np.array([1, 2, 3, 4, 5]) y = np.array([5, 4, 3, 2, 1]) # 计算关系数和p值 corr, p_value = stats.pearsonr(x, y) # 输出关系数和p值 print("关系数:", corr) print("p值:", p_value) ``` 上述代码中,首先导入了numpy和scipy库。然后定义了两个变量x和y,这里为了示例,只用了简单的一维数组。 接下来调用`stats.pearsonr()`函数来计算关系数和p值。该函数接受两个参数,即待分析的两个变量,返回一个包含关系数和p值的元组。最后使用`print()`函数输出关系数和p值。 上述代码运行结果应该为: ``` 关系数: -1.0 p值: 0.0 ``` 这表示变量x和y之间的关系数为-1,表示完全负关,而p值为0,表示关系数的显著性为0,即存在极高的显著性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值