如何在 R 中使用 ccf 设置互相关的置信度
How to set the confidence level for cross correlation using ccf in R
在 ccf 中,当我选择 plot=TRUE 时,我会得到一个图,它为我在每个滞后的互相关提供 95% 的置信区间截止值。
我的问题是,如果我想使用 90% 的置信水平,我该怎么做?谢谢。
我相信通过设置 Plot=T
,ccf 函数将其结果传递给 acf,然后传递给 plot.acf函数。 plot.acf 是计算置信区间的地方。你可以用“:::”设备看到它
stats:::plot.acf
你应该会看到类似的东西:
function (x, ci = 0.95, type = "h", xlab = "Lag", ylab = NULL .....etc.
建议在ccf函数中设置plot=F
,然后使用plot 单独运行,改变置信区间 (ci)。您可以使用以下代码执行此操作:
plot(x, ci = 0.90, type = "h", xlab = "Lag", ylab = NULL,
ylim = NULL, main = NULL,
ci.col = "blue", ci.type = c("white", "ma"),
max.mfrow = 6, ask = Npgs > 1 && dev.interactive(),
mar = if(nser > 2) c(3,2,2,0.8) else par("mar"),
oma = if(nser > 2) c(1,1.2,1,1) else par("oma"),
mgp = if(nser > 2) c(1.5,0.6,0) else par("mgp"),
xpd = par("xpd"),
cex.main = if(nser > 2) 1 else par("cex.main"),
verbose = getOption("verbose"),
...)
LINK:
https://stat.ethz.ch/R-manual/R-devel/library/stats/html/plot.acf.html
由于您没有提供任何实际示例数据,我将向您展示一个包含两个常见时间序列的示例:recruit.dat 和 soi.dat。逐行 运行 这个脚本并尝试理解每一行的作用。
#import data from web:
soi = ts(scan("http://anson.ucdavis.edu/~shumway/soi.dat"), start=1950, frequency=12)
rec = ts(scan("http://anson.ucdavis.edu/~shumway/recruit.dat"), start=1950, frequency=12)
#run simple ccf function with plot=F
ccfvalues =ccf (soi, rec, plot=F)
#now run a plot function, with the desired confidence interval. Simple as that!
plot (ccfvalues, ci=0.90, type = "h", xlab = "Lag", ylab = NULL,ylim = NULL, main = NULL,ci.col = "blue", ci.type = c("white", "ma"),max.mfrow = 6, ask = Npgs > 1 && dev.interactive(),mar = if(nser > 2) c(3,2,2,0.8) else par("mar"),oma = if(nser > 2) c(1,1.2,1,1) else par("oma"),mgp = if(nser > 2) c(1.5,0.6,0) else par("mgp"),xpd = par("xpd"),cex.main = if(nser > 2) 1 else par("cex.main"),verbose = getOption("verbose"))
将 soi 和招募数据替换为您自己的数据,一切就绪!
希望有用!
在 ccf 中,当我选择 plot=TRUE 时,我会得到一个图,它为我在每个滞后的互相关提供 95% 的置信区间截止值。 我的问题是,如果我想使用 90% 的置信水平,我该怎么做?谢谢。
我相信通过设置 Plot=T
,ccf 函数将其结果传递给 acf,然后传递给 plot.acf函数。 plot.acf 是计算置信区间的地方。你可以用“:::”设备看到它
stats:::plot.acf
你应该会看到类似的东西:
function (x, ci = 0.95, type = "h", xlab = "Lag", ylab = NULL .....etc.
建议在ccf函数中设置plot=F
,然后使用plot 单独运行,改变置信区间 (ci)。您可以使用以下代码执行此操作:
plot(x, ci = 0.90, type = "h", xlab = "Lag", ylab = NULL,
ylim = NULL, main = NULL,
ci.col = "blue", ci.type = c("white", "ma"),
max.mfrow = 6, ask = Npgs > 1 && dev.interactive(),
mar = if(nser > 2) c(3,2,2,0.8) else par("mar"),
oma = if(nser > 2) c(1,1.2,1,1) else par("oma"),
mgp = if(nser > 2) c(1.5,0.6,0) else par("mgp"),
xpd = par("xpd"),
cex.main = if(nser > 2) 1 else par("cex.main"),
verbose = getOption("verbose"),
...)
LINK: https://stat.ethz.ch/R-manual/R-devel/library/stats/html/plot.acf.html
由于您没有提供任何实际示例数据,我将向您展示一个包含两个常见时间序列的示例:recruit.dat 和 soi.dat。逐行 运行 这个脚本并尝试理解每一行的作用。
#import data from web:
soi = ts(scan("http://anson.ucdavis.edu/~shumway/soi.dat"), start=1950, frequency=12)
rec = ts(scan("http://anson.ucdavis.edu/~shumway/recruit.dat"), start=1950, frequency=12)
#run simple ccf function with plot=F
ccfvalues =ccf (soi, rec, plot=F)
#now run a plot function, with the desired confidence interval. Simple as that!
plot (ccfvalues, ci=0.90, type = "h", xlab = "Lag", ylab = NULL,ylim = NULL, main = NULL,ci.col = "blue", ci.type = c("white", "ma"),max.mfrow = 6, ask = Npgs > 1 && dev.interactive(),mar = if(nser > 2) c(3,2,2,0.8) else par("mar"),oma = if(nser > 2) c(1,1.2,1,1) else par("oma"),mgp = if(nser > 2) c(1.5,0.6,0) else par("mgp"),xpd = par("xpd"),cex.main = if(nser > 2) 1 else par("cex.main"),verbose = getOption("verbose"))
将 soi 和招募数据替换为您自己的数据,一切就绪! 希望有用!