《统计学习导论–基于R应用》
以此记录学习统计学课程时使用的R代码
2.3 实验:R语言简介
R安装不做赘述
2.3.1 基本命令
R用函数进行操作
运行funcname函数,输入funcname(input1,input2)
> x <- c(1,3,2,5) #将数组1,3,2,5 连在一起并将太慢保存到一个名为x的向量中
> x
[1] 1,3,2,5
> # 也可用=保存数据
> x = c(1,6,2)
> x
[1] 1 6 2
> y = c(1,4,3)
简单运算:
> length(x) # length()函数检查向量的长度
[1] 3
> length(y)
[1] 3
> x + y
[1] 2 10 5
> # 求和运算x和y应当有相同长度
ls()函数可以查看所有对象列表
rm()函数可以出去不想要的对象
> ls()
[1] "x" "y"
> rm(x, y)
> ls()
character(0)
# 同时消除所有的对象
> rm(list=ls())
> # matrix()函数用于建立一个数值矩阵
> ?matrix
矩阵的数据(元素),行数,列数
> x=matrix(data=c(1,2,3,4),nrow=2,ncol=2)
> x
[,1] [,2]
[1,] 1 3
[2,] 2 4
省略写法:
> x=matrix(c(1,2,3,4),2,2)
> #默认情况下R创建矩阵时先填列再填行,使用byrow=true表示先填行后填列
> > x=matrix(c(1,2,3,4),2,2,byrow=TRUE)
> x
[,1] [,2]
[1,] 1 2
[2,] 3 4
sqrt()对一个向量或矩阵中的每个元素开方。
命令x^2计算x中每个元素的2次幂;任意次幂都可以,包括小数次幂或负次幂。
> sqrt(x)
[,1] [,2]
[1,] 1.000000 1.414214
[2,] 1.732051 2.000000
> x^2
[,1] [,2]
[1,] 1 4
[2,] 9 16
rnorm()函数产生一个随机正态变量的向量,函数第一个参数n是样本的容量。每次调用该函数都会产生不同结果。
cor()函数计算几个相关的数值变量之间的相关系数。
> x=rnorm(50)
> y=x+rnorm(50,mean=50,sd=.1)
> cor(x,y)
[1] 0.9920959
rnorm()创建的是标准正态随机变量,均值是0,标准差是1.均值和标准差可以用mean和sd参数来调整设置。
set.seed()函数:使代码产生完全相同的一组随机数。参数可以是任意整数。
> set.seed(1303) #接下来的任务中涉及随机数的计算,都用set.seed()进行输出设置。方便重复结果。
> rnorm(50)
[1] 1.00185188 0.26300143 -0.02835910 -0.55625904 -0.11956114
[6] -1.03629594 -0.65663801 0.53071490 0.11239650 -2.07756129
[11] 0.42047788 0.34127692 -1.11146959 0.84377453 -0.85525778
[16] 2.24788116 -1.37211474 0.93599500 0.54973757 0.51758744
[21] -0.56054669 -0.63876770 -0.06500831 0.37530956 1.30692614
[26] -0.61058086 0.32282993 1.75126495 1.55928971 0.64713105
[31] -1.93202340 -0.96938200 1.00148882 0.15220012 -0.04515586
[36] -0.50296757 -0.25911284 1.01738122 -1.72582568 0.93284077
[41] 0.02782077 1.58725296 0.23574669 -0.21068373 -0.16983068
[46] 0.76280099 0.43017948 1.37181976 1.57143594 0.13737399
mean()和var()用于计算一个向量的均值和方差。将sqrt()应用到var()的输出可以得到标准差,计算标准差也可以用sd()
> set.seed(3)
> y=rnorm(100)
> mean(y)
[1] 0.01103557
> var(y)
[1] 0.7328675
> sqrt
function (x) .Primitive("sqrt")
> sqrt(var(y))
[1] 0.8560768
> sd(y)
[1] 0.8560768
2.3.2 图形
plot()最常用的绘图数据的方法。plot(x,y)产生一个数据x对于数据y的散点图。
> x=rnorm(100)
> y=rnorm(100)
> plot(x,y)
> > plot(x,y,xlab = "This is the x-axis",ylab = "This is the y-axis",main = "Plot of X vs Y") # xlab为x坐标描述,ylab为y坐标描述,main为图表描述
pdf()建立一个pdf文件,应用jpeg()函数建立一个jpeg格式的输出文件。
> pdf("Figure.pdf")
> plot(x,y,col="green")
> dev.off() #指示用R创建图形的工作结束
RStudioGD
2
也可点击:Export 选择:Save as Image或者:Save as PDF进行图片的保存。
函数seq()用来创建一个序列。
seq(a,b)是在a,b之间建立一个整数向量,
> x=seq(1,10)
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x=1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x=seq(-pi,pi,length=50)
> > x
[1] -3.14159265 -3.01336438 -2.88513611 -2.75690784 -2.62867957 -2.50045130 -2.37222302
[8] -2.24399475 -2.11576648 -1.98753821 -1.85930994 -1.73108167 -1.60285339 -1.47462512
[15] -1.34639685 -1.21816858 -1.08994031 -0.96171204 -0.83348377 -0.70525549 -0.57702722
[22] -0.44879895 -0.32057068 -0.19234241 -0.06411414 0.06411414 0.19234241 0.32057068
[29] 0.44879895 0.57702722 0.70525549 0.83348377 0.96171204 1.08994031 1.21816858
[36] 1.34639685 1.47462512 1.60285339 1.73108167 1.85930994 1.98753821 2.11576648
[43] 2.24399475 2.37222302 2.50045130 2.62867957 2.75690784 2.88513611 3.01336438
[50] 3.14159265
contour()函数产生一个等高线图,表示三维数据。形式上了类似地形图。
参数:
- x值的向量(第一维),
- y值的向量(第二维),
- 每队(x,y)坐标上标记某个矩阵的元素,用z记(第三维)
> y=x
> f=outer
> f=outer(x,y,function(x,y)cos(y)/(1+x^2))
> contour(x,y,f)
> y=x
> f=outer
> f=outer(x,y,function(x,y)cos(y)/(1+x^2))
> contour(x,y,f)
> contour(x,y,f,nlevels = 45,add=T)
image()函数用于产生热地图heatmap长用户绘制天气预报上的温度变化。
> image(x,y,fa)
persp()函数用于产生三维图,参数theta和参数phi控制观看图像的角度
> persp(x,y,fa)
> persp(x,y,fa,theta = 30,phi = 40)
2.3.3 索引数据
先将数据保存在一个矩阵A里:
> A=matrix(1:16,4,4)
> A
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
然后
> A[2,3]
[1] 10 #现在选择的是第二行第三列的元素[行,列]
> A[c(2,3),c(2,4)] #选择第二、三行,第二、四列的元素
[,1] [,2]
[1,] 6 14
[2,] 7 15
> A[1:3,2:4] #选择第一到三行,第二到四列的元素
[,1] [,2] [,3]
[1,] 5 9 13
[2,] 6 10 14
[3,] 7 11 15
> A[1:2,] #选择第一到二行,所有列的元素;
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
> A[,1:2]
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
索引里用“-”告诉R不包含指示的行或列
> A[-c(1,3),-c(1,3,4)] #显示不包含第一、三行,第一、三、四列的元素
[1] 6 8
dim()函数输出一个矩阵的行数,紧跟着输出这个矩阵的列数
> dim(A)
[1] 4 4
2.3.4 载入数据
将数据集导入R。read.table()函数是导入数据集的基本方法。write.table()可输出数据。
> Auto=read.table("Auto.data")
> fix(Auto)