Hello everyone,
I am performing a mean value comparison using linear simple regression. I would like to do the same for another variable "income". I would like to use income as a discretized categorical variable in three groups, "lower", "middle" and "upper" income groups. Now I don't know exactly how to do this. Should I use dummies for the variable or rather an ANCOVA analysis.
Here is my explanation for my first variable (binary)
local j = 1 // running variable for column count
foreach D of varlist Übergewichtig {
* create spreadsheet
putexcel set "mean_comparisons.xlsx", modify sheet("`D'", replace)
putexcel B1 = "`D'"
putexcel B2 = "No"
putexcel C2= "Yes"
putexcel B3= "Est."
putexcel C3= "Est."
putexcel D3= "SE"
putexcel E3= "p-Value"
local z = 3 // running variable for row index
* t-tests
* binary and continuous variables
local q = 0
foreach C of local continuous_binary_vars {
local q = `q' + 1
local z = `z' + 1
local vlab: word `q' of `continuous_binary_labels'
quietly: putexcel A`z' = "`vlab'"
di "`z': `vlab'"
quietly: regress `C' `D', cluster(idpers)
local beta0 = _b[_cons]
quietly: putexcel B`z' = `beta0', nformat(number_d2)
local beta1 = _b[`D']
quietly: putexcel C`z' = `beta1', nformat(number_d2)
local se = _se[`D']
quietly: putexcel D`z' = `se'
local pval = 2*normal(-abs(_b[`D']/_se[`D']))
quietly: putexcel E`z' = `pval', nformat(number_d2)
}
* categorical variables
local q = 0
foreach v of local categorical_vars {
local q = `q' + 1
local vlab: word `q' of `categorical_labels'
local z = `z' + 1
quietly: putexcel A`z' = "`vlab'"
di "`z': `vlab'"
quietly: tab `v', gen(`v'__) // create one dummy for each level of categorical variable
foreach dummy of varlist `v'__* {
quietly: replace `dummy' = . if missing(`v')
local z = `z' + 1
quietly: regress `dummy' `D', cluster(idpers)
local beta0 = _b[_cons]
quietly: putexcel B`z' = `beta0', nformat(number_d2)
local beta1 = _b[`D']
quietly: putexcel C`z' = `beta1', nformat(number_d2)
local se = _se[`D']
quietly: putexcel D`z' = `se', nformat(number_d2)
local pval = 2*normal(-abs(_b[`D']/_se[`D']))
quietly: putexcel E`z' = `pval', nformat(number_d2)
* use value label as variable description
local lbl: variable label `dummy'
local lbl: subinstr local lbl "`v'==" ""
local lbl = strproper("`lbl'")
quietly: putexcel A`z' = "`lbl'"
di "`z': `lbl'"
}
drop `v'__*
}
putexcel close
}
Thanks for your help.
I am performing a mean value comparison using linear simple regression. I would like to do the same for another variable "income". I would like to use income as a discretized categorical variable in three groups, "lower", "middle" and "upper" income groups. Now I don't know exactly how to do this. Should I use dummies for the variable or rather an ANCOVA analysis.
Here is my explanation for my first variable (binary)
local j = 1 // running variable for column count
foreach D of varlist Übergewichtig {
* create spreadsheet
putexcel set "mean_comparisons.xlsx", modify sheet("`D'", replace)
putexcel B1 = "`D'"
putexcel B2 = "No"
putexcel C2= "Yes"
putexcel B3= "Est."
putexcel C3= "Est."
putexcel D3= "SE"
putexcel E3= "p-Value"
local z = 3 // running variable for row index
* t-tests
* binary and continuous variables
local q = 0
foreach C of local continuous_binary_vars {
local q = `q' + 1
local z = `z' + 1
local vlab: word `q' of `continuous_binary_labels'
quietly: putexcel A`z' = "`vlab'"
di "`z': `vlab'"
quietly: regress `C' `D', cluster(idpers)
local beta0 = _b[_cons]
quietly: putexcel B`z' = `beta0', nformat(number_d2)
local beta1 = _b[`D']
quietly: putexcel C`z' = `beta1', nformat(number_d2)
local se = _se[`D']
quietly: putexcel D`z' = `se'
local pval = 2*normal(-abs(_b[`D']/_se[`D']))
quietly: putexcel E`z' = `pval', nformat(number_d2)
}
* categorical variables
local q = 0
foreach v of local categorical_vars {
local q = `q' + 1
local vlab: word `q' of `categorical_labels'
local z = `z' + 1
quietly: putexcel A`z' = "`vlab'"
di "`z': `vlab'"
quietly: tab `v', gen(`v'__) // create one dummy for each level of categorical variable
foreach dummy of varlist `v'__* {
quietly: replace `dummy' = . if missing(`v')
local z = `z' + 1
quietly: regress `dummy' `D', cluster(idpers)
local beta0 = _b[_cons]
quietly: putexcel B`z' = `beta0', nformat(number_d2)
local beta1 = _b[`D']
quietly: putexcel C`z' = `beta1', nformat(number_d2)
local se = _se[`D']
quietly: putexcel D`z' = `se', nformat(number_d2)
local pval = 2*normal(-abs(_b[`D']/_se[`D']))
quietly: putexcel E`z' = `pval', nformat(number_d2)
* use value label as variable description
local lbl: variable label `dummy'
local lbl: subinstr local lbl "`v'==" ""
local lbl = strproper("`lbl'")
quietly: putexcel A`z' = "`lbl'"
di "`z': `lbl'"
}
drop `v'__*
}
putexcel close
}
Thanks for your help.