R语言最重要的功能就是用于做模型,包含有大量的函数包,调用R函数包即可做模型检验与分析,例如常见的相关分析、回归分析、假设检验等等,除了做数据分析,R语言还可以做经典的数据挖掘,总结常用的十大数据挖掘算法如下所示,感兴趣的同学可以在此基础上深入学习。
本节主要带大家学习R中的相关分析、回归分析和假设检验,这部分知识需要扎实的统计学基础,这里给大家介绍如何用R语言去实现,下面一起来学习。
示例工具:R x64 3.5.3、RStudio
本文讲解内容:模型分析与检验
适用范围:R数据模型初步认识
一、创建数据表
首先创建一组数据表,数据内容包含ID、姓名、年龄、地址、收入五个字段,数据表内容如下。
#手动创建数据表data
data<-data.frame(ID=c("c001","c002","c003","c004","c005","c006","c007","c008","c009","c010"),
NAME=c("Rmesh","Khilan","Kaushik","Chaitali","Hardik","Komal","Tom","Muffy","Susan","Kevin"),
AGE=c(23,20,23,25,27,24,26,31,26,30),
ADDRESS=c("Ahmed","Delhi","Kota","Mumbai","Bhopal","MP-A","MP-B","Indore","JP-No.1","JP-No.2"),
SAL=c(2000,1500,2000,5000,8500,6500,5500,9500,7000,9000))
二、相关分析
相关分析是研究两个或两个以上处于同等地位的随机变量间的相关关系的统计分析方法,R中使用cor()函数做相关分析,并返回相关系数。cor()函数用来计算数据间的相关系数,既可以单独对特定数据进行计算,也可以对整个数据表中各个列进行计算。
这里研究年龄与收入的相关关系,首先,用plot函数绘制年龄与收入的散点图。
#散点图
plot(data$AGE,data$SAL)
做出散点图如上所示,从员工年龄和收入的关系来看,随着年龄的增长,收入逐渐增加,员工收入与年龄呈正相关 。
接着求年龄与收入的相关系数 ,得出系数为0.9094854,由于相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关,可以得出员工年龄和收入为正相关,且这种相关关系很强,接近于1。
#相关系数
cor(data$AGE,data$SAL)
三、回归分析
回归分析主要有一元回归、多元回归、向后逐步回归和全子集回归等,这里给大家介绍一元线性回归,在R中使用lm()函数对变量和目标值进行一元回归分析,并创建回归方程,如下对年龄和收入做一元回归,R方为0.8272接近于1,P值小于0.05,拒绝原假设,说明模型显著。
#简单线性回归
lm.SAL<-lm(AGE~SAL,data = data)
summary(lm.SAL)
四、协方差分析
协方差是用来度量两个变量之间 “协同变异”大小的总体参数,即二个变量相互影响大小的参数,协方差的绝对值越大,两个变量相互影响越大。R中使用cov()函数计算两个字段或数据表中各字段间的协方差,如下得出cov等于9027.78,表明年龄与收入两个变量相互影响较大。
#协方差
cov(data$AGE,data$SAL)
五、假设检验
模型建立后对收入数据进行t检验,先构建一组数据SAL2,看看两者间是否有显著差异。
SAL1<-data$SAL
SAL2=c(600,200,500,400,500,600,300,700,800,600)
使用var.test()函数对两组数据进行方差检验,来确定方差是否相等。
var.test(x = SAL1,y = SAL2, conf.level = 0.95)
p-value=1.388e-09,小于0.05,两个总体方差不相同,接着进行异方差t检验,R中使用t.test()函数对两组收入数据进行检验,确定两组收入间是否有显著差异。
t.test(SAL1,SAL2,var.equal= FALSE,alternative = "two.sided")
p-value = 0.004241小于0.05,拒绝原假设,说明两组收入间有显著差异。