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

📄 asmprobit_estat.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 1.0.2  01apr2005
program asmprobit_estat
	version 9

	if "`e(cmd2)'" != "asmprobit" {
		di as err "{help asmprobit##|_new:asmprobit} estimation results not found"
		exit 301
	}

	gettoken sub rest: 0, parse(" ,")

	local lsub = length("`sub'")
	if "`sub'" == substr("covariance",1,max(3,`lsub')) | ///
	   "`sub'" == substr("correlation",1,max(3,`lsub')) {
		local which = substr("`sub'",1,3)
		Covariance `which' `rest'
	}
	else if "`sub'" == substr("alternatives",1,max(3,`lsub')) {
		if "`rest'" != "" {
			di as error "invalid syntax"
			exit 198
		}
		Alternatives
	}
	else estat_default `0'
end

program Covariance, rclass
	syntax namelist(name=which id="matrix type" max=1), ///
		[FORmat(string) BORder(string) left(numlist max=1 >=0)]

	if `e(cholesky)' Cov1
	else Cov2
	
	tempname V L 
	matrix `V' = r(V)

	if "`which'" == "cov" {
		matrix `V' = (`V'+`V'')*.5
		matrix `L' = `V'
		return matrix cov = `V'
		if ("`format'" == "") local format %9.0g
	}
	else if "`which'" == "cor" {
		tempname D
		matrix `D' = syminv(cholesky(diag(vecdiag(`V'))))
		matrix `L' = `D'*`V'*`D'

		matrix rownames `L' = `names'
		matrix colnames `L' = `names'
		matrix `L' = (`L' + `L'')*.5
		matrix `V' = `L'

		return matrix cor = `V'

		if ("`format'" == "") local format %6.3f

	}
	if ("`border'" == "") local border all
	if ("`left'" == "") local left 2
	matlist `L', format(`format') border(`border') left(`left') 
end

program Cov1, rclass

	tempname L b
	local nalt = e(k_alt)
	matrix `L' = I(`nalt')
	matrix `b' = e(b)

	forvalues j=1/`nalt' {
		local k = el(e(stdpattern),1,`j')
		if `k' < . {
			local k = colnumb(`b',"lnl`j'_`j':") 
			matrix `L'[`j',`j'] = exp(`b'[1,`k'])
		}
		else matrix `L'[`j',`j'] = el(e(stdfixed),1,`j')

		local j1 = `j'+1
		forvalues i=`j1'/`nalt' {
			local k = el(e(corpattern),`i',`j')
			if `k' < . {
				local k = colnumb(`b',"l`i'_`j':")
				matrix `L'[`i',`j'] = `b'[1,`k']
			}
			else matrix `L'[`i',`j'] = el(e(corfixed),`i',`j')
		}
	}
	tempname V
	matrix `L' = `L'*`L''
	matrix `V' = J(`nalt',`nalt',0)
	local order : rownames e(corpattern)

	forvalues j=1/`nalt' {
		/* cholesky pivots base and scale alternatives 	*/
		/* rownames identify the order 			*/
		local jj : word `j' of `order'
		local aj : word `j' of `e(alteqs)'
		local names `"`names' `aj'"'

		matrix `V'[`jj',`jj'] = `L'[`j',`j']

		local j1 = `j' + 1
		forvalues i=`j1'/`nalt' {
			local ii : word `i' of `order'
			matrix `V'[`ii',`jj'] = `L'[`i',`j']
			matrix `V'[`jj',`ii'] = `V'[`ii',`jj']
		}
	}

	matrix rownames `V' = `names'
	matrix colnames `V' = `names'
	
	return matrix V = `V'
end

program Cov2, rclass

	tempname rho sigma
	local nrho = e(k_rho)
	if (`nrho' > 0)	{
		matrix `rho' = J(1,`nrho',.)
	}	
	else {
		matrix `rho' = J(1,1,.)
	}
	local nsigma = e(k_sigma)
	if (`nsigma' > 0) {
		matrix `sigma' = J(1,`nsigma',.)
	}
	else {
		matrix `sigma' = J(1,1,.)
	}

	tempname L b D
	local nalt = e(k_alt)
	matrix `L' = I(`nalt')
	matrix `b' = e(b)
	matrix `D' = I(`nalt')

	forvalues j=1/`nalt' {
		local aj : word `j' of `e(alteqs)'
		local names `"`names' `aj'"'

		local k = el(e(stdpattern),1,`j')
		if `k' < . {
			if `e(fullcov)' {
				local k = colnumb(`b',"lnsigma`j':") 
				matrix `D'[`j',`j'] = exp(`b'[1,`k'])
			}
			else {
				if `sigma'[1,`k'] >= . {
					local i = colnumb(`b',"lnsigmaP`k':")
					matrix `sigma'[1,`k'] = exp(`b'[1,`i'])
				}
				matrix `D'[`j',`j'] = `sigma'[1,`k']
			}
		}
		else {
			matrix `D'[`j',`j'] = el(e(stdfixed),1,`j')
		}
		local j1 = `j'+1
		forvalues i=`j1'/`nalt' {
			local k = el(e(corpattern),`i',`j')
			if `k' < . {
				if `e(fullcov)' {
					local k =  colnumb(`b',"atanhr`i'_`j':") 

					matrix `L'[`i',`j'] = tanh(`b'[1,`k'])
					matrix `L'[`j',`i'] = `L'[`i',`j']
				}
				else {
					if `rho'[1,`k'] >= . {
						local k1 = colnumb(`b',"atanhrP`k':")
						matrix `rho'[1,`k'] = tanh(`b'[1,`k1'])
					}
					matrix `L'[`i',`j'] = `rho'[1,`k']
					matrix `L'[`j',`i'] = `rho'[1,`k']
				}
			}
			else {
				matrix `L'[`i',`j'] = el(e(corfixed),`i',`j')
				matrix `L'[`j',`i'] = `L'[`i',`j']
			}
		}
	}

	matrix `L' = `D'*`L'*`D'
	matrix rownames `L' = `names'
	matrix colnames `L' = `names'

	return matrix V = `L'
end

program Alternatives, rclass

	tempname table
	.`table'  = ._tab.new, col(6)
	.`table'.width |10 11 18|11 11 11|
	.`table'.strcolor . . yellow . . .
	.`table'.numcolor yellow yellow . yellow yellow yellow
	.`table'.numfmt %5.0g %9.0g . %10.0g %10.0g %10.2f
	di _n as text "{col 4}Alternatives summary"
	.`table'.sep, top
	.`table'.titles "Covariance" "Alt " "Alt " "Cases " "Frequency" "Percent"
	.`table'.titles "index  " "value" "label" "present" "selected" "selected"
	.`table'.sep, mid

	local nalt = rowsof(e(stats))
	forvalues i=1/`nalt' {
		local label = abbrev("`e(alt`i')'",17)
		.`table'.row `i' el(e(stats),`i',1) "`label'" 	///
		 	el(e(stats),`i',2) el(e(stats),`i',3)  	///
			100*el(e(stats),`i',4)
	}
	.`table'.sep,bot
end
	
exit

⌨️ 快捷键说明

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