首页 > 代码库 > R语言之相关性分析
R语言之相关性分析
两个变量或两组变量之间的联系,对于连续变量称为相关性,对于分类变量称为关联性。
一、连续变量间的相关性
常用命令及选项如下
使用方法如下:
1.计算相关系数及相关系数矩阵
> cor(count,speed)
[1] 0.7237206
> cor(count,speed,method = "spearman")
[1] 0.5269556
> cor(mf)
Length Speed Algae NO3 BOD
Length 1.0000000 -0.34322968 0.7650757 0.45476093 -0.8055507
Speed -0.3432297 1.00000000 -0.1134416 0.02257931 0.1983412
Algae 0.7650757 -0.11344163 1.0000000 0.37706463 -0.8365705
NO3 0.4547609 0.02257931 0.3770646 1.00000000 -0.3751308
BOD -0.8055507 0.19834122 -0.8365705 -0.37513077 1.0000000
> cor(mf$Length,mf)可以通过$指定显示某个变量的相关系数
Length Speed Algae NO3 BOD
[1,] 1 -0.3432297 0.7650757 0.4547609 -0.8055507
2.计算方差及协方差矩阵
> cov(count,speed)
[1] 123
> var(count,speed)
[1] 123
> cov(mf)
Length Speed Algae NO3 BOD
Length 9.4900000 -4.95000000 45.858333 0.70683333 -111.55667
Speed -4.9500000 21.91666667 -10.333333 0.05333333 41.74167
Algae 45.8583333 -10.33333333 378.583333 3.70166667 -731.73333
NO3 0.7068333 0.05333333 3.701667 0.25456667 -8.50850
BOD -111.5566667 41.74166667 -731.733333 -8.50850000 2020.87333
> cov2cor(cov(mf))
Length Speed Algae NO3 BOD
Length 1.0000000 -0.34322968 0.7650757 0.45476093 -0.8055507
Speed -0.3432297 1.00000000 -0.1134416 0.02257931 0.1983412
Algae 0.7650757 -0.11344163 1.0000000 0.37706463 -0.8365705
NO3 0.4547609 0.02257931 0.3770646 1.00000000 -0.3751308
BOD -0.8055507 0.19834122 -0.8365705 -0.37513077 1.0000000
3.相关系数的显著性检验
> cor.test(count,speed)
Pearson‘s product-moment correlation
data: count and speed
t = 2.5689, df = 6, p-value = http://www.mamicode.com/0.0424
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.03887166 0.94596455
sample estimates:
cor
0.7237206
4.使用公式语法
> cor.test(~count+speed,data=http://www.mamicode.com/fw3,subset = cover%in%c("open","closed"))
计算fw3数据框中cover分类变量的open和closed两个类别的相关系数检验。
============================================================
二、分类变量的关联性
分类变量间的关联性分析基本使用卡方检验,数据都为频数,卡方检验的命令及选项如下
分类变量根据类别的多少,会分为几种情况:
1.两变量均为多分类
此时就是通常说的分析变量间的关联性,此时数据一般为数据框或矩阵结构的频数表,可直接使用chisq.test()命令进行处理,如:
> chisq.test(bird.df)
如果频数表中有频数为0,则会输出一个错误信息:Chi-squared approximation may be incorrect
2.两变量均为二分类
此时数据为2*2列联表,chisq.test()会默认使用耶茨连续性校正,可通过corrct=TRUE进行关闭,实际上,chisq.test()只会对2*2列联表使用耶茨校正。如果设定了使用蒙特卡洛方法,则不会再使用耶茨校正。
3.一个变量为二分类一个变量为多分类
这种情况下为卡方拟合优度检验,为保险起见,基本上都要设定rescale.p=TRUE,如果不指定P,则认为期望概率全部相等的情况。
> chisq.test(survey$new,p=survey$old,rescale.p = TRUE)
R语言之相关性分析