Pronostico e previsioni
Sì, hai ragione, quando lo vedi come un problema di predizione, una regressione Y-on-X ti darà un modello tale che, data una misurazione dello strumento, puoi fare una stima imparziale della misurazione di laboratorio accurata, senza eseguire la procedura di laboratorio .
Detto in altro modo, se sei solo interessato a allora vuoi la regressione Y-on-X.E[Y|X]
Ciò può sembrare controintuitivo perché la struttura dell'errore non è quella "reale". Supponendo che il metodo lab sia un metodo senza errori standard gold, allora "sappiamo" che il vero modello generativo di dati è
Xi=βYi+ϵi
dove e sono distribuiti in modo identico indipendente edYiϵiE[ϵ]=0
Siamo interessati a ottenere la migliore stima di . A causa della nostra ipotesi di indipendenza possiamo riordinare quanto sopra:E[Yi|Xi]
Yi=Xi−ϵβ
Ora, prendendo le aspettative dato che è dove le cose diventano peloseXi
E[Yi|Xi]=1βXi−1βE[ϵi|Xi]
Il problema è il termine - è uguale a zero? In realtà non importa, perché non puoi mai vederlo, e stiamo solo modellando termini lineari (o l'argomento si estende a tutti i termini che stai modellando). Qualsiasi dipendenza tra e può essere semplicemente assorbita nella costante che stiamo stimando.E[ϵi|Xi]ϵX
In modo esplicito, senza perdita di generalità possiamo lasciare
ϵi=γXi+ηi
Dove per definizione, quindi ora abbiamoE[ηi|X]=0
YI=1βXi−γβXi−1βηi
YI=1−γβXi−1βηi
che soddisfa tutti i requisiti di OLS, poiché è ora esogeno. Non importa minimamente che il termine di errore contenga anche un dal momento che né né sono noti comunque e devono essere stimati. Possiamo quindi semplicemente sostituire quelle costanti con nuove e usare l'approccio normaleηββσ
YI=αXi+ηi
Si noti che NON abbiamo stimato la quantità che avevo inizialmente scritto: abbiamo creato il modello migliore possibile per l'utilizzo di X come proxy per Y.β
Analisi dello strumento
La persona che ti ha posto questa domanda, chiaramente non voleva la risposta sopra poiché dice che X-on-Y è il metodo corretto, quindi perché potrebbe averlo desiderato? Molto probabilmente stavano considerando il compito di comprendere lo strumento. Come discusso nella risposta di Vincent, se vuoi sapere se vogliono che lo strumento si comporti, l'X-on-Y è la strada da percorrere.
Tornando alla prima equazione sopra:
Xi=βYi+ϵi
La persona che pone la domanda avrebbe potuto pensare alla calibrazione. Si dice che uno strumento sia calibrato quando ha un'aspettativa uguale al valore reale - cioè . Chiaramente per calibrare è necessario trovare , e quindi per calibrare uno strumento è necessario eseguire la regressione X-on-Y.E[Xi|Yi]=YiXβ
restringimento
La calibrazione è un requisito intuitivamente sensibile di uno strumento, ma può anche causare confusione. Nota che anche uno strumento ben calibrato non ti mostrerà il valore atteso di ! Per ottenere devi ancora fare la regressione Y-on-X, anche con uno strumento ben calibrato. Questa stima apparirà generalmente come una versione ridotta del valore dello strumento (ricorda il termine che si è insinuato). In particolare, per ottenere una buona stima di si dovrebbe includere la vostra conoscenza preventiva della distribuzione di . Questo porta quindi a concetti come la regressione alla media e le baia empiriche.YE[Y|X]γE[Y|X]Y
Esempio in R
Un modo per avere un'idea di ciò che sta accadendo qui è quello di creare alcuni dati e provare i metodi. Il codice seguente confronta X-on-Y con Y-on-X per la previsione e la calibrazione e puoi vedere rapidamente che X-on-Y non va bene per il modello di previsione, ma è la procedura corretta per la calibrazione.
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")
Le due linee di regressione sono tracciate sui dati
E quindi la somma dell'errore dei quadrati per Y viene misurata per entrambi gli adattamenti su un nuovo campione.
> 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
In alternativa, un campione può essere generato ad una Y fissa (in questo caso 4) e quindi alla media di tali stime prese. Ora puoi vedere che il predittore Y-on-X non è ben calibrato con un valore atteso molto inferiore a Y. Il predittore X-on-Y, è ben calibrato con un valore atteso vicino a 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 distribuzione delle due previsioni può essere vista in un diagramma di densità.
[self-study]
tag.