*! version 1.0.0 12/20/94 STB-24: sg32 program define vif version 4.0 if "$S_E_cmd" != "fit" { error 301 } local varlist "$S_E_vl" local if "$S_E_if" local in "$S_E_in" local wgt "$S_E_wgt" local exp "$S_E_exp" local wtexp = "" if "`wgt'" != "" & "`exp'" != "" { local wtexp = "[`wgt'`exp']" } parse "`varlist'", parse(" ") mac shift local varlist = "`*'" local nvif : word count `varlist' tempname ehold vif mvif scalar `mvif' = 0.0 quietly { noi di noi di in gr "Variable | VIF 1/VIF " noi di in gr "---------+----------------------" local i 1 estimate hold `ehold' capture { while `i' <= `nvif' { local dep : word `i' of `varlist' local len = length("`dep'") local idx = index("`varlist'","`dep'") local idm = `idx'-1 local idk = `index'+`idx'+`len'+1 local ind = substr("`varlist'",1,`idm') local ind = "`ind'" + /* */ substr("`varlist'",`idk',.) fit `dep' `ind' `if' `in' `wtexp' scalar `vif' = 1/(1-_result(7)) scalar `mvif' = `mvif'+`vif' local skip = 9-`len' noi di in gr _col(`skip') "`dep'" _col(10) /* */ "| " in ye %9.2f `vif' /* */ " " in ye %8.6f 1/`vif' local i = `i'+1 if _rc { estimate unhold `ehold' error _rc } } noi di in gr "---------+----------------------" noi di in gr "Mean VIF | " /* */ in ye %9.2f `mvif'/`nvif' } estimate unhold `ehold' error _rc } end