Pracuję nad niektórymi danymi syntetycznymi dla modelu błędu w zmiennej dla niektórych badań. Obecnie mam pojedynczą zmienną niezależną i zakładam, że znam wariancję prawdziwej wartości zmiennej zależnej.
Dzięki tym informacjom mogę uzyskać obiektywny estymator dla współczynnika zmiennej zależnej.
Model:
y=0,5x-10+e2e1~N(0,σ2)σe2~N(0,1)
Gdzie:
dla niektórych
Gdzie wartości są znane tylko dla każdej próbki, a także znane jest standardowe odchylenie rzeczywistej wartości dla próbki: . x σ x
Otrzymuję współczynnik stronniczości ( ) za pomocą OLS, a następnie dokonuję korekt za pomocą:
Widzę, że mój nowy, obiektywny estymator dla współczynnika jest znacznie lepszy (bliższy wartości rzeczywistej) z tym modelem, ale MSE pogarsza się niż używanie estymatora stronniczości.
Co się dzieje? Spodziewałem się, że wszechstronny estymator przyniesie lepsze wyniki niż stronniczy.
Kod 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)
Wyniki:
tendencyjny MSE estymatora:
ans =
Columns 1 through 7
1.2171 1.6513 1.9989 2.3914 2.5766 2.6712 2.5997
Column 8
2.8346
MSE bezstronnego estymatora:
ans =
Columns 1 through 7
1.2308 2.0001 2.9555 4.9727 7.6757 11.3106 14.4283
Column 8
11.5653
Ponadto, drukowanie wartości b
i bFixed
- Widzę, że bFixed
jest to rzeczywiście bliższe rzeczywistym wartościom 0.5,-10
niż tendencyjny estymator (zgodnie z oczekiwaniami).
PS Wyniki bycia bezstronnym są gorsze od stronniczego estymatora są istotne statystycznie - test na to jest pominięty w kodzie, ponieważ jest to uproszczenie kodu „pełnej wersji”.
AKTUALIZACJA: Dodałem test, który sprawdza i , a stronniczy estymator jest rzeczywiście znacznie gorszy (większa wartość) niż obiektywny zgodnie z tą metryką, mimo że MSE tendencyjnego estymatora (w zestawie testowym) jest znacznie lepszy.
Gdzie jest rzeczywistym współczynnikiem zmiennej zależnej, jest tendencyjnym estymatorem dla , a jest obiektywnym estymatorem dla . Σ dla każdego testu ( P ' - p ) 2 β = 0,5 β β β ' β
To, jak sądzę, pokazuje, że przyczyną wyników NIE jest większa wariancja obiektywnego estymatora, ponieważ wciąż jest ona bliższa rzeczywistej wartości.
Źródło : Wykorzystanie notatek z wykładów Steve'a Pischke jako zasobu
b
ibFixed
, ale wyjaśnił, co pokazują.Odpowiedzi:
Podsumowanie: poprawione parametry służą do przewidywania jako funkcja prawdziwego predyktora . Jeśli w predykcji użyto , oryginalne parametry działają lepiej.x x~
Zauważ, że czają się dwa różne modele predykcji liniowej. Najpierw podane , drugie, podane ,y x
Nawet gdybyśmy mieli dostęp do prawdziwych parametrów, optymalne przewidywanie liniowe jako funkcje byłoby inne niż optymalne przewidywanie liniowe jako funkcja . Kod w pytaniu wykonuje następujące czynnościx x~
Ponieważ w kroku 3 przewidujemy, że funkcja , a nie funkcja , lepsze jest użycie (szacunkowych) współczynników drugiego modelu.x~ x
Rzeczywiście, gdybyśmy mieli dostęp do , i ale nie , moglibyśmy podstawić estymator liniowy w pierwszym modelu, Jeśli najpierw wykonamy transformację z postaci do a następnie wykonamy obliczenia w najnowszym równaniu, otrzymamy współczynnikiα β x~ x x
Testowanie
Edytowałem kod w OP, aby również oceniać MSE pod kątem prognoz, używając niehałasowej wersji prognozy (kod na końcu odpowiedzi). Wyniki są
Oznacza to, że gdy używasz zamiast , poprawione parametry rzeczywiście pokonują parametry nieskorygowane, zgodnie z oczekiwaniami. Co więcej, przewidywanie za pomocą ( ), to znaczy stałych parametrów i prawdziwego predyktora, jest lepsze niż ( ), że to parametry regu i hałaśliwy predyktor, ponieważ oczywiście hałas w pewnym stopniu szkodzi dokładności prognozowania. Pozostałe dwa przypadki odpowiadają użyciu parametrów niewłaściwego modelu, a zatem dają gorsze wyniki.x x~ α,β,x α~,β~,x~
Zastrzeżenie dotyczące nieliniowości
W rzeczywistości nawet jeśli związek między jest liniowy, związek między i może nie być. Zależy to od rozkładu . Na przykład w niniejszym kodzie jest pobierane z rozkładu jednolitego, więc bez względu na to, jak wysokie jest , znamy górną granicę dla a zatem przewidywane jako funkcja powinna nasycić. Możliwym rozwiązaniem w stylu bayesowskim byłoby ustalenie rozkładu prawdopodobieństwa dla a następnie podłączenie podczas wyprowadzaniar ~ x x x ~ x x r ~ x x E ( x | ~ x ) y x xy,x y x~ x x x~ x y x~ x E(x∣x~) y^^x - zamiast predykcji liniowej, której użyłem wcześniej. Jeśli jednak ktoś chce założyć rozkład prawdopodobieństwa dla , przypuszczam, że należy wybrać pełne rozwiązanie bayesowskie zamiast podejścia opartego przede wszystkim na korekcie oszacowań OLS.x
Kod MATLAB do replikacji wyniku testu
Zauważ, że zawiera to także moje własne implementacje do oceny i OLS_solver, ponieważ nie zostały podane w pytaniu.
źródło