R语言实验三
- 格式:doc
- 大小:282.50 KB
- 文档页数:6
学号:2013310200629姓名:王丹学院:理学院专业:信息与计算科学成绩:日期:年月日基于工业机器人能否准确完成操作的时间序列分析摘要:时间序列分析是预测领域研究的重要工具之一,它描述历史数据随时间变化的规律,并用于预测数据。
本文首先介绍了一些常用的时间序列模型,包括建模前对数据的预处理、模型的识别以及模型的预测等。
通过多种方法分析所得到的数据,实现准确建模,可以得出正确的结论。
关键词:自回归(AR)模型,滑动平均(MA)模型,自回归滑动平均(ARMA)模型,ARMA最优子集一、问题提出,问题分析随着社会日新月异的发展,不断创新的科技为我们的生活带来了越来越多的便利。
机器人也逐渐走向了我们的生活,工厂里使用机器人去工作也可以大大减少生产成本,但为了保证产品质量,工厂使用的机器人应该多次测试,确保动作准确无误。
现有一批数据,包含了来自工业机器人的时间序列(机器人需要完成一系列的动作,与目标终点的距离以英寸为单位被记录下来,重复324次得到该时间序列),对于这些离散的数据,我们期望从中发掘一些信息,以便对机器人做更好的改进或者确定机器人是否可以投入使用。
但我们从中并不能看出什么,需要借助工具做一些处理,对数据进行分析。
时间序列分析是通过直观的数据比较或作图观测,去寻找序列中包含的变化规律,这种分析方法称为描述性时序分析。
在物理、天文、海洋学等科学领域,这种描述性时序分析方法经常能够使人们发现一些意想不到的规律,操作起来十分简单而且直观有效,因此从史前到现在一直被人们广泛使用,它也是我们进行统计时序分析的第一步。
我们将利用自回归(AR)模型、滑动平均(MA)模型以及自回归滑动平均(ARMA)模型去解决遇到的问题。
二、数据描述和初步分析下面是我们接收到的数据,数据来源:/~kchan/TSA.htm0.0011 0.0011 0.0024 0.0000 -0.0018 0.0055 0.0055 -0.00150.0047 -0.0001 0.0031 0.0031 0.0052 0.0034 0.0027 0.00410.0041 0.0034 0.0067 0.0028 0.0083 0.0083 0.0030 0.00320.0035 0.0041 0.0041 0.0053 0.0026 0.0074 0.0011 0.0011-0.0001 0.0008 0.0004 0.0000 0.0000 -0.0009 0.0038 0.00540.0002 0.0002 0.0036 -0.0004 0.0017 0.0000 0.0000 0.00470.0021 0.0080 0.0029 0.0029 0.0042 0.0052 0.0056 0.00550.0055 0.0010 0.0043 0.0006 0.0013 0.0013 0.0008 0.00230.0043 0.0013 0.0013 0.0045 0.0037 0.0015 0.0013 0.00130.0029 0.0039 -0.0018 0.0016 0.0016 -0.0003 0.0000 0.00090.0017 0.0017 0.0030 -0.0001 0.0070 -0.0008 -0.0008 0.00090.0025 0.0031 0.0002 0.0002 0.0022 0.0020 0.0003 0.00330.0033 0.0044 -0.0010 0.0048 0.0019 0.0019 0.0031 0.00200.0017 0.0014 0.0014 0.0039 0.0052 0.0020 0.0012 0.00120.0031 0.0022 0.0040 0.0038 0.0038 0.0007 0.0016 0.00240.0003 0.0003 0.0057 0.0006 0.0009 0.0040 0.0040 0.00350.0032 0.0068 0.0028 0.0028 0.0048 0.0035 0.0042 -0.0020-0.0020 0.0023 -0.0011 0.0062 -0.0021 -0.0021 0.0000 -0.0019-0.0005 0.0048 0.0048 0.0027 0.0009 -0.0002 0.0079 0.00790.0017 0.0034 0.0030 0.0025 0.0025 0.0004 0.0031 0.0057-0.0003 -0.0003 0.0006 0.0018 0.0022 0.0042 0.0042 0.0055-0.0005 -0.0053 0.0028 0.0028 0.0005 0.0036 0.0017 -0.0043-0.0043 0.0066 -0.0016 0.0055 -0.0011 -0.0011 -0.0049 0.00470.0056 0.0057 0.0057 -0.0002 0.0056 0.0037 0.0012 0.00120.0018 -0.0025 -0.0011 0.0027 0.0027 0.0039 0.0058 0.00030.0040 0.0040 0.0042 0.0000 0.0056 -0.0029 -0.0029 -0.00260.0016 0.0019 0.0015 0.0015 0.0007 0.0007 -0.0044 -0.0030-0.0030 0.0013 0.0029 -0.0010 0.0009 0.0009 -0.0016 0.00000.0000 0.0014 0.0014 -0.0003 0.0009 -0.0068 0.0003 0.0003-0.0012 0.0037 -0.0019 0.0023 0.0023 -0.0033 -0.0002 -0.00100.0021 0.0021 0.0026 -0.0002 0.0011 0.0028 0.0028 -0.00040.0026 -0.0015 0.0002 0.0002 0.0018 -0.0005 0.0004 -0.0008-0.0008 0.0018 0.0019 0.0029 -0.0022 -0.0022 0.0010 -0.00330.0020 0.0000 0.0000 0.0003 0.0007 -0.0009 -0.0035 -0.00350.0010 0.0007 0.0028 -0.0008 -0.0008 -0.0034 -0.0010 -0.0018-0.0021 -0.0021 -0.0006 -0.0018 -0.0046 -0.0017 -0.0017 -0.0001-0.0029 0.0020 -0.0049 -0.0049 -0.0021 -0.0027 -0.0018 -0.0015-0.0015 0.0051 -0.0002 0.0000 -0.0006 -0.0006 -0.0012 0.00120.0000 0.0021 0.0021 -0.0001 0.0022 0.0055 -0.0010 -0.00100.0048 0.0006 0.0026 0.0004 0.0004 0.0000 0.0000 0.00080.0044 0.0044 0.0002 0.0036这一群数目庞大的数据,以我们直观的判断,它们错综复杂,且毫无规律可言,根本不能从中得到有用的消息。
实验3 R基础(三)123一、实验目的:41.掌握列表、数据框的相关运算;52.掌握R对数据文件的读写操作;63.掌握R的简单编程。
78二、实验内容:91.完成教材例题;2.完成以下练习。
101112练习:13要求:①完成练习并粘贴运行截图到文档相应位置(截图方法见下),并将所14有自己输入文字的字体颜色设为红色(包括后面的思考及小结),②回答思考题,15③简要书写实验小结。
④修改本文档名为“本人完整学号姓名1”,其中1表示16第1次实验,以后更改为2,3,...。
如文件名为“1305543109张立1”,表示学17号为1305543109的张立同学的第1次实验,注意文件名中没有空格及任何其它18字符。
最后连同数据文件、源程序文件等(如果有的话),一起压缩打包发给课19代表,压缩包的文件名同上。
20截图方法:法1:调整需要截图的窗口至合适的大小,并使该窗口为当前激活窗口(即该2122窗口在屏幕最前方),按住键盘Alt键(空格键两侧各有一个)不放,再按键盘23右上角的截图键(通常印有“印屏幕”或“Pr Scrn”等字符),即完成截图。
24再粘贴到word文档的相应位置即可。
25法2:利用QQ输入法的截屏工具。
点击QQ输入法工具条最右边的“扳手”图26标,选择其中的“截屏”工具。
)27281.自行完成教材P84页开始的2.6-2.9节中的例题。
292.教材在讲解列表(List)时,所举例子的参数是有名参数。
这30里我们练习创建一个列表,其参数是无名参数,并回答以下问题。
31(1)运行以下命令创建列表,注意每个元素的默认名称;32L <- list(12,c(34,56),matrix(1:12,nrow=4),1:15,list(10,11)) 33(2)L[[2]][2]的输出结果是什么?请先自己写出结果,再运行34验证;35[1] 5636(3)用1:10替换L的第四个元素,请写出命令,并运行验证;37> L[[4]]<-c(1:10)(4)将L的第五个元素中的11替换为20,请写出命令,并运行3839验证。
r语言实验报告R语言实验报告介绍•本文旨在对R语言实验报告进行相关介绍和指导。
准备工作•在开始编写R语言实验报告之前,需要进行一些准备工作:–安装R语言环境–确保安装必要的R包–理解实验要求和相关数据集实验报告结构•一个完整的R语言实验报告通常包含以下几个部分:1. 标题•实验报告的标题应简明扼要地描述实验内容。
2. 引言•引言部分应包含以下内容:–实验的背景和目的–实验所采用的数据集和方法的简要介绍3. 数据分析•数据分析部分是实验报告的重点,应包含以下内容:–数据的读取和预处理–数据的可视化–统计分析方法的应用–结果的解释和讨论4. 结论•结论部分应总结实验的结果,并对实验的目的和方法进行评价。
5. 参考文献•参考文献部分应列举实验报告中所引用的相关文献。
编写要点•在编写R语言实验报告时,需要遵守以下要点:1. 语法规范•使用清晰、准确的语法表达实验过程和结果。
2. 结果的解释•对于结果的解释,应该尽量采用简洁明了的语言,避免使用过于专业的术语或过于复杂的句子结构。
3. 图表的使用•图表是实验报告中常用的可视化工具,应合理使用图表来展示数据和结果,并配以简洁明了的图题和注解。
4. 逻辑性和连接性•实验报告应具有良好的逻辑性和连接性,各部分之间应有明确的联系和衔接,以确保整篇报告的连贯性。
结语•编写一份规范、完整的R语言实验报告需要系统的学习和实践,希望本文对您有所帮助。
参考文献•[参考文献1]•[参考文献2]继续编写一份更详细的R语言实验报告:R语言实验报告介绍•本文旨在对R语言实验报告进行相关介绍和指导。
准备工作•在开始编写R语言实验报告之前,需要进行一些准备工作:–安装R语言环境:确保在电脑上成功安装R语言的最新版本。
–确保安装必要的R包:根据实验需求,安装并加载所需的R包,例如ggplot2、dplyr等。
–理解实验要求和相关数据集:认真阅读实验要求,理解实验的目的和需求,并熟悉所使用的数据集。
r语言编程实验报告总结
本次实验主要是对R语言编程的学习和掌握进行实践操作,通过实验了解R语言的基本语法和数据结构,掌握R语言的编程方法和数据分析技巧。
在实验中,我们学习了R语言的基础知识,如基本数据类型、变量、运算符、数据结构等。
同时,我们也学习了R语言的控制结构,如条件语句、循环语句等,这些控制结构可以帮助我们更好地控制程序的执行。
除此之外,我们还学习了R语言的函数和包的使用,在实验中我们使用了一些常用的包,如ggplot2包和dplyr包,这些包可以帮助我们更加方便地进行数据分析和绘图。
同时,我们也学习了如何自己编写函数,并且熟练掌握了函数的调用和参数传递。
通过实验,我们还学习了如何进行数据处理和数据分析,包括数据的读取和写入、数据的清洗和转换、数据的统计分析和可视化等等。
我们使用R语言对一些真实数据进行了处理和分析,这些数据包括房价、气温、人口等等。
在实验中,我们遇到了一些问题,如代码错误、数据异常等等,但是通过对问题的分析和解决,我们不断提升了自己的编程能力和数据分析技能。
综上所述,通过本次实验,我们深入了解了R语言的编程方法和数据分析技巧,掌握了一些常用的包和函数,并且在实践中熟悉了数据处理和分析的整个过程,这对我们今后的学习和工作都具有重要的
意义。
武夷学院实验报告课程名称:大数据挖掘与统计机器学习项目名称:多元统计分析与R语言建模姓名:__张树捷__专业:数学与应用数学班级:__2班_学号:__20171071203__同组成员:无_时间:______一、实验部分:P37 3m=seq(0,3000,by=300)hist(as.matrix(jie),m,freq=F,col=1:7)m=seq(0,3000,by=300)hist(as.matrix(jie),m,freq=T,col=1:7)m=seq(0,96000,by=3000)t<-as.matrix(jie)cumsum(t)hist(cumsum(t),m,freq=F,col=1:12,las=3) 累计频率图:p55 二、2barplot(apply(dier,1,mean),las=3)#按行作均值条形图barplot(apply(dier,2,mean))#按列作均值图条形图boxplot(dier)#按列作箱尾图boxplot(dier,horizontal = T)#箱尾图中图形按水平放置stars(dier,full=T,key.loc = c(13,1.5))#具有图例的360度星相图stars(dier,full=T,draw.segments = T,key.loc = c(13,1.5))#具有图例的3 60度彩色星相图summary(dier)#数据分析图表faces(dier,ncol.plot = 7)#按每行7个作脸谱图library(MSG)#加载msg包andrews_curve(dier)#绘制调和曲线图P87 4cor(disan)#计算相关系数矩阵plot(disan)#散点图library(psych)#加载psych包corr.test(disan)#y,x1,x2,x3的相关系数fm=lm(y~.,data=disan)#显示多元线性回归模型summary(fm)#多元线性回归系数t检验(拟合优度检验)由于P<0.05,于是在05.0=α水平处拒绝0H ,接受1H ,即x1,x2,x3与y 之间存在回归关系。
实验三数组的运算、求解方程(组)和函数极值、数值积分【实验类型】验证性【实验学时】2 学时【实验目的】1、掌握向量的四则运算和内积运算、矩阵的行列式和逆等相关运算;2、掌握线性和非线性方程(组)的求解方法,函数极值的求解方法;3、了解 R 中数值积分的求解方法。
【实验内容】1、向量与矩阵的常见运算;2、求解线性和非线性方程(组);3、求函数的极值,计算函数的积分。
【实验方法或步骤】第一部分、课件例题:1.向量的运算x<-c(-1,0,2)y<-c(3,8,2)v<-2*x+y+1vx*yx/yy^xexp(x)sqrt(y)x1<-c(100,200); x2<-1:6; x1+x22.x<-1:5y<-2*1:5x%*%ycrossprod(x,y)x%o%ytcrossprod(x,y)outer(x,y)3.矩阵的运算A<-matrix(1:9,nrow=3,byrow=T);AA+1 #A的每个元素都加上1B<-matrix(1:9,nrow=3); BC<-matrix(c(1,2,2,3,3,4,4,6,8),nrow=3); C D<-2*C+A/B; D #对应元素进行四则运算x<-1:9A+x #矩阵按列与向量相加E<-A%*%B; E #矩阵的乘法y<-1:3A%*%y #矩阵与向量相乘crossprod(A,B) #A的转置乘以Btcrossprod(A,B) #A乘以B的转置4.矩阵的运算A<-matrix(c(1:8,0),nrow=3);At(A) #转置det(A) #求矩阵行列式的值diag(A) #提取对角线上的元素A[lower.tri(A)==T]<-0;A #构造A对应的上三角矩阵qr.A<-qr(A);qr.A #将矩阵A分解成正交阵Q与上三角阵R的乘积,该结果为一列表Q<-qr.Q(qr.A);Q;R<-qr.R(qr.A);R #显示分解后对应的正交阵Q与上三角阵Rdet(Q);det(R);Q%*%R #A=Q*Rqr.X(qr.A) #显示分解前的矩阵5.解线性方程组A<-matrix(c(1:8,0),nrow=3,byrow=TRUE)b<-c(1,1,1)x<-solve(A,b); x #解线性方程组Ax=bB<-solve(A); B #求矩阵A的逆矩阵BA%*%B #结果为单位阵6.非线性方程求根f<-function(x) x^3-x-1 #建立函数uniroot(f,c(1,2)) #输出列表中f.root为近似解处的函数值,iter为迭代次数,estim.prec为精度的估计值uniroot(f,lower=1,upper=2) #与上述结果相同polyroot(c(-1,-1,0,1)) #专门用来求多项式的根,其中c(-1,-1,0,1)表示对应多项式从零次幂项到高次幂项的系数7.求解非线性方程组(1)自编函数: (Newtons.R)Newtons<-function (funs, x, ep=1e-5, it_max=100){index<-0; k<-1while (k<=it_max){ #it_max 表示最大迭代次数x1 <- x; obj <- funs(x);x <- x - solve(obj$J, obj$f); #Newton 法的迭代公式norm <- sqrt((x-x1) %*% (x-x1))if (norm<ep){ index<-1; break #index=1 表示求解成功}; k<-k+1 }obj <- funs(x);list(root=x, it=k, index=index, FunVal= obj$f)} # 输出列表(2)调用求解非线性方程组的自编函数funs<-function(x){ f<-c(x[1]^2+x[2]^2-5, (x[1]+1)*x[2]-(3*x[1]+1)) # 定义函数组J<-matrix(c(2*x[1], 2*x[2], x[2]-3, x[1]+1), nrow=2,byrow=T) # 函数组的 Jacobi 矩阵list(f=f, J=J)} # 返回值为列表 : 函数值 f 和 Jacobi 矩阵 Jsource("F:/wenjian_daima/Newtons.R") # 调用求解非线性方程组的自编函数Newtons(funs, x=c(0,1))8.一元函数极值f<-function(x) x^3-2*x-5 # 定义函数optimize(f,lower=0,upper=2) # 返回值 : 极小值点和目标函数f<-function(x,a) (x-a)^2 # 定义含有参数的函数optimize(f,interval=c(0,1),a=1/3) # 在函数中输入附加参数9.多元函数极值(1)obj <-function (x){ # 定义函数F<-c(10*(x[2]-x[1]^2),1-x[1]) # 视为向量sum (F^2) } # 向量对应分量平方后求和nlm(obj,c(-1.2,1))(2)fn<-function(x){ # 定义目标函数F<-c(10*(x[2]-x[1]^2), 1-x[1])t(F)%*%F } # 向量的内积gr <- function(x){ # 定义梯度函数F<-c(10*(x[2]-x[1]^2), 1-x[1])J<-matrix(c(-20*x[1],10,-1,0),2,2,byrow=T) #Jacobi 矩阵2*t(J)%*%F } # 梯度optim(c(-1.2,1), fn, gr, method="BFGS")最优点 (par) 、最优函数值 (value)10.梯形求积分公式(1)求积分程序: (trape.R)trape<-function(fun, a, b, tol=1e-6){ # 精度为 10 -6N <- 1; h <- b-a ; T <- h/2 * (fun(a) + fun(b)) # 梯形面积 repeat{h <- h/2; x<-a+(2*1:N-1)*h; I <-T/2 + h*sum(fun(x)) if(abs(I-T) < tol) break; N <- 2 * N; T = I }; I}(2)source("F:/wenjian_daima/trape.R") # 调用函数f<-function(x) exp(-x^2)trape(f,-1,1)(3)常用求积分函数f<-function(x)exp(-x^2) # 定义函数integrate(f,0,1)integrate(f,0,10)integrate(f,0,100)integrate(f,0,10000) # 当积分上限很大时,结果出现问题integrate(f,0,Inf) # 积分上限为无穷大ft<-function(t) exp(-(t/(1-t))^2)/(1-t)^2 # 对上述积分的被积函数 e 2 作变量代换 t=x/(1+x) 后的函数integrate(ft,0,1) # 与上述计算结果相同,且精度较高第二部分、教材例题:1.随机抽样(1)等可能的不放回的随机抽样:> sample(x, n) 其中x为要抽取的向量, n为样本容量(2)等可能的有放回的随机抽样:> sample(x, n, replace=TRUE)其中选项replace=TRUE表示有放回的, 此选项省略或replace=FALSE表示抽样是不放回的sample(c("H", "T"), 10, replace=T)sample(1:6, 10, replace=T)(3)不等可能的随机抽样:> sample(x, n, replace=TRUE, prob=y)其中选项prob=y用于指定x中元素出现的概率, 向量y与x等长度sample(c("成功", "失败"), 10, replace=T, prob=c(0.9,0.1))sample(c(1,0), 10, replace=T, prob=c(0.9,0.1))2.排列组合与概率的计算1/prod(52:49)1/choose(52,4)3.概率分布qnorm(0.025) #显著性水平为5%的正态分布的双侧临界值qnorm(0.975)1 - pchisq(3.84, 1) #计算假设检验的p值2*pt(-2.43, df = 13) #容量为14的双边t检验的p值4.limite.central( )的定义limite.central <- function (r=runif, distpar=c(0,1), m=.5,s=1/sqrt(12),n=c(1,3,10,30), N=1000) {for (i in n) {if (length(distpar)==2){x <- matrix(r(i*N, distpar[1],distpar[2]),nc=i)}else {x <- matrix(r(i*N, distpar), nc=i)}x <- (apply(x, 1, sum) - i*m )/(sqrt(i)*s)hist(x,col="light blue",probability=T,main=paste("n=",i), ylim=c(0,max(.4, density(x)$y)))lines(density(x), col="red", lwd=3)curve(dnorm(x), col="blue", lwd=3, lty=3, add=T)if( N>100 ) {rug(sample(x,100))}else {rug(x)}}}5.直方图x=runif(100,min=0,max=1)hist(x)6.二项分布B(10,0.1)op <- par(mfrow=c(2,2))limite.central(rbinom,distpar=c(10,0.1),m=1,s=0.9)par(op)7.泊松分布: pios(1)op <- par(mfrow=c(2,2))limite.central(rpois, distpar=1, m=1, s=1, n=c(3, 10, 30 ,50)) par(op)8.均匀分布:unif(0,1)op <- par(mfrow=c(2,2))limite.central( )par(op)9.指数分布:exp(1)op <- par(mfrow=c(2,2))limite.central(rexp, distpar=1, m=1, s=1)par(op)10.混合正态分布的渐近正态性mixn <- function (n, a=-1, b=1){rnorm(n, sample(c(a,b),n,replace=T))}limite.central(r=mixn, distpar=c(-3,3),m=0, s=sqrt(10), n=c(1,2,3,10)) par(op)11.混合正态分布的渐近正态性op <- par(mfrow=c(2,2))mixn <- function (n, a=-1, b=1){rnorm(n, sample(c(a,b),n,replace=T))}limite.central(r=mixn, distpar=c(-3,3),m=0,s=sqrt(10),n=c(1,2,3,10)) par(op)第三部分、课后习题:3.1a=sample(1:100,5)asum(a)3.2(1)抽到10、J、Q、K、A的事件记为A,概率为P(A)=1(5220)其中在R中计算得:> 1/choose(52,20)[1] 7.936846e-15(2)抽到的是同花顺P(B)=(41)(91) (525)在R中计算得:> (choose(4,1)*choose(9,1))/choose(52,5) [1] 1.385e-053.3#(1)x<-rnorm(1000,mean=100,sd=100)hist(x)#(2)y<-sample(x,500)hist(y)#(3)mean(x)mean(y)var(x)var(y)3.4x<-rnorm(1000,mean=0,sd=1) y=cumsum(x)plot(y,type = "l")plot(y,type = "p")3.5x<-rnorm(100,mean=0,sd=1) qnorm(.025)qnorm(.975)t.test(x)由R结果知:理论值为[-1.96,1.96],实际值为:[-0.07929,0.33001]3.6op <- par(mfrow=c(2,2))limite.central(rbeta, distpar=c(0.5 ,0.5),n=c(30,200,500,1000))par(op)3.7N=seq(-4,4,length=1000)f<-function(x){dnorm(x)/sum(dnorm(x))}n=f(N)result=sample(n,replace=T,size = 1000)standdata=rnorm(1000)op<-par(mfrow=c(1,2)) #1行2列数组按列(mfcol)或行(mfrow)各自绘图hist(result,probability = T)lines(density(result),col="red",lwd=3)hist(standdata,probability = T)lines(density(standdata),col="red",lwd=3) par(op)。
一、数据可视化1.对于iris数据,用每类花(iris$Speciees)的样本数作为高度,制作条形图。
2.用每类花的Sepal.Length、Sepal.Width、Petal.Length、Petal.Width的平均值分别制作条形图,四图同显。
3.分别制作Sepal.Length、Sepal.Width、Petal.Length、Petal.Width的直方图(用密度值做代表,设置prob=T),添加拟合的密度曲线,四图同显。
二、中国地图:(Note:首先从网上下载GIS数据,解压到GIS_data目录。
/wp-content/uploads/2009/07/chinaprovinceborderdata _tar_gz.zip)setwd('F:/GIS_data') ### 设置工作目录install.packages('maptools');library(maptools)china<- readShapePoly('bou2_4p.shp') ### 获得各省的边界信息plot(china)>> names(map_data)[1] "AREA" "PERIMETER" "BOU2_4M_" "BOU2_4M_ID" "ADCODE93"[6] "ADCODE99" "NAME"可以看出map_data中有7列,对应的字段名如上面显示。
>> map_data$AREA #925个区域单元的面积>> map_data$PERIMETER #925个区域单元的周长>> map_data$BOU2_4M_ #没有重复的数字,2~926,可作为区域单元ID>> map_data$BOU2_4M_ID #有重复数字,特定情况下可作为区域单元ID>> map_data$ADCODE93 #93版ADCODE地理编码>> map_data$ADCODE93 #99版ADCODE地理编码>> map_data$NAME #各区域单元所隶属的省级行政单元的名称>> unique(map_data$NAME) #查看各区域的名称是什么文本[1] 黑龙江省内蒙古自治区新疆维吾尔自治区吉林省[5] 辽宁省甘肃省河北省北京市[9] 山西省天津市陕西省宁夏回族自治区[13] 青海省山东省西藏自治区河南省[17] 江苏省安徽省四川省湖北省[21] 重庆市上海市浙江省湖南省[25] 江西省云南省贵州省福建省[29] 广西壮族自治区台湾省广东省香港特别行政区[33] 海南省<NA>33 Levels: 安徽省北京市福建省甘肃省广东省广西壮族自治区 ...重庆市provname=c("北京市","天津市","河北省","山西省","内蒙古自治区", "辽宁省","吉林省","黑龙江省","上海市","江苏省", "浙江省","安徽省","福建省","江西省","山东省", "河南省","湖北省","湖南省","广东省","广西壮族自治区","海南省","重庆市","四川省","贵州省", "云南省","西藏自治区","陕西省","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区","台湾省", "香港特别行政区") ###省份向量pop=c(1633,1115,6943,3393,2405,4298,2730,3824,1858,7625,5060,6118,3581 ,4368,9367,9360,5699,6355,9449,4768,845,2816,8127,3762,4514,284,3748,26 17,552,610,2095,2296,693) ###各省人口向量根据各省人口数量给地图着色。
实验目的:
熟悉R软件的使用。
实验内容
1.R,Rstudio以及有关packages的安装。
2.查询已安装的packages,查询函数lm()的帮助
3.对前四章的样例程序运行
4.创建各类数据结构,并总结其特点创建向量
b<-c("one","two","three")
创建数组
x<-array(1:20,dim=c(4,5))
创建矩阵
A<-matrix(1:20,nrow=4,ncol=5,byrow=TRUE)
创建数据框
df<-data.frame(
Name=c("Alice","B","J","JE","JO"),
Sex=c("F","F","M","M","M"),
Age=c(13,13,12,13,12),
Height=c(56.5,65.5,57.3,62.5,59.0),
Weight=c(84.0,98.0,83.0,84.0,99.5) );df
创建列表
Lst<-list(names="Fred",wife="Mary",no.chiidren=3,child.age=c(4,7,9))
Lst
5.导入导出文本格式以及excle表格数据,将默认的数据,iris进行多种数据操作并保存到文件
(注:可编辑下载,若有不当之处,请指正,谢谢!)。
实验3 R基础(三)
一、实验目的:
1.掌握列表、数据框的相关运算;
2.掌握R对数据文件的读写操作;
3.掌握R的简单编程。
二、实验内容:
1.完成教材例题;
2.完成以下练习。
练习:
要求:①完成练习并粘贴运行截图到文档相应位置(截图方法见下),并将所有自己输入文字的字体颜色设为红色(包括后面的思考及小结),②回答思考题,③简要书写实验小结。
④修改本文档名为“本人完整学号姓名1”,其中1表示第1次实验,以后更改为2,3,...。
如文件名为“1305543109张立1”,表示学号为1305543109的张立同学的第1次实验,注意文件名中没有空格及任何其它字符。
最后连同数据文件、源程序文件等(如果有的话),一起压缩打包发给课代表,压缩包的文件名同上。
截图方法:
法1:调整需要截图的窗口至合适的大小,并使该窗口为当前激活窗口(即该窗口在屏幕最前方),按住键盘Alt键(空格键两侧各有一个)不放,再按键盘右上角的截图键(通常印有“印屏幕”或“Pr Scrn”等字符),即完成截图。
再粘贴到word文档的相应位置即可。
法2:利用QQ输入法的截屏工具。
点击QQ输入法工具条最右边的“扳手”图标,选择其中的“截屏”工具。
)
1.自行完成教材P84页开始的
2.6-2.9节中的例题。
2.教材在讲解列表(List)时,所举例子的参数是有名参数。
这里我们练习创建一个
列表,其参数是无名参数,并回答以下问题。
(1)运行以下命令创建列表,注意每个元素的默认名称;
L <- list(12,c(34,56),matrix(1:12,nrow=4),1:15,list(10,11))
(2)L[[2]][2]的输出结果是什么?请先自己写出结果,再运行验证;
[1] 56
(3)用1:10替换L的第四个元素,请写出命令,并运行验证;
> L[[4]]<-c(1:10)
(4)将L的第五个元素中的11替换为20,请写出命令,并运行验证。
> L[[5]][2]<- 20
运行结果截图
3. (习题2.4)生成一个5阶的Hilbert 矩阵,
n n ij h ⨯=)(H ,1
1
-+=
j i h ij ,i , j =1,2,…,n
(1) 计算Hilbert 矩阵H 的行列式; (2) 求H 的逆矩阵;
(3) 求H 的特征值和特征向量。
源代码:
>n<-5;H<-array(0,dim=c(n,n)) >for(i in 1:5){for(j in 1:5){ H[i,j]<-1/(i+j-1) } } >H >det(H) >solve(H) >eigen(H)
运行截图:
4.(习题2.5)已知有5名学生的数据,如下表所示。
用数据框的形式读入数据。
学生数据
序号姓名性别年龄身高cm 体重kg
1 张三女14 156 42.0
2 李四男15 165 49.0
3 王五女16 157 41.5
4 赵六男14 162 52.0
5 丁一女15 159 45.5
解:源代码:>df<-data.frame(
Name=c("张三","李四","王五","赵六","丁一"),
Sex=c("女","男","女","男","女"),
Age=c(14,15,16,14,15),
Height=c(156,165,157,162,159),
Weight=c(42.0,49.0,41.5,52.0,45.5));df
运行截图:
5.(习题2.6)将上题中的数据表的中数据写成一个纯文本文件,用函数read.table()
读该文件,然后再用函数write.csv()写成一个Excel能打开的文件,并用Excel打开。
步骤:
(1)复制上表数据到记事本,并以ex2.6.txt为文件名保存在合适的目录中;
(2)在read.tabel()中利用file.choose(),打开对话框来读取此文件;
(3)用函数write.csv()将此文件以ex2.6.cxv为文件名保存。
(4)找到ex2.6.cxv,并打开它验证。
文件默认存在什么地方?如何找到此文件?
如果想把此文件存放在D盘根目录下,如何修改代码?
源代码:
>df <-read.table(file.choose(),header=T)
> df
> write.csv(df, file=“ex2.6.cxv”)
> write.csv(df, file=“D:/ex2.6.cxv”)
运行截图:
R->改变工作目录->
6.(习题2.7)编写一个R程序(函数)。
输入一个整数n,如果n≤0,则中止运算,
并输出一句话:“要求输入一个正整数”;否则,如果n是偶数,则将n除2,并赋给n;否则,将3n+1赋给n。
不断循环,直到n=1,才停止计算,并输出一句话:“运算成功”。
这个例子是为了检验数论中的一个简单的定理。
源代码:
Fun<-function(n){
if(n<=0)
list(fail="要求输入一个正整数")
else {
repeat{
if(n==1) break
else if(n%%2==0){n<-n/2}
else
n<-3*n+1
}
list("运算成功")
}
}
运行截图:
思考:
1.列表元素除了可以用“列表名[[下标]]”、“列表名[["元素名"]]”这两种方式来引用
外,还有哪一种方式?
列表$元素名
2.列表与数据框有什么异同点?
异:1)列表元素的类型可以任意类型,不同元素不必相同的类型,其中的元素经
常是向量和列表本身,元素本身允许是其他类型,长度不要求相同;
2)数据框通常是矩阵形式结构,数据框每一列是一个变量,每一行是一个观测,
各列表的成员必须是向量、因子、数值型矩阵、列表或其他数据框,数据框的变量
必须要相同的长度(行数)。
同:数据框可以用data.frame()函数生成,其用法与列表list()函数相同
3.对于列表、数据框的编辑,edit()函数与fix()函数有什么不同?
edit()函数进行编辑、修改后的数据并没有保存在原列表或数据框,而是存在新的
列表或数据,而fix()函数可以将编辑、修改后的数据保存原列表和数据框中。
4.当R读入其它格式的数据文件(如SPSS的数据)时,需要先输入一个什么样的命令?
>library(foreign)
三、实验小结(必写,但字数不限)
自己先把题算一遍,不要急于运行,算出结果,再运行检查结果是否一致,如果不一致,自己找出错误,重新再算,直到结果一致。
熟练课本的例题,掌握知识点,多练题,学会编写题中要求的函数。