Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: How to normalize variables in stata
From
Nick Cox <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: How to normalize variables in stata
Date
Thu, 25 Apr 2013 19:07:34 +0100
I'd call this standardisation, not normalisation. Your problem is
essentially that of Paul Byatta posted yesterday
http://www.stata.com/statalist/archive/2013-04/msg01088.html
It seems that you have three variables -x1-, -x2-,-x3- and various -Period-s.
forval i = 1/3 {
egen mean = mean(x`i'), by(Period)
egen sd = sd(x`i'), by(Period)
gen N_x`i' = (x`i' - mean) / sd
drop mean sd
}
should help.
The problem with your code is the lines
qui sum `x' if Period==`i', meanonly
replace sd_`x'=r(sd) if Period==`i'
With the -meanonly- option -summarize- does not calculate the sd.
When you refer to r(sd) afterwards, Stata just substitutes missing,
and this is propagated to all your new variables.
But as above, you don't need so much code.
Nick
[email protected]
On 25 April 2013 18:53, Xixi Lin <[email protected]> wrote:
> I am trying to normalize variables, and the following is my code:
> foreach x in x1 x2 x3{
> gen N_`x' = .
> gen mean_`x'=.
> gen sd_`x'=.
> }
> forvalues i=2/120{
> foreach x in x1 x2 x3{
> qui sum `x' if Period==`i', meanonly
> replace mean_`x'=r(mean) if Period==`i'
> qui sum `x' if Period==`i', meanonly
> replace sd_`x'=r(sd) if Period==`i'
> }
> }
>
>
> forvalues i=2/120{
> foreach x in x1 x2 x3{
> replace N_`x'=(`x'-mean_`x')/sd_`x' if Period==`i'
> }
> }
>
> however, the above code does not working, because it creates all
> missing values for standard deviation. Can anyone help me to fix the
> code?
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/