首页 > 代码库 > R语言之描述性和探索性分析

R语言之描述性和探索性分析

探索性分析简称EDA

一、基本描述性统计量
1.summary函数
可以得到最大值、最小值、中位数和均值

2.四分位数
四分位数可以通过quantile函数得到,diff得到各分位数的之差
> library(RSADBE)
> data("TheWALL")
> quantile(TheWALL$Score)
> diff(quantile(TheWALL$Score))

3.极值
range返回最大值和最小值

4.极差
diff(range())返回极差

5.四分位间距
IQR函数返回四分位间距

二、茎叶图和直方图

1.茎叶图

可以使用base包的stem函数和alpack包的stem.leaf.backback函数实现

2.直方图
直方图可以通过hist函数和histogram函数实现,我们使用galton数据作为举例
> data(galton)
> par(mfrow=c(2,2))
> hist(galton$parent,breaks="FD",xlab="Height of Parent", main="Histogram for Parent Height with Freedman-Diaconis Breaks",xlim=c(60,75))
> hist(galton$parent,xlab="Height of Parent",main= "Histogram for Parent Height with Sturges Breaks",xlim=c(60,75))
> hist(galton$child,breaks="FD",xlab="Height of Child", main="Histogram for Child Height with Freedman-Diaconis Breaks",xlim=c(60,75))
> hist(galton$child,xlab="Height of Child",main="Histogram for Child Height with Sturges Breaks",xlim=c(60,75))

此外,还有一些选项可以对直方图进行设置,这些选项适用于大多数图形命令
col:图形颜色
main:图形标题
xlab:X轴标题
ylab:Y轴标题
xlim:X轴范围
ylim:Y轴范围
break:设置直方图的分割范围
freq:逻辑选项,TRUE为生成频率数据,FALSE为生成概率密度数据

三、密度函数图
连续随机变量更多都是通过密度函数图来描述,通过density()函数,可以得到数据的密度估计,其结果是一系列x和y的坐标,可以通过这些坐标绘制密度函数图,该函数的格式如下
density(data,bw="",kernel="",na.rm=FALSE)
其中,data要求为向量类型,bw为数据的密度内核估计,kernel为平滑种类,na.rm为对NA值的处理,默认为不移除NA值,但是如果出现NA,则结果会出现错误。


density()函数的结果为列表类型,可以通过$符号选择结果中的变量。

可以通过plot(density())组合绘制密度函数图,并通过lines()函数向图形中添加线。


四、数据汇总

1.向量的汇总统计
max
min
length
sum
mean
median
sd
var
mad:得到中位数绝对偏差
summary:得到最大值、最小值、中位数和均值
quantile:得到分位数,默认是返回四分位数,可以自己修改
fivenum:得到最小值、四分位低值、中位数、四分位高值、最大值
cumsum:累积合计
cummax:累积最大值
cummin:累积最小值
cumprod:累乘

如果向量中存在NA值,那么最终也会返回NA值,可以使用选项na.rm=TRUE将NA值忽略,其中length函数没有na.rm选项,可以先使用na.omit()函数进行处理,如length(na.omit(data))


2.数据框的汇总统计
max
min
sum
fivenum
length:返回数据框的列数
summary:返回每一列的描述性数值
rowMeans
rowSums
colMeans
colSums
apply:可以将上述命令合并,格式为apply(X,MARGIN,FUN...)其中MARGIN为1或2,1表示行,2表示列FUN为计算方式,还可以定义na.rm=TRUE进行忽略NA值
prop.table(data,margin=1、2,FUN):返回每个数值的占比,默认为总数占比,margin=1为行占比,margin=2为列占比,FUN为设置的函数,
addmargins(data,margin=1、2,FUN):返回根据FUN计算的行或列的值,和prop.table类似,只不过这不是占比,而是实际计算的数值。

3.矩阵的汇总统计

max
min
sum
fivenum
length:返回矩阵的单元格数
summary:返回每一列的描述性数值
mean(data[,2]):计算第二列的均值
rowMeans
rowSums
colMeans
colSums
apply:
prop.table(data,margin=1、2):返回每个数值的占比,默认为总数占比,margin=1为行占比,margin=2为列占比。
矩阵和数据框类似,但是不同的是矩阵为一个整体,不能用$选择单个列,因此sum等函数是对矩阵整体进行计算,可以使用[]进行选择,其余函数的基本用法和数据框类似。


4.列表的汇总统计
max(data$var)
min(data$var)
sum(data$var)
fivenum(data$var)
length:返回矩阵的单元格数
summary:返回每一列的描述性数值
mean(data[,2]):计算第二列的均值
lapply:输出列表类型的结果
sapply:输出矩阵类型的结果

总的来说,列表的汇总统计函数和其他数据结构类似,但是不同的是每个都要使用$指定变量才行,此外,apply()函数不能使用列表,需要使用其变种lapply和sapply,二者只是输出结果的数据类型不同而已。

5.表格的汇总统计

max
min
sum
fivenum
length:返回数据框的列数
summary:返回每一列的描述性数值
rowMeans
rowSums
colMeans
colSums
apply
prop.table(data,margin=1、2):返回每个数值的占比,默认为总数占比,margin=1为行占比,margin=2为列占比。

R语言之描述性和探索性分析