В ccf, Когда я даю опцию plot = TRUE, я получу график, который дает мне 95% доверительных интервалов для моих кросс-корреляций при каждое отставание. Мой вопрос: если я хочу использовать уровень доверия 90%, как я могу это сделать? Благодарю.Как установить уровень достоверности для кросс-корреляции с использованием ccf в R
ответ
Я считаю, что, установив Plot=T
, CCF функция передает свои результаты ACF, а затем в plot.acf функции. plot.acf где рассчитывается доверительный интервал. Вы можете увидеть его с ":::" устройства
stats:::plot.acf
Вы должны увидеть что-то simmilar:
function (x, ci = 0.95, type = "h", xlab = "Lag", ylab = NULL .....etc.
Я предлагаю вам установить plot=F
в CCF функции, а затем использовать участок функция отдельно, изменение доверительного интервала (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 и сой .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 и набирайте данные своими силами, и все готово! Надеюсь, это сработает!
Благодарим вас за ответ. Но я получаю эту ошибку при использовании функции plot(), которую вы даете мне в качестве примера. ccf = ccf (mei [, 2], n.mt1021960 [, names (n.mt1021960) == 'Annual']) Затем я заменяю x в вашей функции plot() ccf, и я получаю это: Ошибка: «...» используется в некорректном контексте. Не могли бы вы мне помочь? Благодарю. –
x следует заменить вашими результатами! – Dfinzgar
Если вы публикуете свой код, я могу исправить его для вас. – Dfinzgar
Если это поможет, если вы включили [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) с образцами входных данных и кодом, который вы бегут. Выясните, какие пакеты и функции вы используете. – MrFlick