第7章 基本统计分析
1. 描述性统计分析
1. 方法云集
- 使用
summary()
函数获取描述性统计量
myvars <- c("mpg", "hp", "wt")
summary(mtcars[myvars])
-
使用第5章中
apply()
或sapply()
计算所选任意描述统计量sapply(x, FUN, options)
-
还可自行设计函数计算若干描述性统计量
mystats <- function(x, na.omit=FALSE){
if (na.omit)
x <- x[!is.na(x)]
m <- mean(x)
n <- length(x)
s <- sd(x)
skew <- sum((x-m)^3/s^3)/n
kurt <- sum((x-m)^4/s^4)/n -3
return(c(n=n, mean=m, stdev=s, skew=skew, kurtosis=kurt))
}
myvars <- c("mpg", "hp", "wt")
sapply(mtcars[myvars], mystats)
-
单纯地忽略缺失值
sapply(mtcars[myvars], mystats, na.omit=TRUE)
2. 更多方法
Hmisc
包中的describe()
函数可返回变量和观测的数量、缺失值和唯一值得数目、平均值、分位数,以及五个最大的值和五个最小的值。
library(Hmisc)
myvars <- c("mpg", "hp", "wt")
describe(mtcars[myvars])
-
pastecs
包中stat.desc()
函数,可以计算种类繁多的描述性统计量stat.desc(x, basic=TRUE, desc=TRUE, norm=FALSE, p=0.95)
library(pastecs)
myvars <- c("mpg", "hp", "wt")
stat.desc(mtcars[myvars])
psych
包中describe()
函数,可以计算非缺失值的数量、平均数、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均值的标准误。
library(psych)
myvars <- c("mpg", "hp", "wt")
describe(mtcars[myvars])
3. 分组计算描述性统计量
- 使用
aggregate()
函数来分组获取描述性统计量
myvars <- c("mpg", "hp", "wt")
aggregate(mtcars[myvars], by=list(am=mtcars$am), mean)
aggregate(mtcars[myvars], by=list(am=mtcars$am), sd)
-
aggregate()
函数仅允许每次调用中使用平均数、标准差这样的单返回值函数,无法一次返回若干统计量 -
使用
by()
函数可返回若干统计量by(data, INDICES, FUN)
data