R in action读书笔记(5)-第七章:基本统计分析

7.1描述性统计分析

> vars<-c("mpg","hp","wt")

> head(mtcars[vars])

                   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

7.1.1方法云集

对于基础安装,你可以使用summary()函数来获取描述性统计量。

> summary(mtcars[vars])

      mpg              hp              wt      

 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

summary()函数提供了最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻

辑型向量的频数统计

apply()函数或sapply()函数计算所选择的任意描述性统计量。对于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))

+ }

> sapply(mtcars[vars],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

Hmisc包中的describe()函数可返回变量和观测的数量、缺失值和唯一值的数目、平均值、

分位数,以及五个最大的值和五个最小的值

通过Hmisc包中的describe()函数计算描述性统计量:

> describe(mtcars[vars])

mtcars[vars]

 

 3  Variables      32  Observations

---------------------------------------------------------------

mpg

      n missing  unique    Info    Mean     .05     .10

     32       0      25       1   20.09   12.00   14.34

    .25     .50     .75     .90     .95

  15.43   19.20   22.80   30.09   31.30

 

lowest : 10.4 13.3 14.3 14.7 15.0

highest: 26.0 27.3 30.4 32.4 33.9

---------------------------------------------------------------

hp

      n missing  unique    Info    Mean     .05     .10

     32       0      22       1   146.7   63.65   66.00

    .25     .50     .75     .90     .95

  96.50  123.00  180.00  243.50  253.55

 

lowest :  52  62  65  66  91, highest: 215 230 245 264 335

---------------------------------------------------------------

wt

      n missing  unique    Info    Mean     .05     .10

     32       0      29       1   3.217   1.736   1.956

    .25     .50     .75     .90     .95

  2.581   3.325   3.610   4.048   5.293

 

lowest : 1.513 1.615 1.835 1.935 2.140

highest: 3.845 4.070 5.250 5.345 5.424

pastecs包中有一个名为stat.desc()的函数,它可以计算种类繁多的描述性统计量。使用

格式为:stat.desc(x,basic=TRUE,desc=TRUE,norm=FALSE,p=0.95)

其中的x是一个数据框或时间序列。若basic=TRUE(默认值),则计算其中所有值、空值、缺失

值的数量,以及最小值、最大值、值域,还有总和。若desc=TRUE(同样也是默认值),则计算

中位数、平均数、平均数的标准误、平均数置信度为95%的置信区间、方差、标准差以及变异系

数。最后,若norm=TRUE(不是默认的),则返回正态分布统计量,包括偏度和峰度(以及它们

的统计显著程度)和Shapiro–Wilk正态检验结果。这里使用了p值来计算平均数的置信区间(默

认置信度为0.95)。

通过pastecs包中的stat.desc()函数计算描述性统计量

> stat.desc(mtcars[vars])

                     mpg           hp          wt

nbr.val       32.0000000   32.0000000  32.0000000

nbr.null       0.0000000    0.0000000   0.0000000

nbr.na         0.0000000    0.0000000   0.0000000

min           10.4000000   52.0000000   1.5130000

max           33.9000000  335.0000000   5.4240000

range         23.5000000  283.0000000   3.9110000

sum          642.9000000 4694.0000000 102.9520000

median        19.2000000  123.0000000   3.3250000

mean          20.0906250  146.6875000   3.2172500

SE.mean        1.0654240   12.1203173   0.1729685

CI.mean.0.95   2.1729465   24.7195501   0.3527715

var           36.3241028 4700.8669355   0.9573790

std.dev        6.0269481   68.5628685   0.9784574

coef.var       0.2999881    0.4674077   0.3041285

psych包也拥有一个名为describe()的函数,它可以计算非缺失值的数量、

平均数、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均

值的标准误。通过psych包中的describe()计算描述性统计量:

> describe(mtcars[vars])

    vars  n   mean    sd median trimmed   mad   min    max

mpg    1 32  20.09  6.03  19.20   19.70  5.41 10.40  33.90

hp     2 32 146.69 68.56 123.00  141.19 77.10 52.00 335.00

wt     3 32   3.22  0.98   3.33    3.15  0.77  1.51   5.42

     range skew kurtosis    se

mpg  23.50 0.61    -0.37  1.07

hp  283.00 0.73    -0.14 12.12

wt    3.91 0.42    -0.02  0.17

7.1.2分组计算描述性统计量

在比较多组个体或观测时,关注的焦点经常是各组的描述性统计信息,而不是样本整体的描述性统计信息。使用aggregate()分组获取描述性统计量

> aggregate(mtcars[vars],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

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

  am      mpg       hp        wt

1  0 3.833966 53.90820 0.7774001

2  1 6.166504 84.06232 0.6169816

注意list(am=mtcars$am)的使用。如果使用的是list(mtcars$am),则am列将被标注为Group.1而不是am。你使用这个赋值指定了一个更有帮助的列标签。如果有多个分组变量,可以使用by=list(name1=groupvar1, name2=groupvar2, ... , groupvarN)这样的语句。

遗憾的是,aggregate()仅允许在每次调用中使用平均数、标准差这样的单返回值函数。

它无法一次返回若干个统计量。要完成这项任务,可以使用by()函数。格式为:by(data,INDICES,FUN)

其中data是一个数据框或矩阵,INDICES是一个因子或因子组成的列表,定义了分组,FUN是任

意函数。使用by()分组计算描述性统计量:

doBy包和psych包也提供了分组计算描述性统计量的函数,doBy包中summaryBy()函数的使用格式为:

summaryBy(formula,data=dataframe,FUN=function) 其中的formula接受以下的格式:

var1+var2+…+varN~grounpvar1+goupvar2+…+groupvarN

在~左侧的变量是需要分析的数值型变量,而右侧的变量是类别型的分组变量。function

可为任何内建或用户自编的R函数。

使用doBy包中的summaryBy()分组计算概述统计量

> library("doBy", lib.loc="d:/Program Files/R/R-3.1.3/library")

> summaryBy(mpg+hp+wt~am,data=mtcars,FUN=mystats)

  am mpg.n mpg.mean mpg.stdev   mpg.skew mpg.kurtosis hp.n

1  0    19 17.14737  3.833966 0.01395038   -0.8031783   19

2  1    13 24.39231  6.166504 0.05256118   -1.4553520   13

   hp.mean hp.stdev     hp.skew hp.kurtosis wt.n  wt.mean

1 160.2632 53.90820 -0.01422519  -1.2096973   19 3.768895

2 126.8462 84.06232  1.35988586   0.5634635   13 2.411000

   wt.stdev   wt.skew wt.kurtosis

1 0.7774001 0.9759294   0.1415676

2 0.6169816 0.2103128  -1.1737358

psych包中的describe.by()函数可计算和describe相同的描述性统计量,只是按照一个

或多个分组变量分层,使用psych包中的describe.by()分组计算概述统计量.

> describe.by(mtcars[vars],mtcars$am)

group: 0

    vars  n   mean    sd median trimmed   mad   min    max

mpg    1 19  17.15  3.83  17.30   17.12  3.11 10.40  24.40

hp     2 19 160.26 53.91 175.00  161.06 77.10 62.00 245.00

wt     3 19   3.77  0.78   3.52    3.75  0.45  2.46   5.42

     range  skew kurtosis    se

mpg  14.00  0.01    -0.80  0.88

hp  183.00 -0.01    -1.21 12.37

wt    2.96  0.98     0.14  0.18

-----------------------------------------------

group: 1

    vars  n   mean    sd median trimmed   mad   min    max

mpg    1 13  24.39  6.17  22.80   24.38  6.67 15.00  33.90

hp     2 13 126.85 84.06 109.00  114.73 63.75 52.00 335.00

wt     3 13   2.41  0.62   2.32    2.39  0.68  1.51   3.57

     range skew kurtosis    se

mpg  18.90 0.05    -1.46  1.71

hp  283.00 1.36     0.56 23.31

wt    2.06 0.21    -1.17  0.17

describe.by()函数不允许指定任意函数,所以它的普适性较低。若存在一个以上的分组变量,你可以使用list(groupvar1, groupvar2, ... , groupvarN)来表示它们。但这仅在分组变量交叉后不出现空白单元时有效。

> library("reshape", lib.loc="d:/Program Files/R/R-3.1.3/library")

> dstats<-function(x)(c(n=length(x),mean=mean(x),sd=sd(x)))

> dfm<-melt(mtcars,measure.vars=c("mpg","hp","wt"),id.vars=c("am","cyl"))

> cast(dfm,am+cyl+variable~.,dstats)

   am cyl variable  n       mean         sd

1   0   4      mpg  3  22.900000  1.4525839

2   0   4       hp  3  84.666667 19.6553640

3   0   4       wt  3   2.935000  0.4075230

4   0   6      mpg  4  19.125000  1.6317169

5   0   6       hp  4 115.250000  9.1787799

6   0   6       wt  4   3.388750  0.1162164

7   0   8      mpg 12  15.050000  2.7743959

8   0   8       hp 12 194.166667 33.3598379

9   0   8       wt 12   4.104083  0.7683069

10  1   4      mpg  8  28.075000  4.4838599

11  1   4       hp  8  81.875000 22.6554156

12  1   4       wt  8   2.042250  0.4093485

13  1   6      mpg  3  20.566667  0.7505553

14  1   6       hp  3 131.666667 37.5277675

15  1   6       wt  3   2.755000  0.1281601

16  1   8      mpg  2  15.400000  0.5656854

17  1   8       hp  2 299.500000 50.2045815

18  1   8       wt  2   3.370000  0.2828427

时间: 2024-10-23 20:26:43

R in action读书笔记(5)-第七章:基本统计分析的相关文章

R in action读书笔记(6)-第七章:基本统计分析(下)

7.3相关 相关系数可以用来描述定量变量之间的关系.相关系数的符号(±)表明关系的方向(正相关或负相关),其值的大小表示关系的强弱程度(完全不相关时为0,完全相关时为1).除了基础安装以外,我们还将使用psych和ggm包. 7.3.1 相关的类型 1.Pearson.Spearman和Kendall相关 Pearson积差相关系数衡量了两个定量变量之间的线性相关程度.Spearman等级相关系数则衡 量分级定序变量之间的相关程度.Kendall’s Tau相关系数也是一种非参数的等级相关度量.

R in action读书笔记(6)-第七章:基本统计分析(中)

7.2 频数表和列联表 > library(vcd) > head(Arthritis) ID Treatment Sex Age Improved 1 57 Treated Male 27 Some 2 46 Treated Male 29 None 3 77 Treated Male 30 None 4 17 Treated Male 32 Marked 5 36 Treated Male 46 Marked 6 23 Treated Male 58 Marked 7.2.1 生成频数表

R in action读书笔记(22)第十六章 高级图形进阶(下)

16.2.4 图形参数 在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.par.set()函数来修改.show.settings()函数可展示当前的图形参数设置情况.查看当前的默认设置,并将它们存储到一个mysettings列表中: > show.settings() > mysettings<-trellis.par.get() 查看叠加点的默认设置值: > mysett

R in action读书笔记(19)第十四章 主成分和因子分析

第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法.它通过寻找一组更小的.潜在的或隐藏的结构来解释已观测到的.显式的变量间的关系. PCA与EFA模型间的区别 主成分(PC1和PC2)是观测变量(X1到X5)的线性组合.形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,同时还要保证个

R in action读书笔记(17)第十二章 重抽样与自助法

12.4 置换检验点评 除coin和lmPerm包外,R还提供了其他可做置换检验的包.perm包能实现coin包中的部分功能,因此可作为coin包所得结果的验证.corrperm包提供了有重复测量的相关性的置换检验. logregperm包提供了Logistic回归的置换检验.另外一个非常重要的包是glmperm,它涵盖了广义线性模型的置换检验依靠基础的抽样分布理论知识,置换检验提供了另外一个十分强大的可选检验思路.对于上面描述的每一种置换检验,我们完全可以在做统计假设检验时不理会正态分布.t分

R in action读书笔记(13)第十章 功效分析

功效分析 功效分析可以帮助在给定置信度的情况下,判断检测到给定效应值时所需的样本量.反过来,它也可以帮助你在给定置信度水平情况下,计算在某样本量内能检测到给定效应值的概率.如果概率低得难以接受,修改或者放弃这个实验将是一个明智的选择. 10.1假设检验速览 在研究过程时,研究者通常关注四个量:样本大小.显著性水平.功效和效应值.样本大小指的是实验设计中每种条件/组中观测的数目.显著性水平(也称为alpha)由I型错误的概率来定义.也可以把它看做是发现效应不发生的概率.功效通过1减去II型错误的概

R in action读书笔记(21)第十六章 高级图形进阶(上)

16.1 R 中的四种图形系统 基础图形函数可自动调用,而grid和lattice函数的调用必须要加载相应的包(如library(lattice)).要调用ggplot2函数需下载并安装该包(install.packages("ggplot2")),第一次使用前还要进行加载(library(ggplot2)). 16.2 lattice 包 lattice包为单变量和多变量数据的可视化提供了一个全面的图形系统.在一个或多个其他变量的条件下,栅栏图形展示某个变量的分布或与其他变量间的关系

R in action读书笔记(11)-第八章:回归-- 选择“最佳”的回归模型

8.6 选择“最佳”的回归模型 8.6.1 模型比较 用基础安装中的anova()函数可以比较两个嵌套模型的拟合优度.所谓嵌套模型,即它的一 些项完全包含在另一个模型中 用anova()函数比较 > states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")]) > fit1

R in action读书笔记(14)第十一章 中级绘图 之一:散点图(高能预警)

第十一章中级绘图 本章内容: 二元变量和多元变量关系的可视化 绘制散点图和折线图 理解相关图 学习马赛克图和关联图 本章用到的函数有: plot hexbin ablines iplot scatterplot scatterplot3d pairs plot3d scatterplotMatrix scatter3d cpairs symbols smoothScatter   11.1散点图 添加了最佳拟合曲线的散点图 > attach(mtcars) > plot(wt,mpg,main