Prédiction et prévision
Oui, vous avez raison, lorsque vous voyez cela comme un problème de prédiction, une régression Y-on-X vous donnera un modèle tel que, compte tenu d'une mesure d'instrument, vous pouvez faire une estimation impartiale de la mesure de laboratoire précise, sans faire la procédure de laboratoire .
Autrement dit, si vous êtes simplement intéressé par vous voulez une régression Y-on-X.E[Y|X]
Cela peut sembler contre-intuitif car la structure d'erreur n'est pas la "vraie". En supposant que la méthode de laboratoire est une méthode sans erreur étalon-or, alors nous «savons» que le véritable modèle de génération de données est
Xi=βYi+ϵi
où et sont des distributions identiques identiques, etϵ i E [ ϵ ] = 0YiϵiE[ϵ]=0
Nous souhaitons obtenir la meilleure estimation de . En raison de notre hypothèse d'indépendance, nous pouvons réorganiser ce qui précède:E[Yi|Xi]
Yi=Xi−ϵβ
Maintenant, prendre les attentes étant donné que est l'endroit où les choses deviennent veluesXi
E[Yi|Xi]=1βXi−1βE[ϵi|Xi]
Le problème est le terme - est-il égal à zéro? Cela n'a pas vraiment d'importance, car vous ne pouvez jamais le voir, et nous modélisons uniquement des termes linéaires (ou l'argument s'étend jusqu'aux termes que vous modélisez). Toute dépendance entre et peut simplement être absorbée dans la constante que nous estimons.E[ϵi|Xi]ϵX
De manière explicite, sans perte de généralité, nous pouvons laisser
ϵi=γXi+ηi
Où par définition, de sorte que nous avons maintenantE[ηi|X]=0
YI=1βXi−γβXi−1βηi
YI=1−γβXi−1βηi
ce qui satisfait toutes les exigences d'OLS, car est maintenant exogène. Peu importe que le terme d'erreur contienne également un car ni ni sont de toute façon connus et doivent être estimés. On peut donc simplement remplacer ces constantes par de nouvelles et utiliser l'approche normaleβ β σηββσ
YI=αXi+ηi
Notez que nous n'avons PAS estimé la quantité que j'ai notée à l'origine - nous avons construit le meilleur modèle possible pour utiliser X comme proxy pour Y.β
Analyse des instruments
La personne qui vous a posé cette question ne voulait clairement pas la réponse ci-dessus car elle dit que X-on-Y est la bonne méthode, alors pourquoi aurait-elle pu le vouloir? Ils envisageaient très probablement la tâche de comprendre l'instrument. Comme discuté dans la réponse de Vincent, si vous voulez savoir s'ils veulent que l'instrument se comporte, le X-on-Y est le chemin à parcourir.
Revenons à la première équation ci-dessus:
Xi=βYi+ϵi
La personne posant la question aurait pu penser à l'étalonnage. Un instrument est dit calibré lorsqu'il a une attente égale à la vraie valeur - c'est-à-dire . De toute évidence, pour calibrer vous devez trouver , et donc pour calibrer un instrument, vous devez effectuer une régression X-on-Y. X βE[Xi|Yi]=YiXβ
Rétrécissement
L'étalonnage est une exigence intuitivement sensible d'un instrument, mais il peut également provoquer de la confusion. Notez que même un instrument bien calibré ne vous montrera pas la valeur attendue de ! Pour obtenir vous devez toujours effectuer la régression Y-on-X, même avec un instrument bien calibré. Cette estimation ressemblera généralement à une version réduite de la valeur de l'instrument (rappelez-vous le terme qui s'est glissé dans). En particulier, pour obtenir une estimation vraiment bien de vous devez inclure votre connaissance préalable de la distribution de . Cela conduit alors à des concepts tels que la régression vers la moyenne et les bayés empiriques.E [ Y | X ] γ E [ Y | X ] YYE[Y|X]γE[Y|X]Y
Exemple dans R
Une façon de se faire une idée de ce qui se passe ici est de faire quelques données et d'essayer les méthodes. Le code ci-dessous compare X-on-Y avec Y-on-X pour la prédiction et l'étalonnage et vous pouvez rapidement voir que X-on-Y n'est pas bon pour le modèle de prédiction, mais est la procédure correcte pour l'étalonnage.
library(data.table)
library(ggplot2)
N = 100
beta = 0.7
c = 4.4
DT = data.table(Y = rt(N, 5), epsilon = rt(N,8))
DT[, X := 0.7*Y + c + epsilon]
YonX = DT[, lm(Y~X)] # Y = alpha_1 X + alpha_0 + eta
XonY = DT[, lm(X~Y)] # X = beta_1 Y + beta_0 + epsilon
YonX.c = YonX$coef[1] # c = alpha_0
YonX.m = YonX$coef[2] # m = alpha_1
# For X on Y will need to rearrage after the fit.
# Fitting model X = beta_1 Y + beta_0
# Y = X/beta_1 - beta_0/beta_1
XonY.c = -XonY$coef[1]/XonY$coef[2] # c = -beta_0/beta_1
XonY.m = 1.0/XonY$coef[2] # m = 1/ beta_1
ggplot(DT, aes(x = X, y =Y)) + geom_point() + geom_abline(intercept = YonX.c, slope = YonX.m, color = "red") + geom_abline(intercept = XonY.c, slope = XonY.m, color = "blue")
# Generate a fresh sample
DT2 = data.table(Y = rt(N, 5), epsilon = rt(N,8))
DT2[, X := 0.7*Y + c + epsilon]
DT2[, YonX.predict := YonX.c + YonX.m * X]
DT2[, XonY.predict := XonY.c + XonY.m * X]
cat("YonX sum of squares error for prediction: ", DT2[, sum((YonX.predict - Y)^2)])
cat("XonY sum of squares error for prediction: ", DT2[, sum((XonY.predict - Y)^2)])
# Generate lots of samples at the same Y
DT3 = data.table(Y = 4.0, epsilon = rt(N,8))
DT3[, X := 0.7*Y + c + epsilon]
DT3[, YonX.predict := YonX.c + YonX.m * X]
DT3[, XonY.predict := XonY.c + XonY.m * X]
cat("Expected value of X at a given Y (calibrated using YonX) should be close to 4: ", DT3[, mean(YonX.predict)])
cat("Expected value of X at a gievn Y (calibrated using XonY) should be close to 4: ", DT3[, mean(XonY.predict)])
ggplot(DT3) + geom_density(aes(x = YonX.predict), fill = "red", alpha = 0.5) + geom_density(aes(x = XonY.predict), fill = "blue", alpha = 0.5) + geom_vline(x = 4.0, size = 2) + ggtitle("Calibration at 4.0")
Les deux lignes de régression sont tracées sur les données
Ensuite, la somme des erreurs de carrés pour Y est mesurée pour les deux ajustements sur un nouvel échantillon.
> cat("YonX sum of squares error for prediction: ", DT2[, sum((YonX.predict - Y)^2)])
YonX sum of squares error for prediction: 77.33448
> cat("XonY sum of squares error for prediction: ", DT2[, sum((XonY.predict - Y)^2)])
XonY sum of squares error for prediction: 183.0144
Alternativement, un échantillon peut être généré à un Y fixe (dans ce cas 4) puis à la moyenne de ces estimations prises. Vous pouvez maintenant voir que le prédicteur Y-on-X n'est pas bien calibré ayant une valeur attendue bien inférieure à Y. Le prédicteur X-on-Y, est bien calibré ayant une valeur attendue proche de Y.
> cat("Expected value of X at a given Y (calibrated using YonX) should be close to 4: ", DT3[, mean(YonX.predict)])
Expected value of X at a given Y (calibrated using YonX) should be close to 4: 1.305579
> cat("Expected value of X at a gievn Y (calibrated using XonY) should be close to 4: ", DT3[, mean(XonY.predict)])
Expected value of X at a gievn Y (calibrated using XonY) should be close to 4: 3.465205
La distribution des deux prédictions peut être observée dans un graphique de densité.
[self-study]
balise.