Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# st: using loop to generate distributions with different means and standard deviations

 From Lance Wiggains To statalist@hsphsun2.harvard.edu Subject st: using loop to generate distributions with different means and standard deviations Date Fri, 20 May 2011 14:28:37 -0400

```Sorry for the vagueness. Right now I'm just using simulated data for 3
different products. Here is my code:
My data looks like this
Week      Product 1        Product 2      Product 3
1                  50                 45                 50
2                  60                 50                 40
3                  70                 55                 30
4                  80                 50                 20
5                  90                 45                 10
6                  100               50                  0

tsset week
gen n=_n
egen max_n=max(n)

ds week n max_n, not
foreach var in `r(varlist)'{
tssmooth ma ms_`var'= `var', weights(1 1<2>1)
}

ds ms*
foreach var in `r(varlist)' {
gen week3_`var'=`var' if n==max_n
egen max_week3_`var'=max(week3_`var')
drop week3*

}
drop ms*

ds week n max_*, not
foreach var in `r(varlist)' {
gen max_`var'=max_week3_ms_`var'
}
drop max_week*

keep if n+3>=max_n
ds week n max*, not
foreach var in `r(varlist)'{
egen sd_`var'=sd(`var')
}

rename max_n maximum_n

ds max_* sd* week, not
foreach var in `r(varlist)'{
drop `var'
}

drawnorm product1, m(max_product1) sd(sd_product1)

Thanks,

Lance
- Hide quoted text -

On Wed, May 18, 2011 at 1:51 PM, Sarah Edgington <sedging@ucla.edu> wrote:
> Lance,
> That's a different problem.  From your original post I assumed you had all
> One strategy for writing loops is to write out the code for the first two
> examples of something repetitive you want to do.  Then identify the parts of
> the example that remain the same across the examples.
> If you post the code your trying to repeat we may be able to help you but
> your current description is too vague for me to do much more than offer
> vague suggestions of how to think about loops.
> -Sarah
>
> -----Original Message-----
> From: owner-statalist@hsphsun2.harvard.edu
> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Lance Wiggains
> Sent: Wednesday, May 18, 2011 10:36 AM
> To: statalist@hsphsun2.harvard.edu
> Subject: Re: st: RE: using loop to generate distributions with different
> means and standard deviations
>
> I've tried that but the problem is that I'm pre-calculating the means and
> sd's for the variable because I'm only using the last 3-4 observations for
> each variable to calculate those values. I'm doing this because I want it to
> reflect the changes that happen recently. My mean function uses tssmooth,
> with weights (1 1<2>), to average the last 3 weeks of sales. So if sales
> were 70,80,90, and 100 I get a value of 92.5 for my mean. It also calculates
> a SD for the last 3-4 observations. Then I want to plug those numbers into
> the drawnorm function using a loop. Any idea about how that would work?
>
> Lance
>
> On Wed, May 18, 2011 at 1:16 PM, Sarah Edgington <sedging@ucla.edu> wrote:
>> Lance,
>> Try something like this:
>>
>>        forv i=1/3 {
>>                 drawnorm name`i', m(mean_var`i') sd(sd_var`i')
>>        }
>>
>> You'll run into problems, though, if your data actually includes the
>> variable names you list since there isn't a sd_var1.
>>
>> -Sarah
>>
>> -----Original Message-----
>> From: owner-statalist@hsphsun2.harvard.edu
>> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Lance
>> Wiggains
>> Sent: Wednesday, May 18, 2011 10:09 AM
>> To: statalist@hsphsun2.harvard.edu
>> Subject: st: using loop to generate distributions with different means
>> and standard deviations
>>
>> Statalist members,
>>
>> I'm trying to get Stata to generate a distribution of data from
>> variables in my data set.
>>
>> My appended data looks like this
>> mean_var1=90
>> standard_deviation_var1=5
>> mean_var2=100
>> sd_var2=10
>> mean var3=110
>> sd_var3=15
>> and so on
>>
>> I'm need a loop that will take my variables and create the
>> distributions for me.
>> I've been using the drawnorm command
>>     drawnorm name1, m(mean_var1) sd(sd_var1) but I can't get it to
>> recognize more than 1 variable at a time
>>
>> I want it to perform the distribution command for each pair of my
> variables.
>> I.e. (m_var1, sd_var1), (m_var2, sd_var2) , (m_var3, sd_var3)
>>