2015-11-11 110 views
1

這裏是我的數據:如何計算標準誤差預測數據R中使用預測

a <- c(60, 65, 70, 75, 80, 85, 90, 95, 100, 105) 
b <- c(26, 24.7, 20, 16.1, 12.6, 10.6, 9.2, 7.6, 6.9, 6.9) 
a_b <- cbind(a,b) 

plot(a,b, col = "purple") 
abline(lm(b ~ a),col="red") 
reg <- lm(b ~ a) 

我想用的預測功能,以計算標準誤差在110預測B值。

z <- predict(reg, newdata=data.frame(year=110), se.fit=TRUE) 

這是輸出我得到的,但我認爲這只是給我的標準誤差爲我的10個時間點,而不是新的第11數據點:

z 
$fit 
    1   2   3   4   5   6   7   8   9  10 
24.456364 22.146061 19.835758 17.525455 15.215152 12.904848 10.594545 8.284242 5.973939 3.663636 

$se.fit 
     1   2   3   4   5   6   7   8   9  10 
1.2616229 1.0700007 0.8998935 0.7657760 0.6889958 0.6889958 0.7657760 0.8998935 1.0700007 1.2616229 

$df 
[1] 8 

$residual.scale 
[1] 2.146516 

我不知道該怎麼做,任何幫助表示讚賞!

+0

名的newdata與模型,'newdata = data.frame的條件匹配的名稱(A = 110)','predict'等擬合函數有奇怪的行爲,其中他們搜索全球環境,如果他們找不到正確的變量。 – jenesaisquoi

回答

0

您應該對data.frames內外的數據更加小心。您的newdata =參數應該是一個data.frame,其列名與原始prodicters相匹配。像這樣的東西會更好

a_b <- data.frame(
    a=c(60, 65, 70, 75, 80, 85, 90, 95, 100, 105), 
    b=c(26, 24.7, 20, 16.1, 12.6, 10.6, 9.2, 7.6, 6.9, 6.9) 
) 

plot(b~a, a_b, col = "purple") 

reg <- lm(b ~ a, a_b) 
abline(reg,col="red") 

z <- predict(reg, newdata=data.frame(a=110), se.fit=TRUE) 
# $fit 
#  1 
# 1.353333 
# 
# $se.fit 
# [1] 1.466349 
# 
# $df 
# [1] 8 
# 
# $residual.scale 
# [1] 2.146516