📄 nlogittree.ado
字号:
*! version 7.0.4 04apr2005
program define nlogittree
version 7.0
syntax varlist(numeric) [, noLABel ]
marksample touse
local level : word count `varlist'
tokenize `varlist'
local i = `level'
while `i' >= 1 {
local bylist `bylist' ``i''
local i = `i' - 1
}
local tabr 0
foreach var of local bylist {
qui tab `var'
if r(r) < `tabr' {
dis as err /*
*/ "invalid tree structure; please input bottom level first"
exit 198
}
local tabr = r(r)
}
di
dis as txt "tree structure specified for the nested logit model"
di
dis as txt " top " _c
local m = 12*(`level' - 1)/2 - 4
dis as txt _col(`m') "-->" _c
local m = 12*`level' - `m' - 19
dis as txt _col(`m') " bottom"
di
tokenize `bylist'
local i 1
while `i' <= `level' {
di as res %12s abbrev("``i''", 10) " " _c
local i = `i' + 1
}
di
local m = (`level'-1)*14 + 12
di as txt "{hline `m'}"
preserve
cap noi {
qui keep if `touse'
tempvar group
qui egen `group' = group(`bylist')
qui bysort `group': keep if _n == 1
qui sort `bylist'
tempvar order
qui gen `order' = _n
qui count
local N = r(N)
tokenize `bylist'
forvalues i = 1/`level' {
qui bysort ``i'' (`order'): replace ``i'' = . if _n != 1
}
qui sort `order'
forvalues i = 1/`N' {
forvalues j = 1/`level' {
local a = ``j''[`i']
if "`a'" == "." { dis as res %14s " " _c }
else {
local islab : label (``j'') `a'
if "`islab'" == "`a'" | "`label'" != "" {
dis as res %12.0g `a' " " _c
}
else dis as res %12s abbrev("`islab'", 10) /*
*/ " " _c
}
}
di
}
}
restore
if _rc { exit _rc }
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -