Obtention d'une formule pour les limites de prédiction dans un modèle linéaire (ie: intervalles de prédiction)

18

Prenons l'exemple suivant:

set.seed(342)
x1 <- runif(100)
x2 <- runif(100)
y <- x1+x2 + 2*x1*x2 + rnorm(100)
fit <- lm(y~x1*x2)

Cela crée un modèle de y basé sur x1 et x2, en utilisant une régression OLS. Si nous souhaitons prédire y pour un x_vec donné, nous pourrions simplement utiliser la formule que nous obtenons du summary(fit).

Cependant, que se passe-t-il si nous voulons prédire les prédictions inférieures et supérieures de y? (pour un niveau de confiance donné).

Comment alors construire la formule?

Tal Galili
la source
La section Intervalle de confiance sur les nouvelles observations de cette page peut vous aider.
GaBorgulya
@Tal Désolé, mais je ne comprends pas vraiment ce que vous entendez réellement par "prédire les prédictions inférieures et supérieures de y". Cela a-t-il quelque chose à voir avec les bandes de prédiction ou de tolérance?
chl
@Tal - quelques requêtes. Lorsque vous dites ".. y basé sur x1 et x2, en utilisant une régression OLS". , vous voulez dire que vous créez un modèle linéaire et estimez les paramètres à l'aide d'OLS . Ai-je raison? et la question de @ chl - voulez-vous prédire les limites inférieure et supérieure de l'intervalle de prédiction?
suncoolsu
@chl, désolé de ne pas être plus clair. Je recherche deux formules qui donneront un intervalle pour que "capture" la valeur "réelle" de y 95% du temps. Je sens comment j'utilise les définitions de l'IC pour la moyenne, alors qu'il y a probablement un autre terme que je devrais utiliser, désolé ...
Tal Galili
@suncoolsu - oui et oui.
Tal Galili

Réponses:

25

Vous aurez besoin d'une arithmétique matricielle. Je ne sais pas comment Excel ira avec ça. Bref, voici les détails.

Supposons que votre régression soit écrite comme .y=Xβ+e

Soit un vecteur ligne contenant les valeurs des prédicteurs pour les prévisions (au même format que ). Ensuite, la prévision est donnée par avec une variance associée Ensuite, un intervalle de prédiction de 95% peut être calculé (en supposant des erreurs normalement distribuées) comme Cela tient compte de l'incertitude due au terme d'erreurX y = X * β = X * ( X ' X ) - 1 X ' Y σ 2 [ 1 + X * ( X ' X ) - 1 ( X * ) ' ] . Y ±1,96 σXX

y^=Xβ^=X(XX)1XY
σ2[1+X(XX)-1(X)].
y^±1,96σ^1+X(XX)-1(X).
eet l'incertitude dans les estimations des coefficients. Cependant, il ignore toutes les erreurs dans . Donc, si les valeurs futures des prédicteurs sont incertaines, l'intervalle de prédiction calculé à l'aide de cette expression sera trop étroit.X
Rob Hyndman
la source
1
+1, excellente réponse. Je dois cependant noter que ce modèle de régression estime toujours l'espérance conditionnelle, il est donc aussi bon que ses régresseurs. Le dernier commentaire est donc très bon, il n'est pas strictement nécessaire, car si vous construisez un modèle de régression, vous devez faire confiance aux régresseurs.
mpiktas
pourquoi le 1 apparaît dans la formule? Nous avons . Alors ? var y =varX*(X'X)-1X'e=σ2X*(X'X)-1(X)y^=Xβ+X(XX)-1Xevunery^=vunerX(XX)-1Xe=σ2X(XX)-1(X)
mpiktas
Le 1 correspond aux intervalles de prédiction. Laissez-le désactivé pour les intervalles de confiance. Var ( ) se rapporte aux intervalles de confiance. y^
Rob Hyndman
@RobHyndman merci pour votre excellente réponse (il y a un an;)) cependant, est-ce que je manque quelque chose ou le terme dans la racine carrée ? N×N
Seb
@Seb. est un vecteur ligne, donc le terme est scalaire. X
Rob Hyndman
7

Êtes-vous par hasard après les différents types d'intervalles de prédiction? La predict.lmpage de manuel a

 ## S3 method for class 'lm'
 predict(object, newdata, se.fit = FALSE, scale = NULL, df = Inf, 
         interval = c("none", "confidence", "prediction"),
         level = 0.95, type = c("response", "terms"),
         terms = NULL, na.action = na.pass,
         pred.var = res.var/weights, weights = 1, ...)

et

La définition d '«intervalles» spécifie le calcul des intervalles de confiance ou de prédiction (tolérance) au «niveau» spécifié, parfois appelés intervalles étroits ou larges.

Est-ce ce que tu avais en tête?

Dirk Eddelbuettel
la source
Salut Dirk, c'est bien ce que je souhaite trouver, mais je veux que les liaisons supérieures et inférieures soient sous la forme d'une formule (donc à implémenter plus tard dans une forme basse de logiciel statistique, par exemple, excel ...)
Tal Galili
ps: Je vois maintenant qu'il y avait une modification au titre de ma question qui pourrait vous avoir amené à penser que je posais des questions sur le paramètre d'intervalle predict.lm (ce que je ne suis pas) :)
Tal Galili
8
Vous abusez de la terminologie ici. Excel n'est pas un logiciel statistique.
Dirk Eddelbuettel
1
Vous avez raison, mon offre, que diriez-vous "d'une application de feuille de calcul"?
Tal Galili
3
Je peux vivre avec ça; il appelle le diable par son nom ;-)
Dirk Eddelbuettel
6

@Tal: Puis-je suggérer Kutner et al comme une source fabuleuse pour les modèles linéaires.

E(Oui|Xvec)

E(Oui|Xvec)Oui^ ±αOui^Oui^Oui^σ2nXvec-X¯)2σ2(Xje-X¯)2

B_Miner
la source
1
(+1) pour faire la distinction. Cependant, je crois que le PO demande (1), pas (2) (et j'ai modifié le titre de la question en conséquence). Notez également que votre formule semble supposer que la régression ne dépend que d'une variable.
whuber