R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
相关性分析是我们研究课题用的最多的方法
函数介绍——相关性分析函数
相关性分析
相关性分析是指对两个或者多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性元素之间需要存在一定的联系或者概率才可以进行相关性分析,简单来说就是变量之间是否有关系(也就是说需要先进行独立检测之后才能进行相关分析)。
相关系数的大小表示相关性的大小,
相关系数包括:
pearson相关系数、spearman相关系数、kendall相关系数、偏相关系数、多分格相关系数和多系列相关系数
与独立性检验不同,相关性分析中每种方法都没有独立的函数,这里面计算相关性系数都使用同一个函数:
cor()函数:
cor()函数可以计算三种相关性系数,包括pearson相关系数、spearman相关系数和kendall相关系数,具体使用哪种方法可以使用选项参数中的参数method来指定(默认是用pearson相关系数);
函数中还有一个use选项,用于指定如何对待缺失值,是不处理还是删除等。
此处我们使用state.x77数据作为实例数据(这是一个矩阵数据):
cor(state.x77)
部分结果截图:
一般相关数据都是在[0,1]之间,数值越大越相关,正负号表示是正相关还是负相关
除了cor()函数之外,还有一个cov()函数可以用来计算协方差,携房产可以用来衡量两个变量的整体误差
例如我们定义两个变量:x,y
x<-state.x77[,c(1,2,3,6)] y<-state.x77[,c(4,5)]
再使用cor()函数计算两者之间的相关系数:
cor(x,y)
结果看起来会比较整洁、清爽:
cor()函数只能计算三种相关系数,其他相关系数的计算可以通过R的拓展包来实现:
可以使用“ggm”这个包中的pcor()函数计算偏相关系数。
偏相关系数
偏相关系数是指在控制一个或者多个变量时,剩余其他变量之间的相互关系:
pcor()函数需要输入两个重要的参数,第一个参数是一个数值向量(前两个数值表示要计算相关系数的下标,其余的数值为条件变量的下标),第二个参数是cov()函数计算出来的协方差结果
比如此处我们想控制收入水平、文盲率和高中毕业率的影响,看人口(第一列)和谋杀率(第五列)之间的关系(先获取列名,不然容易混):
colnames(state.x77)
pcor(c(1,5,2,3,6),cov(state.x77))
偏相关系数的结果:
[1] 0.3462724
函数介绍——相关性检验函数
cor.test()函数
在进行相关性分析之后,对相关性进行检验,cor.test()函数可用于相关性的检验,该函数有四个比较重要的选项参数,
1.其中x和y是需要检测的相关性变量,
2.alternative是用来指定进行双侧检验还是单侧检验,
3.two.sided代表分别检测正负相关性,greater代表正相关,less代表负相关。
4.Method选项用于指定用哪种相关系数,可选的有pearson相关系数、spearman相关系数、kendall相关系数。
我们使用state.x77数据检测一下谋杀率与文盲率之间的关系
cor.test(state.x77[,3],state.x77[,5])
置信区间
置信区间:confidential interval,是指样本统计量所构造的总体参数的估计区间,在统计学中,一个概率样本的置信区间是对这个样本的某个总体参数的区间估计,置信区间展现的是这个参数的真实值有一定的概率落在测量结果周围的程度,置信区间给出的是被测量参数的测量值的可信程度(也就是说,光给出概率还不行,还要给出概率发生的范围)
Cor.test()只能一次性检测一组变量的关系,psych包中的corr.test()函数可以一次性进行多个变量的检验,这个函数还可以进行递归操作
corr.test(state.x77)
函数不仅计算了相关系数,还隔出了检测值:
如果想进行偏相关系数的检验,可以使用ggm包中的pcor.test()函数,先计算偏相关系数
pcor(c(1,5,2,3,6),cov(state.x77))
其中,x是pcor()函数计算的偏相关系数,然后是要控制的变量数,最后就是样本数
x<-pcor(c(1,5,2,3,6),cov(state.x77)) pcor.test(x,3,50)
返回三个值,分别是t检验,自由度和p value
分组数据的相关性检验,这种分组的检验可以使用t检验,t检验使用t分布理论,推论差异分布的概率,从而比较两个平均数的差异是否显著。主要用于样本含量较小,一般小于30个,总体标准差未知的正态分布数据
这里我们使用MASS包中的UScrime数据集,它包含了1960年美国47各州的刑罚制度对犯罪率的影响。
首先使用t.test()进行独立样本的t检验,t.test(y~x),y是一个数值型变量,x是类别型变量,
t.test(Prob~So,data=UScrime)
P<0.05,因此可以拒绝南方各州北方各州拥有相同犯罪率的假设。
如果不满足正态分布,就需要用非参数的方法,非参数检验在总体方差未知或者知道甚少的情况下,利用样本数据对总体分布形态等进行推断的方法,由于非参数检验方法在推断过程中不涉及有关总体分布的参数,因而得名为“非参数检验”
参数检验是在总体分布形式已知的情况下,对总体分布的参数如均值、方差等进行推断的方法,也就是数据分布已知,比如满足正态分布
[1] 0.3462724