R语言实战读书笔记(七)基本统计分析
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)
#cor函数:计算Pearson相关系数,Spearman相关系数,Kendall相关系数
#cov函数:计算协方差
states <- state.x77[, 1:6]
#以下代码计算方差和协方差
cov(states)
#以下代码计算Pearson积差相关系数
cor(states)
#以下代码计算Spearman等级相关系数
cor(states, method="spearman")
#可以看出收入和高中毕业率之间存在强正相关,文盲率和预期寿命之间存在很强的负相关
#设定行列,可以得出更直观的结果
x <- states[, c("Population", "Income", "Illiteracy", "HS Grad")]
y <- states[, c("Life Exp", "Murder")]
cor(x, y)
#相关性检验
cor.test(states[, 3], states[, 5])
#一次检验多个
library(psych)
corr.test(states, use = "complete")
#独立样本t检验
library(MASS)
t.test(Prob ~ So, data=UScrime).
#非独立样本t检验
library(MASS)
sapply(UScrime[c("U1", "U2")], function(x) (c(mean = mean(x),
sd = sd(x))))
with(UScrime, t.test(U1, U2, paired = TRUE))
#组间差异的非参数检验,wilcox.test适用于两组成对数据和无法保证正态性假设的情境
with(UScrime, by(Prob, So, median))
wilcox.test(Prob ~ So, data=UScrime)
#paired设为TRUE,配对检验
sapply(UScrime[c("U1", "U2")], median)
with(UScrime, wilcox.test(U1, U2, paired = TRUE))
#多于两组的检验
states <- as.data.frame(cbind(state.region, state.x77))
kruskal.test(Illiteracy ~ state.region, data=states)
R语言实战读书笔记(七)基本统计分析的更多相关文章
- R语言实战读书笔记(二)创建数据集
2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow ...
- R语言实战读书笔记(三)图形初阶
这篇简直是白写了,写到后面发现ggplot明显更好用 3.1 使用图形 attach(mtcars)plot(wt, mpg) #x轴wt,y轴pgabline(lm(mpg ~ wt)) #画线拟合 ...
- R语言实战读书笔记1—语言介绍
第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...
- R语言实战读书笔记2—创建数据集(上)
第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字 ...
- R语言实战读书笔记(八)回归
简单线性:用一个量化验的解释变量预测一个量化的响应变量 多项式:用一个量化的解决变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性:用两个或多个量化的解释变量预测一个量化的响应变量 多变量: ...
- R语言实战读书笔记(五)高级数据管理
5.2.1 数据函数 abs: sqrt: ceiling:求不小于x的最小整数 floor:求不大于x的最大整数 trunc:向0的方向截取x中的整数部分 round:将x舍入为指定位的小数 sig ...
- R语言实战读书笔记(四)基本数据管理
4.2 创建新变量 几个运算符: ^或**:求幂 x%%y:求余 x%/%y:整数除 4.3 变量的重编码 with(): within():可以修改数据框 4.4 变量重命名 包reshape中有个 ...
- R语言实战读书笔记(一)R语言介绍
1.3.3 工作空间 getwd():显示当前工作目录 setwd():设置当前工作目录 ls():列出当前工作空间中的对象 rm():删除对象 1.3.4 输入与输出 source():执行脚本
- R语言实战读书笔记(十三)广义线性模型
# 婚外情数据集 data(Affairs, package = "AER") summary(Affairs) table(Affairs$affairs) # 用二值变量,是或 ...
随机推荐
- LeetCode945-使数组唯一的最小增量
问题:使数组唯一的最小增量 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2] 输出:1 ...
- 事务控制语言DTL
一.什么是事务? · 数据库中的事务,是指可以将“多条相关语句执行”看做是“一条语句执行”的一种内部机制.即事务是一种可以保证“多条语句一次性执行完成”或者一条语句都不执行的机制. 三.事务的特点 原 ...
- 如何用ADMINISTRATOR登陆WIN7
Windows 7系统出于安全考虑,将系统超级管理员帐户(Administrator)隐藏了,不允许"普通用户"使用.很多时候特别是安装一些应用软件时,由于兼容的问题,普通权限的用 ...
- Linux学习-工作管理 (job control)
什么是工作管理? 进行工作管理的行为中, 其实每个工作都是目前 bash 的 子进程,亦即彼此之间是有相关性的. 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 b ...
- 智能DNS解析之edns-client-subnet篇
摘要:智能DNS解析是CDN的重要组成部份,所谓的智能也就是根据请求用户来对同一域名作出相应不同解析(目前大多数域名注册商还没提供线路解析的服务),所以CDN的调度准确性也就完全依靠DNS智能解析,但 ...
- luogu2764 最小路径覆盖问题
最小路径覆盖,看这里 #include <iostream> #include <cstring> #include <cstdio> #include <q ...
- C#通过http post方式调用需要证书的webservice
前一段时间做花旗银行的项目,用到花旗的接口是websevice,由于很多原因直接在项目中引用webservice不成功,于是就用了http post方式请求,把请求信息(xml格式)组装之后发送到服务 ...
- Python封装与隐藏
今日内容: 1.封装与隐藏2.property3.绑定方法与非绑定方法 知识点一:封装与隐藏 1.什么封装: 封:属性对外是隐藏的,但对内是开放的 装:申请一个名称空间,往里装入一系列名字 ...
- git基本常用命令总结
官网:https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E5%8F%96%E5%BE%97%E9%A1%B9%E7%9B%AE%E7%9A% ...
- 【bzoj3251】树上三角形 朴素LCA+暴力
题目描述 给定一大小为n的有点权树,每次询问一对点(u,v),问是否能在u到v的简单路径上取三个点权,以这三个权值为边长构成一个三角形.同时还支持单点修改. 输入 第一行两个整数n.q表示树的点数和操 ...