美文网首页
《Discovering Statistics Using R》

《Discovering Statistics Using R》

作者: 新云旧雨 | 来源:发表于2019-12-14 00:34 被阅读0次

笔记说明

读《Discovering Statistics Using R》第五章 Exploring assumptions做的笔记。本笔记对应章节为5.5.3,主要介绍使用by()来对数据进行分组分析。

分组分析数据

很多时候数据可以被定性变量分为不同的组别比如按性别分为男性组和女性组,也会有在不同亚组内对数据分别进行相同分析的需求。实现这个需求有几种不同的方法,比如说可以先用filter()生成不同亚组的数据集,然后分别对亚组数据集进行分析。《Discovering Statistics Using R》在5.5.3节中介绍了使用by()来实现分组分析数据。这里以进行描述性统计分析为例。

示例数据

示例数据RExam记录了学生在R考试中的表现。

library(rio)
library(pastecs)

# 数据导入
rexam <- import("data/RExam.dat")
str(rexam)
## 'data.frame':    100 obs. of  5 variables:
##  $ exam    : int  18 30 40 30 40 15 36 40 63 31 ...
##  $ computer: int  54 47 58 37 53 48 49 49 45 62 ...
##  $ lectures: num  75 8.5 69.5 67 44.5 76.5 70 18.5 43.5 100 ...
##  $ numeracy: int  7 1 6 6 2 8 3 7 4 6 ...
##  $ uni     : int  0 0 0 0 0 0 0 0 0 0 ...

数据中的uni变量是一个分类变量,0表示该条观测的学生来自Duncetown University 1表示该条观测的学生来自Sussex University。
对uni变量进行编码:

rexam$uni<-factor(rexam$uni, levels = c(0:1), 
                             labels = c("Duncetown University", "Sussex University"))
str(rexam)
##  'data.frame':   100 obs. of  5 variables:
##   $ exam    : int  18 30 40 30 40 15 36 40 63 31 ...
##   $ computer: int  54 47 58 37 53 48 49 49 45 62 ...
##   $ lectures: num  75 8.5 69.5 67 44.5 76.5 70 18.5 43.5 100 ...
##   $ numeracy: int  7 1 6 6 2 8 3 7 4 6 ...
##   $ uni     : Factor w/ 2 levels "Duncetown University",..: 1 1 1 1 1 1 1 1 1 1 ...

先整体对四个计量变量做一个统计描述,使用pastecs包的stat.desc()

# 计量资料整体描述性分析
round(stat.desc(rexam[,c(1:4)], basic = FALSE, norm = TRUE), digits=3)
##                 exam computer lectures numeracy
## median        60.000   51.500   62.000    4.000
## mean          58.100   50.710   59.765    4.850
## SE.mean        2.132    0.826    2.168    0.271
## CI.mean.0.95   4.229    1.639    4.303    0.537
## var          454.354   68.228  470.230    7.321
## std.dev       21.316    8.260   21.685    2.706
## coef.var       0.367    0.163    0.363    0.558
## skewness      -0.104   -0.169   -0.410    0.933
## skew.2SE      -0.215   -0.350   -0.849    1.932
## kurtosis      -1.148    0.221   -0.285    0.763
## kurt.2SE      -1.200    0.231   -0.298    0.798
## normtest.W     0.961    0.987    0.977    0.924
## normtest.p     0.005    0.441    0.077    0.000

使用by()对数据进行分组分析

by()的用法:

by(data = , INDICES =, FUN = , ...)

  • data即为要分析的数据
  • indices指定分组变量,需为factor类型
  • fun指定你想要应用于数据上的函数
  • ...中列出需要向fun所指定的函数提供的其他信息
# 分组统计描述
by(rexam[,c(1:4)], rexam$uni, stat.desc, basic = FALSE, norm = TRUE)
## rexam$uni: Duncetown University
##                     exam   computer    lectures    numeracy
## median        38.0000000 49.0000000  60.5000000  4.00000000
## mean          40.1800000 50.2600000  56.2600000  4.12000000
## SE.mean        1.7803210  1.1410021   3.3619491  0.29226770
## CI.mean.0.95   3.5776890  2.2929295   6.7560897  0.58733393
## var          158.4771429 65.0942857 565.1351020  4.27102041
## std.dev       12.5887705  8.0681030  23.7725704  2.06664472
## coef.var       0.3133094  0.1605273   0.4225484  0.50161280
## skewness       0.2906760  0.2121230  -0.2904291  0.48165960
## skew.2SE       0.4317816  0.3150960  -0.4314149  0.71547621
## kurtosis      -0.7230849 -0.6779460  -0.5634849 -0.65166313
## kurt.2SE      -0.5462122 -0.5121147  -0.4256518 -0.49226083
## normtest.W     0.9721662  0.9776351   0.9697413  0.94081692
## normtest.p     0.2828984  0.4571105   0.2259072  0.01451518
## ----------------------------------------------------------------------------------- 
## rexam$uni: Sussex University
##                     exam    computer    lectures     numeracy
## median        75.0000000 54.00000000  65.7500000  5.000000000
## mean          76.0200000 51.16000000  63.2700000  5.580000000
## SE.mean        1.4432079  1.20284018   2.6827191  0.434332704
## CI.mean.0.95   2.9002348  2.41719783   5.3911258  0.872824247
## var          104.1424490 72.34122449 359.8490816  9.432244898
## std.dev       10.2050208  8.50536445  18.9696885  3.071196004
## coef.var       0.1342413  0.16625028   0.2998212  0.550393549
## skewness       0.2559866 -0.50635339  -0.3429407  0.746369109
## skew.2SE       0.3802527 -0.75215735  -0.5094177  1.108686183
## kurtosis      -0.4609644  0.96404781  -0.4233827 -0.006440059
## kurt.2SE      -0.3482086  0.72823358  -0.3198197 -0.004864766
## normtest.W     0.9837115  0.94392221   0.9817164  0.932346126
## normtest.p     0.7151182  0.01931372   0.6262649  0.006786803

相关文章

网友评论

      本文标题:《Discovering Statistics Using R》

      本文链接:https://www.haomeiwen.com/subject/xebqnctx.html