簡體   English   中英

從 R 中的自定義 CCF 函數收集的錯誤值

[英]Wrong values collected from custom CCF function in R

這是對這里提出的問題的后續問題...... 基於 R 中 ccf 值輸出的象限圖

原始問題和這個問題使用相同的數據......

df <- structure(list(Date = structure(c(16222, 16617, 14518, 15156, 
15918, 17075, 15522, 16679, 16010, 15187, 15461, 16283, 17379, 
15553, 17410, 15553, 16191, 16314, 14549, 15979), class = "Date"), 
    Commonname = c("Black Sea Bass", "Pinfish", "Pigfish", "Pinfish", 
    "Silver Perch", "Black Sea Bass", "Pigfish", "Pinfish", "Pigfish", 
    "Silver Perch", "Silver Perch", "Black Sea Bass", "Pinfish", 
    "Pinfish", "Silver Perch", "Pigfish", "Black Sea Bass", "Silver Perch", 
    "Silver Perch", "Black Sea Bass"), CPUE = c(1.25513090974505, 
    9.41478783154444, 1.63667465565289, 3.13779141143018, 4.26313144106683, 
    2.32564938844104, 2.70394855189782, 8.49969670589948, 1.7329255861366, 
    2.0845409179642, 0.269832703723692, 1.21288437532366, 11.8739506505966, 
    8.55504246458105, 2.21256794002004, 4.51336797979511, 1.47695928524315, 
    1.10425042966867, 0.632732705722451, 1.59167844861806), Discharge = c(14.8521616, 
    5.23042759111111, 1.42663083211115, 0.184551018105263, 48.9156538971429, 
    2.29765846588235, 33.25524992, 4.06629248, 1.610659584, 0.21166808, 
    0.0607489749333333, 2.22029454545455, 12.90821328, 31.9696672, 
    8.05754544, 32.7267690105263, 43.493472128, 6.77337856, 1.10646621744, 
    4.37803470545454)), row.names = c(NA, -20L), class = c("tbl_df", 
"tbl", "data.frame"))

現在使用以下代碼並僅過濾正滯后......


library(tidyverse)

fccf = function(data) ccf(data$CPUE,data$Discharge, lag.max = 5, plot = FALSE)
facf = function(acf) tibble(aacf = acf$acf[,,1], lag = acf$lag[,,1])

test.df <- df %>% group_by(Commonname) %>%
  nest() %>%  #Step 1
  mutate(ccf = map(data, ~fccf(.x))) %>% #Step 2
  mutate(acf = map(ccf, ~facf(.x))) %>%  #Step 3
  unnest(acf)

#removes the nested columns
test.df <- test.df[,c("Commonname", "aacf", "lag")]

#removes negative lags
test.df <- subset(test.df, lag > 0)
test.df

我從每個人的 ccf 顯示的結果中得到不同的結果。

例如,Black Sea Bass 的繪圖與這些自定義函數為值提取的內容完全不同......

df <- df %>% 
  filter(Commonname == "Black Sea Bass")
ccf(df$Discharge, df$CPUE, lag.max = 5)

黑鱸魚的 CCF 圖

ccf 圖在第 2 個正滯后步中顯示的值幾乎為 1.0,但自定義函數的值約為 0.01

如果有人能幫我找出導致差異的原因,或者如何讓這些自定義函數拉出圖中看到的相關性,我將不勝感激。 謝謝。

哦,一切都好! 但是,不同之處在於,在您對ccf函數的第一次查詢中,您將data$CPUE輸入為x並將data$Dischargey 所以我也做了fccf功能。 但是,現在您已經交換了參數! 請注意,您正在調用ccf(df$Discharge, df$CPUE, lag.max = 5) 因此差異。

fccf = function(data) ccf(data$Discharge, data$CPUE, lag.max = 5, plot = FALSE)
facf = function(acf) tibble(lag = acf$lag[,,1], acf = acf$acf[,,1])

df %>% nest_by(Commonname) %>% 
  mutate(ccf = list(fccf(data)),
         acf = list(facf(ccf))) %>% 
  select(c(-ccf, -data)) %>% 
  unnest(acf) %>% 
  ggplot(aes(lag, acf)) +
  geom_segment(aes(x=lag, xend=lag, y=0, yend=acf)) +
  geom_point(size=2, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)+
  facet_wrap(vars(Commonname), 2, 2)

在此處輸入圖片說明

將上面的圖表(黑海鱸的方面)與您得到的進行比較。

df2 = df %>% filter(Commonname == "Black Sea Bass") 
acc1 = ccf(df2$Discharge, df2$CPUE, lag.max = 5)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM