2016-07-03 3 views
2

Я вычислил кросс-корреляции двух временных рядов с использованием ccf() в R. Я знаю, как получить доверительные границы, как:Как вычислить р-значения из кросс-корреляционной функции в R

ccf1 <- ccf(x=x,y=y,lag.max=5,na.action=na.pass, plot=F) 
upperCI <- qnorm((1+0.95)/2)/sqrt(ccf1$n.used) 
lowerCI <- -qnorm((1+0.95)/2)/sqrt(ccf1$n.used) 

Но что Мне действительно нужно p-значение максимальной корреляции.

ind.max <- which(abs(ccf1$acf[1:11])==max(abs(ccf1$acf[1:11]))) 
max.cor <- ccf1$acf[ind.max] 
lag.opt <- ccf1$lag[ind.max] 

Как рассчитать это значение p? Я искал высокий и низкий, но не могу найти хороший ответ нигде.

ответ

3

Получение значения p прямолинейно.

Под Нулевая гипотеза о том, что корреляция 0, то, как правило, распределяется:

Z ~ N(0, 1/sqrt(ccf1$n.used)) 

Так для наблюдаемой максимальной корреляции max.cor, его значение р есть вероятность Pr(Z > |max.cor|), которая может быть вычислена:

2 * (1 - pnorm(abs(max.cor), mean = 0, sd = 1/sqrt(ccf1$n.used))) 

Последующая деятельность

Действительно ли это так просто? ccf вычисляет множество корреляций сразу!

Вы говорите, что ccf вычисляет корреляции при разных задержках? Хорошо, если у вас есть большое количество наблюдений N, стандартное отклонение ACF при каждом отставании одинаково: 1/sqrt(N). Вот почему доверительный интервал - две горизонтальные линии.

+0

Это действительно так просто? Я думал, что для меня есть какой-то улов, потому что ccf вычисляет сразу несколько корреляций? – struggleBus

+0

О, отлично! Спасибо! – struggleBus

Смежные вопросы