Error In Variables Modelの偏りのない推定値よりも良い結果を達成する回帰のバイアス推定器


13

私はいくつかの研究のために、Error In Variableモデルのいくつかの合成データに取り組んでいます。現在、単一の独立変数があり、従属変数の真の値の分散を知っていると仮定しています。

したがって、この情報を使用して、従属変数の係数の不偏推定量を実現できます。

モデル:

x~=x+e1
y=0.5x10+e2
ここで、
e1~N(0,σ2)のためのいくつかのσ
e2~N(0,1)

値はここでy,x~唯一各サンプル、またの真の値の標準偏差のために知られているxのサンプルのために知られている:σx

私は偏っ(取得β OLSを使用して)係数をした後、使用して調整を行います。β^

β=β^σ^x~2σx2

このモデルでは、係数の新しい不偏推定量がはるかに優れている(実際の値に近い)ことがわかりますが、バイアス推定量を使用するよりも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

さらに、band の値を印刷すると、バイアスされた推定器よりも実際の値に実際に近いbFixedことbFixedがわかります0.5,-10(予想どおり)。

PS偏りのない推定器がバイアス付き推定器よりも悪い結果は統計的に有意です-「完全版」コードの簡略化であるため、コードのテストは省略されています。

UPDTAE:私はチェックすることをテストして加えΣ 各試験用β ' - β 2公正なものよりも、及びバイアス推定が実際に有意に悪い(大きい値が)に従ってこのメトリックは、バイアス付き推定器のMSE(テストセット上)が大幅に改善されていますが。 ここで、β = 0.5従属変数の実際の係数でありβは付勢するための推定であるβ、及びβ 'for each test(β^β)2for each test(ββ)2
β=0.5β^ββは、の不偏推定量です。β

これは、結果の理由が不偏推定量のより高い分散ではなく、実際の値により近いことを示していると考えています。

クレジット:リソースとしてSteve Pischkeの講義ノートを使用


コードだけでなく、結果も投稿すると便利です。
アレコスパパドプロス

@AlecosPapadopoulosはそれを追加しました、のすべての値の印刷を追加していないbbFixed、彼らが示すものを説明しました。
アミット

回答:


2

要約:修正されたパラメーターは、真の予測子関数として予測するためのものです。場合xが予測に使用され、元のパラメータは、パフォーマンスが向上。xx~

2つの異なる線形予測モデルが潜んでいることに注意してください。まず、所与のXY、X = βyx 第二、 Y所与X Y X = β

y^x=βx+α,
yx~
y^x~=β~x~+α~.

我々は真のパラメータへのアクセスがあった場合でも、の関数として予測線形最適の関数として予測線形最適とは異なるだろうX。質問のコードは次のことを行いますxx~

  1. パラメータを推定β~^,α~^
  2. 計算は推定βαをβ^,α^
  3. 比較パフォーマンスY 1 = βおよび Y 2= βy^1=β^x~+α^y^2=β~^x~+α~^

ステップ3において、我々は、の関数として予測されているのでないの関数として、X良い作品第2のモデルの(推定)係数を使用して、。x~x

αβx~xx

yx^^=βx^(x~)+α=β(μx+(x^μx)σx2σx~2)+α=σx2σx~2β+αβ(1σx2σx~2)μx.
α~,β~α,βα~,β~α,β

テスト中

OPのコードを編集して、ノイズのないバージョンの予測(回答の最後のコード)を使用して予測のMSEを評価しました。結果は

Reg parameters, noisy predictor
1.3387    1.6696    2.1265    2.4806    2.5679    2.5062    2.5160    2.8684

Fixed parameters, noisy predictor
1.3981    2.0626    3.2971    5.0220    7.6490   10.2568   14.1139   20.7604

Reg parameters, true predictor
1.3354    1.6657    2.1329    2.4885    2.5688    2.5198    2.5085    2.8676

Fixed parameters, true predictor
1.1139    1.0078    1.0499    1.0212    1.0492    0.9925    1.0217    1.2528

xx~α,β,xα~,β~,x~

非線形性に関する注意

y,xyx~xxx~xyx~xE(xx~)y^^xx

テスト結果を複製するためのMATLABコード

これには、質問で指定されていないため、evaluateおよびOLS_solverの実装も含まれています。

rng(1)

OLS_solver = @(X,Y) [X ones(size(X))]'*[X ones(size(X))] \ ([X ones(size(X))]' * Y);
evaluate = @(b,x,y)  mean(([x ones(size(x))]*b - y).^2);

reg_mse_agg = [];
fixed_mse_agg = [];
reg_mse_orig_agg = [];
fixed_mse_orig_agg = [];

varMult = 1;
numTests = 60;
for dataNumber=1:8
    reg_mses = [];
    fixed_mses = [];
    reg_mses_orig = [];
    fixed_mses_orig = [];

    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,:);
        origXtest = origX(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];

        reg_mse_orig = evaluate(b, origXtest, ytest);
        reg_mses_orig = [reg_mses; reg_mses_orig];

        fixed_mse_orig = evaluate(bFixed, origXtest, ytest);
        fixed_mses_orig = [fixed_mses_orig; fixed_mse_orig];

    end
    reg_mse_agg = [reg_mse_agg , reg_mses];
    fixed_mse_agg = [fixed_mse_agg , fixed_mses];

    reg_mse_orig_agg = [reg_mse_orig_agg , reg_mses_orig];
    fixed_mse_orig_agg = [fixed_mse_orig_agg , fixed_mses_orig]; 
end

disp('Reg parameters, noisy predictor')
disp(mean(reg_mse_agg))
disp('Fixed parameters, noisy predictor')
disp(mean(fixed_mse_agg))
disp('Reg parameters, true predictor')
disp(mean(reg_mse_orig_agg))
disp('Fixed parameters, true predictor')
disp(mean(fixed_mse_orig_agg))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.