Mam 2 szeregi czasowe i używam ccf
, aby znaleźć korelację krzyżową między nimi. ccf(ts1, ts2)
zawiera listę korelacji krzyżowych dla wszystkich opóźnień czasowych. Jak mogę znaleźć opóźnienie, które powoduje maksymalną korelację bez ręcznego przeglądania danych?Znalezienie opóźnienia, w którym korelacja krzyżowa jest maksymalna ccf()
Odpowiedz
zamieszczaniu odpowiedź http://r.789695.n4.nabble.com/ccf-function-td2288257.html
Find_Max_CCF<- function(a,b)
{
d <- ccf(a, b, plot = FALSE)
cor = d$acf[,,1]
lag = d$lag[,,1]
res = data.frame(cor,lag)
res_max = res[which.max(res$cor),]
return(res_max)
}
Dlaczego dwa przecinki są używane w cor = c $ acf [,, 1] i opóźnieniu? – Anusha
pomyślałem, że powtórzyć powyższą funkcję ale to znaleźć absolutny max korelację, która zwraca oryginalny korelację (dodatnią lub ujemną). Wyzerowałem też (prawie) liczbę opóźnień.
Find_Abs_Max_CCF<- function(a,b)
{
d <- ccf(a, b, plot = FALSE, lag.max = length(a)-5)
cor = d$acf[,,1]
abscor = abs(d$acf[,,1])
lag = d$lag[,,1]
res = data.frame(cor,lag)
absres = data.frame(abscor,lag)
absres_max = res[which.max(absres$abscor),]
return(absres_max)
}
I został zmodyfikowany pierwotny roztwór, a także, w celu pętli na wyjściu funkcji i wartości odpowiadające wektora postaci indeksów (x):
abs.max.ccf <- function(x,a,b) {
d <- ccf(a, b, plot=FALSE, lag.max=length(a)-5)
cor <- d$acf[,,1]
abscor <- abs(d$acf[,,1])
lag <- d$lag[,,1]
abs.cor.max <- abscor[which.max(abscor)]
abs.cor.max.lag <- lag[which.max(abscor)]
return(c(x, abs.cor.max, abs.cor.max.lag))
}
I usunąć data.frame
część w ramach funkcji, ponieważ jest niepotrzebnie powolna. Pętli na każdej kolumnie w data.frame
i zwraca wynik do nowego data.frame
, używać tej metody:
max.ccf <- lapply(colnames(df), function(x) unlist(abs.max.ccf(x, df$y, df[x])))
max.ccf <- data.frame(do.call(rbind, max.ccf))
colnames(max.ccf) <- c('Index','Cor','Lag')
Ponieważ 3 jest większy niż 4, to również miał uderzają w modyfikacji tej funkcji, tym razem poprzez wprowadzenie pomysł z here:
ccfmax <- function(a, b, e=0)
{
d <- ccf(a, b, plot = FALSE, lag.max = length(a)/2)
cor = d$acf[,,1]
abscor = abs(d$acf[,,1])
lag = d$lag[,,1]
res = data.frame(cor, lag)
absres = data.frame(abscor, lag)
maxcor = max(absres$abscor)
absres_max = res[which(absres$abscor >= maxcor-maxcor*e &
absres$abscor <= maxcor+maxcor*e),]
return(absres_max)
}
zasadniczo „error” termin jest dodana, tak, że jeśli istnieje kilka wartości bliskie maksimum, wszyscy się wrócił, np:
ayy <- jitter(cos((1:360)/5), 100)
bee <- jitter(sin((1:360)/5), 100)
ccfmax(ayy, bee, 0.02)
cor lag
348 0.9778319 -8
349 0.9670333 -7
363 -0.9650827 7
364 -0.9763180 8
Jeśli żadna wartość dla e
nie jest podana, przyjmuje się, że jest równa zero, a funkcja zachowuje się tak samo, jak ta, którą opublikowano nvogen.
- 1. Korelacja IComMethodEvents
- 2. Ważona korelacja Pearsona?
- 3. Opóźnienia w animacji (TranslateAnimation)
- 4. Scipy: korelacja odległości jest większa niż 1
- 5. Korelacja między kolumnami w DataFrame
- 6. Znajdowanie max_element wektora, w którym członek jest używany do decydowania, czy jego maksymalna wartość to
- 7. Korelacja wartości varchar
- 8. Kompilacja krzyżowa php
- 9. Korelacja komputerowa Pyspark
- 10. Korelacja między dwoma wektorami?
- 11. UPDATE tabela krzyżowa w Sqlite3
- 12. duże opóźnienia w AcquireRequestState
- 13. przeglądarka krzyżowa jquery nieprzezroczystości?
- 14. Przeglądarka krzyżowa SVG preserveAspectRatio
- 15. 10-krotna walidacja krzyżowa
- 16. znalezienie wartości NaN jest tablica komórek
- 17. Dżungla krzyżowa Entropy
- 18. Zapytanie MySQL umożliwiające znalezienie rekordu podrzędnego, w którym wpisy w drugiej podrzędnej tabeli nie są zgodne.
- 19. Jaka jest maksymalna liczba plików na słoik?
- 20. Jaka jest maksymalna długość ListProperty?
- 21. Jaka jest maksymalna wartość NSIntegera?
- 22. Debugowanie, w którym zwracana jest metoda Brak
- 23. jquery get element, w którym kursor jest
- 24. Three.js: Uzyskaj kierunek, w którym jest kamera
- 25. Co to jest korelacja między HBase i HCatalog?
- 26. Jaka jest maksymalna wartość całkowita w Flex?
- 27. Jaka jest maksymalna długość wyciągu w Oracle
- 28. Jaka jest maksymalna scrape_interval w Prometeuszu
- 29. Jaka jest maksymalna długość łańcucha w PHP?
- 30. Uzyskaj wysokość strony w JS (przeglądarka krzyżowa)
Ok znalazłem odpowiedź tutaj http://r.789695.n4.nabble.com/ccf-function-td2288257.html – tan
Dlaczego nie umieszczasz tego jako odpowiedzi i nie uznawaj plakatów z listy mailingowej pomocy R ? –
Tak, zrobiłbym tak, ale nie mam wystarczającej liczby punktów reputacji, aby odpowiedzieć na moje własne pytanie. – tan