Comment prédire.lm() calculer l'intervalle de confiance et l'intervalle de prédiction?
J'ai couru une régression:
CopierDataRegression <- lm(V1~V2, data=CopierData1)
et ma tâche était d'obtenir un
- 90% intervalle de confiance pour la moyenne de la réponse donnée
V2=6
et - 90% intervalle de prédiction à quand
V2=6
.
J'ai utilisé le code suivant:
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)
et j'ai eu (87.3, 91.9)
et (74.5, 104.8)
qui semble être correcte, car le PI doit être plus large.
La sortie pour les deux également inclus se.fit = 1.39
qui était le même. Je ne comprends pas ce que cette erreur standard est. Ne pas le standard d'erreur plus importante pour la PI vs la CI? Comment puis-je trouver ces deux erreurs-types dans la R?
De données:
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))
En regardant
Je vous remercie. Je suppose que ce que je demande, c'est, comment puis-je calculer les deux std erreurs dans l'image? Afin que je puisse vérifier le calcul et savoir comment ils sont dérivés.
?predict.lm
, il dit: "se.fit
: erreur standard de la valeur prédite signifie". "Prédit signifie" en fait on dirait qu'elle ne s'applique qu'à l'intervalle de confiance. Si vous ne voulez pas voir, il suffit de mettre se.fit = FALSE
.Je vous remercie. Je suppose que ce que je demande, c'est, comment puis-je calculer les deux std erreurs dans l'image? Afin que je puisse vérifier le calcul et savoir comment ils sont dérivés.
OriginalL'auteur Mitty | 2016-06-29
Vous devez vous connecter pour publier un commentaire.
Lors de la spécification de
interval
etlevel
argument,predict.lm
pouvez retourner intervalle de confiance (IC) ou intervalle de prédiction (IP). Cette réponse montre comment obtenir des CI et PI sans la définition de ces arguments. Il y a deux façons:predict.lm
;De savoir comment travailler avec les deux façons de vous donner une complète compréhension de la prédiction de la procédure.
Noter que nous ne prendrons en charge la
type = "response"
(par défaut) pourpredict.lm
. Discussion detype = "terms"
est au-delà de la portée de cette réponse.Installation
Je rassemble ici votre code d'aider les autres lecteurs de copier, de coller et de les exécuter. J'ai aussi changer les noms de variables, de sorte qu'ils ont plus claire de la signification. En outre, je développez le
newdat
inclure plusieurs lignes, pour montrer que nos calculs sont "vectorisé".Voici la sortie de
predict.lm
, à comparer avec notre guide des calculs plus tard.Utilisation du moyen-résultat de l'étape de
predict.lm
z$se.fit
est l'erreur standard de la prédite moyennez$fit
, utilisé pour construire de CI pourz$fit
. Nous avons aussi besoin de quantiles de la distribution en t avec un degré de libertéz$df
.Nous voyons que ceci est en accord avec
predict.lm(, interval = "confidence")
.PI est plus large que celui CI, comme il représente la variance résiduelle:
Noter que cela est défini au point sage. Pour un non-pondérée de régression linéaire (comme dans votre exemple), la variance résiduelle est égale partout (connu sous le nom homoscedasticity), et il est
z$residual.scale ^ 2
. Ainsi, la norme de l'erreur de PI estet PI est construit comme
Nous voyons que ceci est en accord avec
predict.lm(, interval = "prediction")
.remarque
Les choses sont plus compliquées si vous avez un poids de régression linéaire, où la variance résiduelle n'est pas égale partout, afin que
z$residual.scale ^ 2
doit être pondérée. Il est plus facile de construire des PI pour les valeurs ajustées (qui est, vous ne définissez pasnewdata
lors de l'utilisation detype = "prediction"
danspredict.lm
), car les poids sont connus (vous devez avoir fourni viaweight
argument lors de l'utilisation delm
). Pour des échantillons de prédiction (qui est, vous passez unnewdata
àpredict.lm
),predict.lm
attend de vous le dire combien de variance résiduelle doit être pondérée. Vous avez besoin d'utiliser l'argumentpred.var
ouweights
danspredict.lm
, sinon vous obtiendrez un message d'avertissement depredict.lm
se plaindre de l'insuffisance des renseignements pour la construction de PI. Les éléments suivants sont indiqués à partir du?predict.lm
:Noter que la construction de l'IC n'est pas affectée par le type de régression.
Faire tout à partir de zéro
Fondamentalement, nous voulons savoir comment faire pour obtenir
fit
,se.fit
,df
etresidual.scale
dansz
.La prédite moyenne peut être calculée par une matrice-vecteur multiplication
Xp %*% b
, oùXp
est le prédicteur linéaire de la matrice etb
est le coefficient de régression de vecteur.Et nous voyons que ceci est en accord avec
z$fit
. La variance-covariance pouryh
estXp %*% V %*% t(Xp)
, oùV
est la matrice de variance-covariance deb
qui peut être calculée parLa pleine matrice de variance-covariance de
yh
n'est pas nécessaire de calculer le point de sages-CI ou PI. Nous avons seulement besoin de sa diagonale principale. Donc au lieu de fairediag(Xp %*% V %*% t(Xp))
, on peut le faire plus efficacement grâce àRésiduels degré de liberté est facilement disponible dans le modèle ajusté:
Enfin, pour calculer la variance résiduelle, l'utilisation de Pearson estimateur:
remarque
Noter que dans le cas de la régression pondérée,
sig2
doit être calculé commeAnnexe: une auto-écrite fonction qui imite
predict.lm
Le code dans "tout Faire à partir de zéro" a été soigneusement organisée dans une fonction
lm_predict
dans ce Q & A: modèle linéaire aveclm
: comment obtenir la prédiction de la variance de la somme des valeurs prédites.OriginalL'auteur 李哲源
Je ne sais pas si il existe un moyen rapide pour extraire l'erreur standard de l'intervalle de prédiction, mais vous pouvez toujours backsolve les intervalles pour le SE (même si c'est pas super élégant à l'approche):
Avis que la CI SE, la même valeur à partir de
se.fit
.OriginalL'auteur MAB