用R语言进行基本统计分析
1. 描述性统计分析
使用自带的summary()函数
> myvars <- c("mpg","hp","wt")
> summary(mtcars[myvars])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
使用apply()或sapply()函数计算所选择的任意描述性统计量,函数形式为:
sapply(x, FUN, options)
这里插入的典型函数有mean()、sd()、var()、min()、max()、median()、length()、range()和quantile()。函数fivenum()可返回图基五数。
基础安装并没有封装偏度和峰度的计算函数,这里手撸一个。
> 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
比较全面的有pastecs包,其中的describe()函数:
> library(psych)
>
> myvars <- c("mpg","hp","wt")
>
> describe(mtcars[myvars])vars n mean sd median trimmed mad min max range skew kurtosis
mpg 1 32 20.09 6.03 19.20 19.70 5.41 10.40 33.90 23.50 0.61 -0.37
hp 2 32 146.69 68.56 123.00 141.19 77.10 52.00 335.00 283.00 0.73 -0.14
wt 3 32 3.22 0.98 3.33 3.15 0.77 1.51 5.42 3.91 0.42 -0.02se
mpg 1.07
hp 12.12
wt 0.17
分组计算描述性统计量
可以使用aggregate()函数来分组获取描述性统计量。
> myvars <- c("mpg","hp","wt")
>
> aggregate(mtcars[myvars], by=list(am=mtcars$am), mean)
> #使用by=list(am=mtcars$am)可以使新列被标注为am而不是Group.1am mpg hp wt
1 0 17.14737 160.2632 3.768895
2 1 24.39231 126.8462 2.411000
但是aggregate()函数无法一次返回若干个统计量。一种解决的办法是使用by()函数。
by(data, INDICES, FUN)
> myvars <- c("mpg","hp","wt")
>
> 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))
+ }
>
> dstats <- function(x)sapply(x, mystats)
>
> by(mtcars[myvars], mtcars$am, dstats)
mtcars$am: 0mpg 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: 1mpg 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
也可以利用doBy()包的summaryBy()函数分组计算概述统计量。
> library(doBy)
>
> myvars <- c("mpg","hp","wt")
>
> 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))
+ }
>
> summary(summaryBy(mpg+hp+wt~am, data=mtcars, FUN=mystats))am mpg.n mpg.mean mpg.stdev mpg.skew mpg.kurtosis Min. :0.00 Min. :13.0 Min. :17.15 Min. :3.834 Min. :0.01395 Min. :-1.4554 1st Qu.:0.25 1st Qu.:14.5 1st Qu.:18.96 1st Qu.:4.417 1st Qu.:0.02360 1st Qu.:-1.2923 Median :0.50 Median :16.0 Median :20.77 Median :5.000 Median :0.03326 Median :-1.1293 Mean :0.50 Mean :16.0 Mean :20.77 Mean :5.000 Mean :0.03326 Mean :-1.1293 3rd Qu.:0.75 3rd Qu.:17.5 3rd Qu.:22.58 3rd Qu.:5.583 3rd Qu.:0.04291 3rd Qu.:-0.9662 Max. :1.00 Max. :19.0 Max. :24.39 Max. :6.167 Max. :0.05256 Max. :-0.8032 hp.n hp.mean hp.stdev hp.skew hp.kurtosis Min. :13.0 Min. :126.8 Min. :53.91 Min. :-0.01423 Min. :-1.2097 1st Qu.:14.5 1st Qu.:135.2 1st Qu.:61.45 1st Qu.: 0.32930 1st Qu.:-0.7664 Median :16.0 Median :143.6 Median :68.99 Median : 0.67283 Median :-0.3231 Mean :16.0 Mean :143.6 Mean :68.99 Mean : 0.67283 Mean :-0.3231 3rd Qu.:17.5 3rd Qu.:151.9 3rd Qu.:76.52 3rd Qu.: 1.01636 3rd Qu.: 0.1202 Max. :19.0 Max. :160.3 Max. :84.06 Max. : 1.35989 Max. : 0.5635 wt.n wt.mean wt.stdev wt.skew wt.kurtosis Min. :13.0 Min. :2.411 Min. :0.6170 Min. :0.2103 Min. :-1.1737 1st Qu.:14.5 1st Qu.:2.750 1st Qu.:0.6571 1st Qu.:0.4017 1st Qu.:-0.8449 Median :16.0 Median :3.090 Median :0.6972 Median :0.5931 Median :-0.5161 Mean :16.0 Mean :3.090 Mean :0.6972 Mean :0.5931 Mean :-0.5161 3rd Qu.:17.5 3rd Qu.:3.429 3rd Qu.:0.7373 3rd Qu.:0.7845 3rd Qu.:-0.1873 Max. :19.0 Max. :3.769 Max. :0.7774 Max. :0.9759 Max. : 0.1416
2. 频数表和列联表
library(vcd)
head(Arthritis)#一维列联表
mytable <- with(Arthritis,table(Improved))
mytable#二维列联表
mytable <- xtabs(~ Treatment+Improved, data = Arthritis)
mytable#使用margin.table()和prop.table()函数分别生成边际频数和比例
margin.table(mytable,1) #下标1指代table()语句中的第一个变量
prop.table(mytable,1)
margin.table(mytable,2)
prop.table(mytable,2)#多维列联表
mytable <- xtabs(~ Treatment+Sex+Improved, data = Arthritis)
mytable
用R语言进行基本统计分析相关推荐
- 当当网 R 语言学习资料统计分析
当当网 R 语言学习资料统计分析 一.网络数据的抓取 二.数据清洗与保存 (一)工作目录的修改 (二)导入数据并修改列名 1. 交互式编辑器 2. names()函数 3. rename()函数 (三 ...
- R语言的基本统计分析
通过综合案例,使用R语言掌握基本统计分析的各种指标的并掌握统计分析结果的可视化方法. 1.背景介绍 Consolidated食品公司在新墨西哥州.亚利桑那州和加利福尼亚州经营连锁超市.它举办了一个促销 ...
- R语言生物群落数据统计分析
R 语言作的开源.自由.免费等特点使其广泛应用于生物群落数据统计分析.生物群落数据多样而复杂,涉及众多统计分析方法.本文以生物群落数据分析中的最常用的统计方法回归和混合效应模型.多元统计分析技术及结构 ...
- R语言_基本统计分析
#基本统计分析#整体描述性统计分析,针对数值变量 attach(mtcars) opar = par(no.readnoly=TRUE) d = mtcars[c("mpg",&q ...
- r语言plotmds_多元统计分析R语言建模| 11 多维标度法MDS
定义:利用客体间相似性数据去解释它们之间的空间关系的统计分析方法 多维变量--二维三维空间表示,标度到低维空间上 种类: 度量化模型:相似性数据游距离.比例尺度测得 非度量化模型:顺序量表(有序)水平 ...
- R语言实战(统计分析1)
基本内容 描述型统计分析 频数表和列联表 卡方检验 相关系数和协方差 t检验 描述型统计量 首先我们以mtcars数据集为例,先看一下这个数据集前几行的内容 ,主要有英里数(mpg),马力(hp),车 ...
- R语言之基本统计分析
准备工作 加载需要使用的库 library(pastecs) library(psych) library(ggm) 读取数据,使用H1N1流感数据集和波士顿房价数据集. flu <- read ...
- R语言与生物统计分析试题
1.空文件夹"WCPFC"(用于存放最终输出的文件): 2.csv 文件"WCPFC 目标渔船名单",包含船名.国籍.IMO 号及 MMSI 号: 3.文件夹& ...
- R语言实战 - 基本统计分析(2)- 频数表和列联表
数据: > library(vcd) > head(Arthritis)ID Treatment Sex Age Improved 1 57 Treated Male 27 Some 2 ...
最新文章
- POJ - 3660 Cow Contest(flod)
- Neuron:迄今为止最大的颗粒细胞数据,发现海马齿状回神经元可过滤并放大空间信息...
- 【译】Swift算法俱乐部-Boyer-Moore字符串搜索
- 中医移动医疗_中医之极简移动医疗
- 7.2 MASS批量修改数据(剪切板上传数据)
- Mysql 系统学习梳理_【All】
- c语言下列编程段的错误,C语言编程题目(有错误)
- 软考中级软件设计师---下午题
- mysql通过函数完成10的阶乘_我来做数据--如何对数据进行处理
- 智能汽车能否真正实现无人驾驶,为什么?
- 密西西比河谷州立大学:Android应用程序开发(四)
- 成为顶流平台后 新氧阳谋峥嵘显露
- java 中利用subString 截取字符串中第三个/后面的内容,并将/用代替
- python利用turtle库绘制正方形绕一个顶点旋转
- Mysql 脚本创建触发器报错 1064 42000
- Centos安装JDK,RPM安装JDK
- 在知乎逮到一个腾讯10年老测试开发,聊过之后收益良多...
- 关于shell编程(3):awk中的sub和gsub
- 电子通信类投稿期刊介绍
- Open-iscs源码分析之---iscsiadm.c