R语言在概率与统计及线性代数领域中的应用.docx
《R语言在概率与统计及线性代数领域中的应用.docx》由会员分享,可在线阅读,更多相关《R语言在概率与统计及线性代数领域中的应用.docx(18页珍藏版)》请在冰豆网上搜索。
R语言在概率与统计及线性代数领域中的应用
R语言在概率与统计及线性代数领域中的应用
一、概率与统计:
概率与统计在科学领域、工程领域与社会研究领域都有相当强的实用性。
最近,机率与统计在人工智能、自然语言翻译、语音识别、机器人控制等领域,都有相当深入的进展,但是这些进展所使用到的数学,都需要相当深的机率统计基础。
在实务研究上,要重视“程序语言实作”的方式,因此采用R这个专为机率统计而设计的语言来做研究,透过R语言,我们可以较为轻松的实作出许多用传统语言难以实作的程序范例,这些范例可以引导我们深入理解机率统计的理论,并且达到“以理论指导实务,以实务印证理论”的功能。
R语言当中默认就包含了各式各样的机率模型,以及各种统计工具。
举例而言,当看到常态分配的机率模型时,我们可以直接使用下列指令来画出常态分布,并且用程序产生符合常态分布模型的样本,以便进行某种交互式的学习,用实验体会常态分布的意义。
>dnorm(0)
[1]0.3989423
>dnorm(0.5)
[1]0.3520653
>dnorm(2.5)
[1]0.0175283
>curve(dnorm(x),from=-3.5,to=3.5,ylab="pdf",
main="N(0,1)probabilitydensityfunction(pdf)")
>
以上只是一个绘图的范例而已,R语言能轻易做出各式各样的机率统计程序,像是抽样、叙述报告、检定、推论、回归分析、变异数分析(ANOVA)、质量管理、时间数列等等。
范例:
(1)模拟掷骰子:
>sample(1:
6,1)
[1]2
>sample(1:
6,5)
[1]41325
>sample(1:
6,10)
错误在sample(1:
6,10):
cannottakeasamplelargerthanthepopulationwhen'replace=FALSE'
>sample(1:
6,10,replace=T)
[1]4324164251
>
>sample(1:
6,10,replace=T)
[1]4324164251
>x<-sample(1:
6,10,replace=T)
>x
[1]1252414465
>x=2
>x
[1]2
>x<-sample(1:
6,10,replace=T)
>x
[1]2422544532
>sum(x=2)
[1]2
>x<-sample(1:
6,10,replace=T)
>x
[1]4162135536
>x==2
[1]FALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE
>sum(x==2)
[1]1
>sum(x==6)
[1]2
>
(2)统计抽样结果:
>x<-sample(6,6000,replace=T)
>for(iin1:
6)print(sum(x==i))
[1]1036
[1]978
[1]1037
[1]1016
[1]986
[1]947
绘制统计图:
>x=sample(1:
6,10000,replace=T)
>hist(x)
>
(3)用R软件仿真扑克牌:
>num=1:
13
>type=c("a","b","c","d")
>num*type
>type=c("space","heart","diamond","club")
>interaction(num,type)
[1]1.space2.heart3.diamond4.club5.space6.heart
[7]7.diamond8.club9.space10.heart11.diamond12.club
[13]13.space
52Levels:
1.club2.club3.club4.club5.club6.club7.club...13.space
Warningmessage:
Inans*length(l)+if1:
longerobjectlengthisnotamultipleofshorterobjectlength
>expand.grid(num,type)
Var1Var2
11space
22space
33space
44space
55space
66space
77space
88space
99space
1010space
1111space
1212space
1313space
141heart
152heart
163heart
174heart
185heart
196heart
207heart
218heart
229heart
2310heart
2411heart
2512heart
2613heart
271diamond
282diamond
293diamond
304diamond
315diamond
326diamond
337diamond
348diamond
359diamond
3610diamond
3711diamond
3812diamond
3913diamond
401club
412club
423club
434club
445club
456club
467club
478club
489club
4910club
5011club
5112club
5213club
>poker=expand.grid(num,type)
二、1.线性代数:
使用R软件求解特征值与特征向量
>matrix(rep(3,8),nrow=4)
[,1][,2]
[1,]33
[2,]33
[3,]33
[4,]33
>matrix(3,nrow=4,ncol=3)
[,1][,2][,3]
[1,]333
[2,]333
[3,]333
[4,]333
>w=matrix(0,nrow=3,ncol=4)
>w
[,1][,2][,3][,4]
[1,]0000
[2,]0000
[3,]0000
>w[2,3]=5
>w
[,1][,2][,3][,4]
[1,]0000
[2,]0050
[3,]0000
>x=matrix(1:
12,nrow=3,ncol=4)
>x
[,1][,2][,3][,4]
[1,]14710
[2,]25811
[3,]36912
>dim(x)
[1]34
>y=1:
12
>y%*%x
错误于y%*%x:
非整合参数
>y=1:
3
>y%*%x
[,1][,2][,3][,4]
[1,]14325068
>t(x)
[,1][,2][,3]
[1,]123
[2,]456
[3,]789
[4,]101112
>diag(c(3,7,2))
[,1][,2][,3]
[1,]300
[2,]070
[3,]002
>diag(x)
[1]159
>z=matrix(1:
9,nrow=3,ncol=3)
>det(z)
[1]0
>z
[,1][,2][,3]
[1,]147
[2,]258
[3,]369
>z[2,1]=10
>z
[,1][,2][,3]
[1,]147
[2,]1058
[3,]369
>det(z)
[1]48
>eigen(z)
$values
[1]17.936765+0.000000i-1.468383+0.721055i-1.468383-0.721055i
$vectors
[,1][,2][,3]
[1,]0.4100596+0i0.2162169-0.1118877i0.2162169+0.1118877i
[2,]0.6875542+0i-0.8668747+0.0000000i-0.8668747+0.0000000i
[3,]0.5992665+0i0.4306386+0.0617265i0.4306386-0.0617265i
>x
[,1][,2][,3][,4]
[1,]14710
[2,]25811
[3,]36912
>rownames(x)=paste("r",1:
3,sep="_")
>x
[,1][,2][,3][,4]
r_114710
r_225811
r_336912
>colnames(x)=paste("c",1:
4,sep="")
>x
c1c2c3c4
r_114710
r_225811
r_336912
>hist(x)
>
范例:
(1)R软件与排列组合
>prod(5:
1)
[1]120
>prod(5:
3)
[1]60
>choose(5,3)
[1]10
>choose(52,4)
[1]270725
(2)人工智能中的机率统计范例--牙医判断牙痛问题
问题描述:
当病人来看牙医时,该病人可能有蛀牙或没蛀牙,也可能有牙痛或没有牙痛,而牙医可能会找到牙痛的原因或找不到。
因此有下列三个随机变量:
X:
(蛀)蛀牙与否(Cavity)
Y:
(痛)牙痛与否(Toothache)
Z:
(找)是否找到痛的牙(Catch)
假如这个问题个统计机率都已经知道了,如下表所示:
牙痛(Y=1)
不牙痛(Y=0)
找到(Z=1)
找不到(Z=0)
找到(Z=1)
找不到(Z=0)
蛀牙(X=1)
0.108
0.012
0.072
0.008
沒蛀牙(X=0)
0.016
0.064
0.144
0.576
如果将这个表格写成一整排,那么将会以下列机率表格显示。
蛀X
痛Y
找Z
P(X,Y,Z)
0
0
0
0.576
0
0
1
0.144
0
1
0
0.064
0
1
1
0.016
1
0
0
0.008
1
0
1
0.072
1
1
0
0.012
1
1
1
0.108
问题
1:
请计算P(没痛)=P(Y=0)=?
2:
请计算P(