Сравнение коэффициентов регрессии
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | * Допустим, у вас есть 2 независимые переменные X2 и X3 Есть одна зависимая переменная X1 Все переменные измерены в интервальной шкале Вам нужно проверить, можно ли говорить, что регрессионный коэффициент для X1 и X2 значимо больше, чем для X1 и X3. * Если можно предполагать независимость этих регрессий, тогда можно просто сделать регрессию X1 на X2 и X3, вычислить разность между двумя регрессионными коэффициентами, а затем - поделить её на корень квадратный из суммы квадратов стандартных ошибок, что, в предположении нормальности, даст t-статистику с N-2 степенями свободы. * В общем случае мы не можем предполагать независимость, поэтому нам потребуется дважды вычесть из суммы квадратов стандартных ошибок коэффициентов их ковариацию для того, чтобы получить корректную оценку дисперсии и, затем, стандартной ошибки для разности. * Для нахождения ковариационной матрицы регрессионных коэффициентов можно было бы использовать команду MANOVA, но она дала бы непосредственно лишь один нужный компонент (то, что я называю здесь sigma - т.е. оценённая ошибка, или ковариационная матрица остатков зависимой переменной). Чтобы получить второй нужный компонент (обращённую матрицу x'x), надо было бы построить константу, выполнить команду REGRESSION без константы (через начало координат), вывести ковариационную матрицу параметров, а затем сократить средний квадрат остатков чтобы получить обращённую матрицу x'x. Разумеется, это немного тоскливо, поэтому я привожу здесь решение с использованием языка MATRIX. compute con=1. matrix. get x3 /var=con x1. get x2 /var=x3 x2. compute b=inv(t(x3)*x3)*t(x3)*x2. compute xtx=inv(t(x3)*x3). compute dfe=nrow(x3)-ncol(x3). compute sigma=(t(x2)*x2-t(b)*t(x3)*x2)/dfe. compute bcov=kroneker(sigma,xtx). compute b={b(:,1);b(:,2)}. compute c={0,1,0,-1}. compute tstat=c*b/sqrt(c*bcov*t(c)). compute ttmp=abs(tstat). compute pvalue=2*(1-tcdf(ttmp,dfe)). print tstat. print pvalue. end matrix. * Мы создаём столбец из единичек перед запуском процедуры MATRIX, чтобы представить константу в регрессионной модели. Внутри MATRIX мы используем команды GET для построения правой (x3) и левой (x2) частей нашего уравнения. Затем используем стандартные формулы метода наименьших квадратов для вычисления коэффициентов, степеней свободы и ковариационной матрицы оценок. Матрица регрессионных коэффициентов должна быть вытянута в вектор, что мы и делаем. Затем создаём вектор контраста (c), в котором коэффициенты расставлены так, чтобы обеспечить сравнение двух коэффициентов наклона, а затем используем его в стандартной формуле для вычисления t-статистики. Разумеется, вы можете расширить выдачу (print) в дополнение к тому, что выводится в этом синтаксисе. Обратите внимание, что t-статистика здесь - для стандартной двусторонней проверки. Исходный вопрос касался, скорее, односторонней гипотезы, соответственно, алгоритм принятия решения должен быть скорректирован. А именно, если мы получаем отрицательное значение разницы между коэффициентами, мы просто останавливаемся. Гипотеза заведомо не может быть отвергнута. Если же разность положительная, при принятии решения удваивать значимость (1-tcdf) не следует. |
Related pages
...