*! version 1.0.0  10dec2013
program smvcir_p
	version 13.0
        if "`e(cmd)'" != "smvcir" {
                error 301
        }
	syntax [anything] [if] [in] [, COordinates]
	local k = e(k)
	_stubstar2names `anything', nvars(`k')
	local typlist `s(typlist)'
	local varlist `s(varlist)'

	marksample touse, novarlist
	forvalues i = 1/`k' {
		tempvar smvcir`i'
		qui gen double `smvcir`i'' = .
		local smvcirlist `"`smvcirlist' `smvcir`i''"'
	}

        // transform data
	local i = 1
	tempname m Sndiag
	matrix `m' = e(m)
	matrix `Sndiag' = e(Sndiag)
	
	foreach var of varlist `e(predictors)' {
		tempvar std_`var'
		gen double `std_`var'' = (`var'-`m'[`i',1])* ///
			`Sndiag'[`i',`i'] if `touse'
		local stdpreds `stdpreds' `std_`var''
		local i = `i' + 1
	}
	if ("`e(noeigen)'" != "noeigen") {
		local evpassin 2_eigvecs
	}
	else {
		local evpassin _U
	}
        mata: st_store(., tokens(`"`smvcirlist'"'), 		///
			`"`touse'"',				///
			st_data(.,tokens(`"`stdpreds'"'), 	///
			"`touse'")*st_matrix("e(Spanset`evpassin')"))

	forvalues i = 1/`k' {
		local t`i': word `i' of `typlist'
		local v`i': word `i' of `varlist'
		local s`i': word `i' of `smvcirlist'
		gen `t`i'' `v`i'' = `s`i'' if `touse'
		label variable `v`i'' "SMVCIR `i'"
	}
end
exit