像Excel一样使用R进行数据分析(3)

本篇文章通过R与excel的功能对比介绍如何使用R通过函数式编程完成excel中的数据处理及分析工作。

Excel数据分析中最常用的工具,本篇文章通过R与excel的功能对比介绍如何使用R通过函数式编程完成excel中的数据处理及分析工作。我们总结出最常用的50个函数,通过这些函数介绍如何通过R完成数据生成和导入,数据清洗,预处理,以及最常见的数据筛选,回归预测和假设检验等最常见的操作。

像Excel一样使用R进行数据分析(3)

本系列文章共分为三篇10个部分。已由人民邮电出版社出版,感兴趣的朋友可以在异步社区获取完整版。

像Excel一样使用R进行数据分析(3)

这是第三篇,介绍最后三部分内容,数据统计,相关分析,回归预测及假设检验,数据导出。

8,数据统计

第八部分为数据统计,这里主要介绍描述统计,标准差,协方差和相关系数的使用方法。

8.1. 描述统计

Excel中的数据分析中提供了描述统计的功能。R中可以通过summary对数据进行描述统计。

像Excel一样使用R进行数据分析(3)

summary函数是进行描述统计的函数,自动生成数据的数量,均值,标准差等数据。下面的代码中对数据表进行描述统计。

#数据表描述统计

summary(df)、

像Excel一样使用R进行数据分析(3)

 

#特定列描述统计

summary(df$age)

 

像Excel一样使用R进行数据分析(3)

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函数计算两个字段或数据表中各字段间的协方差。

像Excel一样使用R进行数据分析(3)

Cov函数用来计算两个字段间的协方差,只能对数据表中的特定字段进行计算。

#协方差

cov(df$m_point,df$price)

[1] 18546.57

9.2. 相关系数

Excel的数据分析功能中提供了相关系数的计算功能,R中则通过cor函数完成相关分析的操作,并返回相关系数。

像Excel一样使用R进行数据分析(3)

cor函数用来计算数据间的相关系数,可以单独对特定数据进行计算,也可以对整个数据表中各个列进行计算。相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关。

#相关系数

cor(df$m_point,df$price)

[1] 0.8916421

9.3. 回归分析

Excel中还有一个最常用分析功能是回归分析,在R中可以使用多种方法对数据完成回归分析。这里我们主要介绍四种,简单回归,多元回归,向后逐步回归和全子集回归。

像Excel一样使用R进行数据分析(3)

一元线性回归

在R中使用lm()函数对变量和目标值进行一元回归分析,并创建回归方程。R方为0.795。说明自变量可以对因变量79%的变化进行解释。

#简单线性回归

lm.sol<-lm(price~m_point,data = df)

summary(lm.sol)

像Excel一样使用R进行数据分析(3)

多元线性回归

在一元线性回归的基础上可以增加自变量的数量,进行多元线性回归。下面的代码中除了之前的m_point变量外,新增加了age字段作为变量创建回归方程。

#多元线性回归

lm.sol<-lm(price~m_point+age,data = df)

summary(lm.sol)

像Excel一样使用R进行数据分析(3)

向后逐步回归

逐步回归是选择用于预测变量的一种方法。逐步回归中有向前和向后两种方法。向前逐步回归每次增加一个变量,直到模型不再改变。向后逐步回归每次减少一个变量,直到模型不再改变。这里使用向后逐步回归的方法选择预测变量。

使用逐步回归需要先安装并加载MASS包。下面是具体的代码和结果。

#安装MASS包

installed.packages(‘MASS’)

#加载MASS包

library(‘MASS’)

#向后逐步回归

fit=lm(price~m_point+age,data=df)

stepAIC(fit,direction=”backward”)

像Excel一样使用R进行数据分析(3)

全子集回归

除了逐步回归方法外,还有全子集回归方法可以用于挑选预测变量。全子集回归检测所有的变量,并展示最佳的模型的结果。下面是使用全子集回归的代码和结果。

使用全子集回归前需要先安装和加载leaps包。

#安装leaps包

install.packages(‘leaps’)

#加载leaps包

library(‘leaps’)

#全子集回归

leaps=regsubsets(price~m_point+age,data=df,nbest=2)

plot(leaps,scale=’adjr2′)

像Excel一样使用R进行数据分析(3)

 

在上图中,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检验过程。

像Excel一样使用R进行数据分析(3)

方差检验

我们对数据表中的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)

 

像Excel一样使用R进行数据分析(3)

p-value=0.005774,小于0.05,两个总体方差不相同。进行异方差t检验。

异方差t检验

建立假设

H0:年龄没有差异

H1:年龄有显著差异

使用异方差t检验对两组年龄数据进行检验,确定两组用户的年龄间是否有显著差异。

t.test(age,age2,var.equal= FALSE,alternative = “two.sided”)

像Excel一样使用R进行数据分析(3)

p-value小于0.05,拒绝原假设,两组年龄间有显著差异。

10,数据输出

第十部分是数据输出,处理和分析完的数据可以输出为csv格式和txt格式。

10.1. 写入csv

#输出到csv格式文件

write.csv(x = df,file = “r_test.csv”)

像Excel一样使用R进行数据分析(3)

10.2. 写入txt

#输出到txt格式文件

write.table(x=df,file = “r_test.txt”,sep = “,”)

本篇是《像Excel一样使用R进行数据分析》系列文章的最后一篇。在这个系列中我们总结出最常用的50个函数来实现excel中最常见的一些功能。感兴趣的朋友请继续关注,也欢迎给我留言进行交流。

本文为专栏文章,来自:蓝鲸,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/45612.html 。

(3)
蓝鲸的头像蓝鲸专栏
上一篇 2017-06-30 20:13
下一篇 2017-07-05 05:05

相关文章

关注我们
关注我们
分享本页
返回顶部