提取 ARIMA 规范 [英] extract ARIMA specificaiton

查看:22
本文介绍了提取 ARIMA 规范的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从 auto.arima() 打印拟合模型对象包括一行,例如
"有漂移的 ARIMA(2,1,0),"
这将是一个很好的项目,可以包含在说明拟合模型的 sweave(或其他)输出中.是否可以将该行提取为块?在这一点上,我所做的最好的事情是从 arma 组件中提取适当的顺序(可能与拟合模型系数名称中的措辞相结合,例如漂移"或非零均值".)

Printing a fitted model object from auto.arima() includes a line such as
"ARIMA(2,1,0) with drift,"
which would be a nice item to include in sweave (or other) output illustrating the fitted model. Is it possible to extract that line as a block? At this point the best I am doing is to extract the appropriate order from the arma component (possibly coupled with verbiage from the names of the coefficients of the fitted model, e.g., "with drift" or "with non-zero mean.")

# R 3.0.2 x64 on Windows, forecast 5.3 
library(forecast)  
y <- ts(data = c(-4.389, -3.891, -4.435, -5.403, -2.501, -1.858, -4.735, -1.085, -2.701, -3.908, -2.520, -2.009, -6.961, -2.891, -0.6791, -1.459, -3.210, -2.178, -1.972, -1.207, -1.376, -1.355, -1.950, -2.862, -3.475, -1.027, -2.673, -3.116, -1.290, -1.510, -1.736, -2.565, -1.932, -0.8247, -2.067, -2.148, -1.236, -2.207, -1.120, -0.6152), start = 1971, end = 2010)  
fm <- auto.arima(y)  
fm  

# what I want is the line: "ARIMA(2,1,0) with drift`"  

str(fm)  
paste("ARIMA(", fm$arma[1], ",", fm$arma[length(fm$arma)-1], ",", fm$arma[2], ") with ",intersect("drift", names(fm$coef)), sep = "")

推荐答案

检查 auto.arima 函数,我注意到它内部调用了另一个名为 arima.string 的函数>.

Checking the auto.arima function, I noticed it internally calls another function which is named arima.string.

然后我做到了:

getAnywhere(arima.string)

输出是:

A single object matching ‘arima.string’ was found
It was found in the following places
namespace:forecast
with value

function (object) 
{
order <- object$arma[c(1, 6, 2, 3, 7, 4, 5)]
result <- paste("ARIMA(", order[1], ",", order[2], ",", order[3], 
    ")", sep = "")
if (order[7] > 1 & sum(order[4:6]) > 0) 
    result <- paste(result, "(", order[4], ",", order[5], 
        ",", order[6], ")[", order[7], "]", sep = "")
if (is.element("constant", names(object$coef)) | is.element("intercept", 
    names(object$coef))) 
    result <- paste(result, "with non-zero mean")
else if (is.element("drift", names(object$coef))) 
    result <- paste(result, "with drift        ")
else if (order[2] == 0 & order[5] == 0) 
    result <- paste(result, "with zero mean    ")
else result <- paste(result, "                  ")
return(result)

}

然后我复制了函数代码并将其粘贴到一个名为 arima.string1

Then I copied the function code and pasted it in a new function which I named arima.string1

arima.string1(fm)

# [1] "ARIMA(2,1,0) with drift        "

这篇关于提取 ARIMA 规范的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆