Я работаю над некоторыми синтетическими данными для модели Error In Variable для некоторых исследований. В настоящее время у меня есть одна независимая переменная, и я предполагаю, что знаю дисперсию для истинного значения зависимой переменной.
Таким образом, с помощью этой информации я могу получить объективную оценку для коэффициента зависимой переменной.
Модель:
у=0,5х-10+е2где:
е1~N(0,σ2)для некоторогоσе2~N(0,1)
Там , где значения известны только для каждого образца, а также стандартного отклонения реального значения х для образца известно: σ х .
Я получаю смещена ( β коэффициент) с помощью МНК, а затем внося коррективы с помощью:
Я вижу, что моя новая, несмещенная оценка для коэффициента намного лучше (ближе к реальному значению) с этой моделью, но MSE становится хуже, чем с использованием смещенной оценки.
Что происходит? Я ожидал, что объективный оценщик даст лучшие результаты, чем объективный.
Код Matlab:
reg_mse_agg = [];
fixed_mse_agg = [];
varMult = 1;
numTests = 60;
for dataNumber=1:8
reg_mses = [];
fixed_mses = [];
X = rand(1000,1);
X(:,1) = X(:,1) * 10;
X(:,1) = X(:,1) + 5;
varX = var(X);
y = 0.5 * X(:,1) -10;
y = y + normrnd(0,1,size(y));
origX = X;
X = X + normrnd(0,dataNumber * varMult ,size(X));
train_size = floor(0.5 * length(y));
for t=1:numTests,
idx = randperm(length(y));
train_idx = idx(1:train_size);
test_idx = idx(train_size+1:end);
Xtrain = X(train_idx,:);
ytrain = y(train_idx);
Xtest = X(test_idx,:);
ytest = y(test_idx);
b = OLS_solver(Xtrain, ytrain);
%first arg of evaluate returns MSE, working correctly.
[ reg_mse, ~ ] = evaluate( b,Xtest,ytest);
reg_mses = [reg_mses ; reg_mse];
varInd = var(Xtrain);
varNoise = varInd - varX;
bFixed = [0 0]';
bFixed(1) = b(1) * varInd / varX;
bFixed(2) = mean(ytrain - bFixed(1)*Xtrain);
[fixed_mse,~ ] = evaluate( bFixed,Xtest,ytest);
fixed_mses = [fixed_mses ; fixed_mse];
dataNumber * varMult
b
bFixed
end
reg_mse_agg = [reg_mse_agg , reg_mses];
fixed_mse_agg = [fixed_mse_agg , fixed_mses];
end
mean(reg_mse_agg)
mean(fixed_mse_agg)
Результаты:
MSE необъективного оценщика:
ans =
Columns 1 through 7
1.2171 1.6513 1.9989 2.3914 2.5766 2.6712 2.5997
Column 8
2.8346
MSE непредвзятого оценщика:
ans =
Columns 1 through 7
1.2308 2.0001 2.9555 4.9727 7.6757 11.3106 14.4283
Column 8
11.5653
Кроме того, печать значений b
и bFixed
- я вижу, что bFixed
это действительно ближе к реальным значениям0.5,-10
чем смещенная оценка (как и ожидалось).
PS Результаты того, что непредвзятый результат хуже, чем предвзятый оценщик, являются статистически значимыми - тест для него в коде пропущен, поскольку он является упрощением кода «полной версии».
UPDTAE: Я добавил тест , который проверяет и Σ для каждого теста ( & beta ; ' - & beta ; ) 2 , и смещенной оценки действительно значительно хуже (большее значение) , чем несмещенный согласно одному этот показатель, хотя MSE смещенной оценки (на тестовом наборе) значительно лучше.
Там , где β = 0,5 является реальным коэффициентом зависимой переменной, β является смещенной оценкой для р , и является несмещенной оценкой для р
.
Я полагаю, это показывает, что причиной результатов является НЕ более высокая дисперсия непредвзятой оценки, поскольку она все еще ближе к реальной стоимости.
Предоставлено : Использование лекций Стива Пишке в качестве ресурса.
b
иbFixed
, но объяснил, что они показывают.Ответы:
Резюме: исправленные параметры предназначены для прогнозирования как функции истинного предиктора . Если ~ хx x~ используются для предсказания, оригинальные параметры работают лучше.
Обратите внимание, что существуют две разные модели линейного прогнозирования. Во- первых, даны х , у х =y x во-
вторых, у дается ~ х ,
у ~ х = ~ β
Testing
I edited the code in OP to also evaluate MSEs for predictions using the non-noisy version of the prediction (code in the end of the answer). The results are
That is, when usingx instead of x~ , the corrected parameters indeed beat the uncorrected parameters, as expected. Furthermore, the prediction with (α,β,x ), that is, fixed parameters and true predictor, is better than (α~,β~,x~ ), that is, reg parameters and noisy predictor, since obviously the noise harms the prediction accuract somewhat. The other two cases correspond to using the parameters of a wrong model and thus produce weaker results.
Caveat about nonlinearity
Actually, even if the relationship betweeny,x is linear, the relationship between y and x~ might not be. This depends on the distribution of x . For example, in the present code, x is drawn from the uniform distribution, thus no matter how high x~ is, we know an upper bound for x and thus the predicted y as a function of x~ should saturate. A possible Bayesian-style solution would be to posit a probability distribution for x and then plug in E(x∣x~) when deriving y^^x - instead of the linear prediction I used previously. However, if one is willing to posit a probability distribution for x , I suppose one should go for a full Bayesian solution instead of an approach based on correcting OLS estimates in the first place.
MATLAB code for replicating the test result
Note that this also contains my own implementations for evaluate and OLS_solver since they were not given in the question.
источник