मुझे ऑटो सहसंबंध समारोह से जुड़ी कुछ समस्याएं हैं। आइए निम्नलिखित कोड पर एक नजर डालते हैं:

acf_plot<-function(vec,lag_max){
  val_acf <- acf(vec, plot = FALSE,lag.max = lag_max)
  df <- with(val_acf, data.frame(lag, acf))
  ggplot(data = df, mapping = aes(x = lag, y = acf)) +
    geom_hline(aes(yintercept = 0)) +
    geom_segment(mapping = aes(xend = lag, yend = 0))+ scale_y_continuous(breaks=c(-1,-0.75,-0.5,-0.25,0.25,0.50,0.75))
}

set.seed(20)
x<-runif(100)
acf(x)
acf_plot(vec=x,lag_max=30)

फ़ंक्शन acf_plot() ggplot के संबंध में acf फ़ंक्शन बना रहा है। समस्या यह है कि निर्माण के दौरान छवि पर मेरा आत्मविश्वास अंतराल छोड़ा जा रहा है (आप नीचे ggplot में नीली रेखा की कमी देख सकते हैं)।

enter image description here

enter image description here

संक्षेप में, मेरे पास आप लोगों से दो प्रश्न हैं

(१) क्या उस ggplot ग्राफ में नीली रेखा जोड़ने की कोई संभावना है? यानी उस कॉन्फिडेंस इंटरवल को भी acf ggplot में शामिल किया जाएगा।

(२) मेरा दूसरा प्रश्न है, मैं acf में ९५% विश्वास अंतराल के मान कैसे निकाल सकता हूँ? मेरा मतलब उन नीली रेखाओं के पीछे के मूल्यों से है। मैंने पढ़ा उस बिंदु को प्राप्त करें जिसके बारे में वे लिख रहे थे। मैंने इसे समान रूप से करने की कोशिश की लेकिन मैं असफल रहा। क्या आप लोग उन दो समस्याओं में मेरी मदद कर सकते हैं?

0
John 27 अगस्त 2020, 17:47

1 उत्तर

सबसे बढ़िया उत्तर

जहां तक ​​​​मैं stats:::plot.acf() फ़ंक्शन को समझता हूं, विश्वास अंतराल की गणना qnorm((1 + ci)/2) / sqrt(x$n.used) के रूप में की जाती है, जिसमें x स्वतःसहसंबंध परिणाम है। यह मेरे लिए समझ में आता है क्योंकि i.i.d के तहत मान। सामान्य वितरण का पालन करने के लिए शोर मान्यताओं की उम्मीद है। इसलिए, अंतराल को प्लॉट करने के लिए आपको फ़ंक्शन में उपरोक्त की गणना करने की आवश्यकता होगी। नीचे उदाहरण:

library(ggplot2)

acf_plot<-function(vec,lag_max, ci = 0.95){
  val_acf <- acf(vec, plot = FALSE,lag.max = lag_max)
  df <- with(val_acf, data.frame(lag, acf))
  ci <- qnorm((1 + ci)/2) / sqrt(val_acf$n.used)
  
  ggplot(data = df, mapping = aes(x = lag, y = acf)) +
    geom_hline(aes(yintercept = 0)) +
    geom_hline(yintercept = c(-1, 1) * ci, linetype = 2, colour = "blue") +
    geom_segment(mapping = aes(xend = lag, yend = 0))+ 
    scale_y_continuous(breaks=c(-1,-0.75,-0.5,-0.25,0.25,0.50,0.75))
}

set.seed(20)
x<-runif(100)
acf(x)

acf_plot(vec=x, lag_max=30)

2020-08-27 को reprex पैकेज द्वारा बनाया गया (v0.3.0)

1
teunbrand 27 अगस्त 2020, 15:23