r语言 图形一览_R语言:基本图形、基本统计方法

第六章:基本图形

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)


版权声明:本文为weixin_42441072原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。