Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: How to normalize variables in stata


From   Xixi Lin <winnielxx@gmail.com>
To   statalist <statalist@hsphsun2.harvard.edu>
Subject   Re: st: How to normalize variables in stata
Date   Thu, 25 Apr 2013 14:18:39 -0400

Thank you so much!

On Thu, Apr 25, 2013 at 2:07 PM, Nick Cox <njcoxstata@gmail.com> wrote:
> 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
> njcoxstata@gmail.com
>
> On 25 April 2013 18:53, Xixi Lin <winnielxx@gmail.com> 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/
*
*   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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index