码迷,mamicode.com
首页 > 编程语言 > 详细

R语言实战读书笔记(七)基本统计分析

时间:2015-11-27 21:53:15      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:

summary()

sapply(x,fun,options):对数据框或矩阵中的每一个向量进行统计

mean

sd:标准差

var:方差

min:

max:

median:

length:

range:

quantile:

vars <- c("mpg", "hp", "wt")
head(mtcars[vars])

summary(mtcars[vars])

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)

#如结果,分布右偏(0.61),较正态分布稍平(-0.37)

#Hmisc包中的describe可返回变量和观测的数量,缺失值和唯一值的数目、平均值、分位数及五个最大的值和最小的值

library(Hmisc)
describe(mtcars[vars])

#pastects包中有一个stat.desc函数,可以计算各种描述性统计量

library(pastecs)
stat.desc(mtcars[vars])

#psych包的describe可以计算描述性统计量

library(psych)
describe(mtcars[vars])

#aggregate():分组获取描述性统计量

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

#by(data,indices,fun)

dstats <- function(x)(c(mean=mean(x), sd=sd(x)))
by(mtcars[vars], mtcars$am, dstats)

#doBy的summaryBy可以分组计算描述性统计量

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

#psych中的desribe.by可以分组计算描述性统计量,但不允许指定任何函数。

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

#使用reshape包

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

#id.vars,按什么分组,measure看什么变量?
dfm <- melt(mtcars, measure.vars = c("mpg", "hp", "wt"), id.vars = c("am", "cyl"))
cast(dfm, am + cyl + variable ~ ., dstats)

table:使用N个类别型变量创建一个N维列联表

xtabs:根据一个公式和一个矩阵或数据框创建一个N维列联表

prop.table:将表中条目表示为分数形式

margin.table:计算表中条目的和

addmargins:将结果放入表中

ftable:创建一个紧凑的平铺式列联表

#一维列联表

mytable <- with(Arthritis, table(Improved))
mytable
prop.table(mytable)

#二维列联表

mytable <- xtabs(~ Treatment+Improved, data=Arthritis)
mytable

#计算边缘频数,1表示第一个变量
margin.table(mytable, 1)

#计算边缘比例,1表示第一个变量
prop.table(mytable, 1)
margin.table(mytable, 2)
prop.table(mytable, 2)
prop.table(mytable)

#每行和每列最后加sum
addmargins(mytable)
admargins(prop.table(mytable))

#仅添加各行的和
addmargins(prop.table(mytable, 1), 2)

#仅添加各列的和
addmargins(prop.table(mytable, 2, 1)

#可以用gmodels的CrossTable生成二维列联表

library(gmodels)
CrossTable(Arthritis$Treatment, Arthritis$Improved)

#独立性检验

library(vcd)
mytable <- xtabs(~Treatment+Improved, data=Arthritis)
chisq.test(mytable)

#以上代码结果p值为0.001,存在某种关系
mytable <- xtabs(~Improved+Sex, data=Arthritis)
chisq.test(mytable)

#以上代码结果p值为0.08,没关系

#以下代码结果p值为0.001,有关系

mytable <- xtabs(~Treatment+Improved, data=Arthritis)
fisher.test(mytable)

#以下代码p值为0.0006,假设不存在三阶交互作用

mytable <- xtabs(~Treatment+Improved+Sex, data=Arthritis)
mantelhaen.test(mytable)

#以下为相关性度量,值越大相关性越强

library(vcd)
mytable <- xtabs(~Treatment+Improved, data=Arthritis)
assocstats(mytable)

 

R语言实战读书笔记(七)基本统计分析

标签:

原文地址:http://www.cnblogs.com/MarsMercury/p/5001693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!