Как Stata реализует веса? - PullRequest
       13

Как Stata реализует веса?

0 голосов
/ 20 сентября 2018

Рассмотрим очень простую команду оценки, regress руководстве в разделе «Методы и формулы» мы читаем:

enter image description here

Итак, согласно руководству, для fweightsStata берет мой вектор весов (введенный с помощью fw=) и создает диагональную матрицу D.Теперь диагональные матрицы имеют одинаковую транспонированность.Следовательно, мы могли бы определить D=C'C=C^2, где C - это матрица, содержащая квадратный корень из моих весов в диагонали.

Теперь, учитывая мои обозначения и текст выше, мы можем воспроизвести метод Статы путем предварительного умножения на X и yZ) с матрицей C.Таким образом, (CX)'CX=X'C'CX=X'DX и так далее.На практике мы достигаем этого путем умножения каждой переменной на квадратный корень веса, наблюдение за наблюдением.

Теперь я попытался повторить оценки Статы вручную, но я получил другой результат.Пример кода ниже:

webuse auto, clear

keep if !mi(rep78)
qui regress price weight length [fw=rep78]
estimates store stata
preserve
replace price = price*sqrt(rep78)
replace weight = weight*sqrt(rep78)
replace length = length*sqrt(rep78)

qui regress price weight length
estimates store me
restore
estimates table stata me, b

С выводом:

----------------------------------------
    Variable |   stata          me      
-------------+--------------------------
      weight |  4.1339379    1.7738167  
      length | -82.996394    16.502356  
       _cons |  9425.5443   -4071.7341  
----------------------------------------

Совпадение ужасное.Результаты будут такими же, если мы изменим fw= с другими формами весов.В чем проблема?Моя математика или код неправильный?Если нет, то как на самом деле Stata реализует веса?

1 Ответ

0 голосов
/ 20 сентября 2018

Это несоответствие происходит из-за того, что вы забыли масштабировать перехват / константу:

webuse auto, clear
keep if !mi(rep78)
qui regress price weight length [fw=rep78]
estimates store stata
preserve
replace price = price*sqrt(rep78)
replace weight = weight*sqrt(rep78)
replace length = length*sqrt(rep78)
gen constant = 1*sqrt(rep78)
qui regress price weight length constant, nocons
estimates store me
restore
estimates table stata me, b

Это заменяет обычный столбец единиц на «псевдо-перехват», который является взвешенной версией.

...