Saya sedang mengerjakan beberapa data sintaksis untuk model Error In Variable untuk beberapa penelitian. Saat ini saya memiliki satu variabel independen, dan saya berasumsi saya tahu varians untuk nilai sebenarnya dari variabel dependen.
Jadi, dengan informasi ini, saya dapat mencapai estimator yang tidak bias untuk koefisien variabel dependen.
Model:
y=0,5x-10+e2
Di mana:
untuk beberapa
σ e 2 ~ N ( 0 , 1 )
Di mana nilai hanya diketahui untuk setiap sampel, dan juga standar deviasi dari nilai riil untuk sampel diketahui: .
Saya mendapatkan koefisien bias ( ) menggunakan OLS, dan kemudian membuat penyesuaian menggunakan:
Saya melihat bahwa estimator baru saya yang tidak bias untuk koefisien jauh lebih baik (lebih dekat dengan nilai sebenarnya) dengan model ini, tetapi MSE semakin buruk daripada menggunakan estimator yang bias.
Apa yang terjadi? Saya mengharapkan estimator yang ada di mana-mana untuk menghasilkan hasil yang lebih baik daripada yang bias.
Kode 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)
Hasil:
MSE estimator yang bias:
ans =
Columns 1 through 7
1.2171 1.6513 1.9989 2.3914 2.5766 2.6712 2.5997
Column 8
2.8346
MSE estimator yang tidak sesuai:
ans =
Columns 1 through 7
1.2308 2.0001 2.9555 4.9727 7.6757 11.3106 14.4283
Column 8
11.5653
Selain itu, mencetak nilai-nilai b
dan bFixed
- Saya melihat bahwa bFixed
memang lebih dekat dengan nilai riil dari 0.5,-10
estimator yang bias (seperti yang diharapkan).
PS Hasil yang tidak bias lebih buruk daripada penaksir yang bias signifikan secara statistik - tes untuk itu dihilangkan dari kode, karena ini adalah penyederhanaan kode "versi lengkap".
UPDTAE: Saya menambahkan tes yang memeriksa dan , dan estimator yang bias memang jauh lebih buruk (nilai lebih besar) daripada yang tidak bias menurut metrik ini, meskipun MSE dari estimator yang bias (pada set-test) secara signifikan lebih baik.
Di mana adalah koefisien nyata dari variabel dependen, adalah penaksir yang bias untuk , dan adalah penaksir yang tidak bias untuk .
Ini saya percaya menunjukkan bahwa alasan untuk hasil BUKAN varians yang lebih tinggi dari penaksir tidak bias, karena masih lebih dekat dengan nilai sebenarnya.
Kredit: Menggunakan catatan Kuliah Steve Pischke sebagai sumber
b
dan bFixed
, tetapi menjelaskan apa yang ditampilkan.