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

📄 lv.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 3.1.7  22sep2004
program define lv, byable(onecall)
	version 7, missing
	syntax [varlist] [if] [in] [, Tail(integer 1024) Generate ]
	if "`generate'" == "" { 
		if _by() {
			by `_byvars', `_byrc0': lv1 `0'
		}
		else	lv1 `0'
		exit
	}
	if _by() {
		di as err "lv's generate option may not be combined with by"
		exit 190
	}
	lv2 `0'
end

program define lv1, rclass byable(recall) sort
* (Does it's work in S_# then at end puts in r() -- hard to get S_# 
* out of the computation steps.)
	version 6, missing
	syntax [varlist] [if] [in] [, Tail(integer 1024) ]
	marksample touse 
	qui replace `touse'=. if `touse'==0
	tokenize `varlist'
	while "`1'"~="" { 
		capture confirm string var `1'
		if _rc { 
			sort `touse' `1'
			local fmt : format `1'
			if (substr("`fmt'",-1,1)=="f" /*
			*/ | substr("`fmt'",-2,2)=="fc") /* 
			*/ & (  substr("`fmt'",3,1)=="."  |  /*
			*/	substr("`fmt'",3,1)=="," )  { 
				local fmt = "%9" + substr("`fmt'",3,.)
			}
			else if (substr("`fmt'",-1,1)=="g" /*
			*/ | substr("`fmt'",-2,2)=="gc") /* 
			*/ & ( substr("`fmt'",3,1)=="."   |  /*
			*/     substr("`fmt'",3,1)=="," ) { 
				local fmt = "%9" + substr("`fmt'",3,.)
			}
			else	local fmt "%9.0g"
			local lbl : variable label `1'
			if `"`lbl'"'=="" { 
				local lbl "`1'"
			}
			else	local lbl = substr(`"`lbl'"',1,32) 
			local skip = int((33-length(`"`lbl'"'))/2+.5)
			quietly count if `touse'==1 & `1'< . 
			global S_1 = r(N)
			di _n in smcl in gr /*
			*/ " # " in ye %6.0f $S_1 in gr "    " /*
			*/ _skip(`skip') "`lbl'" _n /*
			*/ _col(14) "{hline 33}"
			local n = ($S_1+1)/2
			if `n'==int(`n') { 
				global S_2 = `1'[`n']
				di in smcl in gr " M" %7.0f `n' "   {c |} " /*
				*/ _col(26) in ye /*
				*/ `fmt' `1'[`n'] _col(47) in gr /*
				*/ "{c |}    spread  pseudosigma"
			}
			else { 
				global S_2 = (`1'[`n']+`1'[`n'+1])/2
				di in smcl in gr /*
				*/ " M" %9.1f `n' " {c |} " in ye _col(26) /*
				*/ `fmt' $S_2 _col(47) in gr /*
				*/ "{c |}    spread  pseudosigma"
			}
			capture replace `mid'=$S_2 in 1
			LV `1' `n' `fmt' `tail' `z2' `mid' `spread' `psigma'
			LVdi `1' " " $S_1 1 `fmt' S_5 S_6 /*
				*/ 11 `z2' `mid' `spread' `psigma'
			di in smcl in gr /*
			*/ _col(13) "{c |}" _col(47) "{c |}" _n /*
			*/ _col(13) "{c |}" _col(47) /*
			*/ "{c |}   # below     # above"
			local ll = $S_3 - 3*($S_4-$S_3)/2
			local ul = $S_4 + 3*($S_4-$S_3)/2
			quietly count if `1'<=`ll' & `touse'==1
			local nll = r(N)
			quietly count if `1'>=`ul' & `1'< . & `touse'==1
			di in smcl in gr /*
			*/ "inner fence {c |} " in ye `fmt' `ll' /*
			*/ _col(37) `fmt' `ul' in gr " {c |} " /*
			*/ in ye %9.0g `nll' "   " %9.0g r(N)
			local ll = $S_3 - 3*($S_4-$S_3)
			local ul = $S_4 + 3*($S_4-$S_3)
			quietly count if `1'<=`ll' & `touse'==1
			local nll = r(N)
			quietly count if `1'>=`ul' & `1'< . & `touse'==1
			di in smcl in gr /*
			*/ "outer fence {c |} " in ye `fmt' `ll' /*
			*/ _col(37) `fmt' `ul' in gr " {c |} " /*
			*/ in ye %9.0g `nll' "   " %9.0g r(N)
		}
		mac shift 
	}
	/* double save in r() and S_#  */
	if "$S_1"  != "" { ret scalar N      = $S_1 }
	if "$S_2"  != "" { ret scalar median = $S_2 }
	if "$S_3"  != "" { ret scalar l_F    = $S_3 }
	if "$S_4"  != "" { ret scalar u_F    = $S_4 }
	if "$S_5"  != "" { ret scalar min    = $S_5 }
	if "$S_6"  != "" { ret scalar max    = $S_6 }
	if "$S_7"  != "" { ret scalar l_E    = $S_7 }
	if "$S_8"  != "" { ret scalar u_E    = $S_8 }
	if "$S_9"  != "" { ret scalar l_D    = $S_9 }
	if "$S_10" != "" { ret scalar u_D    = $S_10 }
	if "$S_11" != "" { ret scalar l_C    = $S_11 }
	if "$S_12" != "" { ret scalar u_C    = $S_12 }
	if "$S_13" != "" { ret scalar l_B    = $S_13 }
	if "$S_14" != "" { ret scalar u_B    = $S_14 }
	if "$S_15" != "" { ret scalar l_A    = $S_15 }
	if "$S_16" != "" { ret scalar u_A    = $S_16 }
	if "$S_17" != "" { ret scalar l_Z    = $S_17 }
	if "$S_18" != "" { ret scalar u_Z    = $S_18 }
	if "$S_19" != "" { ret scalar l_Y    = $S_19 }
	if "$S_20" != "" { ret scalar u_Y    = $S_20 }
	if "$S_21" != "" { ret scalar l_X    = $S_21 }
	if "$S_22" != "" { ret scalar u_X    = $S_22 }
end



program define lv2, rclass 
* (Does it's work in S_# then at end puts in r() -- hard to get S_# 
* out of the computation steps.)
	version 6, missing
	syntax [varlist] [if] [in] [, Tail(integer 1024) Generate ]
	marksample touse 
	qui replace `touse'=. if `touse'==0
	tokenize `varlist'
	if "`generat'"!="" { 
		tempvar z2 mid spread psigma
		capture drop _mid
		capture drop _z2
		capture drop _psigma
		capture drop _spread
	}
	while "`1'"~="" { 
		capture confirm string var `1'
		if _rc { 
			if "`generat'"!="" {
				capture drop `mid' `z2' `psigma' `spread'
				quietly { 
					gen `mid'=.
					gen `spread'=.
					gen `psigma'=.
					gen `z2'=cond(_n==1,0,.)
					label var `mid' "`1' midspread"
					label var `z2' "Z squared"
					label var `psigma' "`1' pseudosigma"
					label var `spread' "`1' spread"
				}
			}
			sort `touse' `1'
			local fmt : format `1'
			if (substr("`fmt'",-1,1)=="f" /*
			*/ | substr("`fmt'",-2,2)=="fc") /* 
			*/ & (  substr("`fmt'",3,1)=="."  |  /*
			*/	substr("`fmt'",3,1)=="," )  { 
				local fmt = "%9" + substr("`fmt'",3,.)
			}
			else if (substr("`fmt'",-1,1)=="g" /*
			*/ | substr("`fmt'",-2,2)=="gc") /* 
			*/ & (  substr("`fmt'",3,1)=="."  |  /*
			*/	substr("`fmt'",3,1)=="," )  { 
				local fmt = "%9" + substr("`fmt'",3,.)
			}
			else	local fmt "%9.0g"
			local lbl : variable label `1'
			if `"`lbl'"'=="" { 
				local lbl "`1'"
			}
			else	local lbl = substr(`"`lbl'"',1,32) 
			local skip = int((33-length(`"`lbl'"'))/2+.5)
			quietly count if `touse'==1 & `1'< . 
			global S_1 = r(N)
			di _n in smcl in gr /*
			*/ " # " in ye %6.0f $S_1 in gr "    " /*
			*/ _skip(`skip') "`lbl'" _n /*
			*/ _col(14) "{hline 33}"
			local n = ($S_1+1)/2
			if `n'==int(`n') { 
				global S_2 = `1'[`n']
				di in smcl in gr " M" %7.0f `n' "   {c |} " /*
				*/ _col(26) in ye /*
				*/ `fmt' `1'[`n'] _col(47) in gr /*
				*/ "{c |}    spread  pseudosigma"
			}
			else { 
				global S_2 = (`1'[`n']+`1'[`n'+1])/2
				di in smcl in gr /*
				*/ " M" %9.1f `n' " {c |} " in ye _col(26) /*
				*/ `fmt' $S_2 _col(47) in gr /*
				*/ "{c |}    spread  pseudosigma"
			}
			capture replace `mid'=$S_2 in 1
			LV `1' `n' `fmt' `tail' `z2' `mid' `spread' `psigma'
			LVdi `1' " " $S_1 1 `fmt' S_5 S_6 /*
				*/ 11 `z2' `mid' `spread' `psigma'
			di in smcl in gr /*
			*/ _col(13) "{c |}" _col(47) "{c |}" _n /*
			*/ _col(13) "{c |}" _col(47) /*
			*/ "{c |}   # below     # above"
			local ll = $S_3 - 3*($S_4-$S_3)/2
			local ul = $S_4 + 3*($S_4-$S_3)/2
			quietly count if `1'<=`ll' & `touse'==1
			local nll = r(N)
			quietly count if `1'>=`ul' & `1'< . & `touse'==1
			di in smcl in gr /*
			*/ "inner fence {c |} " in ye `fmt' `ll' /*
			*/ _col(37) `fmt' `ul' in gr " {c |} " /*
			*/ in ye %9.0g `nll' "   " %9.0g r(N)
			local ll = $S_3 - 3*($S_4-$S_3)
			local ul = $S_4 + 3*($S_4-$S_3)
			quietly count if `1'<=`ll' & `touse'==1
			local nll = r(N)
			quietly count if `1'>=`ul' & `1'< . & `touse'==1
			di in smcl in gr /*
			*/ "outer fence {c |} " in ye `fmt' `ll' /*
			*/ _col(37) `fmt' `ul' in gr " {c |} " /*
			*/ in ye %9.0g `nll' "   " %9.0g r(N)
		}
		mac shift 
	}
	if "`generat'"!="" { 
		rename `mid' _mid
		rename `z2' _z2
		rename `psigma' _psigma
		rename `spread' _spread
	}
	/* double save in r() and S_#  */
	if "$S_1"  != "" { ret scalar N      = $S_1 }
	if "$S_2"  != "" { ret scalar median = $S_2 }
	if "$S_3"  != "" { ret scalar l_F    = $S_3 }
	if "$S_4"  != "" { ret scalar u_F    = $S_4 }
	if "$S_5"  != "" { ret scalar min    = $S_5 }
	if "$S_6"  != "" { ret scalar max    = $S_6 }
	if "$S_7"  != "" { ret scalar l_E    = $S_7 }
	if "$S_8"  != "" { ret scalar u_E    = $S_8 }
	if "$S_9"  != "" { ret scalar l_D    = $S_9 }
	if "$S_10" != "" { ret scalar u_D    = $S_10 }
	if "$S_11" != "" { ret scalar l_C    = $S_11 }
	if "$S_12" != "" { ret scalar u_C    = $S_12 }
	if "$S_13" != "" { ret scalar l_B    = $S_13 }
	if "$S_14" != "" { ret scalar u_B    = $S_14 }
	if "$S_15" != "" { ret scalar l_A    = $S_15 }
	if "$S_16" != "" { ret scalar u_A    = $S_16 }
	if "$S_17" != "" { ret scalar l_Z    = $S_17 }
	if "$S_18" != "" { ret scalar u_Z    = $S_18 }
	if "$S_19" != "" { ret scalar l_Y    = $S_19 }
	if "$S_20" != "" { ret scalar u_Y    = $S_20 }
	if "$S_21" != "" { ret scalar l_X    = $S_21 }
	if "$S_22" != "" { ret scalar u_X    = $S_22 }
end


program define LV
	/* S_1 contains N */
	/* `1' is varname */
	local n `2'
	local fmt "`3'"
	local tail `4'
	local v1 `5'
	local v2 "`6' `7' `8'"

	local n= (int(`n')+1)/2
	LVdi `1' F $S_1 `n' `fmt' S_3 S_4 2 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<8 { exit } 
	LVdi `1' E $S_1 `n' `fmt' S_7 S_8 3 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<16 { exit } 
	LVdi `1' D $S_1 `n' `fmt' S_9 S_10 4 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<32 { exit } 
	LVdi `1' C $S_1 `n' `fmt' S_11 S_12 5 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<64 { exit } 
	LVdi `1' B $S_1 `n' `fmt' S_13 S_14 6 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<128 { exit } 
	LVdi `1' A $S_1 `n' `fmt' S_15 S_16 7 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<256 { exit } 
	LVdi `1' Z $S_1 `n' `fmt' S_17 S_18 8 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<512 { exit } 
	LVdi `1' Y $S_1 `n' `fmt' S_19 S_20 9 `v1' `v2'

	local n = (int(`n')+1)/2
	if `n'<=1 | `tail'<1024 { exit } 
	LVdi `1' X $S_1 `n' `fmt' S_21 S_22 10 `v1' `v2'
end


program define LVdi /* varname ltr N n fmt sl sh */
	args vn ltr N n fmt sl sh obs z2 mid spread psigma

	if "`ltr'"=="" { 
		local ltr " "
	}
	if `n'==int(`n') { 
		global `sl' = `vn'[`n']
		global `sh' = `vn'[`N'+1-`n']
		di in smcl in gr " `ltr'" %7.0f `n' "   {c |} " _c
	}
	else { 
		global `sl' = (`vn'[`n']+`vn'[`n'+1])/2
		global `sh' = (`vn'[`N'+1-`n']+`vn'[`N'+1-`n'+1])/2
		di in smcl in gr " `ltr'" %9.1f `n' " {c |} " _c
	}
	local gs = -2*invnorm(cond(`n'==1, .695/(`N'+.390), /*
			*/ (`n'-1/3)/(`N'+1/3)) )
	di	in smcl in ye /*
		*/ `fmt' ${`sl'} "  " `fmt' (${`sl'}+${`sh'})/2 "  " /*
		*/ `fmt' ${`sh'} in gr " {c |} " in ye `fmt' ${`sh'}-${`sl'} /*
		*/ "   " `fmt' (${`sh'}-${`sl'})/`gs'
	if "`z2'"!="" {
		capture replace `z2'=(`gs'/2)^2 in `obs'
		capture replace `mid'=(${`sl'}+${`sh'})/2 in `obs'
		capture replace `spread'=${`sh'}-${`sl'} in `obs'
		capture replace `psigma'=`spread'[`obs']/`gs' in `obs'
	}
end

⌨️ 快捷键说明

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