本章内容
描述性统计分析
频数表和列联表
相关系数和协方差
t检验
描述性统计分析
频数表和列联表
相关系数和协方差
t检验
非参数统计
7.1 描述性统计分析
> myvars<-c('mpg','hp','wt')
> head(mtcars[myvars])
mpg hp wt
Mazda RX4 21.0 110 2.620
Mazda RX4 Wag 21.0 110 2.875
Datsun 710 22.8 93 2.320
Hornet 4 Drive 21.4 110 3.215
Hornet Sportabout 18.7 175 3.440
Valiant 18.1 105 3.460
summary()函数提供了最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计。
sapply()函数,其使用格式为:
sapply(x, FUN, options)
其中的x是你的数据框(或矩阵),FUN为一个任意的函数。如果指定了options,它们将被传递给FUN。你可以在这里插入的典型函数有mean()、sd()、var()、min()、max()、median()、length()、range()和quantile()。函数fivenum()可返回图基五数总括(Tukey’s five-number summary,即最小值、下四分位数、中位数、上四分位数和最大值)。
#通过sapply()计算描述性统计量
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)
mpg hp wt
n 32.000000 32.0000000 32.00000000
mean 20.090625 146.6875000 3.21725000
stdev 6.026948 68.5628685 0.97845744
skew 0.610655 0.7260237 0.42314646
kurtosis -0.372766 -0.1355511 -0.02271075
#忽略缺失值sapply(mtcars[myvars], mystats,na.omit=TRUE)
#通过summary()计算描述性统计量
myvars <- c("mpg", "hp", "wt")
summary(mtcars[myvars]
#通过Hmisc包中的describe()函数计算描述性统计量
library(Hmisc)
myvars<-c('mpg','hp','wt')
describe(mtcars[myvars])
#通过pastecs包中的stat.desc()函数计算描述性统计量
library(pastecs)
myvars <- c("mpg", "hp", "wt")
stat.desc(mtcars[myvars])
#通过psych包中的describe()计算描述性统计量
library(psych)
myvars <- c("mpg", "hp", "wt")
describe(mtcars[myvars])
7.1.3 分组计算描述性统计量
aggregate()
#使用aggregate()分组获取描述性统计量
myvars <- c("mpg", "hp", "wt")
#如果使用的是list(mtcars$am),则am列将被标注为Group.1而不是am。
aggregate(mtcars[myvars],by=list(am=mtcars$am),mean)
am mpg hp wt
1 0 17.14737 160.2632 3.768895
2 1 24.39231 126.8462 2.411000
by(data, INDICES, FUN)
其中data是一个数据框或矩阵,INDICES是一个因子或因子组成的列表,定义了分组,FUN是任意函数
#使用by()分组计算描述性统计量
> dstats<-function(x)sapply(x, mystats)
> myvars <- c("mpg", "hp", "wt")
> by(mtcars[myvars],mtcars$am,dstats)
mtcars$am: 0
mpg hp wt
n 19.00000000 19.00000000 19.0000000
mean 17.14736842 160.26315789 3.7688947
stdev 3.83396639 53.90819573 0.7774001
skew 0.01395038 -0.01422519 0.9759294
kurtosis -0.80317826 -1.20969733 0.1415676
-------------------------------------------------
mtcars$am: 1
mpg hp wt
n 13.00000000 13.0000000 13.0000000
mean 24.39230769 126.8461538 2.4110000
stdev 6.16650381 84.0623243 0.6169816
skew 0.05256118 1.3598859 0.2103128
kurtosis -1.45535200 0.5634635 -1.1737358
7.1.4 分组计算的扩展
#使用doBy包中的summaryBy()分组计算概述统计量
library(doBy)
summaryBy(mpg+hp+wt~am,data = mtcars,FUN = mystats)
#使用psych包中的describeBy()分组计算概述统计量
library(psych)
myvars <- c("mpg", "hp", "wt")
describeBy(mtcars[myvars], list(am=mtcars$am))
7.2 频数表和列联表
1,一维列联表
> mytable<-with(Arthritis,table(Improved))
> mytable
Improved
None Some Marked
42 14 28
> prop.table(mytable)
Improved
None Some Marked