统计模拟与R相关资料习题答案.ppt

上传人:牧羊曲112 文档编号:5299766 上传时间:2023-06-23 格式:PPT 页数:162 大小:2.36MB
返回 下载 相关 举报
统计模拟与R相关资料习题答案.ppt_第1页
第1页 / 共162页
统计模拟与R相关资料习题答案.ppt_第2页
第2页 / 共162页
统计模拟与R相关资料习题答案.ppt_第3页
第3页 / 共162页
统计模拟与R相关资料习题答案.ppt_第4页
第4页 / 共162页
统计模拟与R相关资料习题答案.ppt_第5页
第5页 / 共162页
点击查看更多>>
资源描述

《统计模拟与R相关资料习题答案.ppt》由会员分享,可在线阅读,更多相关《统计模拟与R相关资料习题答案.ppt(162页珍藏版)》请在三一办公上搜索。

1、统计模拟与,主讲:朱 强 理学院,QQ群:6052759,Simulation and R,课程要求,1.本课程上机实习3-4次2.每次上机需要完成一次实验并提交3.本课程怎么考试?4.总评=考勤+实验作业+考试成绩,主要内容,1.R软件介绍2.R统计分析3.统计模拟介绍,教材和主要参考书籍,1、肖枝洪、朱强著,统计模拟及其R实现,武汉大学出版社,2010,2、Sheldon.M.Ross,Simulation,(3nd),Elsevier,2002,3、王兆军,陈广雷,邹长亮译,统计模拟(第4版),人民邮电出版社,2007.,4、薛毅,陈立萍,统计建模与R软件,清华大学出版社,2006.,第

2、一篇:R介绍,R是一个开放(GPL)的统计编程环境一种语言,是语言(由AT&T Bell实验室的Rick Becker,John Chambers,Allan Wilks开发)的一种方言(dialect)之一,另一则为S-plus.一种软件,是集统计分析与图形直观显示于一体的统计分析,R作为一个计划(project),最早(1995年)是由Auckland大学统计系的Robert Gentleman和Ross Ihaka开始编制,目前由核心开发小组(R Development Core Team 以后用R DCT表示)维护,他们完全自愿、工作努力负责,并将全球优秀的统计应用软件打包提供给我们。

3、我们可以通过计划的网站(http:/www.r-project.org)了解有关的最新信息和使用说明,得到最新版本的软件和基于的应用统计软件包.,R的无私奉献者,Bill Venables,Robert Gentleman,Ross Ihaka,R免费 R 资源公开(不是黑盒子,也不是吝啬鬼)R可以在UNIX,Windows和Macintosh运行.R 有优秀的内在帮助系统.R有优秀的画图功能学生能够轻松地转到商业支持的 S-Plus程序(如果需要使用商业软件)R语言有一个强大的,容易学习的语法,有许多内在的统计函数.,通过用户自编程序,R语言很容易延伸和扩大.它就是这样成长的.通过语言的许多

4、内嵌统计函数,很容易学习和掌握R语言的语法.我们可以编制自己的函数来扩展现有的语言(这就是为什么它在不断等级完善!)R 是计算机编程语言.类似于UNIX语言,C语言,Pascal,Gauss语言等.对于熟练的编程者,它将觉得该语言比其他语言更熟悉.而对计算机初学者,学习R语言使得学习下一步的其他编程不那么困难.那些傻瓜软件(SAS,SPSS等)语言的语法则完全不同.,R的缺点,不如S-Plus在编辑输出的画图那样好没有商业支持(但有网上支持)需要编程,不傻瓜.,R的历史,S语言在1980年代后期在AT它是一个由志愿者组成的工作努力的国际团队,参考资料 随软件所附pdf文档(help-manua

5、ls),随版本更新:R DCT,The R Environment for Statistical Computing and Graphics-Reference Index,2003.R DCT,R Data Import/Export,2003.R DCT,R Language Definition,2003R DCT,Writing R Extensions,2003,Kurt Hornik,R FAQ,Version 1.8-1,2003-10-07 B.D.Ripley,R for Windows FAQ,Version for rw1080R Html Help,Statisti

6、cal Data Analysis 其它PDF/HTML文件:,*Ko-Kang Wang,Introduction to R for Statisticians,2004J.H.Maindonald,Using R for Data Analysis and Graphics An Introduction,2001J.H.Maindonald,Using S-PLUS for Data Analysis and Graphics,2001Emmanuel Paradis,R for beginners Jonathan Baron,R reference card Bret Larget,

7、R for Introductory Statistics,2002,近期畅销书:Peter Dalgaard,Introductory Statistics with R,Springer,2002John Maindonald,John Braun,Data Analysis and Graphics Using R-An Example-based Approach,Cambridge University Press,2003John Fox,An R and S-Plus Companion to Applied Regression,Sage Publications,Inc.,2

8、002,W.N.Venables and B.D.Ripley,Modern Applied Statistics with S,4th Ed.,2002,近期畅销书:统计建模与R,薛毅等,清华大学出版社,2005,R语言统计分析软件教程,王斌会,R语言与统计分析,汤银才,高教出版社,2008,R语言及Bioconductor在基因组分析中的应用,孙啸等,2006,科学出版社,O、R的安装,1.进入网站2.点击左边的Download,Packages下的CRAN选择镜像:China有六个镜像点,随意点击一个,O、R的安装,3.点击下图中Windows,再点击base4.点击第一行的Downlo

9、ad R 2.13.1 for Windows(32 megabytes)下载,一、R的运行平台,R_GUI启动R,我们看到R GUI(graphic users interface)的主窗口,它由三部分组成主菜单工具条R console(R的运行窗口)R console你的主要工作是在这里通过发布命令来完成的,包括数据集的建立,数据的分析,作图等.在这里你可以得到在线帮助help.start()HTML格式的关于R的帮助文件help()得到相应函数的帮助,例如help(plot)demo()得到R提供的几个示例q()退出R 同Matlab类似,用方向键可以重现以前的命令,二、R的语法与数据结

10、构,语法符号 命令或运算提示符+续行符基本算术运算+加号-减号*乘号/除号 乘方%*%矩阵乘法%求余数%/%整数除法赋值符=或-注意:R是严格区分大小写的.,求助符?help()例子:3+53-53/535x=5?plothelp(plot),三、向量,向量是R中最为基本的类型一个向量中元素的类型必须相同,包括数值型整型单精度实型双精度实型逻辑型复值型字符型,1、数值向量定义向量的常用方法(函数)seq()或:若向量(序列)具有较为简单的规律rep()若向量(序列)具有较为复杂的规律c()若向量(序列)没有什么规律例1:10seq(1,10,by=0.5)seq(1,10,length=21)

11、rep(2:5,2)rep(2:5,rep(2,4)x=c(42,7,64,9)length(x),向量运算:+,-,*,/,含义是对每个元素进行运算.例x=1:32*x-111 3 51:表示该行的第一个数的下标.%/%:表示整数除法,%表示求余数7%/%37%3两个等长的向量之间的加,减,乘,除,乘方运算是对应元素间的四则运算.,1:3+c(5,7,2)/c(5,7,1)12 3 5两个不等长的向量之间的运算则是:长度短的向量将循环使用.c(100,200)+c(1,2,3,4)1101 202 103 204,向量运算中的循环法则(recycling rule)1:2+1:41:4+1:

12、7,sqrt(x),log(x),exp(x),sin(x),cos(x),tan(x),abs(x)分别表示平方根,对数,指数,三角函数及绝对值.sort(x,decreasing=FALSE)返回按x的元素从小到大排序的结果向量.order(x)是使得x从小到大排列的元素下标向量,sort(x)与xorder(x)是等效的.numeric(n):表示长度为n的零向量注意:1:n-1与1:(n-1)的区别.1:3-11:(3-1),2、逻辑向量向量可以取逻辑值,如l=c(TRUE,TRUE,FALSE)x=c(1,4,6.25)l3l1FALSE TRUE TRUE两个向量也可比较log(1

13、0*x)1 2.302585 3.688879 4.135167log(10*x)x1 TRUE FALSE FALSE比较运算符:,=,=(相等),!=(不等)逻辑向量可以进行与(&)表示同时满足,或(|)两者之一运算.,如:(x=2)&(xall(log(10*x)x)判断是否有真值的函数为anyany(log(10*x)x)函数is.na(x)用来判断x的每一个元素是否有缺失值.如is.na(c(1,2,NA)1 FALSE FALSE TRUE还可以将逻辑值强制转化为整数值,如:将TRUE变成1,FALSE变成0,c(0,1)(x3)+11 0 1 1(x3)+1#+1表示把逻辑值强制

14、转化为整数值1,01 1 2 2,3、字符型向量c1=c(“a”,”b”)c11“a”“b”c2=c(“weight”,”height”,”年龄”)c21”weight”“height”“年龄”paste函数用来把它的自变量连成字符串,中间用相应的分隔符paste(”My”,”Job”)paste(c(“X”,”Y”),”=“,1:4)paste(“result.”,1:5,sep=“”)#sep表示所用的分隔符 paste(my,job,sep=)1 myjob paste(my,job,sep=.)1 my.job,4、复数向量复数输入只要像格式5+2i输入即可,如下定义复数向量x=(0:

15、100)/100*2*piy=sin(x)z=complex(re=x,im=y)complex函数定义复数,x为实部,y为虚部plot(z)画出z的点图也可给定模和辐角定义复数向量:zz=complex(mod=1,arg=(0:11)/12*2*pi)Re()计算实部,Im()计算虚部,Mod()计算复数模,Arg()计算复数辐角,Conj()计算共轭。基本的数学函数也支持复数运算。sqrt(-2+0i),5、向量下标运算R中向量的下标从1开始,这与通常的统计或数学软件不 一致而象C语言等计算机高级语言的向量下标则从0开始!访问向量的某个元素xix=c(42,7,64,9)x2也可单独改变

16、某个元素的值x3=-1 访问向量的一部分的几种方法:(1)正整数下标向量xc(1,4)142 9x2:4(2)负整数下标向量x-1表示删除第一个元素(3)逻辑下标向量xxxx1 numeric(0),(4)字符型下标向量定义向量时可以给元素加上名字ages=c(Li=23,Zhang=33,Wang=45)ages Li Zhang Wang 23 33 45 访问时可以用通常的方法,还可以用元素名访问ages“Zhang”Zhang 33还可以定义向量后,再后加上名字age1=c(21,34,56)names(age1)=c(“Zhang”,”Ding”,”Liu”)下面定义一个向量的分段函

17、数y=numeric(length(x)yxyx=0=1+xx=0,四、矩阵与多维数组1、矩阵函数格式matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)data为数组的数据向量,nrow为函数,ncol为列数,byrow=TRUE表示按行写入数据,否则按列。R中默认是按列填数据。A=matrix(1:12,ncol=4,byrow=TRUE)A,1,2,3,41,1 2 3 42,5 6 7 83,9 10 11 12c(A)显示A的所有向量,是按列拉直的向量。cbind()把向量横向拼成一个大矩阵,rbind()把向量纵向拼成一个大

18、矩阵。对角和单位矩阵 diag(1,2,3),diag(1,3),B=rbind(c(1,2),c(3,4)C=cbind(c(11,12),c(13,14)D=rbind(B,C)E=cbind(B,C)2、访问矩阵元素和子矩阵A2,3访问是矩阵的(2,3)元素7Ai,访问第i行,A,j访问第j列 表示访问第 第列交叉而成的子矩阵注意:A=0表示不改变A的大小只改变元素值为0也可以对矩阵的行标和列标重新命名。rownames(A)=c(“a”,”b”,”c”)colnames(A)=paste(“X”,1:4,sep=“”)3、矩阵运算矩阵可以进行四则运算(+,-,*,/,)表示矩阵对应元素

19、的四则元素,参与运算一般是相同形状的,形状不一致的向量和矩阵也可进行四则运算。规则是矩阵的数据按向量(按列拉直)的对应元素进行运算。A+c(100,200,300)矩阵乘法A%*%B,t(A)表示A的转置。B=matrix(c(1,0),nrow=4,ncol=2,byrow=T)A%*%B4、apply函数对矩阵想对某行(列)进行某种计算,可用apply函数,apply(x,margin,fun,)x表示矩阵,margin=1表示对每行计算,margin=2表示对每列计算,fun是用来计算的函数。apply(A,1,sum)apply(A,2,mean)5、矩阵的其他运算行列式:det(A)

20、求逆:solve(A)特征值和特征向量:eigen(A),例如:计算矩阵A=求A的行列式及逆A=matrix(c(1,2,-1,-3,2,4,0,-4,-1,1,2,2,0,2,1,3),nrow=4)det(A)solve(A),五、因子1.factor()函数例子:知道5位学生的性别,用因子变量表示sex=c(“M”,”F”,”M”,”M”,”F”)sexf=factor(sex);sexf1 M F M M FLevels:F M函数factor()用来把一个向量编码为一个因子,一般形式为factor(x,levels=sort(unique(x),na.last=TRUE),label

21、s,exclude=NA,ordered=FALSE)is.factor()检验对象是否是因子,as.factor()把向量转化为因子。levels()可以得到因子的水平sex.level=levels(sexf);sex.level1”F”“M”对因子向量可用table()统计各类数据的频数。sex.tab=table(sexf);sex.tab,2.tapply()函数例子:知道5位学生的性别,还知道这5位学生的身高,分组求身高的平均值height=c(174,165,180,171,160)tapply(height,sex,mean)1 F M 162.5 175.0tapply()的

22、一般形式为tapply(x,INDEX,FUN=NULL,simplify=TRUE)x是一对象,通常为一向量,INDEX是与X有同样长度的因子,FUN是要计算的函数3.gl()函数gl()可以方便地产生因子,gl(n,k,length=n*k,labels=1:n,odered=FALSE)n为水平数,k为重复的次数,length为结果的长度,labels为n维向量,表示因子水平,ordered是逻辑变量,表示是否为有序因子,缺省值FALSEgl(2,3)gl(2,1,6),六、列表(list)和数据框(data.frame)1、列表的构造red=list(name=“黎明”,age=30,

23、scores=c(85,76,90)rec$name1 黎明$age1 30$scores1 85 76 90,列表元素可用”列表名下标”引用rec2130rec32但列表不同于向量,每次只能引用一个元素,如rec1:2是不允许的,对连续型变量产生因子,或分类age-runif(100)*50table(cut(age,c(0,10,20,30,40,50)(0,10(10,20(20,30(30,40(40,50 27 20 17 19 17,注意:”列表名下标”或”列表名下标范围”的用法是允许的,但与前面的含义不同,它还是一个列表 若指定了元素的名字,则引用列表元素还可以用它的名字作为下标

24、“列表名“元素名”或者“列表名$元素名”rec“age”rec$age2、列表的修改rec$name=“张三”rec$age=list(20,32,58)可重新添加一些到列表中rec$sex=“男”rec6=161第5号元素没定义,所以值是”NULL”,若rec是一个向量,则空元素为”NA”列表之间还可以连接起来,List.ABC=c(list.A,list.B,list.C),3.数据框数据框通常是矩阵形式的数据,但矩阵各列可以是不同类型。数据框每列是一个变量,每行是一个观测。(1)生成数据框 一般可以把数据框看作一种推广了的矩阵,它可用矩阵形式表示,数据框可以用data.frame()函数

25、生成,用法与list()函数相同ls()#列出工作空间你定义的所有变量str(x)#给出对象x的一些信息,d=data.frame(name=c(李明,张聪,王建),age=c(30,35,28),height=c(180,162,175)d name age height1 李明 30 1802 张聪 35 1623 王建 28 175可以将列表转化为一个数据框:如比较他们之间的区别d1=list(name=c(李明,张聪,王建),age=c(30,35,28),height=c(180,162,175)as.data.frame(d1),(2)数据框的引用引用数据框元素的方法与引用矩阵元素

26、的方法相同。d1:2,2:3数据框的各变量也可用按列表引用(用双括号或$引用)d“age”1 30 35 28d$height1 180 162 175数据框的各行也可以定义名字,用rownames属性定义。names(d)1 name age heightrownames(d)=c(one,two,three)rownames(d)1 one two three,(3)attach()函数数据框的主要用途是保存统计建模的数据。调用数据框的变量像以前d是不方便的,R提供了函数attach()可以把变量调入内存。attach(d)r=age/height#此时age,height是可以利用的但r

27、的值不会进入数据框d,若想把刚才r当作新的数据框的变量d$r=age/weight d name age height rone 李明 30 180 0.1666667two 张聪 35 162 0.2160494three 王建 28 175 0.1600000detach(d)取消连接,(4)列表与数据框的编辑可用函数edit()对列表或者数据框进行编辑newd=edit(d)当然也可对向量,数组,矩阵类型的数据进行修改和编辑.Fix用函数merge(x,y,.)对两个数据框合并成一个可查看帮助.?merge,七、输入输出1.输入(1)read.table()等相关函数read.table

28、()函数是读表格形式的文件,若”班级”数据已输入到一个纯文本文件”cjb.txt”中,假设存储在c:/cjb.txt,其格式如下:,学号 姓名 平时 其中 期末 总评07*001吴蒙蒙8566646907*002高旭9580949107*003李楠9278556707*004赵利冲7848404007*005何耀龙8958516007*006何星8544817407*007唐佳征9573536507*008程西平9686899007*009陈茂琴9584697707*010程长久9479828407*011王锋9374868507*012何福顺9082536607*013罗玲969390920

29、7*014刘卿卿9767948907*015张晓芳93728282072301016杨乐遥88615060072301017沈亮95415460072301018高晶98769189072301020郭慧93918387072301021陈灿92766975072301022李婷90766975072301023陈元俊94745969072301024谭海梅95646370072301025张亚琴95898588072301026胡阳98929897072301027张冲92606569072301028位会敏95928287072301029胡红96789089072301030岳鑫璐966

30、07979072301031李欢欢988510097072301032陈龙龙92656470072301033朱盼88556668,读入格式为:cjb=read.table(c:/cjb.txt,header=TRUE)cjbis.data.frame(cjb)1 TRUEheader=TRUE表示第一行读入的是变量名,默认是header=FALSE,即自动会添上列名.具体用法可见帮助.?read.tabled=read.csv(txt.csv)#读逗号分隔的文本文件d=read.csv2(“txt.csv”)#读分号分隔的文本文件,逗号代替小数点d=read.delim(foo.txt)#读

31、制表符分隔的文件d=read.delim2(“foo.txt”)#读制表符分隔的文件,逗号代替小数点d=read.fwf(txt.fwf)#读固定宽的文件,D=readLines(“a.txt”)#每行有不同的结构readLines(con=stdin(),n=-1L,ok=TRUE,warn=TRUE,encoding=unknown)cat(TITLE extra line,2 3 5 7,11 13 17,file=ex.data,sep=n)readLines(ex.data,n=-1)unlink(“ex.data”)#删除文件,R中一般不能直接读xls文件,可先转换为csv(2)s

32、can()函数scan()函数可直接读纯文本文件数据和直接从屏幕上输数据x=scan()1:2 4 4.2 55:Read 4 timesx1 2 4 4.2 5假设有10名学生的体重数据已输入文件”weight.txt”,格式为45 63.5 32.5 67.2 77.5 55 54 49 62 70w=scan(c:/weight.txt),假设weight.txt中,奇数是女性体重,偶数是男性体重,即数据中有不同的属性wfm=scan(c:/weight.txt,list(F=0,M=0)Read 5 records将数据读入,并以列表的方式赋给变量wfm wfm$F1 45.0 32.

33、5 77.5 54.0 62.0$M1 63.5 67.2 55.0 49.0 70.0其它数据格式的读入可以参见帮助文档中的R数据输入输出.,2.输出直接输入变量名即可输出x=1:5x1 1 2 3 4 5用print(x)与上式是等价的,里面有些参数,digits指定每个数输出的有效数字位.options(digits=3)1/31 0.333 write.table#输出数据框到文件write.csvwrite.csv2Write.matrix#输出矩阵到文件,需要加载包MASS,cat()函数也可用来输出,但它可以把多个参数连接起来再输出(类似于paste()的功能)cat(i=,i,

34、n)#注意为什么要用”n”cat(c(AB,C),c(E,F),n,sep=)ABCEFcat()还可以指定一个参数”file=文件名”,把结果写到指定的文件中cat(i=,1,n,file=c:/result.txt)若指定的文件存在,则原内容被覆盖,但加上append=TRUE可以不覆盖原文件而是在末尾附加.,八 程序控制结构,1.分支结构,if(条件)表达式,或if(条件)表达式1 else 表达式2例如:if(any(x=0)y=log(1+x)else y=log(x),还有switch()函数,可参见讲义.,2.循环结构,(1)for循环,for(name in expr1)exp

35、r2例如:构造一个4阶Hilbert矩阵n=4;x=matrix(0,nrow=4,ncol=4)for(i in 1:n)for(j in 1:n)xi,j=1/(i+j-1),x,1,2,3,41,1.0000000 0.5000000 0.3333333 0.25000002,0.5000000 0.3333333 0.2500000 0.20000003,0.3333333 0.2500000 0.2000000 0.16666674,0.2500000 0.2000000 0.1666667 0.1428571,(2)while循环,while(condtion)expr当条件con

36、dtion成立,则执行表达式expr.例如编写一个计算100以内的Fibonacci数f=1;f2=1;i=1while(fi+fi+1f11 1 2 3 5 8 13 21 34 55 89 14413 233 377 610 987,(3)repeat循环,repeat exprrepeat循环依赖break语句跳出循环.例如用repeat循环编写一个计算100以内的Fibonacci数f=1;f2=1;i=1repeat fi+2=fi+fi+1 i=i+1if(fi+fi+1=1000)break f11 1 2 3 5 8 13 21 34 55 89 14413 233 377 6

37、10 987,三个例子myfn1-function(obs=10,n=100)x-rep(NA,100)for(i in 1:n)tmp-runif(obs)xi-mean(tmp)list(mn=mean(x),std=sd(x)Myfn1(),myfn2-function(obs=10)x-runif(obs)while(mean(x)0.45)obs-2*obs x-runif(obs)list(mn=mean(x),std=sd(x),obs=obs)myfn2(),myfn3=0.45)break obs-2*obs list(mn=mean(x),std=sd(x),obs=obs

38、)myfn3(),九 编写函数,函数是一系列语句的组合,在R中可以写出自己的函数形式为:变量名function(变量列表)函数体函数的调用:变量名(变量值)函数可以递归引用,但不提倡!例如:f=function(x)x+exp(x)f(3.5)例子 使用gamma函数求n!factorial=function(n)+if(n=0)gamma(n+1)+else print(“Please input a positive integer!)+factorial(6)factorial(-6)Choose(10,5)#求组合值,fzero=function(f,a,b,eps=1e-5)if(f

39、(a)*f(b)0)list(fail=“finding root is fail!”)else repeat if(abs(b-a)eps)break x=(a+b)/2 if(f(a)*f(x)0)b=x else a=x list(root=(a+b)/2,fun=f(x),例:编写一个用二分法求非线性方程根的函数,并求方程在区间1,2内的根,精度要求,用刚才编写的函数计算上述方程的解 f=function(x)x3-x-1 fzero(f,1,2)$root1 1.324718$fun1-1.405875e-05,R软件提供了求一元方程的根的函数uniroot()uniroot(f,i

40、nterval,lower=min(interval),upper=max(interval),tol=.Machie$double.eps0.25,maxiter=1000,.)uniroot(f,c(1,2)$root1 1.324718$f.root1-5.634261e-07$iter1 7$estim.prec1 6.103516e-05,用于处理错误的函数 用于处理用户输入不正确的类型而可能出现的错误warning()若错误不严重以至影响整个计算stop()若错误可能导致计算中止print()显示必要的信息formatC()数值作为字符串输出cat()字符串联,可以插入n(换行)及

41、t(tab键)paste()字符粘贴(非字符型自动转换)例子:cat(R,is,a good,software.n)formatC(1/3,format=f,digits=4)formatC(1/3,format=e,digits=4)paste(1:12)#与as.character(1:12)等价paste(A,1:6,sep=)paste(today is,date(),例.考虑某银行的存取系统.设open.account()为存开户函数,deposit()为存款函数,withdraw()为取款函数,balance()为存取款平衡(余额)函数.对于客户的存取过程如下:,open.acco

42、unt=function(total)list(deposit=function(amount)if(amount=0)stop(Deposits must be positive!n)total total)stop(You dont have that much money!n)total-total-amount cat(amount,withdrawn.Your balance is,total,n n),balance=function()cat(Your balance is,total,nn),十、R在计算中的应用1、求一元多项式方程的根设一元多项式为求方程f(x)=0的所有根。

43、例:求方程 的所有根。a=c(-4,1,0,3)polyroot(a),十、R在计算中的应用2、求一元线性(非线性)方程的根设一元函数为y=f(x)求方程f(x)=0在区间a,b内的所有实根。例:求方程 在区间(0,1)内的所有根。两种方法:(1)先画出函数y=f(x)图像观察它的根的大致范围f=function(x)(1-x)4-4*x*(1-x)3+4*x3*(1-x)-x4x=seq(0,1,by=0.01);y=f(x)plot(x,y,type=l);abline(h=0,col=red),得到图像如下看出在(0,1)间有三个根,分别位于(0.2,0.4),(0.4,0.6),(0.

44、6,0.8)利用函数uniroot求出其根uniroot(f,c(0.2,0.4)uniroot(f,c(0.4,0.6)uniroot(f,c(0.6,0.8)得到三个根分别为0.211,0.5,0.789(2)或者直接利用包rootSolve中的函数uniroot.all()求出(0,1)内的所有根library(rootSolve)uniroot.all(f,c(0,1)1 0.5000000 0.2113253 0.7886747,十、R在计算中的应用3、求n元非线性方程组的根例:求下列方程组的根model=function(x)c(F1=x12+x22-1,F2=x22-2*x1)#

45、定义方程组library(rootSolve)multiroot(model,c(1,1)#要先给初始值,$root1 0.4142136 0.9101797$f.root F1 F2 6.43565e-10 6.39019e-10$iter1 5$estim.precis1 6.41292e-10,十一、图形R软件有很强的图形功能,可用简单的函数调用,迅速作出数据的各种图形。比如:有一个班级的数据存贮在c:/work/class01.txtc1=read.table(c:/work/class01.txt)colnames(c1)=c(Name,Sex,Age,Weight,Height)a

46、ttach(c1)#建立连接,方便引用变量plot(Height)画出身高的散点图plot(Sex)画出性别的频数条形图,常用的绘图函数plot().也可作两个变量x与y的散点图plot(Height,Weight,main=体重对身高的回归,xlab=身高,ylab=体重)plot(-50):50/25,(-50):50/25)3,type=l)表示画连线图stem(Height)画茎叶图boxplot(Weight)#绘制盒形图,可看出数据的大体分布,中间粗体线是中位数,其它的有最小值,最大值,1/4分位数,3/4分位数,hist(Weight)#绘制直方图fit1=lm(WeightHe

47、ight)#求体重对身高的回归p1=predict(fit1,c1)对数据c1进行预测boxplot(list(体重=Weight,预报=p1)画出盒形图函数qqnorm(),qqline()提供了绘画正态QQ图和相应的直线的方法qqnorm(Weight)qqnorm函数的用法qqnorm(y,ylim,main=Normal Q-Q Plot,xlab=,Ylab=,plot.it=TRUE)qqline(Weight),Plot通常在一个窗口出现,根据需要自动打开.有时需要同时打开两个图形窗口,可用dev.new()我们能够在窗口上保存图像,或者用如下命令保存postscript(myf

48、ile.ps)#保存其他图形格#式的命令有jpeg(),bmp(),png(),tiff()plot(1:10)dev.off(),I.高水平绘图函数1.plot()(1)plot(x,y)#x,y为向量,生成y关于x的散点图(2)plot(x)#x为时间序列(3)plot(f)#f为因子,生成f的直方图 plot(f,y)#f为因子,y为向量,生成y关于f水平的盒形图,(4)plot(df)#df为数据框 plot(expr)#expr为对象名称的表达式(如:a+b+c)plot(yexpr)#y为任意一个对象例如:attach(c1)plot(c1)#三项指标构成的散点图plot(Age+

49、Height)#身高与年龄的散点图plot(WeightAge+Height)#绘出两张散点图,一张是体重与年龄的,一张是体重与身高(5)coplot()函数coplot(WeightHeight|Age)#绘出按年龄段给出体重与身高的散点图,2.高水平绘图中的命令(1)图中的逻辑命令 add=TRUE表示在所绘图在原图上加图,缺省为add=FALSE即新图替换旧图axes=FALSE表示所绘图没有坐标轴,默认axes=TRUE(2)Type命令type=“p”#绘制散点图(缺省值)type=“l”#绘制实线,type=“b”#画点和线type=“o”#实线通过所有的点type=“h”#绘出点

50、到x轴的竖线type=“s”or“S”#绘出阶梯形曲线type=“n”#不绘任何点和曲线(3)图中的字符串 axes=FALSE#不画坐标,默认xlab=字符串,其字符串的内容是x轴的说明,ylab=字符串意义与前面相同,默认是变量名main=字符串,字符串内容是图的说明,出现在图的正上方.sub=字符串,副标题,出现在x轴的正下方,默认为空xlim=c(lo,hi),ylim=c(lo,hi)#坐标轴的范围,II.低水平作图函数1.加点和线的函数points()#在已有图形上加点,参数pch为画出指定的字符,可查看帮助.points(x,y)与plot(x,y)作用一样lines()#在已有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号