统计模拟与R相关资料习题答案.ppt_第1页
统计模拟与R相关资料习题答案.ppt_第2页
统计模拟与R相关资料习题答案.ppt_第3页
统计模拟与R相关资料习题答案.ppt_第4页
统计模拟与R相关资料习题答案.ppt_第5页
已阅读5页,还剩157页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

统计模拟与 主讲 朱强理学院 QQ群 6052759E Mail qiang zhu SimulationandR 课程要求 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 第一篇 R介绍 R是一个开放 GPL 的统计编程环境一种语言 是 语言 由AT TBell实验室的RickBecker JohnChambers AllanWilks开发 的一种方言 dialect 之一 另一则为S plus 一种软件 是集统计分析与图形直观显示于一体的统计分析 R作为一个计划 project 最早 1995年 是由Auckland大学统计系的RobertGentleman和RossIhaka开始编制 目前由 核心开发小组 RDevelopmentCoreTeam 以后用RDCT表示 维护 他们完全自愿 工作努力负责 并将全球优秀的统计应用软件打包提供给我们 我们可以通过 计划的网站 http www r project org 了解有关 的最新信息和使用说明 得到最新版本的 软件和基于 的应用统计软件包 R的无私奉献者 BillVenables RobertGentleman RossIhaka R免费R资源公开 不是黑盒子 也不是吝啬鬼 R可以在UNIX Windows和Macintosh运行 R有优秀的内在帮助系统 R有优秀的画图功能学生能够轻松地转到商业支持的S Plus程序 如果需要使用商业软件 R语言有一个强大的 容易学习的语法 有许多内在的统计函数 通过用户自编程序 R语言很容易延伸和扩大 它就是这样成长的 通过 语言的许多内嵌统计函数 很容易学习和掌握R语言的语法 我们可以编制自己的函数来扩展现有的 语言 这就是为什么它在不断等级完善 R是计算机编程语言 类似于UNIX语言 C语言 Pascal Gauss语言等 对于熟练的编程者 它将觉得该语言比其他语言更熟悉 而对计算机初学者 学习R语言使得学习下一步的其他编程不那么困难 那些傻瓜软件 SAS SPSS等 语言的语法则完全不同 R的缺点 不如S Plus在编辑输出的画图那样好没有商业支持 但有网上支持 需要编程 不傻瓜 R的历史 S语言在1980年代后期在AT它是一个由志愿者组成的工作努力的国际团队 参考资料随软件所附pdf文档 help manuals 随版本更新 W N Venables D M SmithandtheRDCT IntroductiontoR NotesonR AProgrammingEnvironmentforDataAnalysisandGraphics 2003 http bayes math montana edu Rweb Rnotes R htmlRDCT TheREnvironmentforStatisticalComputingandGraphics ReferenceIndex 2003 RDCT RDataImport Export 2003 RDCT RLanguageDefinition 2003RDCT WritingRExtensions 2003 KurtHornik RFAQ Version1 8 1 2003 10 07B D Ripley RforWindowsFAQ Versionforrw1080RHtmlHelp StatisticalDataAnalysis其它PDF HTML文件 KickstartingR http cran r project org doc contrib Lemon kickstart Rexamples AlisonGibbs http www utstat toronto edu alisong Teaching Winter04 Sta248 Rex html Ko KangWang IntroductiontoRforStatisticians 2004J H Maindonald UsingRforDataAnalysisandGraphics AnIntroduction 2001J H Maindonald UsingS PLUSforDataAnalysisandGraphics 2001EmmanuelParadis RforbeginnersJonathanBaron RreferencecardBretLarget RforIntroductoryStatistics 2002 近期畅销书 PeterDalgaard IntroductoryStatisticswithR Springer 2002JohnMaindonald JohnBraun DataAnalysisandGraphicsUsingR AnExample basedApproach CambridgeUniversityPress 2003JohnFox AnRandS PlusCompaniontoAppliedRegression SagePublications Inc 2002 W N VenablesandB D Ripley ModernAppliedStatisticswithS 4thEd 2002 近期畅销书 统计建模与R 薛毅等 清华大学出版社 2005 R语言统计分析软件教程 王斌会 R语言与统计分析 汤银才 高教出版社 2008 R语言及Bioconductor在基因组分析中的应用 孙啸等 2006 科学出版社 O R的安装 1 进入网站http www r project org2 点击左边的Download Packages下的CRAN选择镜像 China有六个镜像点 随意点击一个 O R的安装 3 点击下图中Windows 再点击base4 点击第一行的DownloadR2 13 1forWindows 32megabytes 下载 一 R的运行平台 R GUI启动R 我们看到RGUI graphicuser sinterface 的主窗口 它由三部分组成主菜单工具条Rconsole R的运行窗口 Rconsole你的主要工作是在这里通过发布命令来完成的 包括数据集的建立 数据的分析 作图等 在这里你可以得到在线帮助help start HTML格式的关于R的帮助文件help 得到相应函数的帮助 例如help plot demo 得到R提供的几个示例q 退出R同Matlab类似 用方向键可以重现以前的命令 二 R的语法与数据结构 语法符号 命令或运算提示符 续行符基本算术运算 加号 减号 乘号 除号 乘方 矩阵乘法 求余数 整数除法赋值符 或 注意 R是严格区分大小写的 求助符 help 例子 3 5 3 5 3 5 3 5 x 5 plot help plot 三 向量 向量是R中最为基本的类型一个向量中元素的类型必须相同 包括数值型整型单精度实型双精度实型逻辑型复值型字符型 1 数值向量定义向量的常用方法 函数 seq 或 若向量 序列 具有较为简单的规律rep 若向量 序列 具有较为复杂的规律c 若向量 序列 没有什么规律例 1 10 seq 1 10 by 0 5 seq 1 10 length 21 rep 2 5 2 rep 2 5 rep 2 4 x c 42 7 64 9 length x 向量运算 含义是对每个元素进行运算 例 x 1 3 2 x 1 1 135 1 表示该行的第一个数的下标 表示整数除法 表示求余数 7 3 7 3两个等长的向量之间的加 减 乘 除 乘方运算是对应元素间的四则运算 1 3 c 5 7 2 c 5 7 1 1 235两个不等长的向量之间的运算则是 长度短的向量将循环使用 c 100 200 c 1 2 3 4 1 101202103204 向量运算中的循环法则 recyclingrule 1 2 1 4 1 4 1 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 与x order x 是等效的 numeric n 表示长度为n的零向量注意 1 n 1与1 n 1 的区别 1 3 1 1 3 1 2 逻辑向量向量可以取逻辑值 如 l c TRUE TRUE FALSE x c 1 4 6 25 l3 l 1 FALSETRUETRUE两个向量也可比较 log 10 x 1 2 3025853 6888794 135167 log 10 x x 1 TRUEFALSEFALSE比较运算符 相等 不等 逻辑向量可以进行与 表示同时满足 或 两者之一 运算 如 x 2 xall log 10 x x 判断是否有真值的函数为any any log 10 x x 函数is na x 用来判断x的每一个元素是否有缺失值 如 is na c 1 2 NA 1 FALSEFALSETRUE还可以将逻辑值强制转化为整数值 如 将TRUE变成1 FALSE变成0 c 0 1 x 3 1 1 011 x 3 1 1表示把逻辑值强制转化为整数值1 0 1 122 3 字符型向量 c1 c a b c1 1 a b c2 c weight height 年龄 c2 1 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 100 100 2 pi y 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开始 访问向量的某个元素x i x c 42 7 64 9 x 2 也可单独改变某个元素的值 x 3 1访问向量的一部分的几种方法 1 正整数下标向量 x c 1 4 1 429 x 2 4 2 负整数下标向量 x 1 表示删除第一个元素 3 逻辑下标向量 x xx x 1 numeric 0 4 字符型下标向量定义向量时可以给元素加上名字 ages c Li 23 Zhang 33 Wang 45 agesLiZhangWang233345访问时可以用通常的方法 还可以用元素名访问 ages Zhang Zhang33还可以定义向量后 再后加上名字 age1 c 21 34 56 names age1 c Zhang Ding Liu 下面定义一个向量的分段函数 y numeric length x y xy x 0 1 x x 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 4 1 1234 2 5678 3 9101112 c A 显示A的所有向量 是按列拉直的向量 cbind 把向量横向拼成一个大矩阵 rbind 把向量纵向拼成一个大矩阵 对角和单位矩阵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 访问矩阵元素和子矩阵A 2 3 访问是矩阵的 2 3 元素7A i 访问第i行 A j 访问第j列表示访问第第列交叉而成的子矩阵注意 A 0 表示不改变A的大小只改变元素值为0也可以对矩阵的行标和列标重新命名 rownames A c a b c colnames A paste X 1 4 sep 3 矩阵运算矩阵可以进行四则运算 表示矩阵对应元素的四则元素 参与运算一般是相同形状的 形状不一致的向量和矩阵也可进行四则运算 规则是矩阵的数据按向量 按列拉直 的对应元素进行运算 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 求逆 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 sexf 1 MFMMFLevels FM函数factor 用来把一个向量编码为一个因子 一般形式为factor x levels sort unique x na last TRUE labels exclude NA ordered FALSE is factor 检验对象是否是因子 as factor 把向量转化为因子 levels 可以得到因子的水平 sex level levels sexf sex level 1 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 FM162 5175 0tapply 的一般形式为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是逻辑变量 表示是否为有序因子 缺省值FALSE gl 2 3 gl 2 1 6 六 列表 list 和数据框 data frame 1 列表的构造 red list name 黎明 age 30 scores c 85 76 90 rec name 1 黎明 age 1 30 scores 1 857690 列表元素可用 列表名 下标 引用 rec 2 1 30 rec 3 2 但列表不同于向量 每次只能引用一个元素 如 rec 1 2 是不允许的 对连续型变量产生因子 或分类age runif 100 50table cut age c 0 10 20 30 40 50 0 10 10 20 20 30 30 40 40 50 2720171917 注意 列表名 下标 或 列表名 下标范围 的用法是允许的 但与前面的含义不同 它还是一个列表若指定了元素的名字 则引用列表元素还可以用它的名字作为下标 列表名 元素名 或者 列表名 元素名 rec age rec age2 列表的修改 rec name 张三 rec age list 20 32 58 可重新添加一些到列表中 rec sex 男 rec 6 161第5号元素没定义 所以值是 NULL 若rec是一个向量 则空元素为 NA 列表之间还可以连接起来 List ABC c list A list B list C 3 数据框数据框通常是矩阵形式的数据 但矩阵各列可以是不同类型 数据框每列是一个变量 每行是一个观测 1 生成数据框一般可以把数据框看作一种推广了的矩阵 它可用矩阵形式表示 数据框可以用data frame 函数生成 用法与list 函数相同ls 列出工作空间你定义的所有变量str x 给出对象x的一些信息 d data frame name c 李明 张聪 王建 age c 30 35 28 height c 180 162 175 dnameageheight1李明301802张聪351623王建28175可以将列表转化为一个数据框 如比较他们之间的区别 d1 list name c 李明 张聪 王建 age c 30 35 28 height c 180 162 175 as data frame d1 2 数据框的引用引用数据框元素的方法与引用矩阵元素的方法相同 d 1 2 2 3 数据框的各变量也可用按列表引用 用双括号 或 引用 d age 1 303528 d height 1 180162175数据框的各行也可以定义名字 用rownames属性定义 names d 1 name age height rownames d c one two three rownames d 1 one two three 3 attach 函数数据框的主要用途是保存统计建模的数据 调用数据框的变量像以前d 是不方便的 R提供了函数attach 可以把变量调入内存 attach d r age height 此时age height是可以利用的但r的值不会进入数据框d 若想把刚才r当作新的数据框的变量 d r age weight dnameageheightrone李明301800 1666667two张聪351620 2160494three王建281750 1600000 detach d 取消连接 4 列表与数据框的编辑可用函数edit 对列表或者数据框进行编辑 newd edit d 当然也可对向量 数组 矩阵类型的数据进行修改和编辑 Fix用函数merge x y 对两个数据框合并成一个可查看帮助 merge 七 输入输出1 输入 1 read table 等相关函数read table 函数是读表格形式的文件 若 班级 数据已输入到一个纯文本文件 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罗玲9693909207 014刘卿卿9767948907 015张晓芳93728282072301016杨乐遥88615060072301017沈亮95415460072301018高晶98769189072301020郭慧93918387072301021陈灿92766975072301022李婷90766975072301023陈元俊94745969072301024谭海梅95646370072301025张亚琴95898588072301026胡阳98929897072301027张冲92606569072301028位会敏95928287072301029胡红96789089072301030岳鑫璐96607979072301031李欢欢988510097072301032陈龙龙92656470072301033朱盼88556668 读入格式为 cjb read table c cjb txt header TRUE cjb is data frame cjb 1 TRUEheader TRUE表示第一行读入的是变量名 默认是header FALSE 即自动会添上列名 具体用法可见帮助 read tabled read csv txt csv 读逗号分隔的文本文件d read csv2 txt csv 读分号分隔的文本文件 逗号代替小数点d read delim foo txt 读制表符分隔的文件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 TITLEextraline 2357 111317 file ex data sep n readLines ex data n 1 unlink ex data 删除文件 R中一般不能直接读xls文件 可先转换为csv 2 scan 函数scan 函数可直接读纯文本文件数据和直接从屏幕上输数据 x scan 1 244 255 Read4times x 1 244 25假设有10名学生的体重数据已输入文件 weight txt 格式为4563 532 567 277 55554496270 w scan c weight txt 假设weight txt中 奇数是女性体重 偶数是男性体重 即数据中有不同的属性 wfm scan c weight txt list F 0 M 0 Read5records将数据读入 并以列表的方式赋给变量wfm wfm F 1 45 032 577 554 062 0 M 1 63 567 255 049 070 0其它数据格式的读入可以参见帮助文档中的R数据输入输出 2 输出直接输入变量名即可输出 x 1 5 x 1 12345用print x 与上式是等价的 里面有些参数 digits指定每个数输出的有效数字位 options digits 3 1 3 1 0 333write table 输出数据框到文件write csvwrite csv2Write matrix 输出矩阵到文件 需要加载包MASS cat 函数也可用来输出 但它可以把多个参数连接起来再输出 类似于paste 的功能 cat i i 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 条件 表达式1else表达式2例如 if any x 0 y log 1 x elsey log x 还有switch 函数 可参见讲义 2 循环结构 1 for循环 for nameinexpr1 expr2例如 构造一个4阶Hilbert矩阵 n 4 x matrix 0 nrow 4 ncol 4 for iin1 n for jin1 n x i j 1 i j 1 x 1 2 3 4 1 1 00000000 50000000 33333330 2500000 2 0 50000000 33333330 25000000 2000000 3 0 33333330 25000000 20000000 1666667 4 0 25000000 20000000 16666670 1428571 2 while循环 while condtion expr当条件condtion成立 则执行表达式expr 例如编写一个计算100以内的Fibonacci数 f 1 f 2 1 i 1 while f i f i 1 f 1 1123581321345589144 13 233377610987 3 repeat循环 repeatexprrepeat循环依赖break语句跳出循环 例如用repeat循环编写一个计算100以内的Fibonacci数 f 1 f 2 1 i 1 repeat f i 2 f i f i 1 i i 1if f i f i 1 1000 break f 1 1123581321345589144 13 233377610987 三个例子myfn1 function obs 10 n 100 x rep NA 100 for iin1 n tmp runif obs x i mean tmp list mn mean x std sd x Myfn1 myfn2 function obs 10 x runif obs while mean x 0 45 obs 2 obsx runif obs list mn mean x std sd x obs obs myfn2 myfn3 0 45 breakobs 2 obs list mn mean x std sd x obs obs myfn3 九编写函数 函数是一系列语句的组合 在R中可以写出自己的函数形式为 变量名 function 变量列表 函数体函数的调用 变量名 变量值 函数可以递归引用 但不提倡 例如 f function x x exp x f 3 5 例子 使用gamma函数求n factorial function n if n 0 gamma n 1 elseprint Pleaseinputapositiveinteger factorial 6 factorial 6 Choose 10 5 求组合值 fzero function f a b eps 1e 5 if f a f b 0 list fail findingrootisfail else repeat if abs b a eps breakx a b 2if f a f x 0 b xelsea x list root a b 2 fun f x 例 编写一个用二分法求非线性方程根的函数 并求方程在区间 1 2 内的根 精度要求 用刚才编写的函数计算上述方程的解 f function x x 3 x 1 fzero f 1 2 root 1 1 324718 fun 1 1 405875e 05 R软件提供了求一元方程的根的函数uniroot uniroot f interval lower min interval upper max interval tol Machie double eps 0 25 maxiter 1000 uniroot f c 1 2 root 1 1 324718 f root 1 5 634261e 07 iter 1 7 estim prec 1 6 103516e 05 用于处理错误的函数 用于处理用户输入不正确的类型而可能出现的错误warning 若错误不严重以至影响整个计算stop 若错误可能导致计算中止print 显示必要的信息formatC 数值作为字符串输出cat 字符串联 可以插入 n 换行 及 t tab键 paste 字符粘贴 非字符型自动转换 例子 cat R is agood 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 todayis date 例 考虑某银行的存取系统 设open account 为存开户函数 deposit 为存款函数 withdraw 为取款函数 balance 为存取款平衡 余额 函数 对于客户的存取过程如下 open account function total list deposit function amount if amount 0 stop Depositsmustbepositive n totaltotal stop Youdon thavethatmuchmoney n total total amountcat amount withdrawn Yourbalanceis total n n balance function cat Yourbalanceis total n n 十 R在计算中的应用1 求一元多项式方程的根设一元多项式为求方程f x 0的所有根 例 求方程的所有根 a c 4 1 0 3 polyroot a 1 1 0 0 000000i 0 5 1 040833i 0 5 1 040833i 十 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 x 3 1 x x 4 x 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 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 50000000 21132530 7886747 十 R在计算中的应用3 求n元非线性方程组的根例 求下列方程组的根 model function x c F1 x 1 2 x 2 2 1 F2 x 2 2 2 x 1 定义方程组 library rootSolve multiroot model c 1 1 要先给初始值 root 1 0 41421360 9101797 f rootF1F26 43565e 106 39019e 10 iter 1 5 estim precis 1 6 41292e 10 十一 图形R软件有很强的图形功能 可用简单的函数调用 迅速作出数据的各种图形 比如 有一个班级的数据存贮在c work class01 txt c1 read table c work class01 txt colnames c1 c Name Sex Age Weight Height attach 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 Weight Height 求体重对身高的回归p1 predict fit1 c1 对数据c1进行预测boxplot list 体重 Weight 预报 p1 画出盒形图函数qqnorm qqline 提供了绘画正态QQ图和相应的直线的方法qqnorm Weight qqnorm函数的用法qqnorm y ylim main NormalQ QPlot xlab Ylab plot it TRUE qqline Weight Plot通常在一个窗口出现 根据需要自动打开 有时需要同时打开两个图形窗口 可用dev new 我们能够在窗口上保存图像 或者用如下命令保存postscript myfile 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 y expr y为任意一个对象例如 attach c1 plot c1 三项指标构成的散点图 plot Age Height 身高与年龄的散点图 plot Weight Age Height 绘出两张散点图 一张是体重与年龄的 一张是体重与身高 5 coplot 函数 coplot Weight Height Age 绘出按年龄段给出体重与身高的散点图 2 高水平绘图中的命令 1 图中的逻辑命令add TRUE表示在所绘图在原图上加图 缺省为add FALSE即新图替换旧图axes FALSE表示所绘图没有坐标轴 默认axes TRUE 2 Type命令type p 绘制散点图 缺省值 type l 绘制实线 type b 画点和线type o 实线通过所有的点type h 绘出点到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 在已有图上加直线 lines x y 与plot x y type l 类似 线的类型由参数lty n决定 在help par 中查看lty 2 在点处加标记函数text 是在图上加标记 格式为text x y labels x y是数据形向量 labels可以是整数 也可是字符串 缺省是labels 1 length x 如 plot Weight Height type n text Weight Height legend x y legend 在制定位置给出一个盒子对图形进行解释 legend是标签字符串向量其他参数lty lwd col fill angle density pchlocator n type 在鼠标点击的地方做标记 type为做标记的类型 点或线 右键选终止identify x y labels 在制定的点x y处做标记 默认为1 length x 见demo4 2 3 在图上加直线 1 abline a b 表示画直线y a bx 2 abline h y 表示画出一条过所有点的水平直线 3 abline v x 表示画出一条过所有点的竖线 4 abline lm obj 表示画出线型模型得到的线型方程 5 polygon x y 以数据 x y 为坐标 依次连接所有的点 绘出多边形 此时与plot x y type l 功能相似 4 在图上加标记 说明或其它内容 1 title main MainTitle sub subtitle 加上图的题目和子图的题目 主题目加在顶部 子题目加在底部 2 axis side side是边 side 1表示所加内容放在图的底部 side 2表示所加内容放在图的左侧 side 3表示所加内容放在图的顶部side 4表示所加内容放在图的右侧 5 其他类型的图barplot 画出一个条形图 可用一个向量指定条形的高度 boxplot 产生一个箱型图pie 画饼图pairs 产生散点图的网格contour persp image 画2维图见demo4 3在制定的地方可用数学标识xlab expression hat beta 2 见demo4 4 6 一页多图 R可以在同一页面开若干个按行 列排列的窗格 在每个窗格中可以作一幅图 每个图有自己的边空 而所有图的外面可以包一个 外边空 一页多图用mfrow参数或mfcol参数规定 如 par mfrow c 3 2 表示同一页有三行两列共六个图 而且次序为按行填放 类似地 par mfcol c 3 2 规定相同的窗格结构 但是次序为按列填放 即先填满第一列的三个再填第二列 要取消一页多图只要再运行 par mfrow c 1 1 即可 缺省时无外边空 为了规定外边空大小 可以用omi参数或oma参数 omi参数使用英寸为单位 oma参数以文本行高为单位 两个参数均为四个元素的向量 分别给出下 左 上 右方的边空大小 如 par oma c 2 0 3 0 函数mtext用来在外边空加文字标注 其用法为mtext text side 3 line 0 outer FALSE 其中text为要加的文本内容 side表示在哪一边写 1为下 2为左 3为上 4为右 line表示边空从里向外数的第几行 最里面的一行是第0号 outer TRUE时使用外边空 否则会使用当前图的边空 例如 par mfrow c 2 2 oma c 0 0 3 0 mar c 2 1 1 0 1 plot Height plot Sex boxplot Weight Sex plot Height Weight mtext SimulationData outer T cex 1 5 在多图环境中还可以用mfg参数来直接跳到某一个窗格 比如 par mfg c 2 2 3 2 表示在三行两列的多图环境中直接跳到第二行第二列位置 mfg参数的后两个表示多图环境的行 列数 前两个表示要跳到的位置 可以不使用多图环境而直接在页面中的任意位置产生一个窗格来绘图 参数为fig 如 par fig c 4 9 1 4 10 此参数为一个向量 分别给出窗格的左 右 下 上边缘的位置 取值为占全页面的比例 比如上面的例子在页面的右下方开一个窗格作图 实验作业 1 从数据文件class txt读入数据存为数据框 给数据框添加名字 name age height weight sex 在一页中对体重作出qqnorm图 直方图 Boxplot 对身高和体重作qqplot图 要求给出标题 坐标轴等 2 对上述数据class txt作尽可能多的本节讲过的图 要求同时用到高级图形和低级图形函数 3 将屏幕分割为四块 并分别画出y sin x z 3 cos x a sin x cos x b sin x x R 语言画图 x 0 18plot x x pch x col x points x 18 x pch x matplot x cbind x 18 x 画图 spring data frame compression c 41 39 43 53 42 48 47 46 distance c 120 114 132 157 122 144 137 141 attach spring Hooke slaw f 5ks plot distance compression plot compression distance 画图 par mfrow c 2 2 准备画2 2的4个图plot compression distance main Hooke sLaw 只有标题的图plot compression distance main Hooke sLaw xlab x ylab y 标题 x y标记identify compression distance 标出点号码 画图 plot compression distance main Hooke sLaw 只有标题的图text 46 120 f 1 2 k s 在指定位写入文字plot compression distance main Hooke sLaw 只有标题的图text locator 2 Iamhere 在点击的两个位置写入文字 画图 library mass data Animals attach Animals plot body brain plot sqrt body sqrt brain plot body 0 1 brain 0 1 plot log body log brain 画图 原始数据 par mfrow c 1 1 pch 1 plot body brain xlim c 0 6000 text x body y brain labels row names Animals adj 0 adj 0impliesleftadjustedtext 画图 几个点 plot body c 1 3 8 brain c 1 3 8 xlim c 0 200 text x body c 1 3 8 y brain c 1 3 8 labels row names Animals c 1 3 8 adj 0 画图 对数变换后 Par cex 0 7 mex 0 7 character cex margin mex expansionplot log body log brain text x log body y log brain labels row names Animals adj 1 5 adj 0impliesleftad

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论