Прогнозирование и прогнозирование
Да, вы правы, когда вы рассматриваете это как проблему прогнозирования, регрессия Y-on-X даст вам модель, такую, что с помощью измерения инструмента вы можете сделать объективную оценку точного лабораторного измерения, не выполняя лабораторную процедуру ,
Другими словами, если вы просто заинтересованы в тогда вы хотите регрессию Y-на-X.Е[ Y| Икс]
Это может показаться нелогичным, потому что структура ошибок не является «реальной». Предполагая, что лабораторный метод является золотым стандартом безошибочного метода, мы «знаем», что истинная модель генерации данных
Икся= βYя+ ϵя
где и ϵ i - независимые идентичные распределения, а E [ ϵ ] = 0YяεяЕ[ ϵ ] = 0
Мы заинтересованы в получении наилучшей оценки . Из-за нашего предположения о независимости мы можем изменить вышесказанное:Е[ Yя| Икся]
Yя= Хя- ϵβ
Теперь, принимая ожидания, учитывая где вещи становятся волосатымиИкся
Е[ Yя| Икся] = 1βИкся- 1βЕ[ ϵя| Икся]
Е[ ϵя| Икся]εИкс
Явно, без ограничения общности мы можем позволить
εя= γИкся+ ηя
Е[ ηя| Икс] = 0
Yя= 1βИкся- γβИкся- 1βηя
Yя= 1 - γβИкся- 1βηя
ηββσ
Yя= α Xя+ ηя
β
Анализ инструментов
Человек, который задал вам этот вопрос, явно не хотел ответа выше, так как они говорят, что X-on-Y - правильный метод, так почему они могли этого хотеть? Скорее всего, они рассматривали задачу понимания инструмента. Как уже говорилось в ответе Винсента, если вы хотите узнать о том, как они хотят, чтобы инструмент вел себя, X-on-Y - это то, что нужно.
Возвращаясь к первому уравнению выше:
Икся= βYя+ ϵя
Е[ Xя| Yя] = YяИксβ
усадка
YЕ[ Y| Икс]γЕ[ Y| Икс]Y, Затем это приводит к таким понятиям, как регрессия к среднему значению и эмпирический метод Байеса.
Пример на R
Один из способов понять, что здесь происходит, - собрать некоторые данные и опробовать методы. Приведенный ниже код сравнивает X-on-Y с Y-on-X для прогнозирования и калибровки, и вы можете быстро увидеть, что X-on-Y не подходит для модели прогнозирования, но является правильной процедурой для калибровки.
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")
Две линии регрессии нанесены на данные
И тогда ошибка суммы квадратов для Y измеряется для обоих подгонок на новой выборке.
> 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
В качестве альтернативы выборка может быть сгенерирована при фиксированном Y (в данном случае 4) и затем усреднена из этих взятых оценок. Теперь вы можете видеть, что предиктор Y-on-X плохо откалиброван с ожидаемым значением, намного меньшим, чем Y. Предиктор X-on-Y хорошо откалиброван с ожидаемым значением, близким к 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
Распределение двух предсказаний можно увидеть на графике плотности.
[self-study]
тег.