Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

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

From |
Sarah Elizabeth Edgington <sedging@ucla.edu> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: RE: using loop to generate distributions with different means and standard deviations |

Date |
Fri, 20 May 2011 23:44:06 -0700 |

Lance,

forv i=1/3 { *create a local macro that has the list of vars you want to create local products "`products' product`i' " *then create one with the mean values with a slash sum max_product`i' local mn`i'=r(mean) local means="`means' \ `mn`i'' " *and now the values for the SD sum sd_product`i' local sd`i'=r(mean) local sds="`sds' \ `sd`i'' " } display "`means'" display "`sds'" **have to get rid of initial "\" or matrix syntax won't work local mnmat : subinstr local means "\" " " local sdmat : subinstr local sds "\" " " display "`mnmat'" display "`sdmat'" mat meanvec=(`mnmat') mat sdvec=(`sdmat') drawnorm `products', m(meanvec) sd(sdvec) Hope that helps. -Sarah At 08:47 PM 5/20/2011, you wrote:

I tried the command you suggested ds mean* sd* forvalues i=1/3 { drawnorm product`i'_dist, m(mean_item_`i') sd(sd_item_`i') } but it failed, I got this error means(mean_item_1) invalid r(198); end of do-file r(198); I think the variable might need to be in matrix form. Does that sound right? If so, do you know how would I create the vector with the relevant information. Thanks for all of your help, Lance On Fri, May 20, 2011 at 2:44 PM, Sarah Edgington <sedging@ucla.edu> wrote: > Lance, > Is your actual data really different from the simulated data you've shown? > If not I don't understand why the solution I suggested before doesn't solve > your problem. If your variables are actually numbered like you've shown, > it's still just a -forvalues- loop to get the drawnorm part working. > > forv i=1/3 { > drawnorm product`i', m(max_product`i') sd(sd_product`i') > } > > Unless you give more specific information about the actual problem you're > trying to solve and why the suggested solution doesn't work, I don't think > you're going to get much help. > > -Sarah > > > > -----Original Message----- > From: owner-statalist@hsphsun2.harvard.edu > [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Lance Wiggains > Sent: Friday, May 20, 2011 11:29 AM > To: statalist@hsphsun2.harvard.edu > Subject: st: using loop to generate distributions with different means and > standard deviations > > 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 the variables already created. >> 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) >>> >>> Thanks for your consideration, >>> >>> Lance > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/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/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/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/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: using loop to generate distributions with different means and standard deviations***From:*Lance Wiggains <lance.wiggains@gmail.com>

**st: RE: using loop to generate distributions with different means and standard deviations***From:*"Sarah Edgington" <sedging@ucla.edu>

**Re: st: RE: using loop to generate distributions with different means and standard deviations***From:*Lance Wiggains <lance.wiggains@gmail.com>

- Prev by Date:
**Re: st: converting column date variables into additional observations** - Next by Date:
**Re: st: Re: expanding obs, then changing values based on that** - Previous by thread:
**Re: st: RE: using loop to generate distributions with different means and standard deviations** - Next by thread:
**Re: st: RE: using loop to generate distributions with different means and standard deviations** - Index(es):