Matlab: Регрессия и несмещенность оценок

by

Оцениваем регрессию в матлаб своими руками!

Y = [1 2 3 4 5]';
X = [[1 1 1 1 1]', [0 0 0 1 1]', [0 0 0 0 1]'];
alpha = 0.05;

size_X = size(X);
n = size_X(1,1);
k = size_X(1,2);
tval = tinv((1 - alpha/2), n-k);

beta_OLS = inv(X'*X)*(X'*Y);

TSS = (Y - mean(Y))'*(Y - mean(Y));
RSS = (Y - X*beta_OLS)'*(Y - X*beta_OLS);
ESS = TSS - RSS;
R_squared = ESS/TSS;

sigma2_eps_est = RSS/(n - k);
sigma_eps_est = sigma2_eps_est^0.5;

V_est_beta_OLS = sigma2_eps_est*inv(X'*X);

beta_OLS_std_err = zeros(k,1);
for j=1:k
beta_OLS_std_err(j,1) = V_est_beta_OLS(j,j)^0.5;
end

beta_OLS_t_statistics = zeros(k,1);
for j=1:k
beta_OLS_t_statistics(j,1) = beta_OLS(j,1)/beta_OLS_std_err(j,1);
end

LB_beta_conf_int = zeros(k,1);
for j=1:k
LB_beta_conf_int(j,1) = beta_OLS(j,1) - tval*beta_OLS_std_err(j,1);
end

UB_beta_conf_int = zeros(k,1);
for j=1:k
UB_beta_conf_int(j,1) = beta_OLS(j,1) + tval*beta_OLS_std_err(j,1);
end

REPRESENTATION_OUTPUT = [beta_OLS'; beta_OLS_std_err'; beta_OLS_t_statistics'; LB_beta_conf_int'; UB_beta_conf_int']';
LABEL1 = ['   beta_OLS', '  std_err', '   t_stat', '   LB_conf_int', ' UB_conf_int'];
disp(LABEL1);
disp(REPRESENTATION_OUTPUT);

Несмещенность? / Состоятельность? МНК-оценок.


n = 100;
mx = 10;
me = 0;
varx = 5;
vare = 1;
p = 0.9;
[x, e] = generate_x_e(n, mx, me, varx, vare, p);

beta = [1 2]';
X = [ones(n,1), x];
Y = X * beta + e;
alpha = 0.05;

size_X = size(X);
n = size_X(1,1);
k = size_X(1,2);
tval = tinv((1 - alpha/2), n-k);

beta_OLS = inv(X'*X)*(X'*Y);

TSS = (Y - mean(Y))'*(Y - mean(Y));
RSS = (Y - X*beta_OLS)'*(Y - X*beta_OLS);
ESS = TSS - RSS;
R_squared = ESS/TSS;

sigma2_eps_est = RSS/(n - k);
sigma_eps_est = sigma2_eps_est^0.5;

V_est_beta_OLS = sigma2_eps_est*inv(X'*X);

beta_OLS_std_err = zeros(k,1);
for j=1:k
beta_OLS_std_err(j,1) = V_est_beta_OLS(j,j)^0.5;
end

beta_OLS_t_statistics = zeros(k,1);
for j=1:k
beta_OLS_t_statistics(j,1) = beta_OLS(j,1)/beta_OLS_std_err(j,1);
end

LB_beta_conf_int = zeros(k,1);
for j=1:k
LB_beta_conf_int(j,1) = beta_OLS(j,1) - tval*beta_OLS_std_err(j,1);
end

UB_beta_conf_int = zeros(k,1);
for j=1:k
UB_beta_conf_int(j,1) = beta_OLS(j,1) + tval*beta_OLS_std_err(j,1);
end

REPRESENTATION_OUTPUT = [beta_OLS'; beta_OLS_std_err'; beta_OLS_t_statistics'; LB_beta_conf_int'; UB_beta_conf_int']';
LABEL1 = ['   beta_OLS', '  std_err', '   t_stat', '   LB_conf_int', ' UB_conf_int'];
disp(LABEL1);
disp(REPRESENTATION_OUTPUT);

Если запустите этот файл-сценарий (script), то получите следующую выдачу в Command Window:

beta_OLS  std_err   t_stat   LB_conf_int UB_conf_int
-3.2593    0.1840  -17.7175   -3.6243   -2.8942
2.4256    0.0185  130.7744    2.3888    2.4624

Из таблицы выше видно, что оценки коэффициентов регрессии -3.2593 и    2.4256 не слишком похожи на истинные значения параметров 1 и 2.

____________________________________________________________________

Если же вы в предыдущем файле-сценарии измените параметр p = 0.9 на p = 0.0, то результат будет следующим:

beta_OLS  std_err   t_stat   LB_conf_int UB_conf_int
1.0311    0.4463    2.3101    0.1453    1.9169
1.9959    0.0433   46.1106    1.9100    2.0818

Как думаете, почему так получилось? ;)))

Реклама

Метки: , ,

комментария 2 to “Matlab: Регрессия и несмещенность оценок”

  1. Эльдар Says:

    Дмитрий Александрович, во втором скрипте точно все правильно написано в команде:
    [x, e] = generate_x_e(n, mx, me, varx, vare, p); ?
    Пробовал несколько раз, пишет:
    Undefined function or method ‘generate_x_e’ for input arguments of type ‘double’.

  2. Борзых Д.А. Says:

    Да! Вам нужна ещё одна функция!

    function [X, Y] = generate_x_e(n, mx, my, varx, vary, p)
    sx = sqrt(varx);
    sy = sqrt(vary);
    b = p * sy/sx;
    a = my - mx * p * sy / sx;
    X = sx * randn(n,1) + mx;
    se = sqrt(sy^2 + b^2 * sx^2 - 2 * p^2 * sy^2);
    e = se * randn(n,1);
    Y = a + b * X + e;
    

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s


%d такие блоггеры, как: