Bazı araştırmalar için Değişken Hatası modelinde bazı sözdizim verileri üzerinde çalışıyorum. Şu anda tek bir bağımsız değişkenim var ve bağımlı değişkenin gerçek değeri için varyansı bildiğimi varsayıyorum.
Böylece, bu bilgilerle, bağımlı değişkenin katsayısı için tarafsız bir tahminci elde edebilirim.
Model:
y=0,5x-10+e2
Burada:
bazı için
σ E 2 ~ , N ( 0 , 1 )
Değerleri Burada sadece her bir örnek, aynı zamanda gerçek değerinin standart sapmasına ait bilinmektedir örnek için bilinen: . x σ x
OLS kullanarak önyargılı ( ) katsayısını alıyorum ve sonra kullanarak ayarlamalar yapıyorum:
Görüyorum ki, katsayı için yeni, tarafsız tahmincim bu modelle çok daha iyi (gerçek değere daha yakın), ancak MSE önyargılı tahminciyi kullanmaktan daha da kötüye gidiyor.
Ne oluyor? Şüpheli bir tahmincinin taraflı olandan daha iyi sonuçlar vermesini bekledim.
Matlab kodu:
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)
Sonuçlar:
önyargılı tahmin edicinin MSE'si:
ans =
Columns 1 through 7
1.2171 1.6513 1.9989 2.3914 2.5766 2.6712 2.5997
Column 8
2.8346
Tarafsız tahmin edicinin MSE'si:
ans =
Columns 1 through 7
1.2308 2.0001 2.9555 4.9727 7.6757 11.3106 14.4283
Column 8
11.5653
Buna ek olarak, b
ve bFixed
- değerlerini yazdırmak, bFixed
bunun aslında 0.5,-10
önyargılı tahmin ediciden (beklendiği gibi) gerçek değerlere daha yakın olduğunu görüyorum .
PS Tarafsız öngörüden daha kötü olanın sonuçları istatistiksel olarak anlamlıdır - "tam sürüm" kodunun basitleştirilmesinden dolayı, test koddan çıkarılmıştır.
GÜNCELLEME: test ve , ve önyargılı tahmin edici gerçekten de bu metriğe göre tarafsız olandan daha büyüktür (daha büyük değer), ancak önyargılı tahmincinin MSE'si (test setinde) önemli ölçüde daha iyi olsa da.
Burada , bağımlı değişken, gerçek katsayısıdır, için yanlı kestiricisi olduğu ve için tarafsız tahmin olan . Σ her test için ( β ' - β ) 2 β = 0.5 β β β ' β
Bu, sonuçların nedeninin, hala gerçek değere daha yakın olduğu için tarafsız tahmin edicinin daha yüksek varyansı OLMADIĞINI gösterdiğine inanıyorum.
Kredi: Steve Pischke'nin ders notlarını kaynak olarak kullanma
b
ve değerlerinin tümünün yazdırılmasını eklemedi bFixed
, ancak ne gösterdiklerini açıkladı.