2013-03-04 45 views
-2

我正在處理一個擁有超過300K個元素的大數據集,並運行一些迴歸分析嘗試使用預測變量Distance來估計一個名爲Rate的參數。我有迴歸方程。現在我想獲得信心和預測間隔。我可以很容易地通過指令得到該係數的置信區間:R中獲取迴歸預測間隔的任何簡單方法?

> confint(W1500.LR1, level = 0.95) 
       2.5 %  97.5 % 
(Intercept) 666.2817393 668.0216072 
Distance  0.3934499 0.3946572 

這讓我對係數的CI的上限和下限。現在我想獲得預測區間的相同上限和下限。只有到目前爲止,我還學到的是,我可以得到距離的特定值的預測區間使用的代碼(比如200,500等):

predict(W1500.LR1, newdata, interval="predict") 

這對我來說是沒有用的,因爲我有超過300K的不同距離值,需要爲其中的每一個運行此代碼。任何簡單的方法來獲得像上面顯示的confint命令一樣的預測間隔?

+0

預測命令將準確地給你你想要的,你所要做的就是運行一次命令。我會爲你模擬一個例子。 – 2013-03-04 21:26:26

+0

忽略newdata參數:'預測(W1500.LR1,interval =「預測」)'應該這樣做。 – Ista 2013-03-04 21:50:03

+0

我很困惑,爲什麼你認爲你需要爲每個需要預測間隔的個案分別運行'predict'。你可以擴展嗎? – joran 2013-03-04 22:00:30

回答

9

不得不彌補我自己的數據,但是在這裏你去

x = rnorm(300000) 
y = jitter(3*x,1000) 

fit = lm(y~x) 

#Prediction intervals 
pred.int = predict(fit,interval="prediction") 

#Confidence intervals 
conf.int = predict(fit,interval="confidence") 

fitted.values = pred.int[,1] 

pred.lower = pred.int[,2] 
pred.upper = pred.int[,3] 

plot(x[1:1000],y[1:1000]) 
lines(x[1:1000],fitted.values[1:1000],col="red",lwd=2) 
lines(x[1:1000],pred.lower[1:1000],lwd=2,col="blue") 
lines(x[1:1000],pred.upper[1:1000],lwd=2,col="blue") 

enter image description here

所以你可以看到你的預測是構建間隔公測係數預測新的數據值,而不是。因此,您實際需要的置信區間將以conf.int的相同方式獲得。

+0

非常感謝。我現在不會保留這樣的預測,然後將它們用於繪圖。非常感謝。 – Baykal 2013-03-04 22:14:10

+0

沒問題。如果有什麼不清楚的地方,請告訴我(代碼明智,理論上)。 – 2013-03-04 22:16:02