R语言实战学习笔记 第7章 基本统计分析

本文详细介绍了R语言中进行基本统计分析的方法,包括使用summary()和sapply()进行描述性统计,利用aggregate()进行分组计算,通过卡方独立性检验、Fisher精确检验和Cochran-Mantel-Haenszel检验进行独立性检验,以及应用Pearson、Spearman和Kendall相关性度量和t检验。此外,还涵盖了非参数检验如Wilcoxon秩和检验和Kruskal-Wallis检验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章内容
描述性统计分析
频数表和列联表
相关系数和协方差
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值