Excel是数据分析中最常用的工具,本篇文章通过R与excel的功能对比介绍如何使用R通过函数式编程完成excel中的数据处理及分析工作。我们总结出最常用的50个函数,通过这些函数介绍如何通过R完成数据生成和导入,数据清洗,预处理,以及最常见的数据筛选,回归预测和假设检验等最常见的操作。
本系列文章共分为三篇10个部分。已由人民邮电出版社出版,感兴趣的朋友可以在异步社区获取完整版。
这是第三篇,介绍最后三部分内容,数据统计,相关分析,回归预测及假设检验,数据导出。
8,数据统计
第八部分为数据统计,这里主要介绍描述统计,标准差,协方差和相关系数的使用方法。
8.1. 描述统计
Excel中的数据分析中提供了描述统计的功能。R中可以通过summary对数据进行描述统计。
summary函数是进行描述统计的函数,自动生成数据的数量,均值,标准差等数据。下面的代码中对数据表进行描述统计。
#数据表描述统计
summary(df)、
#特定列描述统计
summary(df$age)
8.2. 计数,求和,均值
还有一些常见的计算函数,如计数,求和和计算均值等等。
#数据表计数(列数)
length(df)
[1] 12
#特定列计数
length(df$id)
[1] 8
#求和
sum(df$price)
[1] 24483
#均值
mean(df$price)
[1] 3060.375
8.3. 方差,标准差
R中的var函数用来接算特定数据列的方差。
#方差
var(df$price)
[1] 2082955
std函数用来接算特定数据列的标准差。
#标准差
sd(df$price)
[1] 1443.244
将以上常用的数值计算设置成自定义函数,可以一次计算出想要的结果。
#自定义函数对数据表特定列进行统计
data_summary<-function(x){
n<-length(x)
m<-mean(x)
v<-var(x)
s<-sd(x)
wmin<-which.min(x)
wmax<-which.max(x)
na_c<-length(x[is.na(x)==TRUE])
t<-typeof(x)
data.frame(count=n,mean=m,var=v,sd=s,w_min=wmin,w_max=wmax,na_count=na_c,type=t)
}
data_summary(df$age)
count mean var sd w_min w_max na_count type
1 10 33.9 90.98889 9.53881 1 3 0 double
9 相关分析,预测及假设检验
9.1. 协方差
Excel中的数据分析功能中提供协方差的计算,R中通过cov函数计算两个字段或数据表中各字段间的协方差。
Cov函数用来计算两个字段间的协方差,只能对数据表中的特定字段进行计算。
#协方差
cov(df$m_point,df$price)
[1] 18546.57
9.2. 相关系数
Excel的数据分析功能中提供了相关系数的计算功能,R中则通过cor函数完成相关分析的操作,并返回相关系数。
cor函数用来计算数据间的相关系数,可以单独对特定数据进行计算,也可以对整个数据表中各个列进行计算。相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关。
#相关系数
cor(df$m_point,df$price)
[1] 0.8916421
9.3. 回归分析
Excel中还有一个最常用分析功能是回归分析,在R中可以使用多种方法对数据完成回归分析。这里我们主要介绍四种,简单回归,多元回归,向后逐步回归和全子集回归。
一元线性回归
在R中使用lm()函数对变量和目标值进行一元回归分析,并创建回归方程。R方为0.795。说明自变量可以对因变量79%的变化进行解释。
#简单线性回归
lm.sol<-lm(price~m_point,data = df)
summary(lm.sol)
多元线性回归
在一元线性回归的基础上可以增加自变量的数量,进行多元线性回归。下面的代码中除了之前的m_point变量外,新增加了age字段作为变量创建回归方程。
#多元线性回归
lm.sol<-lm(price~m_point+age,data = df)
summary(lm.sol)
向后逐步回归
逐步回归是选择用于预测变量的一种方法。逐步回归中有向前和向后两种方法。向前逐步回归每次增加一个变量,直到模型不再改变。向后逐步回归每次减少一个变量,直到模型不再改变。这里使用向后逐步回归的方法选择预测变量。
使用逐步回归需要先安装并加载MASS包。下面是具体的代码和结果。
#安装MASS包
installed.packages(‘MASS’)
#加载MASS包
library(‘MASS’)
#向后逐步回归
fit=lm(price~m_point+age,data=df)
stepAIC(fit,direction=”backward”)
全子集回归
除了逐步回归方法外,还有全子集回归方法可以用于挑选预测变量。全子集回归检测所有的变量,并展示最佳的模型的结果。下面是使用全子集回归的代码和结果。
使用全子集回归前需要先安装和加载leaps包。
#安装leaps包
install.packages(‘leaps’)
#加载leaps包
library(‘leaps’)
#全子集回归
leaps=regsubsets(price~m_point+age,data=df,nbest=2)
plot(leaps,scale=’adjr2′)
在上图中,Y轴为R方值,X轴为截距和三个变量。只包含截距和变量age的模型R方为-0.15,包含截距和变量m_point及age的R方为0.72,只包含截距和变量m_point的R方式0.76。
9.4. 方差检验和t检验
Excel的数据分析功能中还有一个常用的功能是假设检验,其中较为常用的就是t检验。R中使用t.test函数完成t检验过程。
方差检验
我们对数据表中的age字段的数据与一组新的age数据进行t检验,看看两者间是否有显著差异。
age<-df$age
age2=c(19,16,12,17,15,17)
首先使用var.test函数对两组数据进行方差检验,来确定方差是否相等。
var.test(x = age,y = age2,conf.level = 0.95)
p-value=0.005774,小于0.05,两个总体方差不相同。进行异方差t检验。
异方差t检验
建立假设
H0:年龄没有差异
H1:年龄有显著差异
使用异方差t检验对两组年龄数据进行检验,确定两组用户的年龄间是否有显著差异。
t.test(age,age2,var.equal= FALSE,alternative = “two.sided”)
p-value小于0.05,拒绝原假设,两组年龄间有显著差异。
10,数据输出
第十部分是数据输出,处理和分析完的数据可以输出为csv格式和txt格式。
10.1. 写入csv
#输出到csv格式文件
write.csv(x = df,file = “r_test.csv”)
10.2. 写入txt
#输出到txt格式文件
write.table(x=df,file = “r_test.txt”,sep = “,”)
本篇是《像Excel一样使用R进行数据分析》系列文章的最后一篇。在这个系列中我们总结出最常用的50个函数来实现excel中最常见的一些功能。感兴趣的朋友请继续关注,也欢迎给我留言进行交流。
本文为专栏文章,来自:蓝鲸,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/45612.html 。