2017-09-24 173 views
1

我試圖用一個函數來繪製迴歸的置信帶,但是我的上限和下限預測帶的線條看起來很奇怪和模糊。任何人都可以發現問題,因爲我似乎無法找到任何錯誤?R:繪製置信區間問題

下面是代碼:

drawPrediction <- function(x, y) { 

    lm.model <- lm(y ~ x) 
    ci <- predict(lm.model, interval = "prediction") 
    plot(x,y) 
    abline(lm.model, col = "red") 
    lines(x, ci[,2], lty = 2, col = 'blue') 
    lines(x,ci[,3], lty = 2, col = 'blue') 

} 

給出了這樣的結果對於一些測試數據(將R state.x77數據,迴歸上文盲收入):

enter image description here

這是代碼我用於上面的測試:

> test <- as.data.frame(state.x77) 
> drawPrediction(test$Illiteracy, test$Income) 
+0

你好,很抱歉,我添加了測試數據的來源。我認爲,隨着代碼應該足以重現? –

回答

3

問題是,x沒有排序,所以你正在繪製所有的地方,而不僅僅是在連續的x之間。相反,使用

lm.model <- lm(Income ~ Illiteracy, data=as.data.frame(state.x77)) 
    ci <- predict(lm.model, interval = "prediction") 
    plot(x,y) 
    abline(lm.model, col = "red") 
    lines(sort(x), ci[order(x),2], lty = 2, col = 'blue') 
    lines(sort(x), ci[order(x),3], lty = 2, col = 'blue') 

Sorted x's

+0

是的!謝謝,我剛剛開始意識到這是一個問題。非常感謝! –