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

📄 mhodds.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
				tempvar last
				qui gen byte `last'=1 if _n == _N
				qui replace `u' = sum(`u')
				qui replace `v' = sum(`v')
			}
		      drop `d1' `dt' `p1' `p2' `pt'
		      qui gen double `rr' = exp(`u'/`v')
		      qui gen double `ef' = /*
			*/ exp(invnorm(`level'*0.005 + 0.5)/sqrt(`v'))
		}
  	 
		* Calculate the OR or trend with confidence limits
		tempvar cl cu ch pv
		qui gen double `cl' = `rr'/`ef' if `touse'
		qui gen double `cu' = `rr'*`ef' if `touse'
		qui gen double `ch' = (`u'^2)/`v' if `touse'
		qui gen double `pv' = chiprob(1,`ch') if `touse'
		if "`compare'"!="" | "`by'"!="" {
		/*
			display ""
	di in gr "OR estimate, lower and upper " `"`=strsubdp("`level'")'"' /*
			*/ "% confidence limits, and"
			di in gr /*
			*/  "chi-squared test for OR=1 (1 degree of freedom)"
		*/
		}
		if "`compare'" == "" {
			di in gr _n /*
	   */ "(The Odds Ratio estimate is an approximation to the odds ratio "
			di in gr "for a one unit increase in `abne')"
		}

		if "`by'" != "" {
			if "`grp1'"!="" {
				if `grp1' == `grp2' {
					local cl=.
					local cu=.
					local ch=.
					local pv=.
				}
			}
			MTAb1 `rr' `cl' `cu' `ch' `pv' `level'  `last' `by'
local adj "`str' `by'"
local t2:word count `adj'
TITle `t2' `adj'
   			di in gr _n _col(5) /*
			*/ "Mantel-Haenszel estimate controlling for `r(t2)'"
			local odds=`rr'[_N]
			local lci=`cl'[_N]
			local uci=`cu'[_N]
			local chi2=`ch'[_N]
			local pval=`pv'[_N]
			if "`grp1'"!="" {
				if `grp1' == `grp2' {
					local lci=.
					local uci=.
					local chi2=.
					local pval=.
				}
			}
			MTAb2 `odds' `lci' `uci' `chi2' `pval' `level' 

			if `hdf' > 1 {
				di in gr _n /*
				*/ "Test of homogeneity of ORs (approx): " /*
				*/ "chi2(" in ye `hdf'-1 in gr ")" _col(48) "="/*
				*/ in ye %8.2f `het'
				di in gr _col(38) "Pr>chi2   =  " /*
				 */ in ye %5.4f chiprob(`hdf'-1, `het') 
				ret scalar chi2_hom = `het' 
				ret scalar df_hom = `hdf'-1 
				*ret scalar hom_p = chiprob(`hdf'-1, `het')  
			}
			else {
				di in gr _n "Too few informative strata" /*
				*/ " for test for unequal OR's"
			}
		}
		else {
			qui replace `last'=0 if `last'>=.
			sort `last'
			local odds=`rr'[_N]
			local lci=`cl'[_N]
			local uci=`cu'[_N]
			local chi2=`ch'[_N]
			local pval=`pv'[_N]
			if "`grp1'"!="" {
				if `grp1' == `grp2' {
					local lci=.
					local uci=.
					local chi2=.
					local pval=.
				}
			}
			di "" 
			MTAb2 `odds' `lci' `uci' `chi2' `pval' `level' 
		}
		ret scalar p =  `pv'[_N]
		ret scalar chi2 =  `ch'[_N]
		ret scalar ub_or  =  `cu'[_N]
		ret scalar lb_or =  `cl'[_N]
		ret scalar or  = `rr'[_N] 
		if "`grp1'"!="" {
			if `grp1' == `grp2' {
			ret scalar p = .
			ret scalar chi2 = .
			ret scalar ub_or  = .
			ret scalar lb_or =.

			}
		}

	} /* END CAPTURE */
		if "`by'" != "" { qui drop if _n==_N }
		sort `order'
		 local rc = _rc
                if _rc!=0 {
                        exit `rc'
                }
end
program define MTAb1
	args or lo up chisq pv l1 last 
	*d " `1' `2'   `3'   `4'    `5'    `6' `7' . . . "

	local lab8: value label `8'
	local lng 10
	if "`9'"!="" {
		local lng=20
		local lab9: value label `9'
	}
	if "`10'"!="" {
		local lng=30
		local lab10: value label `10'
	}
	local lng2=78-`lng'

	di _n in smcl in gr "{hline `lng'}{c TT}{hline `lng2'}"
	di in gr %9s abbrev("`8'",8) _c
	if "`9'"!="" {
		di in gr %10s abbrev("`9'",8) _c
	}
	if "`10'"!="" {
		di in gr %10s abbrev("`10'",8) _c
	}
	local spc=int((`lng2'-31)/3)
	di in smcl in gr " {c |} Odds Ratio" _c
	local sp=`spc'-3
  	di in gr _col(`sp') "chi2(1)" _c
	*di in gr _col(`spc') "df" _c
	local sp=`spc'-2
	di in gr _col(`sp') "P>chi2" _c
	local spl=(57-2*`spc'-`lng'-14)-1
	local cil `=string(`l1')'
	local cil `=length("`cil'")'
	local spl2 = `spl' + 2 - `cil'
	di in gr _col(`spl2')"[`l1'% Conf. Interval]"   
	*local spc = `spc' - 8
	di in smcl in gr "{hline `lng'}{c +}{hline `lng2'}"



	local i 1
	while `i'<_N {
                        local lst=`last'[`i']
                        if `lst'==1 {
				if "`lab8'"!="" {
					local x=`8'[`i']
					local labx: label `lab8' `x' 8
					local len=10-length("`labx'")
			 		 noi di in gr  _col(`len') /*
						*/ %8.0g "`labx'" _c
                                }
				else {
					cap confirm string var `8'
					if _rc==0 {
						local alab=substr(`8'[`i'],1,8)
						local alen=8-length("`alab'")
						noi di in gr _col(2) /*
						*/ _skip(`alen') "`alab'" _c
					}
				 	else noi di in gr /*
						*/  _col(2) %8.0g `8'[`i'] _c
				}
				if "`lab9'"!="" {
					local x=`9'[`i']
					local labx: label `lab9' `x' 8
					local len=11-length("`labx'")
			 		 noi di in gr  _col(`len') /*
						*/ %8.0g "`labx'" _c
                                }

				else if "`9'"!="" {
					cap confirm string var `9'
					if _rc==0 {
						local alab=substr(`9'[`i'],1,8)
						local alen=8-length("`alab'")
                                        	noi di _col(3)  in gr /*
						*/ _skip(`alen')  "`alab'" _c
                                	}
					else noi di in gr _col(3) /*
					*/  %8.0g `9'[`i'] _c
				}
				if "`lab10'"!="" {
					local x=`10'[`i']
					local labx: label `lab10' `x' 8
					local len=11-length("`labx'")
			 		 noi di in gr  _col(`len') /*
						*/ %8.0g "`labx'" _c
                                }
				else if "`10'"!="" {
					cap confirm string var `10'
                                        if _rc==0 {
						local alab=substr(`10'[`i'],1,8)
						local alen=8-length("`alab'")
                                        	noi di _col(3)  in gr /*
						*/ _skip(`alen')  "`alab'" _c
                                        }
					else noi di in gr _col(3) /*
					*/  %8.0g `10'[`i'] _c
				}
				noi di in smcl in gr " {c |} " _c
				di in ye %10.6f `or'[`i'] _c
				local sp=`spc'-2
				di in ye _col(`sp') %6.2f `chisq'[`i'] _c
				di in ye _col(`sp') %5.4f `pv'[`i'] _c
				local sp=`spl'
				di in ye _col(`sp') %9.5f `lo'[`i'] _c
				di in ye _col(3) %9.5f `up'[`i'] 
                        }
                        local i=`i'+1
	}
	di in smcl in gr "{hline `lng'}{c BT}{hline `lng2'}"
end		

program define MTAb2
	args or lo up ch pv l1 
	local cil `=string(`l1')'
	local cil `=length("`cil'")'
	local spaces "        "
	if `cil' == 4 {
		local spaces "      "
	} 
	else if `cil' == 5 {
		local spaces "     "
	}
	di in smcl in gr _col(5) "{hline 64}"
	di in gr _col(5) /*
	*/ " Odds Ratio    chi2(1)        P>chi2`spaces'[`l1'% Conf. Interval]"
	di in smcl in gr _col(5) "{hline 64}"
	di in ye _col(6) %10.6f `or' _col(20) %7.2f `ch' _col(35) %5.4f `pv' /*
	*/ _col(48) %10.6f `lo' _col(59) %10.6f `up'
	di in smcl in gr _col(5) "{hline 64}"
end

program define TITle, rclass
        if `1'==1 {
                ret local t2 = abbrev("`2'",12)
                exit
        }
        if `1'==2 {
		local n2 = abbrev("`2'",12)
		local n3 = abbrev("`3'",12)
                ret local t2 "`n2' and `n3'"
                exit
        }
        local cnt=`1'
        local fi = abbrev("`2'", 8)
        mac shift
        local i 2
        while `i'<`cnt' {
		local n2 = abbrev("`2'",8)
                local fi="`fi', `n2'"
                local i=`i'+1
                mac shift
        }
	local n2 = abbrev("`2'",8)
        ret local t2 "`fi' and `n2'"
end

⌨️ 快捷键说明

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