Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何隔离此方法的绘图?_R_Statistics_Time Series_Data Visualization - Fatal编程技术网

R 如何隔离此方法的绘图?

R 如何隔离此方法的绘图?,r,statistics,time-series,data-visualization,R,Statistics,Time Series,Data Visualization,我正在使用这个软件包,我安装了一个模型。现在我想看看输出并使用plot函数。我的问题是,第5个绘图包含一些子绘图,这些子绘图绘制在一个设备中,但我想在单个设备中绘制每个子绘图。我该怎么做?作为示例,我给您提供了一个代码示例,它使用包的sp500ret数据: 守则: library(rugarch) data(sp500ret) somemodel<-ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(2, 2

我正在使用这个软件包,我安装了一个模型。现在我想看看输出并使用plot函数。我的问题是,第5个绘图包含一些子绘图,这些子绘图绘制在一个设备中,但我想在单个设备中绘制每个子绘图。我该怎么做?作为示例,我给您提供了一个代码示例,它使用包的sp500ret数据:

守则:

library(rugarch)
data(sp500ret)

somemodel<-ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(2, 2)), 
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), 
distribution.model = "ged")

somefit<-ugarchfit(spec=somemodel,data=sp500ret)

rollingesti = ugarchroll(somemodel, sp500ret, n.start=500,
 refit.every = 100, refit.window = 'moving', window.size = 500, 
  calculate.VaR = FALSE, keep.coef = TRUE)

plot(rollingesti,which=5)
库(rugarch)
数据(sp500ret)

somemodel您的示例不起作用(至少对我来说),即它不收敛。然而,这一点是有效的:

library(rugarch)
data(sp500ret)
spec <- ugarchspec(distribution.model = "std")
mod <- ugarchroll(spec, data = sp500ret[1:2000,], n.ahead = 1, 
                 n.start = 1000,  refit.every = 100, refit.window = "moving", 
                 solver = "hybrid", fit.control = list(),
                 calculate.VaR = TRUE, VaR.alpha = c(0.01, 0.025, 0.05),
                 keep.coef = TRUE)
您对以下几行感兴趣

.intergarchrollPlot(x, choices = choices, plotFUN = paste(".plot.garchroll", 
            1:5, sep = "."), which = which, VaR.alpha = VaR.alpha, 
            density.support = density.support, ...)
其中,
选项
“拟合系数(带s.e.带)”
。通过检查
rugarch::.intergarchrollPlot
我们最终到达
rugarch::.plot.garchroll.5
。这些图不会在任何列表或类似列表中返回,因此我提供了一个稍加修改的版本,以便您可以单独使用它们。在这里,我更改了前两行和最后一行:

library(xts)
x <- mod
vmodel = x@model$spec@model$modeldesc$vmodel
if (!x@model$keep.coef) 
  stop("\n\nplot-->error: keep.coef set to FALSE in estimation\n")
coefs = x@model$coef
m = dim(coefs[[1]]$coef)[1]
N = length(coefs)
Z = matrix(NA, ncol = m, nrow = N)
Zup = matrix(NA, ncol = m, nrow = N)
Zdn = matrix(NA, ncol = m, nrow = N)
for (i in 1:m) {
  Z[, i] = sapply(coefs, FUN = function(y) y$coef[i, 1])
  Zup[, i] = Z[, i] + sapply(coefs, FUN = function(y) y$coef[i, 
                                                             2])
  Zdn[, i] = Z[, i] - sapply(coefs, FUN = function(y) y$coef[i, 
                                                             2])
}
dt = sapply(coefs, FUN = function(y) as.character(y$index))
cnames = rownames(coefs[[1]]$coef)
np = rugarch:::.divisortable(m) # added rugarch:::
例如:

plotFun(1)
plotFun(2)

运行代码时,我会遇到以下错误(在somemodelerror中:cond.distribution似乎不是一个有效的选择。
。也许这是我正在使用的r的版本,但对我来说,示例是不可复制的…代码中有几个错误。distribution.model=“GED”应该是distribution.model=“GED”。和spmodel不存在。@thijsvandenbergh好的,抱歉,我更正了错误!Rugarch仅适用于R版本>=3.00。我还添加了绘图输出。@PLapointe感谢您的提示!我仍在搜索答案,所以任何提示都很好!谢谢,我需要时间检查您的代码并理解它。我会回来询问更多问题ns或接受您的答案。感谢您的回答,我现在已经检查了代码,它可以正常工作。因此,我将接受您的答案。但最后一个问题:我知道,我可以通过命令coef(mod)获得用于创建绘图的值。这些是估计值及其使用的sd.错误。但是我如何获得这些输出的独立值?例如coef(mod)[1]给出了一个特定窗口的ω等的估计值。现在,我想提取,例如,这个时间点(这个窗口)的ω估计值。我想对coef(mod)的所有元素进行此操作,以获得具有相应日期的孤立值,这样我就可以使用plot(value,date)自己重新创建绘图那么,我如何才能做到这一点呢?关于绘图本身的一个小问题是,我如何才能得到更详细的y轴?y轴上的刻度更详细?@statistian,
coef(mod)
是一个列表列表,所以
coef(mod)[[1]]
返回第一个窗口的列表。它有两个元素:
index
coef
,因此据我所知,您需要的是一个矩阵
coef(mod)[[1]]$coef
,尤其是一列估计值
coef(mod)[[1]]$coef 1]
。您关于记号的问题的答案似乎不适合于注释:这有点复杂,因为
绘图。xts
本身绘制
轴(1,
轴(2,
)。但是,似乎使用了最大记号数(至少在我的示例中),您是否尝试缩放绘图?然后会出现更多标签
plotFun <- function(i){
  plot(xts(Z[, i], as.POSIXct(dt)), type = "l", 
       ylim = c(min(Zdn[, i]), max(Zup[, i])), ylab = "value", xlab = "", main = "", 
       minor.ticks = FALSE, ann = FALSE, auto.grid = FALSE)
  lines(xts(Zdn[, i], as.POSIXct(dt)), col = 2)
  lines(xts(Zup[, i], as.POSIXct(dt)), col = 2)
  title(cnames[i], line = 0.4, cex = 0.9)
  grid()
}
plotFun(1)
plotFun(2)