layout(matrix(c(1,2,3,3),nrow=2,ncol=2),widths=c(2,1))#布局绘图环境
par(mai=c(0.6,0.6,0.1,0.1),cex=0.7)#设置图形的边距、文字和绘图符号大小
x<-rnorm(5000) #生成5000个标准正态分布的随机数
y<-rchisq(5000,10)#生成5000个卡方分布的随机数
hist(x,prob=TRUE,col="lightblue",xlab="x",ylab="Density",
ylim=c(0,0.4),main="") #绘制x直方图
hist(y,prob=TRUE,col="pink",xlab="y",ylab="Density",main="")#绘制y直方图
boxplot(x,col='red',lwd=1)#绘制x的箱线图
layout(matrix(c(1,2,3,3),nrow=2,ncol=2,byrow=TRUE),heights=c(2,1))#布局绘图环境
par(mai=c(0.6,0.6,0.1,0.1),cex=0.7)#设置图形的边距、文字和绘图符号大小
x<-rnorm(5000) #生成5000个标准正态分布的随机数
y<-rchisq(5000,10)#生成5000个卡方分布的随机数
hist(x,prob=TRUE,col="lightblue",xlab="x",ylab="Density",ylim=c(0,0.4),main="") #绘制x直方图
plot(x,y,xlab="x",ylab="y") #绘制y直方图
boxplot(y,col="red",lwd=1,horizontal = TRUE)#绘制y箱线图
load('D:\\New_Folder\\Study_Programming\\R_Programme\\Applied Statistics\\datas - Copy\\example\\ch2\\example2_1.RData')
summary(example2_1) #遇到类别变量时,产生频数分布表;遇到数值变量时,产生概括性统计量。
## 社区 性别 态度
## A社区:27 男:36 反对:31
## B社区:17 女:44 赞成:49
## C社区:21
## D社区:15
#生成被调查者所属社区的频数分布表,并将频数分布表转化为百分比表
count1<-table(example2_1$社区)
count1
##
## A社区 B社区 C社区 D社区
## 27 17 21 15
prop.table(count1)*100
##
## A社区 B社区 C社区 D社区
## 33.75 21.25 26.25 18.75
#生成被调查者所属社区与态度的列联表,为列联表增加边际和,并将列联表转化为百分比表。
mytable2<-table(example2_1$社区,example2_1$态度)
addmargins(mytable2)
##
## 反对 赞成 Sum
## A社区 13 14 27
## B社区 5 12 17
## C社区 7 14 21
## D社区 6 9 15
## Sum 31 49 80
addmargins(prop.table(mytable2))*100
##
## 反对 赞成 Sum
## A社区 16.25 17.50 33.75
## B社区 6.25 15.00 21.25
## C社区 8.75 17.50 26.25
## D社区 7.50 11.25 18.75
## Sum 38.75 61.25 100.00
#使用crosstable函数生成二维列联表,并对其进行百分比的分析
library(gmodels)
CrossTable(example2_1$性别,example2_1$态度)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | Chi-square contribution |
## | N / Row Total |
## | N / Col Total |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 80
##
##
## | example2_1$态度
## example2_1$性别 | 反对 | 赞成 | Row Total |
## --------------|-----------|-----------|-----------|
## 男 | 14 | 22 | 36 |
## | 0.000 | 0.000 | |
## | 0.389 | 0.611 | 0.450 |
## | 0.452 | 0.449 | |
## | 0.175 | 0.275 | |
## --------------|-----------|-----------|-----------|
## 女 | 17 | 27 | 44 |
## | 0.000 | 0.000 | |
## | 0.386 | 0.614 | 0.550 |
## | 0.548 | 0.551 | |
## | 0.212 | 0.338 | |
## --------------|-----------|-----------|-----------|
## Column Total | 31 | 49 | 80 |
## | 0.388 | 0.613 | |
## --------------|-----------|-----------|-----------|
##
##
#生成行变量为被调查者性别和态度,列变量为社区的三维列联表
mytable2<-ftable(example2_1,row.vars = c("性别","态度"),col.vars = "社区")
mytable2
## 社区 A社区 B社区 C社区 D社区
## 性别 态度
## 男 反对 4 3 5 2
## 赞成 5 7 8 2
## 女 反对 9 2 2 4
## 赞成 9 5 6 7
#为列联表mytable2增加边际和
ftable(addmargins(table(example2_1$性别,example2_1$态度,example2_1$社区)))
## A社区 B社区 C社区 D社区 Sum
##
## 男 反对 4 3 5 2 14
## 赞成 5 7 8 2 22
## Sum 9 10 13 4 36
## 女 反对 9 2 2 4 17
## 赞成 9 5 6 7 27
## Sum 18 7 8 11 44
## Sum 反对 13 5 7 6 31
## 赞成 14 12 14 9 49
## Sum 27 17 21 15 80
#将列联表mytable2转化为百分比表
ftable(addmargins(prop.table(table(example2_1$性别,example2_1$态度,example2_1$社区)))*100)
## A社区 B社区 C社区 D社区 Sum
##
## 男 反对 5.00 3.75 6.25 2.50 17.50
## 赞成 6.25 8.75 10.00 2.50 27.50
## Sum 11.25 12.50 16.25 5.00 45.00
## 女 反对 11.25 2.50 2.50 5.00 21.25
## 赞成 11.25 6.25 7.50 8.75 33.75
## Sum 22.50 8.75 10.00 13.75 55.00
## Sum 反对 16.25 6.25 8.75 7.50 38.75
## 赞成 17.50 15.00 17.50 11.25 61.25
## Sum 33.75 21.25 26.25 18.75 100.00
#生成一张频数分布表,并计算各组频数的百分比和累计百分比。
load("D:\\New_Folder\\Study_Programming\\R_Programme\\Applied Statistics\\datas - Copy\\example\\ch2\\example2_2.RData")
vector2_2<-as.vector(example2_2$销售额)
d<-table(cut(vector2_2,breaks=10*(16:28),right=FALSE))#break为要分的组数,break=10*(5:10)表示将50~100之间的数据分成间隔为10的组。
df<-data.frame(d)
percent<-df$Freq/sum(df$Freq)*100
cumsump<-cumsum(percent)
mytable<-data.frame(d,percent,cumsump)
mytable
## Var1 Freq percent cumsump
## 1 [160,170) 2 1.6666667 1.666667
## 2 [170,180) 4 3.3333333 5.000000
## 3 [180,190) 7 5.8333333 10.833333
## 4 [190,200) 17 14.1666667 25.000000
## 5 [200,210) 27 22.5000000 47.500000
## 6 [210,220) 20 16.6666667 64.166667
## 7 [220,230) 16 13.3333333 77.500000
## 8 [230,240) 13 10.8333333 88.333333
## 9 [240,250) 7 5.8333333 94.166667
## 10 [250,260) 4 3.3333333 97.500000
## 11 [260,270) 2 1.6666667 99.166667
## 12 [270,280) 1 0.8333333 100.000000
library(vcd)
## Loading required package: grid
spine(社区~性别,data=example2_1,xlab="性别",ylab="社区",margins=c(4,3.5,1,2.5))
#### 马克图(适用于两个以上变量)
mosaicplot(~性别+社区+态度,data=example2_1,col=2:3,main="")
par(mai=c(0.6,0.6,0.4,0.1),cex=0.7)
hist(example2_2$销售额,prob=TRUE,breaks=20,xlab="销售额",ylab="密度",col="lightblue",main="增加轴须线和核密度曲线")
rug(example2_2$销售额)
lines(density(example2_2$销售额),col="red")
# 直方图函数hist(x,breaks=“n”)参数breaks=设定组数;probability=TRUE绘制纵轴为密度的直方图;
# 函数lines(density(x))为直方图增加核密度曲线。
# rug(x)重现数据x
stem(example2_2$销售额)
##
## The decimal point is 1 digit(s) to the right of the |
##
## 16 | 17
## 17 | 1222
## 18 | 1136788
## 19 | 11234566667889999
## 20 | 000012333334455566677778899
## 21 | 00224556666777788889
## 22 | 0222344445556689
## 23 | 0334455678889
## 24 | 0133368
## 25 | 2234
## 26 | 15
## 27 | 2
library(aplpack)
stem.leaf(example2_2$销售额,1,2)
## 1 | 2: represents 12
## leaf unit: 1
## n: 120
## 1 16* | 1
## 2 16. | 7
## 6 17* | 1222
## 17. |
## 9 18* | 113
## 13 18. | 6788
## 18 19* | 11234
## 30 19. | 566667889999
## 43 20* | 0000123333344
## 57 20. | 55566677778899
## (5) 21* | 00224
## 58 21. | 556666777788889
## 43 22* | 022234444
## 34 22. | 5556689
## 27 23* | 03344
## 22 23. | 55678889
## 14 24* | 01333
## 9 24. | 68
## 7 25* | 2234
## 25. |
## 3 26* | 1
## 2 26. | 5
## 1 27* | 2
stem.leaf.backback(example2_2$销售额[1:60],example2_2$销售额[61:120])
## ________________________________________________________
## 1 | 2: represents 12, leaf unit: 1
## example2_2$销售额[1:60] example2_2$销售额[61:120]
## ________________________________________________________
## 2 71| 16 |
## 5 221| 17 |2 1
## 9 8731| 18 |168 4
## 23 99988766654321| 19 |169 7
## (14) 88743333210000| 20 |3455566677799 20
## 23 862| 21 |00245566677778889 (17)
## 20 55442| 22 |02234456689 23
## 15 98654| 23 |03345788 12
## 10 63310| 24 |38 4
## 5 422| 25 |3 2
## 2 1| 26 |5 1
## 1 2| 27 |
## ________________________________________________________
## n: 60 60
## ________________________________________________________
内围栏:是与两个四分位数的距离等于1.5倍四分位差的两个点。
相邻值: 上下内围栏之间的最大值和最小值称为相邻值。
须线:用直线将上下相邻值分别与箱子连接称为须线。
par(mfrow=c(3,1),mai=c(0.4,0.2,0.3,0.2))
x<-rnorm(1000.50,5)
boxplot(x,range=1.5,col="red",horizontal = TRUE,main="相邻值与箱子连线的箱线图(range=1.5) ",cex=0.8)
boxplot(x,range=3,col="red",horizontal = TRUE,main="相邻值与箱子连线的箱线图(range=1.5) ",cex=0.8)
boxplot(x,range=0,varwidth=T,col="pink",horizontal = TRUE,main="极值与箱子连线的箱线图(range=0,varwidth=T) ",cex=0.8)
# range=1.5设定1.5倍的四分位差为内栏
# range=0将极值与箱子连线; varwidth=FALSE所有箱子宽度都一样。varwidth=TRUE箱子的宽度与样本量的平方根成正比
# horizontal=TRUE将箱线图横放。
load("D:\\New_Folder\\Study_Programming\\R_Programme\\Applied Statistics\\datas - Copy\\example\\ch2\\example2_4.RData")
attach(example2_4)
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='blue') #线
par(fig=c(0,0.8,0.55,1),new=TRUE)
boxplot(广告费用,horizontal = TRUE,axes=FALSE)
par(fig=c(0.52,1,0,0.9),new=TRUE)
boxplot(销售收入,axes=FALSE)
plot(example2_4,cex=0.6,gap=0.5)#gap用于调整各图之间的间距
library(car)
## Loading required package: carData
scatterplotMatrix(~销售收入+销售网点数+销售人员数+广告费用,diagonal='histogram',gap=0.5)
## Warning in applyDefaults(diagonal, defaults = list(method =
## "adaptiveDensity"), : unnamed diag arguments, will be ignored
load("D:\\New_Folder\\Study_Programming\\R_Programme\\Applied Statistics\\datas - Copy\\example\\ch2\\example2_5.RData")
library(fmsb)
##
## Attaching package: 'fmsb'
## The following object is masked from 'package:vcd':
##
## oddsratio
radarchart(example2_5[,2:9],axistype=0,seg=4,maxmin=FALSE,vlabels=names(example2_5[,2:9]),pcol=1:7,plwd = 1.5)
legend(x="topleft",legend=c("最低收入户","低收入户","中等偏下户","中等收入下户","中等偏上户","高收入户","最高收入户"),lty=1:7,col=1:7,lwd=1,text.width=0.5,cex=0.7)