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
R in action读书笔记(5)-第七章:基本统计分析的更多相关文章
- Linux内核分析 读书笔记 (第七章)
第七章 链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行. 2.链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于 ...
- 《深入理解java虚拟机》读书笔记六——第七章
第七章 虚拟机类加载机制 1.类加载的时机 虚拟机的类加载机制: 虚拟机把描述类的数据从class文件中加载到内存,并对数据进行校验.转换解析和初始化,最终形成了可以被虚拟机直接使用的Java类型,这 ...
- R in action读书笔记(7)-第七章:基本统计分析(下)
7.3相关 相关系数可以用来描述定量变量之间的关系.相关系数的符号(±)表明关系的方向(正相关或负相关),其值的大小表示关系的强弱程度(完全不相关时为0,完全相关时为1).除了基础安装以外,我们还将使 ...
- R in action读书笔记(6)-第七章:基本统计分析(中)
7.2 频数表和列联表 > library(vcd) > head(Arthritis) ID Treatment Sex Age Improved 1 57 Treated Male 2 ...
- R in action读书笔记(22)第十六章 高级图形进阶(下)
16.2.4 图形参数 在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.par.set() ...
- R in action读书笔记(21)第十六章 高级图形进阶(上)
16.1 R 中的四种图形系统 基础图形函数可自动调用,而grid和lattice函数的调用必须要加载相应的包(如library(lattice)).要调用ggplot2函数需下载并安装该包(inst ...
- R in action读书笔记(20)第十五章 处理缺失数据的高级方法
处理缺失数据的高级方法 15.1 处理缺失值的步骤 一个完整的处理方法通常包含以下几个步骤: (1) 识别缺失数据: (2) 检查导致数据缺失的原因: (3) 删除包含缺失值的实例或用合理的数值代替( ...
- R in action读书笔记(19)第十四章 主成分和因子分析
第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因 ...
- R in action读书笔记(17)第十二章 重抽样与自助法
12.4 置换检验点评 除coin和lmPerm包外,R还提供了其他可做置换检验的包.perm包能实现coin包中的部分功能,因此可作为coin包所得结果的验证.corrperm包提供了有重复测量的相 ...
随机推荐
- iOS 配置支付宝
尽管非常easy,可是对于第一次接触支付宝配置的啊猿.有些细节摸不着头脑.今天就来写一个流程配置. 1.创建一个project,然后再创建一个目录,把支付宝sdk要用到的都拖到目录中.然后拖到proj ...
- mongodb Failed to start LSB: An object/document-oriented dat
解决办法: cd /var/lib sudo rm -rf ./mongodb sudo mkdir mongodb sudo chown -R mongodb mongodb/ sudo servi ...
- centos7 配置虚拟交换机(物理交换机truckport设置)(使用brctl)
感谢朋友支持本博客.欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- 2016/05/11 Thinkphp 3.2.2 验证码 使用 及校验
先新建一个公共控制器,用于放置验证码的实例化代码(不用新建控制器也行,任意公共控制器都可以). 例如:PublicController.class.php 4 5 6 7 8 9 10 11 12 1 ...
- scrapy框架的解析
1,scrapy框架的官网:https://scrapy.org/ 什么是scrapy框架: scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用内框架,非常出名,所谓框架就是一个已经继承 ...
- HDU3038 How Many Answers Are Wrong —— 带权并查集
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3038 How Many Answers Are Wrong Time Limit: 200 ...
- 织梦万能调用LOOP标签!
1,安装DEDE织梦程序时候,数据库名称设置独立的一个. 2,雨田SEOER这里用的是在织梦本地文件夹中新建myblog文件夹,然后里面装入emlog_5.3.0的安装文件.URL地址栏输入htt ...
- 织梦dedecms将指定图片自动生成指定尺寸的小图、缩略图、图片的方法
对于普通企业网站来讲,织梦原来的程序只是提供了一个缩略图,但是这样对于一些相对来说图片会比较多的网站来说,图片太大当缩略图会导致网站整体的访问速度,所以我今天就来教你织梦把一张大图转换成生成一张小图或 ...
- 深入探析c# Socket
最近浏览了几篇有关Socket发送消息的文章,发现大家对Socket Send方法理解有所偏差,现将自己在开发过程中对Socket的领悟写出来,以供大家参考. (一)架构 基于TCP协议的Socket ...
- mybaits错误解决:There is no getter for property named 'id' in class 'java.lang.String'
在使用mybaitis传参数的时候,如果仅传入一个类型为String的参数,那么在 xml文件中应该使用_parameter 来代替参数名. 正确的写法: <span style="f ...