统计学-R语言-4.5

这篇具有很好参考价值的文章主要介绍了统计学-R语言-4.5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本篇文章将继续对数据的类型做介绍,本片也是最后一个介绍数据的。


多变量数据

掌握描述多变量数据的分析方法:多维列联表、复式条形图、并列箱线图、点带图、多变量散点图(重叠散点图和矩阵式散点图)。

多维列联表

除了一维表、二维表,在实际中更多的是多维表,也就是多个变量交叉生成的表格。
R中的table()函数也可以生成多维表。
假设存在x、y、z三个变量,table(x,y)则生成x、 y二维表,table(x,y,z)生成每个z值关于x、y的二维表(由于计算机作三维及三维以上的表格不方便,所以就用这种方式显示)。

例题1:
为了了解不同年龄的男性,吸烟与呼吸系统疾病之间的关系,青原博士获得如下的调查数据。
统计学-R语言-4.5,r语言,开发语言
这是一个2×2×2的三维列联表,因为每个变量的水平数均为2。

age=c(rep("40岁",4),rep("40~59",4))
smoke=rep(c("吸烟","不吸烟"),4)
breath=rep(c("呼吸正常","呼吸正常","呼吸不正常","呼吸不正常"),2)
freq=c(874,567,28,14,780,328,68,2)

接下来分析breath变量的频数分布,分析后再作breath与smoke的二维表,最后作breath、smoke与age的三维表
统计学-R语言-4.5,r语言,开发语言

xtabs (freq~breath)

breath
呼吸不正常 呼吸正常
112 2549

xtabs(freq~breath+smoke)        

smoke
breath 不吸烟 吸烟
呼吸不正常 16 96
呼吸正常 895 1654

xtabs(freq~breath+smoke+age)

, , age = <40岁
smoke
breath 不吸烟 吸烟
呼吸不正常 14 28
呼吸正常 567 874
, , age = 40~59
smoke
breath 不吸烟 吸烟
呼吸不正常 2 68
呼吸正常 328 780

复式条形图

对breath按不同的smoke作复式条形图。
从下图可以看出,首先按smoke分成"吸烟",“不吸烟” 2组,每组里又按breath分成"呼吸正常","呼吸不正常"2类

par(mfrow=c(1,2))
barplot(xtabs(freq~breath+smoke))
barplot(xtabs(freq~breath+smoke),beside=T)

统计学-R语言-4.5,r语言,开发语言
breath按照smoke作的复式条形图,黑色的方块代表不健康。

对smoke按照不同的breath做复式条形图,首先按breath分 成“呼吸正常”,“呼吸不正常”2组;然后,每组里又分成“吸烟”,“不吸烟”等2类。结果如下图所示

par(mfrow=c(1,2))
barplot(xtabs(freq~smoke+breath))
barplot(xtabs(freq~smoke+breath),beside=T)

统计学-R语言-4.5,r语言,开发语言
黑色的方块代表不吸烟。

并列箱线图

用并列箱线图考察年龄与吸烟、年龄与呼吸的关系
为了画出并列箱线图,此处需要没有分组的年龄变量。 不失一般性,假设两个年龄段"<40岁","40~59"的男性的年龄均值分别为20岁和49.5岁
按照下面的程序产生年龄的连续观测值

set.seed(500)
age.value=round(c(rnorm(1483,mean=20,sd=6.5),rnorm(1178,mean=49.5,sd=3)))

set.seed()函数是为了保证随机生成的随机数前后一致
首先,不设置该种子函数

x=rnorm(10)
plot(x)

绘出的图如下:

统计学-R语言-4.5,r语言,开发语言
重新运行一遍这两行,就是另外的图

x=rnorm(10)
plot(x)

统计学-R语言-4.5,r语言,开发语言

为了在下次运行时,产生一样的随机数,就得使用set.seed()函数了,如下

set.seed(1)
x=rnorm(10)
plot(x)

画图如下:
统计学-R语言-4.5,r语言,开发语言

那么此时,我们重复运行上面的代码

set.seed(1)
x=rnorm(10)
plot(x)

统计学-R语言-4.5,r语言,开发语言
那么set.seed(1)换为set.seed(2)时还一样吗?我们运行下面程序

set.seed(2)
x=rnorm(10)
plot(x)

显然是不一样的,因此,set.seed()括号里面的参数可以是任意数字,是代表你设置的第几号种子而已,不会参与运算,是个标记而已。

统计学-R语言-4.5,r语言,开发语言
rnorm(n, mean = 0, sd = 1)
n 为产生随机值个数(长度),mean 是平均数, sd 是标准差 。
使用该函数的时候后,一般要赋予它 3个值.
rnorm() 函数会随机正态分布,然后随机抽样或者取值 n 次,
rnorm(5,0,1) 以N(0,1)的正态分布,分别列出5个值。

函数形式:rep(x, time = , length = , each = ,)
参数说明:
x:代表的是你要进行复制的对象,可以是一个向量或者是一个因子。
times:代表的是复制的次数,只能为正数。负数以及空值都会为错误值。复制是指的是对整个向量进行复制。
each:代表的是对向量中的每个元素进行复制的次数。
length.out:代表的是最终输出向量的长度。

统计学-R语言-4.5,r语言,开发语言
例题1:
用并列箱线图考察年龄与吸烟、年龄与呼吸的关系
为了画出并列箱线图,此处需要没有分组的年龄变量。 不失一般性,假设两个年龄段"<40岁","40~59"的男性的年龄均值分别为20岁和49.5岁
按照下面的程序产生年龄的连续观测值

set.seed(500)
age.value=round(c(rnorm(1483,mean=20,sd=6.5),rnorm(1178,mean=49.5,sd=3)))

还需要给出每一个男性的吸烟状态、呼吸状态,这由下面的程序来实现:

age1=c(rep("<40岁",1483),rep("40~59",1178))
breath1=c(rep(" 呼吸正常",1441),rep("呼吸不正常",42),rep(" 呼吸正常",1108),rep("呼吸不正常",70))
smoke1=c(rep("吸烟",874),rep("不吸烟",567),rep("吸烟",28),rep("不吸烟",14),rep("吸烟",780),rep("不吸烟",328),rep("吸烟",68),rep("不吸烟",2))
基于age.value,分别做出age.value按smoke1和breath1分类的箱线图
par(mfrow=c(1,2))
boxplot(age.value ~smoke1)
boxplot(age.value ~breath1)

统计学-R语言-4.5,r语言,开发语言

从箱线图可以发现,吸烟的男性平均年龄高于不吸烟的男性,呼吸不正常的男性平均年龄高于呼吸正常的男性。

例题2:
为了比较乘坐公交车上班快还是自己开车快,青原博士对两种方式所用时间各进行了10次记录,具体数据见下表。
统计学-R语言-4.5,r语言,开发语言
目的是比较两种交通方式所需时间是否有差异,从并列箱线图可以看出两个交通方式所需时间存在较大差异

x1=c(48,47,44,45,46,47,43,47,42,48)
x2=c(36,45,47,38,39,42,36,42,46,35)
time=c(x1,x2)
transportation=c(rep(1,10),rep(2,10))
traffic.time=cbind(time,transportation)
boxplot(time ~transportation

统计学-R语言-4.5,r语言,开发语言

cbind: 根据列进行合并,即叠加所有列,m列的矩阵与n列的矩阵cbind()最后变成m+n列,合并前提:cbind(a, c)中矩阵a、c的行数必需相符。
rbind: 根据行进行合并,就是行的叠加,m行的矩阵与n行的矩阵rbind()最后变成m+n行,合并前提:rbind(a, c)中矩阵a、c的列数必需相符。
统计学-R语言-4.5,r语言,开发语言
统计学-R语言-4.5,r语言,开发语言
例题三:
模拟1000个标准正态分布随机数,分成10组,作10个并列箱线图这里利用rep()函数重复100次生成1:10的1000个数,再利 用factor()函数生成10个因子。

r1= rnorm(1000)
f1=factor(rep(1:10,100))
boxplot(r1~f1)

统计学-R语言-4.5,r语言,开发语言

R语言中取整运算主要包括以下五种:

floor():向下取整;ceiling(): 向上取整;round(): 四舍五入取整;turnc(): 向0取整;signif(): 保留给定位数的精度。
floor返回对应数字的’地板’值,即不大于该数字的最大值;
ceiling返回对应数字的’天花板’值,就是不小于该数字的最小整数;
round是R里的’四舍五入’函数,round的原型是round(x, digits = 0), digits设定小数点位置,默认为零即小数点后零位(取整)。
trun的特性是’向零截取’, 也就是说对于一个数字a,它将数轴分成两侧,trunc(a)将返回数轴上包含数字0的那一侧离a最近的那个整数。
signif是保留有效数字的函数。常用于科学计数。

点带图

点带图(StripChart)经常用来比较各变量的分布情况,点带图主要用在当样本观测值较少时。
R作点带图的函数是stripchart(),对于双变量数据其用法是stripchart(z~t),z变量在t变量上的分布情况,不同的是这里z变量刻度在x轴上,而t 变量在y轴上。

例题1:
对呼吸正常与否按吸烟与否分类作点带图。
结果如下图所示,呼吸的各个类型都描在了图上。

smoke1[ smokel1=="吸烟"]=1
smoke1[ smokel1=="不吸烟"]=0
par(mfrow =c(1,1))
stripchart(as. numeric( smoke1)~ breath1,xlab="吸烟"

统计学-R语言-4.5,r语言,开发语言
x轴用1 , 0 代表" 吸烟" 和"不吸烟"等2组
该例中的两个变量都是二分类,关系比较简单。下面再看一个复杂一点儿的点带图例子。

一般只要是数字,不管是什么类型的,都可以通过as.numeric()函数转换为对应的numeric类型的数字,例如
x<-“123”,x为character类型,而as.numeric(x)则为numeric类型的123。
但是因子(factor)类型却不一样。
a<-factor(c(100,200,300,301,302,400,10)),
它们的值分别为100 200 300 301 302 400 10,然而as.numeric(a)对应的值并非100 200 300 301 302 400 10,而是2 3 4 5 6 7 1。
因子(factor)转换成数值型(numeric)的规则是这样的:
一共有n个数,那么转换后的数字就会在1—n中取值,数字最小的取一,次小的取二,以此类推。那么如何让因子(factor)类型里的数值转换对应的数值型呢?

mean(as.numeric(as.character(factorname)))
mean(as.numeric(levels(factorname)[factorname]))

以上代码就可以实现将因子(factor)类型里的数值转换对应的数值型,思路都是先转换成字符型然后再转换成数值型。

例题2:
模拟100个标准正态分布的随机数,分成5组,作点带图

r2= rnorm(100)
f2=factor(rep(1:5,20))
stripchart(r2~f2)

统计学-R语言-4.5,r语言,开发语言
反映了各随机数在各组上的分布情况,而且绝大 部分集中在[-1,1]上,当样本观察值较多时,点带图就显得有点凌乱,没有箱线图清晰直观。这是点带图的局限性,当样本观察值较多时,建议使用箱线图。

多变量散点图

多变量散点包括重叠散点图和矩阵式散点图。我们使用R自带的著名的鸢尾花(iris)数据集来介绍如何绘制多变量散点图。

例题1:
R内置的鸢尾花(iris)数据集是Fisher关于 150个植物分类的数据,是判别分析的经典案例。
该数据集内有五个变量:Sepal.Length(花萼长度)、 Sepal.Width(花萼宽度)、Petal.Length(花瓣长度) Petal.Width(花瓣宽度)、Species(品种)。
品种有三个:setosa,versicolor和virginica。每种品种有50 个样本。

iris
levels(iris $ Species)#种类的水平

[1] “setosa” “versicolor” “virginica”

共有三种植物,
分别是setosa,versicolor和virginica
为了在图中方便显示,
重新标示它们为1、2和3

iris.lab=rep(c("1","2","3"),rep(50,3))

重叠散点图

有时出于研究的需要,将两个或多组两个变量的散点图绘制在同一个图中, 可以更好的比较它们之间的相关关系,这时就可以绘制重叠散点图

par(mfrow=c(1,2))
plot(iris[,1],iris[,3],type="n")	#绘制iris第1列和第3列的散点图,type="n"不显示点
text(iris[,1],iris[,3],cex=0.6) #显示样本序号,缩小字体cex=0.6
plot(iris[,1],iris[,3],type="n")
text(iris[,1],iris[,3],iris.lab,cex=0.6)

统计学-R语言-4.5,r语言,开发语言

矩阵式散点图

同时考察三个或三个以上的数值变量间的相关关系时, 一一绘制它们之间的简单散点图就十分麻烦
利用矩阵式散点图则比较合适,这样可以快速发现多个 变量间的主要相关性,这一点在多元线性回归中显得尤为重要
R作矩阵式散点图的函数是pairs()。

pairs(iris)
pairs(iris [1:4],pch=21,bg=iris.lab)	#按iris.lab分类

统计学-R语言-4.5,r语言,开发语言


练习

1、(数据: example2_4. RData)下表是随机抽取的20家医药企业销售收入、销售网点数、销售人员数以及广告费用的数据。
统计学-R语言-4.5,r语言,开发语言

1 . 绘制带有箱线图的散点图观察这些变量间的关系,并描述每个变量的分布状况

par(fig=c(0,0.8,0,0.8),mai=c(0.9,0.9,0.1,0.1)) 
plot(广告费用,销售收入,xlab="广告费用",ylab="销售收入",cex.lab=0.7,cex.axis=0.7)
abline(lm(销售收入~广告费用,data=example2_4),col="red")
par(fig=c(0,0.8,0.5,1),new=TRUE)
boxplot(广告费用,horizontal=TRUE,axes=FALSE)
par(fig=c(0.52,1,0,0.9),new=TRUE)
boxplot(销售收入,axes=FALSE)

统计学-R语言-4.5,r语言,开发语言

从图中的两个箱线图可以看出,销售收入和广告费用均为右偏分布。

2 . 绘制关于销售收入与销售网点数、销售人员数及广告费用的重叠散点图

par(mai=c(0.5,0.85,0.1,0.1))
plot(广告费用,销售收入,xlab="",ylab="销售收入")
abline(lm(销售收入~广告费用,data=example2_4))
points(销售网点数,销售收入,pch=2,col="blue")
abline(lm(销售收入~销售网点数,data=example2_4),col="blue")
points(销售人员数,销售收入,pch=3,col="red")
abline(lm(销售收入~销售人员数,data=example2_4),col="red")
legend("bottomright",legend=c("广告费用","销售网点数","销售人员数"),pch=1:3,col=c("black","blue","red"))

统计学-R语言-4.5,r语言,开发语言

3 . 绘制矩阵散点图

load("C:/example/ch2/example2_4.RData")
plot(example2_4,cex=0.8,gap=0.5) 
pairs(example2_4)

统计学-R语言-4.5,r语言,开发语言
统计学-R语言-4.5,r语言,开发语言

图显示,销售收入、销售网点数、销售人员数、广告费用两两之间都有较强的线性关系。文章来源地址https://www.toymoban.com/news/detail-789398.html

到了这里,关于统计学-R语言-4.5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 统计学-R语言-4.6

    本篇文章是对数据可视化的补充文章。 跳转至该篇博客 跳转至该篇博客 在上面两篇博客中,对单变量和双变量的列联表进行了实例展示,下面是对三维列联表进行实例。 行变量为被调查者所属社区和性别,列变量为态度的三维列联表: 生成行变量为被调查者性别和态度,

    2024年01月18日
    浏览(39)
  • 统计学-R语言-4.7

    本篇文章将介绍数据的描述统计量。 平均数也称为均值,常用的统计量之一 消除了观测值的随机波动 易受极端值的影响 根据总体数据计算的,称为总体平均数,记为;根据样本数据计算的,称为样本平均数,记为 。 设一组数据为:x1 ,x2 ,… ,xn (总体数据xN) 。 计算

    2024年01月16日
    浏览(38)
  • 统计学-R语言-2.2

    本篇文章是将上篇得软件安装完,对其部分功能进行介绍。 在我们日常练习时会有.RData文件导入,并对其进行分析,下面是两种方导入.RData文件。 直接找到自己下载的.RData文件,双击进行打开即可。 上面得工具栏中找到文件。 在里面找到打开程序脚本,找到你所保存的.R

    2024年02月02日
    浏览(32)
  • 统计学-R语言-5.3

    本篇文章即为概率与分布的最后一篇文章。 分位数函数是累积分布函数的反函数。 p-分位数是具有这样性质的一个值:小于或等于它的概率为p。 根据定义,中位数即50%分位数。 分位数通常用于置信区间的计算,以及与设计试验有关的势函数的计算。 下面给出一个置信区间

    2024年01月18日
    浏览(46)
  • 统计学-R语言-5.2

    本篇文章将继续上篇的进行介绍。 大数定理大数定理”的另一种表达方式是“均值定理”,其含义是,随机变量X多个观察值的均值会随着观察值的增加越发趋近于总体的期望值,中心极限定理进一步告诉我们,均值服从期望为μ 的正态分布。在各种测量试验中,我们一般都

    2024年01月18日
    浏览(42)
  • 统计学-R语言-4.3

    本篇介绍的是数值型数据怎么进行数据可视化,本篇介绍的有直方图、茎叶图、箱线图。 直方图(Histogram)用于描述连续型变量的频数分布,实际应用中常用于考察变量的分布是否对称;是否服从某种分布类型,如正态分布 直方图以矩形的面积表示各组段的频数或频率, 各

    2024年01月16日
    浏览(42)
  • 统计学-R语言-4.1

    安装完R软件之后就可以对其进行代码的编写了。 如果对数据分析有些特殊需要,已有的R包或函数不能满足,可以在R中编写自己的函数。函数的定义格式如下所示: 该式中, functionname是函数名称; function指明该对象为函数类型;a1,a2,为函数中涉及的参数; expression是函数

    2024年01月16日
    浏览(35)
  • 统计学-R语言-6.2

    本篇将继续介绍上篇所剩下的内容。 设两个总体的均值分别为1和2,从两个总体中分别抽取样本量为n1和n2的两个随机样本,其样本均值分别为 和 。估计两个总体均值之差(u1-u2)的点估计量显然是两个样本的均值之差( )。 两个总体均值的置信区间是由两个样本均值之

    2024年01月18日
    浏览(39)
  • 统计学-R语言-2.1

    上篇文章介绍了统计学-R语言的介绍,本篇文章介绍如何安装R软件。 可以登录官网,https://www.r-project.org/,点击此处跳转。 点进去下滑找到China,之后找任意一个链接地址进行下载即可。 我点的是第二个,进入后在红框中选择自己对应得版本进行下载。 第一次安装点击红框处

    2024年02月02日
    浏览(27)
  • 统计学-R语言-7.2

    本篇将继续上篇文章进行介绍。 小样本的检验 假定条件 小样本(n30) 总体服从正太分布 检验统计量的选择与总体方差是否已知有关 已知样本,均值经标准化后服从标准正态分布: 单样本t检验的效应量通常使用 Cohen的d统计量来度量,计算公式为: 该效应量表示样本均值与假

    2024年01月21日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包