2015-11-11 1 views
1

Voici mes données:Comment calculer l'erreur standard pour les données prévues dans R en utilisant prédire

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) 

Je voudrais utiliser la prédire la fonction pour calculer l'erreur-type de la valeur b prédite à 110.

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

C'est la sortie que je reçois, mais je pense que cela me donne les erreurs standards pour mes 10 points de temps, mais pas le nouveau 11 point de données:

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 

Je ne sais pas quoi en faire, toute aide est appréciée!

+0

votre newdata avec les noms correspondants dans les termes de votre modèle, 'newdata = data.frame (a = 110)', 'predict' et d'autres fonctions de montage ont un comportement étrange où ils recherchent l'environnement global s'ils ne peuvent pas trouver les bonnes variables. – jenesaisquoi

Répondre

0

Vous devriez probablement être un peu plus prudent avec les données à l'intérieur et à l'extérieur de data.frames. Votre paramètre newdata = doit être un data.frame avec des noms de colonne qui correspondent aux producteurs originaux. Quelque chose comme ça serait mieux

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 
nom