R语言学习系列23-描述性统计 下载本文

内容发布更新时间 : 2024/4/25 14:15:56星期一 下面是文章的全部内容请认真阅读。

21. 描述性统计

一、整体的描述统计

1.函数summary()

输出数据的最小值、中位数、均值、上下四分位数、最大值。

vars<- c(\summary(mtcars[vars]) mpghpwt

Min.:10.40 Min. : 52.0 Min.:1.513

1st Qu.:15.43 1st Qu.: 96.5 1st Qu.:2.581 Median :19.20 Median :123.0 Median :3.325 Mean :20.09 Mean :146.7 Mean :3.217 3rd Qu.:22.80 3rd Qu.:180.0 3rd Qu.:3.610 Max. :33.90 Max. :335.0 Max. :5.424

2. pastecs包中的函数stat.desc() 基本格式为:

stat.desc(x,basic=TRUE, desc=TRUE, norm=FALSE, p=0.95)

其中,x为数据框或时间序列;

basic默认为TRUE,则计算所有值、空值、缺失值的数量; desc默认为TRUE,则计算中位数、平均数、平均数的标准误、平均数置信度为95%的置信区间、方差、标准差及变异系数;

norm默认为FALSE,若=TRUE则计算正态分布统计量:偏度、峰度及显著p值、Shapiro-Wilk正态检验结果;

p值设定置信度,默认0.95

stat.desc(mtcars[vars],norm=TRUE) mpghpwt

nbr.val 32.0000000 32.00000000 32.00000000 nbr.null 0.0000000 0.00000000 0.00000000 nbr.na 0.0000000 0.00000000 0.00000000

min 10.4000000 52.00000000 1.51300000 max 33.9000000 335.00000000 5.42400000 range 23.5000000 283.00000000 3.91100000 sum 642.9000000 4694.00000000 102.95200000 median 19.2000000 123.00000000 3.32500000 mean 20.0906250 146.68750000 3.21725000 SE.mean 1.0654240 12.12031731 0.17296847 CI.mean.0.95 2.1729465 24.71955013 0.35277153 var 36.3241028 4700.86693548 0.95737897 std.dev 6.0269481 68.56286849 0.97845744 coef.var 0.2999881 0.46740771 0.30412851 skewness 0.6106550 0.72602366 0.42314646 skew.2SE 0.7366922 0.87587259 0.51048252 kurtosis -0.3727660 -0.13555112 -0.02271075 kurt.2SE -0.2302812 -0.08373853 -0.01402987 normtest.W 0.9475647 0.93341934 0.94325772 normtest.p 0.1228814 0.04880824 0.09265499

另外,也可以使用psych包中的describe()函数,和Hmisc包中的

describe()函数计算描述统计量,两个函数同名以最近加载的包为

准,也可以限定一下,例如:Hmisc::describe()

二、分组描述统计 1.函数aggregate()

vars<- c(\

aggregate(mtcars[vars], by=list(am=mtcars$am), mean) am mpg hpwt

1 0 17.14737 160.2632 3.768895 2 1 24.39231 126.8462 2.411000

aggregate(mtcars[vars], by=list(am=mtcars$am), sd) am mpg hpwt

1 0 3.833966 53.90820 0.7774001 2 1 6.166504 84.06232 0.6169816

注:可以使用多个分组变量,但只支持mean, sd等单返回值函数。

2. doBy包中的函数summaryBy()

summaryBy(formula, data=dataframe, FUN=function)

其中,formula接受如下格式的公式:

var1+…+varN~groupvar1+groupvar2+…

用~隔开要分析的变量和分组变量。

library(doBy)

myfun<-function(x)(c(mean=mean(x), sd=sd(x)))

summaryBy(mpg + hp + wt ~ am, data = mtcars, FUN=myfun) #FUN=可以是自定义的多返回值的函数

ammpg.mean mpg.sd hp.mean hp.sd wt.mean wt.sd 1 0 17.14737 3.833966 160.2632 53.90820 3.768895 0.7774001 2 1 24.39231 6.166504 126.8462 84.06232 2.411000 0.6169816

3. psych包中的函数describeBy()

library(psych)

describeBy(mtcars[vars], mtcars$am)

$`0`

vars n mean sd median trimmed mad min max range skew mpg 1 19 17.15 3.83 17.30 17.12 3.11 10.40 24.40 14.00 0.01 hp 2 19 160.26 53.91 175.00 161.06 77.10 62.00 245.00 183.00 -0.01 wt 3 19 3.77 0.78 3.52 3.75 0.45 2.46 5.42 2.96 0.98 kurtosis se mpg -0.80 0.88 hp -1.21 12.37 wt 0.14 0.18 $`1`

vars n mean sd median trimmed mad min max range skew mpg 1 13 24.39 6.17 22.80 24.38 6.67 15.00 33.90 18.90 0.05 hp 2 13 126.85 84.06 109.00 114.73 63.75 52.00 335.00 283.00 1.36 wt 3 13 2.41 0.62 2.32 2.39 0.68 1.51 3.57 2.06 0.21 kurtosis se mpg -1.46 1.71 hp 0.56 23.31 wt -1.17 0.17