⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xtlogit.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
			tsrevar `dep'
			local dep `r(varlist)'
			tsrevar `ind'
			local ind `r(varlist)'
		}
		local oldind `ind'
		qui _rmcoll `ind' if `touse', `constan'
		local ind "`r(varlist)'"
		local dropped : list oldind - ind
		foreach x of local dropped {
			local j : list posof "`x'" in oldind
			local x2 : word `j' of `indname'
			noi di as txt "note: `x2' dropped due to collinearity"
		}
		local p : word count `ind'

                count if `dep'==0 & `touse'
                if r(N) == 0 | r(N) == `nobs' {
			di in red "outcome does not vary; remember:"
			di in red _col(35) "0 = negative outcome,"
			di in red _col(9) /*
			*/ "all other nonmissing values = positive outcome"
                        exit 2000
                }

                local k 1
                while `k' <= `p' {
                        local wrd : word `k' of `ind'
                        local names "`names' `dep':`wrd'"
                        local k = `k'+1
                }

		if "`constan'" == "" {
			local names "`names' `dep':_cons lnsig2u:_cons"
			local p = `p' + 1
		}
		else {
			local names "`names' lnsig2u:_cons"
			local skip "skip"
		}
		if "`ind'" == "" { local skip "skip" }

		if "`from'" != "" {
			local arg `from'
			tempname from
			noi _mkvec `from', from(`arg') colnames(`names') /*
				*/ error("from()")
		}

		tempvar T
                sort `touse' `ivar'
		if "`weight'" != "" {
			tempvar wv
			gen double `wv' `exp' if `touse'
			_crcchkw `ivar' `wv' `touse'
			drop `wv'
		}
                by `touse' `ivar': gen int `T' = _N if `touse'
                summarize `T' if `touse' & `ivar'~=`ivar'[_n-1], meanonly
                local ng = r(N)
                local g1 = r(min)
		local g2 = r(mean)
                local g3 = r(max)

                local lll = cond("`log'"~="", "quietly", "noisily")
		tempname beta rho
		if "`from'" == "" {
			`lll' di in gr _n "Fitting comparison model:"
			`lll' logit `dep' `ind' if `touse' [`weight'`exp'], /*
				*/ `oarg' asis `constan' nocoef
			local llprob = e(ll)
			mat `beta' = e(b)
			mat coleq `beta' = `depstr'
			local tmp = -.8
			mat `rho' = (`tmp')
			mat colnames `rho' = rho:_cons
			mat `beta' = `beta',`rho'
		}
		else {
			mat `beta' = `from'
			local skip "skip"
			local refine "norefine"
			noi di
		}
		local sna : colnames(`beta')
		local snp : word count `sna'
		if `p'+1 != `snp' {
			* Means that some predictor was dropped due to
                        * perfect prediction or user gave short from vector.
			* (in case, -asis- option should prevent)
                        if "`from'" == "" {
                                di in red "unable to identify sample"
                        }
                        else {
                                local pp1 = `p'+1
                                local nr = rowsof(`from')
                                local nc = colsof(`from')
                                di in red "`from' (`nr'x`nc') is not " _c
                                di in red "correct length " _c
                                di in red "-- should be (1x`pp1')"
                        }
                        exit 198
		}

		tempvar w
		if "`weight'" == "" {
			gen double `w' = 1 if `touse'
		}
		else {
			gen double `w' `exp' if `touse'
		}

		sort `touse' `ivar' `dep' `ind'
		tempvar p
		gen long `p' = _n if `touse'
		summ `p' if `touse', meanonly
		local j0 = r(min)
		local j1 = r(max)
		drop `p'

                if "`log'" == "" { local lll "noisily" }
                else             { local lll "quietly" }
	}
	_GetQuad, avar(`qavar') wvar(`qwvar') quad($XTL_quad)
	tempname rhov 
        if "`skip'" == "" {
		qui logit `dep' if `touse' [`weight'`exp'], /*
			*/ `oarg' asis
		tempname beta0
		mat `beta0' = (e(b),0)
                `lll' di in green _n "Fitting constant-only model:" _n
		if `"`refine'"' != `"norefine"' {
			`lll' _GetRho `dep'  in `j0'/`j1', ivar(`ivar') ///
				w(`w') rho(`rhov') b(`beta0') `oarg' 	///
				avar(`qavar') wvar(`qwvar') quad(`quad') logit
		}
		if "`stdquad'"=="" {
			_GetAdap `dep' in `j0'/`j1', shat(`shat')	///
			hh(`hh') ivar(`ivar') b(`beta0') `constan' 	///
			`oarg' logit
		}
		`lll' ml model d2 xtlogit_d2 (`dep'=) /lnsig2 [iw=`w'] ///
			in `j0'/`j1', init(`beta0', copy)  maximize    ///
			`nolog' `options' search(off) nopreserve
                `lll' di in green _n "Fitting full model:" _n
		local options `options' continue
	}
	else if "`llprob'" != "" {
                `lll' di in green _n "Fitting full model:" _n
	}

	if `"`refine'"' != `"norefine"' {
		`lll' _GetRho `dep' `ind' in `j0'/`j1', ivar(`ivar') w(`w') ///
			rho(`rhov') b(`beta') `oarg' avar(`qavar')	///
			wvar(`qwvar') quad(`quad') logit
	}
	if "`stdquad'"=="" {
		_GetAdap `dep' `ind' in `j0'/`j1', shat(`shat') hh(`hh') ///
		logit ivar(`ivar') b(`beta') `constan' `oarg'
	}
	`lll' ml model d2 xtlogit_d2 (`depstr':`dep' = `ind', 	///
		`constan' `oarg')	///
		/lnsig2	[iw=`w'] in `j0'/`j1' , init(`beta', copy) ///
		`log' maximize `options' search(off) nopreserve
	est local cmd
	est local r2_p
	est scalar n_quad  = `quad'
	est local intmethod "aghermite"
	if "`stdquad'" !="" {
		est local intmethod "ghermite"
	}
        est local distrib "Gaussian"
        est local title   "Random-effects logistic regression"
	est local wtype  "`weight'"
	est local wexp   `"`exp'"'
        est scalar N_g    = `ng'
        est scalar g_min  = `g1'
        est scalar g_avg  = `g2'
        est scalar g_max  = `g3'
        tempname b v
        mat `b' = e(b)
        mat `v' = e(V)
        est local depvar "`depname'"
        local names : subinstr local names "`dep'" "`depstr'", all
        foreach x of local ind {
        	local j : list posof "`x'" in oldind
        	local x2 : word `j' of `indname'
        	local names : subinstr local names "`x'" "`x2'"
        }
        mat colnames `b' = `names'
        mat colnames `v' = `names'
        mat rownames `v' = `names'
        est post `b' `v', depname(`depname') noclear
	if "`llprob'" != "" {
		est scalar ll_c    = `llprob'
		est scalar chi2_c  = cond([lnsig2u]_b[_cons]<=-14, 0, /*
                        */ abs(-2*(e(ll_c)-e(ll))))
		est local chi2_ct  "LR"
	}
        est scalar sigma_u = exp(.5*[lnsig2u]_b[_cons])
        est scalar rho    = e(sigma_u)^2 / ((_pi^2)/3 + e(sigma_u)^2)
	est local ivar "`ivar'"
	est local offset  "`offset'"
	est local offset1  "" /* undo from ml model */
	est local predict xtlogit_re_p
	est local cmd "xtlogit"

	if "`display'" == "" {
		DispTbl, `level' `or'
		DispLR
	}
end


program define Display
	if "`e(cmd)'" == "xtgee" {
		syntax [, OR *]
		if "`or'" != "" {
			local eform eform
		}
		noi xtgee, `options' `eform'
		exit
	}
	DispTbl `0'
	DispLR
end


program define DispTbl
	syntax [, Level(cilevel) OR]
        if "`or'" != "" { local earg "eform(OR)" }

        _crcphdr
        if "`e(cmd)'" != "clogit" { local plus "plus" }

        est display, first `plus' `earg' level(`level')

	if "`e(cmd)'" != "clogit" {
		_diparm lnsig2u, level(`level') noprob
		di in smcl in gr "{hline 13}{c +}{hline 64}"
		_diparm lnsig2u, level(`level') label("sigma_u") /*
			*/ function(exp(.5*@)) /*
			*/ derivative(.5*exp(.5*@))
		_diparm lnsig2u, level(`level') label("rho") /*
			*/ function(exp(@)/((_pi^2)/3+exp(@))) /*
			*/ derivative((_pi^2/3*exp(@))/(((_pi^2)/3+exp(@))^2))
		di in smcl in gr "{hline 13}{c BT}{hline 64}"
	}
end


program define DispLR
	if "`e(ll_c)'" != "" {
		tempname pval
                scalar `pval' =  chiprob(1, e(chi2_c))*0.5
                if e(chi2_c)==0 { scalar `pval'= 1 }
		if ((e(chi2_c) > 0.005) & (e(chi2_c)<1e4)) | (e(chi2_c)==0) {
                        local fmt "%8.2f"
                }
                else    local fmt "%8.2e"
                di in green "Likelihood-ratio test of rho=0: " _c
                di in green in smcl "{help j_chibar##|_new:chibar2(01) = }" /*
                        */ in ye `fmt' e(chi2_c) _c
                di in green " Prob >= chibar2 = " in ye %5.3f /*
                        */ `pval'
	}

	if e(N_cd) < . {
		if e(N_cd) > 1 { local s "s" }
		di in gr _n /*
		*/ "Note: `e(N_cd)' completely determined panel`s'"
	}
end
exit

HISTORY

2.7.0  14jun2001  nodisplay option

2.6.7  04apr2001

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -