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: RE: using loop to generate distributions with different means and standard deviations


From   Lance Wiggains <lance.wiggains@gmail.com>
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:47:17 -0400

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/


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