【R语言】读懂Pearson相关分析结果

这篇博客通过R语言分析states.x77数据集中文盲率和预期寿命的Pearson相关性,解释了相关系数r及显著性水平α的计算过程,并展示了R语言的相关分析函数应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据说明

这里我对R语言的自带的数据包中states.x77(关于美国50个州的某些数据)第1至6列的50份数据从统计的角度以及R语言的角度进行分析,看看R语言是怎么做相关分析的,同时怎么看分析出的结果
首先我们观察一下states.x77中第1至6列的数据及其意义

列名 解释 单位
Population 人口
Income 人均收入 美元/人
Illiteracy 文盲率 %
Life Exp 预期寿命
Murder 谋杀率 %(每100,000人)
HS Grad 高中毕业率 %

2.统计学的计算过程

(1)我们拿出文盲率(设为x)和预期寿命(设为y)来从统计的角度计算相关系数r以及显著性水平α:

首先,我们假设文盲率和预期寿命符合计算Pearson相关系数的变量要求:
①两变量相互独立
②两变量为连续变量
③两变量的分布遵循正态分布
④两变量呈线性关系

换句话来说,当你选择的变量符合上要求的时候,可以选择使用Pearson相关系数来求两个变量间的相关关系

(2)按照上一篇文章对相关分析的解说,计算Pearson相关系数的时候,有两个步骤:

①计算相关系数r
②计算显著性水平α

因此这里作出简单的讲解:
①计算相关系数r
Pearson的相关系数r的公式为:
Pearson相关系数
那么把数据代入到公式中计算

#state.x77第3列为文盲率
x <- state.x77[,3]
#state.x77第4列为预期寿命
y <- state.x77[,4]
#样本总数为50
n <- nrow(state.x77)
#按照公式设置分子
Numerator <- (n*sum(x*y)-sum(x)*sum(y))
#按照公式设置分母
Denominator <- (sqrt(n*sum(x^2)-sum(x)^2)*sqrt
### 如何在R语言中实现Pearson相关性分析 #### 使用`cor()`函数计算Pearson相关系数 为了执行Pearson相关性分析,在R语言中最常用的是内置的`cor()`函数。此函数可以接受数据框或矩阵作为输入,并返回这些变量间的相关系数矩阵[^2]。 ```r # 创建一个简单的数据集 data <- data.frame( A = c(1, 2, 3, 4, 5), B = c(2, 4, 6, 8, 10), C = c(1, 3, 5, 7, 9) ) # 计算Pearson相关系数 pearson_correlation <- cor(data, method = "pearson") print(pearson_correlation) ``` 这段代码创建了一个包含三列的数据框,每列表示不同的变量。接着调用了`cor()`函数并指定了`method="pearson"`来明确指出要使用Pearson方法计算各个变量间的关系强度和方向。 #### 处理缺失值 当存在缺失值时,默认情况下`cor()`会抛出错误。可以通过设置参数`use`来自定义处理方式: - `"everything"`:如果有任何NA则报错; - `"all.obs"`:如果遇到NA就忽略整个观测; - `"complete.obs"`:仅考虑完全无缺省值的成对观察; - `"pairwise.complete.obs"`:按成对删除原则计算两两之间的相关性。 ```r # 假设某些位置有缺失值 data_with_na <- data.frame( X = c(1, NA, 3, 4, 5), Y = c(2, 4, NA, 8, 10) ) # 使用'pairwise.complete.obs'选项排除含有NA的配对 cor_result <- cor(data_with_na, use = "pairwise.complete.obs", method = "pearson") print(cor_result) ``` #### 测试显著性水平 除了计算相关系数外,还可能想要知道所得的相关性是否具有统计学意义。这通常涉及到假设检验过程,其中零假设声明两个变量之间不存在关联。对于这种情况,可以利用`cor.test()`来进行单次测试或是借助其他包如`psych::corr.test()`完成更复杂的多重比较[^1]。 ```r # 对单一变量组合做Pearson相关性的t检验 test_result <- cor.test(~X + Y, data=data_with_na, method="pearson") print(test_result$p.value) # 输出p-value判断是否有显著差异 ``` 上述命令展示了如何针对特定的一组变量实施正式的统计检验,从而评估所得到的相关性估计值是否可靠以及能否拒绝原假设(即认为两者无关)。注意这里也采用了`method="pearson"`确保采用正确的算法版本。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值