R语言基础
- 格式:doc
- 大小:712.00 KB
- 文档页数:9
二、R
1.下载安装
/
2.运行环境:英文状态,以函数形式运行
3.向量
(1)输入
①> x <- c(1,3,2,5)
> x
[1] 1 3 2 5
②>x = c(1,6,2)
> x
[1] 1 6 2
③>x = c(1:10) >x = 1:10
④>x = seq(1,10) >x = seq(-2*pi,2*pi,length=50)
> y = c(1,4,3)
(2)长度
> length (x)
[1] 3
> length (y)
[1] 3
(3)运算
x,y的长度一样,可以进行运算。
例如x+y,x-y,x*y,x/y,这些运算是分元素进行的。
(4)显示和清除变量
> ls() %显示变量
[1] "x" "y" %清除变量x,y
> rm(x,y)
> ls()
character (0)
> rm(list=ls()) %清除所有变量
(5)保留小数位数
①>x=round(x,3)
②>sprintf(“%.10f”,0.25)
4.矩阵
(1)寻求帮助
>help(matrix) 或>?matrix
(2)输入
①> 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)
③> matrix (c(1,2,3,4) ,2,2,byrow =TRUE)
[,1] [,2]
[1,] 1 2
[2,] 3 4
④产生随机矩阵:> x=rnom(%填行列数)
扩展1:1-9按行、列排成3行3列的矩阵。
>x=matrix (data=c(1,2,3,4,5,6,7,8,9) , nrow=3, ncol=3,byrow=TURE)
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
>x=matrix (data=c(1,2,3,4,5,6,7,8,9) , nrow=3, ncol=3) %
> x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
扩展2:99个1按行排成3行33列的矩阵。
>y=matrix (data=c(1) , nrow=3, ncol=3,byrow=TURE)
(3)矩阵的运算
x,y的行、列都一样,可以进行运算。
例如x+y,x-y,x*y,x/y,这些运算是分元素进行的。
高代中矩阵的乘法:x%*%y
高代中矩阵的除法:x%*%solve(y)
(4)元素的提取
> 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(1,3) ,c(2,4) ]
[,1] [,2]
[1,] 5 13
[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 > A[1,]
[1] 1 5 9 13
⑤> A[-c(1,3) ,]
[,1] [,2] [,3] [,4] [1,] 2 6 10 14 [2,] 4 8 12 16 > A[-c(1,3) ,-c(1,3,4)] [1] 6 8 ⑥> dim(A) [1] 4 4
5.绘图
(1)散点图
> 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")
-2-1012
-2
-101
2x y
-2
-1
1
2
-2-101
2
Plot of X vs Y
this is the x-axis
t h i s i s t h e y -a x i s
(2)保存图片
①pdf 类型 > pdf ("Figure.pdf") > plot(x,y,col ="green") > dev.off()
null device 1
②jpeg 类型> jpeg("Figure.jpeg")
(3)等高线图 > y=x
> f=outer(x,y,function(x,y)cos(y)/(1+x^2)) > contour(x,y,f) %下面第一幅图
> contour(x,y,f,nlevels=45,add=T) %下面第二幅图 > fa=(f-t(f))/2
> contour(x,y,fa,nlevels=15) %下面第三幅图 > image(x,y,fa) %下面第四幅图
-0.8
-0.8
-0
.4
-0.4 -0.2
-0.2
0.2
0.4
0.
6
0.8
-3-2-101
23
-3
-10
1
2
3
-0.8
-0.
8
-0.4 -0.4 -0.2 -0.2
0 0 0.2 0.4 0
.6 0.8
-3-2
-101
23
-3
-10
1
23
-0.9
-0.9 -0.85 -0.85 -0.6 -0.6 -0.5
-0.5
-0
.4
-0
.4
-0
.25 -0.25
-0
.2 -0.2
-0.1 -0.1 -0.05 -0.05
0.05
0.05
0.1
0.1
5 0.2
0.25
0.3
5
0.4 0.45 0.5
0.6
0.7
.8
-0.4 -0.4
-0
.3
-0
.3
-0
.2
-0
.2
-0.1
-0.1 0
0 0
0.
1 0.
1
0.
2
0.
2 0.3
0.3
0.
4 0.4
-3-2-10123
-3
-10
1
2
3
-3-2-10123
-3-2-1
1
2
3
x
y
(4)轮廓图
> persp(x,y,fa) %下面第一幅图
> persp(x,y,fa ,theta =30) %下面第二幅图
> persp(x,y,fa ,theta =30, phi =20) %下面第三幅图 > persp(x,y,fa ,theta =30, phi =70) %下面第四幅图
x
y
f a
x
y
f a
x
y
f a
x
y
f a
扩展1.在同一图中画出正弦与余弦曲线 ①x=seq(-2*pi,2*pi,length=40) y=sin(x)
plot(x,y,xlim=c(-2*pi,2*pi),ylim=c(-1,1),col="red",lty=1,xlab="角 度",ylab="数值",main="正弦余弦曲线") y=cos(x)
lines(x,y,col="blue",lty=2)
legend("topleft",inset=.05,c("sin","cos"),lty=c(1,2),col=c("red","blue")) ②x=seq(-2*pi,2*pi,length=40) y=sin(x)
plot(x,y,xlim=c(-2*pi,2*pi),ylim=c(-1,1),col="red",type="l",xlab="角度 ",ylab="数值",main="正弦余弦曲线") y=cos(x)
lines(x,y,col="blue",lty=2)
legend("topleft",inset=.05,c("sin","cos"),lty=c(1,2),col=c("red","blue") )
-6-4-20246
-1.0-0.50.0
0.5
1.0
正弦余弦曲线
角度
数值
sin cos
-6-4-20246
-1.0-0.50.00.5
1.0
正弦余弦曲线
角度
数值
sin cos
① 的结果 ②的结果 注:type= "p " 在图形中数据显示为点 type= "l " 在图形中数据显示为线
type= "b " 在图形中数据显示为点和连接线 type= "o " 在图形中数据点覆盖在线上
type= "h " 在图形中数据显示为从点到x 轴的垂直线 type= "s " 在图形中数据显示为阶梯图 type= "n " 在图形中数据不显示
拓展2.画马鞍面,并从不同视角观察。
x=seq(-5,5,length=50) y=x
z=outer(x,y,function (x,y)x*y) persp(x,y,z)
persp(x,y,z,theta=30) persp(x,y,z,theta=50)
persp(x,y,z,theta=30,phi=20) persp(x,y,z,theta=30,phi=70) persp(x,y,z,theta=30,phi=40)
6.数据的输入、观察 (1)数据的输入
Auto=read.csv("Auto.csv")
注:把Excel 文件保存成.csv 格式,并放在运行路径下,在运行上面命令加载数据。
(2)数据的观察 fix(Auto)
(3)删除无数据的行 Auto=na.omit(Auto)
(4)查看数据的变量 > names(Auto)
[1] "mpg" "cylinders" "displacement" "horsepower" [5] "weight" "acceleration" "year" "origin" [9] "name"
(5)plot(cylinders,mpg)
错误。
没有发现目标cylinders 。
R 不能知道Auto 数据集的变量。
解决办法: ①plot(Auto$cylinders,Auto$mpg) ②利用attach()函数: attach(Auto)
plot(cylinders,mpg)
(6)直方图 hist(map)
Histogram of mpg
mpg
F r e q u e n c y
10203040
50
0204060
8
(7)产生矩阵散点图
mpg
3
8
10
1.0
1
3
8
cy
linders
isplacemen
10
horsepowe
weight
150
01
acceleratio
y
ear
7
01.
origin
10
100
1500
700
0name
7.单元线性回归
{(x1,y1),······,(xn ,yn)},n 个样本点。
其中)()(1∞-∞∈=,,y ,x ,x x i i i i p 。
线性回归:εx βx ββY p p 110++++= ,估计:p p 110x βˆx βˆβˆY ˆ+++= 。
求)ˆ,,ˆ(ˆ0p
βββ =。
(1)程序包加载:
①工具栏中程序包→加载
②工具栏中程序包→安装→加载
(2)求解β
ˆ > fix(Boston) > names(Boston)
[1] "crim" "zn" "indus" "chas" "nox" "rm" "age"
[8] "dis" "rad" "tax" "ptratio " "black" "lstat" "medv" > lm.fit=lm(medv ∼lstat,data=Boston) > attach(Boston) > lm.fit=lm(medv ∼lstat)
> lm.fit Call:
lm(formula=medv~lstat) Coefficients: (Intercept ) lstat
34.55 -0.95 > summary(lm.fit) Call:
lm(formula = medv ∼ lstat) Residuals :
Min 1Q Median 3Q Max
-15.17 -3.99 -1.32 2.03 24.50 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept ) 34.5538 0.5626 61.4 <2e-16 *** lstat -0.9500 0.0387 -24.5 <2e-16 *** ---
Signif . codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error : 6.22 on 504 degrees of freedom Multiple R-squared : 0.544 , Adjusted R-squared : 0.543 F-statistic : 602 on 1 and 504 DF , p-value: <2e-16
> names(lm.fit )
[1] " coefficients" "residuals " "effects "
[4] "rank" "fitted .values " "assign "
[7] "qr" "df.residual " "xlevels "
[10] "call" "terms" "model"
> coef(lm.fit)
(Intercept ) lstat
34.55 -0.95
(3)检测
> confint(lm.fit)
2.5 % 97.5 %
(Intercept) 33.45 35.659
lstat -1.03 -0.874
(4)预测
> predict(lm.fit,data.frame(lstat=c(5,10,15)),interval="confidence") fit lwr upr
1 29.80 29.01 30.60
2 25.05 24.47 25.63
3 20.30 19.73 20.87
> predict(lm.fit,data.frame(lstat=c(5,10,15)),interval="prediction") fit lwr upr
1 29.80 17.566 42.04
2 25.05 12.828 37.28
3 20.30 8.078 32.53。