第六章:基本图形
6.1 条形图(vcd包)
barplot函数最简单的用法:
barplot(height) 其中的 height 是一个向量或一个矩阵。
6.1.1 简单条形图
height是一个向量
barplot(counts,main="Simple Bar Plot",
xlab="Improvement", ylab="Frequency") #简单条形图
barplot(counts,main="Horizontal Bar Plot",
xlab="Frequency", ylab="Improvement",horiz=TRUE) #水平条形图
6.1.2 堆砌条形图和分组条形图
height是一个矩阵
#堆砌条形图,默认beside=FALSE
barplot(counts,main="Stacked Bar Plot",
xlab="Treatment", ylab="Frequency",col=c("red", "yellow","green"),
legend=rownames(counts))
#分组条形图,并列
barplot(counts,main="Grouped Bar Plot",
xlab="Treatment", ylab="Frequency",col=c("red", "yellow", "green"),
legend=rownames(counts), beside=TRUE)
注: col 为绘制的条形添加了颜色,参数 legend.text 为图例提供了各条形的标签(仅在height 为一个矩阵时有用)
6.1.3 均值条形图
例:
means
barplot(means$x, names.arg=means$Group.1)
title("Mean Illiteracy Rate")
注:means$x 是包含各条形高度的向量,而添加选项 names.arg=means$Group.1是为了展示标签。
6.1.4 条形图的微调
par()函数
例:
par(mar=c(5,8,4,2)) #增加Y边界额大小
par(las=2) #旋转条形的标签
counts
barplot(counts,main="Treatment Outcome",
horiz=TRUE,
cex.names=0.8, #缩小字体大小,让标签更合适
names.arg=c("No Improvement", "Some Improvement",#修改标签文本
"Marked Improvement"))
注:参数 cex.names 用来减小字号,将其指定为小于1的值可以缩小标签的大小。
names.arg 允许你指定一个字符向量作为条形的标签名
6.1.5 棘状图
spine()函数
棘状图对堆砌条形图进行了重缩放,这样每个条形的高度均为1,每一段的高度即
表示比例。
6.2 饼图
pie(x, labels)
其中 x 是一个非负数值向量,表示每个扇形的面积,而 labels 则是表示各扇形标签的字符型向量。
1、将四幅图组合为一幅图
par(mfrow=c(2, 2))
slices
lbls
pie(slices, labels = lbls,
main="Simple Pie Chart")
2、为饼图添加比例数值
pct
lbls2
pie(slices, labels=lbls2, col=rainbow(length(lbls2)),
main="Pie Chart with Percentages")
注:rainbow() 函 数 定 义 了 各 扇 形 的 颜 色,rainbow(length(lbls2)) 被解析rainbow(5) ,即为图形提供了五种颜色。
3、3D饼图(用到了 plotrix包)
library(plotrix)
pie3D(slices, labels=lbls,explode=0.1,
main="3D Pie Chart ")
4、从表格创建饼图
mytable
lbls3
pie(mytable, labels = lbls3,
main="Pie Chart from a Table\n (with sample sizes)")
----扇形图(plotrix包中的fan.plot()函数)
例:
library(plotrix)
slices
lbls
fan.plot(slices, labels = lbls, main="Fan Plot")
6.3 直方图
hist(x) 其中的 x 是一个由数据值组成的数值向量
例子:
1、简单直方图
par(mfrow=c(2,2))
hist(mtcars$mpg)
2、指定组数和颜色
hist(mtcars$mpg,
breaks=12,
col="red",
xlab="Miles Per Gallon",
main="Colored histogram with 12 bins")
3、添加轴须图
hist(mtcars$mpg,
freq=FALSE,
breaks=12,
col="red",
xlab="Miles Per Gallon",
main="Histogram, rug plot, density curve")
rug(jitter(mtcars$mpg))
lines(density(mtcars$mpg), col="blue", lwd=2)
注:参数 freq=FALSE 表示根据概率密度而不是频数绘制图形。参数 breaks 用于控制组的数量。在定义直方图中的单元时,默认将生成等距切分。
使用 lines() 函数叠加了这条蓝色、双倍默认线条宽度的曲线,轴须图是实际数据值的一种一维呈现方式。如果数据中有许多结可以使用如下代码将轴须图的数据打散:
rug(jitter(mtcars$mpag, amount=0.01))
这样将向每个数据点添加一个小的随机值(一个 ±amount 之间的均匀分布随机数),以避免重叠的点产生影响。
4、添加正态密度曲线和外框
x
h
breaks=12,
col="red",
xlab="Miles Per Gallon",
main="Histogram with normal curve and box")
xfit
yfit
yfit
lines(xfit, yfit, col="blue", lwd=2)
box()
6.4 核密度图
plot(density(x))
例:
par(mfrow=c(2,1))
d
plot(d) #使用默认设置创建最简单图形
d
plot(d, main="Kernel Density of Miles Per Gallon") #添加标题
polygon(d, col="red", border="blue") #将曲线修改为蓝色,并使用实
心红色填充曲线下方的区域
rug(mtcars$mpg, col="brown") #添加棕色的轴须图
引入 sm包,更好的用来比较各组差异:
sm.density.compare(x, factor) 其中的 x 是一个数值型向量, factor 是一个分组变量
6.5 箱线图
boxplot(mtcars$mpg, main="Box plot", ylab="Miles per Gallon")
默认情况下,两条须的延伸极限不会超过盒型各端加1.5倍四分位距的范围。此范围以外的值将以点来表示。
1、使用并列箱线图进行跨组比较
boxplot(formula, data=dataframe)
(1)其中的 formula 是一个公式, dataframe 代表提供数据的数据框(或列表)
--------一个示例公式为 y ~A ,这将为类别型变量 A 的每个值并列地生成数值型变量 y 的箱线图。
公式 y ~ A*B 则将为类别型变量 A 和 B 所有水平的两两组合生成数值型变量 y 的箱线图。
添加参数 varwidth=TRUE 将使箱线图的宽度与其样本大小的平方根成正比。 参数horizontal=TRUE 可以反转坐标轴的方向。
(2)箱线图灵活多变,通过添加 notch=TRUE ,可以得到含凹槽的箱线图
6.6 点图
dotchart(x, labels=)其中的 x 是一个数值向量,而 labels 则是由每个点的标签组成的向量
例子:
dotchart(mtcars$mpg, labels=row.names(mtcars), cex=.7,
main="Gas Mileage for Car Models",
xlab="Miles Per Gallon")
第七章 基本统计分析
7.1 描述性统计分析
(1) summary()函数
提供了最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻
辑型向量的频数统计。
(2)sapply() 函数
sapply(x, FUN, options)
其中的 x 是数据框(或矩阵), FUN 为一个任意的函数。如果指定了 options ,它们将被传递给 FUN。它可以用来计算所选择的任意描述性统计量
sapply(x, FUN, options,na.omit=TRUE) 忽略了缺失值
(3)describe()函数 Hmisc包
可返回变量和观测的数量、缺失值和唯一值的数目、平均值、分位数,以及五个最大的值和五个最小的值
(4) stat.desc()函数 pastecs包
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)。
(5)describe()函数 psych包
用法:可以计算非缺失值的数量、平均数、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均值的标准误。
下面介绍分组计算描述性统计量:
(6)aggregate() 函数
用法:aggregate(mtcars[myvars], by=list(am=mtcars$am), mean)
注:如果使用的是 list(mtcars$am) ,则 am 列将被标注为Group.1 而不是 am,
如果要 一次返回若干个统计量一次返回若干个统计量,则需要用到:
(7)by()函数
用法:by(data, INDICES, FUN)
其中 data 是一个数据框或矩阵, INDICES 是一个因子或因子组成的列表,定义了分组, FUN 是任意函数
7.2 频数表和列联表
7.2.1 生成频数表
一维列联表:
例:
mytable
prop.table(mytable) #将频数转换为比例值
prop.table(mytable)*100 #转换为百分比
二维列联表:
mytable
mytable
7.2.2 独立性检验
1、卡方独立性检验(vcd包)
用法:chisq.test() 函数
2、Fisher精确检验
用法: fisher.test() 函数
注:可以在任意行列数大于等于2的二维列联表上使用,但不能用于2×2的列联表
3、Cochran-Mantel-Haenszel检验
用法:mantelhaen.test() 函数
7.2.3 相关性的度量
用法:assocstats() 函数
注:以用来计算二维列联表的phi系数、列联系数和Cramer’s V系数
7.3 相关
7.3.1 相关的类型
R中的相关类型很多,主要是有: Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格(polychoric)相关系数和多系列(polyserial)相关系数。
(1)Pearson、Spearman和Kendall相关Pearson积差相关系数衡量了两个定量变量之间的线性相关程度
Spearman等级相关系数则衡量分级定序变量之间的相关程度
Kendall’s Tau相关系数也是一种非参数的等级相关度量
cor() 函数 cor(x, use= , method= )
注:x:矩阵或者数据框
use:指定缺失数据的处理方式。可选的方式为 all.obs (假设不存在缺失数据——遇到缺失数据时将报错)、 everything (遇到缺失数据时,相关系数的计算结果将被设为missing)、 complete.obs (行删除)以及 pairwise.complete.obs (成对删除,pairwise deletion)
method:指定相关系数的类型。可选类型为 pearson 、 spearman 或 kendall
cov() 函数可用来计算协方差
(2)偏相关 ggm包
pcor(u, S)
例:
pcor(c(1,5,2,3,6), cov(states))
其中的 u 是一个数值向量,前两个数值表示要计算相关系数的变量下标,其余的数值为条件变量(即要排除影响的变量)的下标。 S 为变量的协方差阵。
7.3.2 相关性的显著性检验 psych包
corr.test() 函数可以为Pearson、Spearman或Kendall相关计算相关矩阵和显著性水平
7.4 t检验
7.4.1 独立样本的t检验
用法:t.test(y ~ x, data) 或者 t.test(y1, y2)
7.4.2 非独立样本的t检验
用法:t.test(y1, y2, paired=TRUE)
7.5 组间差异的非参数检验
用法:wilcox.test(y ~ x, data) 或者 wilcox.test(y1, y2)