R语言时间序列中文教程

上传人:仙*** 文档编号:98890271 上传时间:2022-05-30 格式:DOC 页数:36 大小:465KB
返回 下载 相关 举报
R语言时间序列中文教程_第1页
第1页 / 共36页
R语言时间序列中文教程_第2页
第2页 / 共36页
R语言时间序列中文教程_第3页
第3页 / 共36页
点击查看更多>>
资源描述
wordR语言时间序列中文教程 2012特别声明:R语言是免费语言,其代码不带任何质量保证,使用R语言所产生的后果由使用者负全责。前言R语言是一种数据分析语言,它是科学的免费的数据分析语言,是凝聚了众多研究人员心血的成熟的使用X围广泛全面的语言,也是学习者能较快受益的语言。 在R语言出现之前,数据分析的编程语言是SAS。当时SAS的功能比拟有限。在贝尔实验室里,有一群科学家讨论提到,他们研究过程中需要用到数据分析软件。SAS的局限也限制了他们的研究。于是他们想,我们贝尔实验室的研究历史要比SAS长好几倍,技术力量也比SAS强好几倍,且贝尔实验室里并不缺乏训练有素的专业编程人员,那么,我们贝尔实验室为什么不自己编写数据分析语言,来满足我们应用中所需要的特殊要求呢?于是,贝尔实验室研究出了S-PLUS语言。后来,新西兰奥克兰大学的两位教授非常青睐S-PLUS的广泛性能。他们决定重新编写与S-PLUS相似的语言,并且使之免费,提供应全世界所有相关研究人员使用。于是,在这两位教授努力下,一种叫做R的语言在奥克兰大学诞生了。R根本上是S-PLUS的翻版,但R是免费的语言,所有编程研究人员都可以对R语言做出贡献,且他们已经将大量研究成果写成了R命令或脚本,因而R语言的功能比拟强大,比拟全面。研究人员可免费使用R语言,可通过阅读R语言脚根源代码,学习其他人的研究成果。笔者曾有幸在奥克兰大学受过几年熏陶,曾经向一位统计系的教师提请教过一个数据模拟方面的问题。那位教师只用一行R语句就解答了。R语言的强大功能非常令人惊讶。 为了进一步推广R语言,为了方便更多研究人员学习使用R语言,我们收集了R语言时间序列分析实例,以供大家了解和学习使用。当然,这是非常简单的模仿练习,具体操作是,用复制粘贴把本材料中R代码放入R的编程环境;材料中蓝色背景的内容是相关代码和相应输出结果。经过反复模仿,学习者便能熟悉和学会。需要提醒学习者的是:建议学习者安装了R语言编程,再继续阅读本材料;执行R命令时,请删除命令的中文注解,没使用过在命令中参加中文;如果学习者是初次接触R或者Splus,建议先阅读,如果学习者比拟熟悉R语言,还可以阅读优秀时间序列读物Eometrics in R,也可以上QuickR 。目录R语言时间序列分析1前言1目录2JJ数据3192231323639401.运用R语言研究JJ数据 学习R言语时间序列分析程序操作,需要从最根底、最简单的学起,例如在命令窗口中,输入并执行2+2 等于4的R语言命令。2+2 1 4 执行完2+2 等于4的R语言命令后,我们可以开始时间序列,即学着把玩johnson & Johnson 数据。下载jj.dat或执行下面语句。这个数据已被人上传到因特网中。R所需要做的只是将网址进展扫描就可以将数据读取进入R的编程环境中。 下面有3种不同读取数据的方法:jj = scan(.stat.pitt.edu/stoffer/tsa2/data/jj.dat) # read the data读取数据jj jj # and another第三种方法读取数据 使用R语言的人,有的喜欢使用,大多数医疗系统的工作者喜欢用=,正因为如此才用了上面种不同读取数据的方法。 读取数据后,键入并执行jj,数据在窗口便会有如下显示:jj . . . . . . . . . . jj中有84个数据被称作对象。下面命令可以显示所有对象。objects()如果使用matlab,你会认为jj是一个84行1列的向量,但实际上不是这样。jj有次序,有长度,但没维度,R称这些对象为向量,要小心区别。在R里,矩阵有维度,但向量没维度。这都是程序语言的一些概念。jj1 # the first element列中第一个数据jj84 # the last element列中最后一个数据jj1:4 # the first 4 elements列中第一至第四个数据jj-(1:80) # everything EXCEPT the first 80 elements列中除第80个以外的所有数据length(jj) # the number of elements有多少个数据 1 84dim(jj) # but no dimensions .但没维度 NULLnrow(jj) # . no rows 没行 NULLncol(jj) # . and no columns没列 NULL#如果你要把jj转变为一个向量,执行如下操作后,维度为84行1列。jj = as.matrix(jj)dim(jj) 1 84 1 然后把jj转变为一个时间序列对象。jj = ts(jj, start=1960, frequency=4)#ts()命令这个数据是从1960年开始,个个季度的收入,frequency=4指四个季度。R语言的优势在于可用一条命令做很多事,即可以把前面的命令放在一起打包执行。其操作如下:jj = ts(scan( ), start=1960, frequency=4)在上面命令里,scan可以被read.table替代。用read.table读取数据可生成matrix对象,还可以给每列起名字。 下面学习一下read.table, data frames, 和时间序列对象。输入命令后,窗口会有如下显示:jj = ts(), start=1960, frequency=4) help(read.table)help(ts)help(data.frame) 需要注意的是,Scan和read.table不一样。Scan 生成的是有维度的向量,read.table生成的如此是带有维度的数据架构。 读取jj数据的最后要领。如果这个数据是从1960年第三个季度开始的,所需输入命令如此为ts(x,start=c(1960,3),frequency=4);如果是一个每月每月的数据,例如数据是从1984年6月开始的,需要输入的命令如此为ts(x,start=c(1984,6),frequency=12)。 输入命令后,转变后的时间序列对象为:jj Qtr1 Qtr2 Qtr3 Qtr4 . . . . . . . . . . 注意到区别了吗?时间信息,也就是4个不同的季度的数据被加载到里面了。 进展时间数据分析后,窗口会有如下显示:time(jj) Qtr1 Qtr2 Qtr3 Qtr4 . . . . . . . . . . . . 接下来输入如下组合命令。(jj = ts(scan(), start=1960, frequency=4) 然后进展对数据绘图:plot(jj, ylab=Earnings per Share, main=J & J) 输入以上命令后,可以看到如下结果: 再输入下面的命令,看看区别。plot(jj, type=o, col=blue, lty=dashed)plot(diff(log(jj), main=logged and diffed) 下面利用操作plot.ts和ts.plot两个相关命令,显示区别。x = -5:5 # sequence of integers from -5 to 5y = 5*cos(x) # guesspar(mfrow=c(3,2) # multifigure setup: 3 rows, 2 cols#- plot:plot(x, main=plot(x)plot(x, y, main=plot(x,y)#- plot.ts:plot.ts(x, main=plot.ts(x)plot.ts(x, y, main=plot.ts(x,y)#- ts.plot:ts.plot(x, main=ts.plot(x)ts.plot(ts(x), ts(y), col=1:2, main=ts.plot(x,y) # note- x and y are ts objects#- the help files ? and help() are the same:help(ts.plot)?par # might as well skim the graphical parameters help file while youre here从窗口中的显示可以看出,如果数据是时间序列对象,使用plot()命令就足够了;如果数据是平常序列,使用plot.ts()也可以做时间绘图。 不过,把jj数据放在一X图上,数据会随着时间的变化上上下下跳动,能从整体上反响上升或者下降的趋势。上文中用红色光滑的曲线代表上升的趋势,简单明了。这需要将过滤和光滑的技巧使用在jj数据上。在这里,我们用对称的移动平均值来达到过滤和光滑的目的。下面使用公式:fjj(t) =jj(t-2) + jj(t-1) + jj(t) + jj(t+1) + jj(t+2) 除此之外,lowess的过滤平滑技巧蓝色曲线也要使用在jj数据中。具体操作如如下图:k = c(.5,1,1,1,.5) # k is the vector of weights用于对称移动平均的系数(k = k/sum(k) fjj = filter(jj, sides=2, k) # ?filter for help but you knew that already使用对称移动平均plot(jj)lines(fjj, col=red) # adds a line to the existing plot称移动平均的绘图lines(lowess(jj), col=blue, lty=dashed)#lowess 的绘图 操作后,窗口会显示下面结果:看完jj数据,我们就需要开始具体分析。第一步,我们把所有jj数据都取log值。第二步,我们把log值做差,即使用log值数列中第二值减去第一值,第三值减去第二值,第四值减去第三值等等。如果做差处理前数列里有n个数值,处理后的结果中将有n-1个数值。dljj = diff(log(jj) # difference the logged data做log和差的处理plot(dljj) # plot it if you havent already对结果制图shapiro.test(dljj) # test for normality测试结果的正态分布的性质 Shapiro-Wilk normality test data: dljj 处理完毕以上两步,我们接下来就要将柱形分布图和 图放在一起。这两个图的本质仍旧在于测试数据正态分布的性质。数据正态分布的性质是整个统计学构架坚实的根底,如果这个性质的存在比拟可信、通过了所有测试,统计分析中得出的结论就比拟可信、就通得过所有测试。当然如果这个性质在数据中不存在,我们需要用其它的技巧来处理。详细的,参看R语言样品比拟应用的实例。以上操作,在窗口中有如下显示:par(mfrow=c(2,1) # set up the graphics 设置为两图的输出hist(dljj, prob=TRUE, 12) # histogram柱形分布图lines(density(dljj) # smooth it - ?density for details柱形分布图的曲线 norm(dljj) # normal Q-Q plot 图 line(dljj) # add a line 在 图 上 加 直线 经过测试数据后,窗口会有如下显示:在实践操作中,时间序列数据存在着前后关系。例如,今天股票的价格很有可能决定明天股票的价格。明天的温度取决于今天的气温。做天气预报的具体操作方法,是使用已经存在的天气历史记录,比如说今天的气温,昨天的气温,前天的气温等等,来预测明天的气温。当然,在进展预测之前,我们一定要看清时间序列数据中的前后关系结构,清楚哪一个特定的历史数据可以准确预测未来的数据。在这里,我们使用被log 和求差后的dljj数据,来介绍分析时间序列数据前后关系结构的具体技巧。 在预测的实际应用中,我们总希望用历史数据来预测即将要产生的数据。事实上,已产生的数据相对于即将产生的数据,中间存在着一定的延迟,也就是lag. 比方说在某天凌晨12点开始记录室内温度,每小时记一次,一共连续记录了10个小时。凌晨12点的数据和凌晨3点的数据之间就存在着延迟。12点的数据比3点的早了3个小时,可记作lag3. 3点的数据比12点的晚了3个小时,可记作lead3. 我们下面来介绍关联性。例如,冷饮的销量与天气温度存在关联性。温度越高冷饮销量就越高,温度越低冷饮销量也越低。这种关联性称为正面关联性。又如,人的体重和跑步速度也存在关联性。不过,人的体重越重,跑步速度就会越慢,体重越低,相对来讲,速度就会越快。这种关联性称为负面关联性。下面我们回到预测应用上。如果现在收集的数据与将来的数据之间存在着正面或者是负面的关联性,我们就可以用现在收集的数据来预测未来的数据。因此找到现在收集到的数据与未来数据之间的关联性是最关键的。找到这种关联性的具体技巧被称作延迟图表,也就是lag.plot. 我们可以在电脑里输入如下命令:lag.plot(dljj, 9, do.lines=FALSE) # why the do.lines=FALSE? . try leaving it out 上面语句显示了lag.plot用法,输入的数据是被log和作差后的jj.dat数据。其中9表示我们要考虑从1到9这9个不同的延迟。值得注意的是,在下面图表中显示出延迟4和8显示出了正面关系。其他几个延迟存在着负面关系。 我们可以利用这4和8的正面关系来进展预测,即用现有数据计算接下来的第4个或者是第8个数据。 下面我们来看ACF和PACF图表。 确定我们已经观察到的正面和负面关系。par(mfrow=c(2,1) # The power of accurate observation is monly called cynicism # by those who have not got it. - George Bernard Shawacf(dljj, 20) # ACF to lag 20 - no graph shown. keep readingpacf(dljj, 20) # PACF to lag 20 - no graph shown. keep reading# !NOTE! acf2 on the line below is NOT available in R. details follow the graph belowacf2(dljj) # this is what youll see below在上图中,ACF和PACF横坐标的标记是1,2,3,4,5. 但因为数据是季度性的,每年有4个季度所以1,2,3,4,5的标记代表的4,8,12,16,20的延迟。当然,如果我们不喜欢上面横坐标的标记,也可以将dljj更改为ts(dljj, freq=1); 也就是说acf(ts(dljj, freq=1), 20)。因为在上面ACF图表中横坐标1代表的是延迟4,横坐标2代表的是延迟6,其相应的竖线代表的就是延迟4和8的正面关系。 接下来,下面我们介绍结构拆析。在前面R代码中,我们曾将所有jj数据进展了lag变型。在变型后的数据中,存在着上升趋势,季节的影响和每一时间点产生的随机的误差。根据这一数据图,我们能够把趋势、季节和误差从变型后的jj数据中拆析出来,分别研究,或者分别进展绘图,以便于单独检查。下面等式代表将要使用的数学模型:Log(jj)=趋势+季节+误差log(jj) = trend + season + error结构拆析的R命令是stl(), 下面语句中stl命令中输入的是lag变型后的jj数据。其中的“per输入指的是使用季节循环来进展拆析。stl语句在这里生成了一个叫dog的R物件,然后Plot语句将dog物件进展绘图。具体操作如如下图plot(dog |t|) trend 0.167172 0.002259 74.00 2e-16 *Q1 1.052793 0.027359 38.48 2e-16 *Q2 1.080916 0.027365 39.50 2e-16 *Q3 1.151024 0.027383 42.03 2e-16 *Q4 0.882266 0.027412 32.19 2e-16 *-Signif. codes: 0 * 0.001 * 0.01 * 0.05 . 0.1 1 Residual standard error: 0.1254 on 79 degrees of freedomMultiple R-squared: 0.9935, Adjusted R-squared: 0.9931 F-statistic: 2407 on 5 and 79 DF, p-value: |t|) (Intercept) 69.01020 1.37498 50.190 2e-16 * part 0.15140 0.02898 5.225 2.56e-07 * part4 0.26297 0.02899 9.071 2e-16 * - Signif. codes: 0 * 0.001 * 0.01 * 0.05 . 0.1 1 Residual standard error: 8.323 on 501 degrees of freedom Multiple R-Squared: 0.3091, Adjusted R-squared: 0.3063 F-statistic: 112.1 on 2 and 501 DF, p-value: 2.2e-16 如上图所示,我们便获得了所研究需要的数据。 现在来介绍自动回归移动平均集成模型,即ARIMA模型。AR指自动回归,MA指移动平均,I指集成。 我们先来生成两个随机的自动回归数列,记为x1和x2。它们都是ar1数列,因为生成过程中使用order=c(1,0,0)的参数输入。X1的AR参数是+0.9,x2的AR参数是-0.9。 两个语句生成完毕后,我们以将这两个数列绘图出来。两个时间序列非常不同,x1的参数为+0.9,它的图像类似于股票价格的变动图形;x2的参数为-0.9, 它的图像看上去像是一列声波。窗口具体显示如下:x1 = arima.sim(list(order=c(1,0,0), ar=0.9), n=100) x2 = arima.sim(list(order=c(1,0,0), ar=-0.9), n=100)par(mfrow=c(2,1)plot(x1) plot(x2)在R语言中,ACF指自动关系性,ACF即Auto-Correlation Function的简称. 比方说,股票价格今天的价格跟昨天的价格有关系,明天的价格会跟今天的或者昨天的价格有关系。它们之间的关系性便用ACF来衡量。PACF被称作不完全自动关系性。自动关系性ACF中存在着线性关系性和非线性关系性。不完全自动关系性就是把线性关系性从自动关系性中消除。如果在线性关系性被去除以后,两个时间点之间的关系性也就是不完全关系性。当PACF近似于0,这明确两个时间点之间的关系性是完全由线性关系性所造成的。如果不完全关系性在两个时间点之间不近似于0,这明确线性模型是不能够表达这两个时间点之间的关系。我们用下面的语句来检验x1和x2数列中的ACF和PACF。par(mfcol=c(2,2)acf(x1, 20)acf(x2, 20)pacf(x1, 20)pacf(x2, 20)对数列x1来讲,ACF从lag1到lag12都高于蓝色虚线,也就是说两个时间点的距离在1到12之间它们的自动关系都是正面的。所有线性关系在x1数列中被去除了结果是Partial ACF的x1图表。在PACF x1图表上可以看到只有lag0值为1,其他的lag上的关系值都低于蓝色虚线,近似于0,也就是说在x1数列中存在的自动关系根本上是线性关系。使用线性模型可以符合x1数列的要求。对数列x2来讲,两个时间点之间的ACF关系有负面的也有正面的,但经过去除线性关系以后所有不完全自动关系都接近于0,也就是说x2数列中的自动关系也根本上是线性的。使用线性模型符合x2数列要求。下面,我们来介绍移动平均MA模型。我们先用ARIMA.SIM()命令生成一个移动平均的数据列。不同的是,order=c(0,0,1),ma1代表生成的数列,ma是一个参数,设置为+0.8,数列中有100个数据。其余3行命令是用来设置输出窗口绘制图表和计算ACF,PACF数值的。 经过一系列操作后,代码与其结果如下所示:# an MA1 x = arima.sim(list(order=c(0,0,1), ma=.8), n=100)par(mfcol=c(3,1)plot(x, main=(expression(MA(1)theta=.8)acf(x,20)pacf(x,20)需要注意的是,因数据都是随机生成的,我们在重新运行这些命令时,生成的数据会与以前所生成的数据完全不同,其结果也不一样。除非在以上代码的前面使用随机锁定的命令set.seed(1),每次生成的就是一样的数据了。当然也可以用set.seed(100),和其它数字输入都是可以的。在上图中,MA1代表了数列输出的结果。最上面显示的是数列的数目,横向坐标从1到100代表有100个数据。中间的图显示的是x数列的自动关系性,在lag0上有很强的自动关系性,因为Lag0表示没时间延迟,当前数据与它有完全的关系性。所以lag0上的关系性什么都不代表。而Lag1上存在着正面的关系性,即当前数据与前一个数据的关系性是正面的。其他延迟上的自动关系性都近似于0,可以不被考虑。order=c(2,0,0)代表AR2模型。下面,我们来看生成AR2数列与分析结果。在这里,需要有两个AR参数1和-0.9。输入相关命令后,小窗会有如下显示:# an AR2x = arima.sim(list(order=c(2,0,0), ar=c(1,-.9), n=100) par(mfcol=c(3,1)plot(x, main=(expression(AR(2)phi1=1phi2=-.9)acf(x, 20)pacf(x, 20) 接下来,我们介绍一下如何生成ARIMA1,1,1模型的随机数列。其中的设置order=c(1,1,1)说明该数列是ARIMA模型,且AR的参数为0.9,MA的参数为0.5,数列长度为200。输入相关命令后,小窗会有如下显示:# an ARIMA(1,1,1)x = arima.sim(list(order=c(1,1,1), ar=.9, ma=-.5), n=200)par(mfcol=c(3,1)plot(x, main=(“expression(ARIMA(1,1,1)phi=.9theta=-.5)acf(x, 30) # the process is not stationary, so there is no population PACF . pacf(x, 30) # but look at the sample values to see how they differ from the examples above 我们再介绍一下自动回归移动平均集成模型的估计分析,即ARIMA模型。也就是说,我们手头上有一个时间序列数据,如果知道这个数据是被ARIMA模型生成的,我们希望能估计具体的ARIMA模型的参数,可以对整个数据生成的过程进展重演和预测。下面,我们随机生成一些ARIMA模型的数据,并且假装我们不知道模型的参数,然后做估计练习。 生成ARIMA数据的命令为arima.sim(). 自动回归的参数为0.9,移动平均的参数为-0.5,估计中要假设这两个参数的设置为未知,并进展估计。计算估计值的命令为arima()。其中,x指随机生成的数据。在下面的输出中,我们可以看到AR参数的估计值为0.8465, ma的参数估计值为-0.5021,这两个估计值与前面生成数据时设置的参数非常相似。也就是说,估计得比拟准确。具体操作和显示如下所示:x = arima.sim(list(order=c(1,0,1), ar=.9, ma=-.5), n=100) # simulate some data(x.fit = arima(x, order = c(1, 0, 1) # fit the model and print the resultsCall: arima(x = x, order = c(1, 0, 1) Coefficients: ar1 ma1 intercept - NOT the intercept - see R Issue 1 下面来介绍衡量参数估计的可信度的方法。我们对估计的模型进展检测和评估,需要执行的命令为tsdiag()。其中,x.fit指代估计出来的模型。这个语句输出的结果如以下几个图表所示。第一个图表代表估计模型误差的绘图。英文叫做Standardized Residuals, 上面有很多竖线在横向坐标的上下分布。如果这个估计的模型比拟可信,竖线的长度是比拟相似的。如果竖线的长度互相有很大出入或者根本就不同,估计模型的可信度就非常差。下面误差绘图中竖线的长度比拟相似,都处在稳定X围之内,即估计的模型没产生不符合要求的误差分布。再介绍输出的第二X绘图,标题是ACF of Residuals。ACF指数据点相互之间的关系,当然在生成这个数据时,数据点之间互相独立,并不存在任何关系。所以在这X图上,只有位于0刻度上的竖线最高,其ACF值为1。 这个0代表数据点与自己相比拟, 即数据点永远和它自己有关系,这种关系数值为1。其他横向数轴上的刻度代表一个数据点于其他数据点之间的关系,这些刻度上竖线的长度几乎等于0,即这个数据点与其他数据点没明显关系。这XACF图代表估计的模型没造成误差之间的任何关系。这是符合数据生成时每个数据都是独立的这个前提的。由此可见,这ACF图符合检测要求。下面来介绍第三X图,也就是Ljung-Box 指标。这个指标可对每一个时间序列的延迟进展显著性的评估。这X图的横坐标代表时间序列的延迟,纵坐标代表P-value,即显著性。如果P-value十分小,就说明在其相对应的延迟点上是显著的。我们就需要抛弃所假设的模型,并且结论在所假设的模型不可信。需要注意的是,他们使用假设的模型对一个时间序列进展估计,如果P-value是显著的话,我们使用的模型就不可信,需要尝试其他新模型。具体判定技巧是,P-value点的高度越高,我们的模型越可信。tsdiag(x.fit, gof.lag=20) # you know the routine- ?tsdiag for detailsx = arima.sim(list(order=c(1,0,1), ar=.9, ma=-.5), n=100) # simulate some data(x.fit = arima(x, order = c(1, 0, 1) # fit the model and print the resultstsdiag(x.fit, gof.lag=20) # you know the routine- ?tsdiag for details在对模型的参数进展了估计后,我们接下来要对这些估计的参数进展预测。我们需要做的是向前预测10个数据点。预测所使用的语句是predict(). 在()中输入x.fit 和n.ahead =10 ,其中x.fit 代表前面估计出来的模型与参数,n.ahead =10 代表向前预测10个数据点。这条语句给我们生成的预测程序项目,被命名为x.fore. 在下面两条语句中,计算了两列的新数据,分别被称为U和L. U指最高界限,L指最低界限。 最高限和最低限告诉我们未来数据有很高可能性事发生在两个界限之间,超出或低于这两个界限的几率并不高。 下一步使用Min 和 Max条语句,把数据中的最大值和最小值挑选出来,为接下来的统计绘图设置图标界限。再使用TS.PLOT()语句. 把原有的数据和向前预测10个数据点的数据绘在一X图上。最后使用lines()语句,把计算的最高界限和最低界限加到绘好的图上。这两条界限的颜色为蓝色,形式也被设置为虚线的形式。x.fore = predict(x.fit, n.ahead=10) # plot the forecastsU = x.fore$pred + 2*x.fore$seL = x.fore$pred - 2*x.fore$seminx=min(x,L)maxx=max(x,U)ts.plot(x,x.fore$pred,col=1:2, ylim=c(minx,maxx)lines(U, col=blue, lty=dashed)lines(L, col=blue, lty=dashed) 下面的绘图是由上面的语句所完成的。图右侧除去原有的数据外,又加上了三条曲线。最上面和最下面的曲线是虚线,是计算出的最高界限和最低界限。中间的曲线为实线,是对未来的10个数据点进展的预测。在计算最高、最低限时,我们使用了一个2的系数,也就是说,这两个界限之间的几率为95%。 在未来的10个数据点有95%的几率是出现在上限和下限之间的。 而出现在两个界限之外的几率小于或等于5%。 下面,来介绍R语言在全球温度变暖研究中的应用。我们将全球温度变暖研究的数据叫globtemp2.dat. 数据中有3列,第二列指全球每年温度从1880年开始到2004年。这个数据已经在网上已公布,我们只需要用下面语句读取就行。第一条语句读取全球温度数据生成一个叫做u的数列矩阵;第二条语句读取的第二列数据变成时间序列,命名为gtemp;第三条语句是将gtemp数据绘成图来看温度变化的具体情况。操作以后,窗口里会有如下显示:u =read.table(globtemp2.dat) # read the datagtemp = ts(u,2, start=1880, freq=1) # yearly temp in col 2plot(gtemp) # graph the series (not shown here) oC每世纪的漂移。这也就是所谓全球变暖理论。下面我们要计算出具体模型。我们有近200年的气温数据,且知道具体模型是ARIMA,下面我们需要估计AR和MA的具体数值。语句如下,我们从结果中可以看到AR的数值为0.2545,MA的数值为-0.7742.电脑窗口命令具体显示如下:arima(gtemp, order=c(1,1,1) Coefficients: ar1 ma1 s.e. 0.1141 0.0651 下面,我们就来介绍漂移参数的估计方法。具体操作如下所示:drift = 1:length(gtemp)arima(gtemp, order=c(1,1,1), xreg=drift) Coefficien
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!