2016-06-29 10 views
6

मैं एक प्रतिगमन भाग गया:predict.lm() आत्मविश्वास अंतराल और भविष्यवाणी अंतराल की गणना कैसे करता है?

CopierDataRegression <- lm(V1~V2, data=CopierData1) 

और मेरे काम का मतलब V2=6 और

  • 90% भविष्यवाणी अंतराल जब दी प्रतिक्रिया के लिए एक

    • 90% विश्वास अंतराल प्राप्त करने के लिए था V2=6

    मैं निम्नलिखित कोड का इस्तेमाल किया:

    X6 <- data.frame(V2=6) 
    predict(CopierDataRegression, X6, se.fit=TRUE, interval="confidence", level=0.90) 
    predict(CopierDataRegression, X6, se.fit=TRUE, interval="prediction", level=0.90) 
    

    और मैं (87.3, 91.9) और (74.5, 104.8) जो बाद से पीआई व्यापक होना चाहिए सही प्रतीत हो रहा है मिला है।

    दोनों के आउटपुट में se.fit = 1.39 भी शामिल था जो वही था। मुझे समझ में नहीं आता कि यह मानक त्रुटि क्या है। पीआई बनाम सीआई के लिए मानक त्रुटि बड़ी नहीं होनी चाहिए? मैं आर में इन दो अलग-अलग मानक त्रुटियों को कैसे ढूंढूं? enter image description here


    डाटा:

    CopierData1 <- structure(list(V1 = c(20L, 60L, 46L, 41L, 12L, 137L, 68L, 89L, 
          4L, 32L, 144L, 156L, 93L, 36L, 72L, 100L, 105L, 131L, 127L, 57L, 
          66L, 101L, 109L, 74L, 134L, 112L, 18L, 73L, 111L, 96L, 123L, 
          90L, 20L, 28L, 3L, 57L, 86L, 132L, 112L, 27L, 131L, 34L, 27L, 
          61L, 77L), V2 = c(2L, 4L, 3L, 2L, 1L, 10L, 5L, 5L, 1L, 2L, 9L, 
          10L, 6L, 3L, 4L, 8L, 7L, 8L, 10L, 4L, 5L, 7L, 7L, 5L, 9L, 7L, 
          2L, 5L, 7L, 6L, 8L, 5L, 2L, 2L, 1L, 4L, 5L, 9L, 7L, 1L, 9L, 2L, 
          2L, 4L, 5L)), .Names = c("V1", "V2"), 
          class = "data.frame", row.names = c(NA, -45L)) 
    
  • +0

    'predict.lm' पर देखकर, यह कहता है: *" se.fit': भविष्यवाणी की मानक त्रुटि "*। "अनुमानित साधन" ऐसा लगता है जैसे यह केवल आत्मविश्वास अंतराल पर लागू होता है। यदि आप इसे देखना नहीं चाहते हैं, तो 'se.fit = FALSE' सेट करें। – Gregor

    +0

    धन्यवाद। मुझे लगता है कि मैं क्या पूछ रहा हूं, मैं तस्वीर में दो std त्रुटियों की गणना कैसे कर सकता हूं? तो मैं गणना की पुष्टि कर सकता हूं और जान सकता हूं कि वे कैसे व्युत्पन्न हुए हैं। – Mitty

    उत्तर

    16

    एक संक्षिप्त उत्तर

    ## no need to specify "interval"; even no need to specify "level" 
    z <- predict(CopierDataRegression, X6, se.fit=TRUE) 
    

    मानक सीआई के लिए इस्तेमाल किया त्रुटि है:

    se.CI <- z$se.fit 
    # [1] 1.396411 
    

    मानक पीआई के लिए इस्तेमाल किया त्रुटि है:

    se.PI <- sqrt(z$se.fit^2 + z$residual.scale^2) 
    # [1] 9.022228 
    

    गणना करने के लिए आत्मविश्वास/भविष्यवाणी अंतराल 90% महत्व स्तर पर, करें:

    alpha <- qt((1-0.9)/2, df = z$df) 
    # [1] -1.681071 
    CI <- z$fit + c(alpha, -alpha) * se.CI 
    # [1] 87.28387 91.97880 
    PI <- z$fit + c(alpha, -alpha) * se.PI 
    # [1] 74.46433 104.79833 
    

    गणितीय विवरण

    जब आप एक रेखीय मॉडल फिट, फिट मॉडल मैट्रिक्स के रूप में प्रस्तुत किया जाता है के साथ एक लंबे समय तक जवाब:

    y = एक्स% *% बीटा।टोपी

    आप से

    V <- vcov(CopierDataRegression) 
    #    (Intercept)   V2 
    # (Intercept) 7.862086 -1.1927966 
    # V2   -1.192797 0.2333733 
    

    beta.hat <- CopierDataRegression$coefficients 
    # (Intercept)   V2 
    # -0.5801567 15.0352480 
    

    और उसके सहप्रसरण मैट्रिक्स से beta.hat प्राप्त कर सकते हैं जब हम भविष्यवाणी मैट्रिक्स Xp साथ भविष्यवाणी करने के लिए, हम मतलब भविष्यवाणी की है:

    Xp <- model.matrix(~ V2, X6) 
    pred <- as.numeric(Xp %*% beta.hat) 
    # [1] 89.63133 
    

    और भविष्यवाणी विचरण:

    se2 <- unname(rowSums((Xp %*% V) * Xp)) 
    # [1] 1.949963 
    

    90 के लिए% स्तर के विश्वास का अंतराल है, हम,

    alpha <- qt((1-0.9)/2, df = CopierDataRegression$df.residual) 
    # [1] -1.681071 
    CI <- pred + c(alpha, -alpha) * sqrt(se2) 
    # [1] 87.28387 91.97880 
    

    भविष्यवाणी अंतराल एक व्यापक अंतराल है शोर sigma2 की अनिश्चितता के लिए इसे आगे खातों के रूप में। sigma2 के पियर्सन अनुमान

    sigma2 <- sum(CopierDataRegression$residuals^2)/CopierDataRegression$df.residual 
    # [1] 79.45063 
    

    इस प्रकार है, 90% स्तर भविष्यवाणी अंतराल है:

    PI <- pred + c(alpha, -alpha) * sqrt(se2 + sigma2) 
    # [1] 74.46433 104.79833 
    

    अंत में, z <- predict(CopierDataRegression, X6, se.fit=TRUE) रिटर्न

    • z$fit: उपरोक्त pred;
    • z$se.fit: sqrt(se2) ऊपर;
    • z$df: df.residuals ऊपर;
    • z$residual.scale: sqrt(sigma2) उपरोक्त।
    +0

    सहायता के लिए धन्यवाद। मुझे वास्तव में बहुत कुछ समझ में नहीं आया क्योंकि मैंने 10 साल पहले रिग्रेशन लिया था और मैं वर्तमान में स्नातक स्कूल के लिए इसकी समीक्षा कर रहा हूं। लेकिन जब तक मैं इसे समझ नहीं लेता तब तक मैं आपके काम पर जाऊंगा। – Mitty

    2

    अगर वहाँ एक त्वरित तरीका भविष्यवाणी अंतराल के लिए मानक त्रुटि को निकालने के लिए है मैं नहीं जानता, लेकिन आप हमेशा एसई के लिए अंतराल backsolve कर सकते हैं (दृष्टिकोण भले ही यह सुपर सुंदर नहीं है):

    m <- lm(V1 ~ V2, data = d)                                                     
    
    newdat <- data.frame(V2=6)                                                     
    tcrit <- qt(0.95, m$df.residual)                                                   
    
    a <- predict(m, newdat, interval="confidence", level=0.90)                                             
    cat("CI SE", (a[1, "upr"] - a[1, "fit"])/tcrit, "\n")                                             
    
    b <- predict(m, newdat, interval="prediction", level=0.90)                                             
    cat("PI SE", (b[1, "upr"] - b[1, "fit"])/tcrit, "\n") 
    

    सूचना है कि सीआई एसईसे एक ही मूल्य है।

    +0

    यह काम किया। मैं एसई के लिए 89.63 + - टी (0.95,43) xSE = लोअर बाउंड का उपयोग करके एसई के लिए बैकस्लॉल्ड किया गया जहां सीआई के लिए लोअर बाउंड 87.28 और पीआई के लिए 74.46 था। एसई सीआई 1.3 9 था और एसई पीआई 9.02 था। तो पूर्वानुमान अंतराल के लिए एसई आत्मविश्वास अंतराल से अधिक है। लेकिन मुझे अभी भी समझ में नहीं आता है कि पूर्वानुमान अंतराल के लिए आर में आउटपुट se.fit = 1.39 सूचीबद्ध क्यों करता है। यह 9 क्यों सूचीबद्ध नहीं है? धन्यवाद!!! – Mitty

    संबंधित मुद्दे