Включить дополнительную статистику в таблицу после нескольких команд - PullRequest
0 голосов
/ 28 июня 2018

Это продолжение моего ранее найденного вопроса здесь .

Мне нужно иметь в таблице результатов оценки линейной регрессии и модели glm. Включать дополнительную статистику в результаты на полях довольно обременительно, но с ней можно разобраться, в данном случае это программа с именами getAIC.

К сожалению, из-за того, что мастеринг опускает статистику линейной модели из таблицы.

Вот что я сделал:

program getAIC, rclass
    estat ic
    matrix list r(S)
    matrix S = r(S)
    ret scalar aic = S[1,5]
end

sysuse auto, clear

eststo m1: reg foreign price
*getAIC
*local AIC = round(`r(aic)', .01)
*estadd local AIC `AIC'

glm foreign price, fa(bin) link(probit)
getAIC
local AIC = round(`r(aic)', .01)
eststo m2: margins, dydx(price) post
estadd local AIC `AIC'

esttab m1 m2 using output, s(AIC) replace

type output.txt

--------------------------------------------
                      (1)             (2)   
                  foreign                   
--------------------------------------------
price          0.00000760      0.00000766   
                   (0.41)          (0.43)   

_cons               0.250*                  
                   (2.00)                   
--------------------------------------------
AIC                                 93.89   
--------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

Если я прокомментирую то, что я прокомментировал ниже команды reg, я получу то, что мне нужно. Но это становится очень грязным, так как у меня есть несколько моделей, и мне нужно получить больше статистики, чем просто AIC. Интересно, есть ли способ сделать это более эффективно?

1 Ответ

0 голосов
/ 28 июня 2018

Вам просто нужно использовать вашу программу getAIC дважды:

sysuse auto, clear

eststo m1: reg foreign price
getAIC
local AIC = round(`r(aic)', .01)
estadd local AIC `AIC'

glm foreign price, fa(bin) link(probit)
getAIC
local AIC = round(`r(aic)', .01)
eststo m2: margins, dydx(price) post
estadd local AIC `AIC'

esttab m1 m2 using output, s(AIC) replace

type output.txt
--------------------------------------------
                      (1)             (2)   
                  foreign                   
--------------------------------------------
price          0.00000760      0.00000766   
                   (0.41)          (0.43)   

_cons               0.250*                  
                   (2.00)                   
--------------------------------------------
AIC                 97.95           93.89   
--------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

EDIT:

Это действительно все зависит от , какая статистика вам нужна. Для статистики, непосредственно предоставляемой в r() или e(), вам просто нужно указать соответствующие локальные макросы и добавить их, используя estadd.

Например:

sysuse auto, clear

eststo m1: reg foreign price
getAIC
local AIC = round(`r(aic)', .01)
local LL = round(`e(ll)', .01)
estadd local AIC `AIC'
estadd local LL `LL'

glm foreign price, fa(bin) link(probit)
getAIC
local AIC = round(`r(aic)', .01)
eststo m2: margins, dydx(price) post
estadd local AIC `AIC'

esttab m1 m2 using output, s(AIC LL) replace

type output.txt

--------------------------------------------
                      (1)             (2)   
                  foreign                   
--------------------------------------------
price          0.00000760      0.00000766   
                   (0.41)          (0.43)   

_cons               0.250*                  
                   (2.00)                   
--------------------------------------------
AIC                 97.95           93.89   
LL                 -46.98                   
--------------------------------------------

Для чего-то более «экзотического», такого как AIC и BIC, вам нужно будет изменить вашу программу getAIC, чтобы извлечь их из других команд, таких как estat.

...