Dear Leon, thanks it is more simpler than mine!
Just an additional answer. Instead of calculating the psd, I calculate the
mean, so the if condition should now read:
if mean(x)>=0
means[i,n] = mean(x)
else
means[i,n] = NA
endif
But I get an error, on the if condition.
The difference with your script is that the column is fixed in 1, and the
mine is variable. Should this be a problem?
2011/6/8 Leon Unger <pindar(a)zedat.fu-berlin.de>
Hi Leandro,
recently I've done alomost the same stuff as you and the 'trick' I use to
make the code shorter is the following:
(here an example without any real data)
matrix means = zeros(nobs,1)
loop i=1..I --quiet
loop n=1..N --quiet
loop k=1..K --quiet
smpl (variable1 == i && variable2 == n && variable3 == k)
--restrict --replace --balanced
if psd(x) >0
means[i,1] = pmean(x)
endif
endloop
endloop
endloop
One could improve on this further and further...
Perhaps this helps you.
Cheers
Leon
Am 08.06.2011 18:17, schrieb Leandro Zipitria:
Dear Jack, thanks for your answer.
I will try to be more specific on the second answer.
I have a panel data of price of several goods (variables) for supermarkets
(units) at different time. Also, I have information for to wich city it
belong each supermarket.
I need to calculate several means:
1) for each good, then for each city, and then for each day, the mean price
for all supermarkets that post the price that day.
2) forget goods for the moment. I first restrict the sample by city, and
then by time (as I generate a time dummy for each day)
3) for each time and city I want to calculate the mean price, so I made the
following script:
smpl full
genr time
genr veces = d_prod_1 <> 0
discrete ciudad
smpl time <3 --restrict
Mciudad = values(ciudad)
Mtime = values(time)
#matriz para poner las medias de cada estimacion
matrix Xmean2 = Mciudad ** Mtime'
matrix Xmean = Xmean2 - Xmean2
#matriz para calcular la media y desviación estandar
loop i=1..rows(Mciudad)
scalar xi = Mciudad[i]
smpl (ciudad=xi) --restrict --replace
loop j=1..rows(Mtime)
scalar tj = Mtime[j]
smpl (time=tj) --restrict --replace
find = {$i;$j}
scalar m = mean(veces)
subst = {m}
X = replace(Xmean, find, subst)
printf "mean(veces | ciudad = %g | time = %g) = %8.5f, sd(veces |
ciudad = %g | time = %g) = %g\n", \
xi, tj, mean(veces), xi, tj, sd(veces)
end loop
end loop
4) I generate a matrix which rows are the (number of) city and columns the
time moment.
Mciudad = values(ciudad)
Mtime = values(time)
#matriz para poner las medias de cada estimacion
matrix Xmean2 = Mciudad ** Mtime'
matrix Xmean = Xmean2 - Xmean2
5) Now I want to store in the ith jth element of the matrix, the mean of
the ith city at the jht moment of time, so I try this, which is wrong I
supposse:
find = {$i;$j}
scalar m = mean(veces)
subst = {m}
X = replace(Xmean, find, subst)
Is there any way to store the iht jth calculation of the mean in the matrix
I created in that position?
Thanks, and I hope to be more clear now
Leandro
2011/6/6 Riccardo (Jack) Lucchetti <r.lucchetti(a)univpm.it>
> On Mon, 6 Jun 2011, Leandro Zipitria wrote:
>
> If I am working with a restricted version of a variable (using smpl
>> --restrict), the mean, standard deviation, etc. reported is for the variable
>> as a whole or just the restricted sample?
>>
>
> Just the restricted sample. Example:
>
> gretl version 1.9.5cvs
> Copyright Ramu Ramanathan, Allin Cottrell and Riccardo "Jack" Lucchetti
> This is free software with ABSOLUTELY NO WARRANTY
> Current session: 2011-06-06 21:11
>
> "help" gives a list of commands
> Type "open filename" to open a data set
> ? open data4-1
> open data4-1
>
> Read datafile /usr/local/share/gretl/data/data4-1.gdt
> periodicity: 1, maxobs: 14
> observations range: 1-14
>
> Listing 5 variables:
> 0) const 1) price 2) sqft 3) bedrms 4) baths
>
> ? m = mean(sqft)
> m = mean(sqft)
> Generated scalar m = 1910.93
> ? smpl 2 10
> smpl 2 10
> Full data range: 1 - 14 (n = 14)
> Current sample: 2 - 10 (n = 9)
>
> ? m = mean(sqft)
> m = mean(sqft)
> Replaced scalar m = 1670.44
>
>
> As a second answer, I am creating a doble loop for iterating mean and
>> standar deviation from a variable. I want to create a matix that store the
>> results of each calculation. That is, I have a panel, and want to restrict
>> it looping on one variable (city) which will be the columns, and the time
>> the rows. Each time gretl compute one statistic, I am trying to store it in
>> the matrix, following the previous order. Is this possible?
>>
>
> Yes it is. That said, I'm not at all sure to have understood what your
> need is, but I have the feeling that you can write a much more efficient
> script by using the pmean() and psd() function. Also, the user's guide is
> your friend.
>
> Riccardo (Jack) Lucchetti
> Dipartimento di Economia
> Università Politecnica delle Marche
>
> r.lucchetti(a)univpm.it
>
http://www.econ.univpm.it/lucchetti
> _______________________________________________
> Gretl-users mailing list
> Gretl-users(a)lists.wfu.edu
>
http://lists.wfu.edu/mailman/listinfo/gretl-users
>
_______________________________________________
Gretl-users mailing
listGretl-users@lists.wfu.eduhttp://lists.wfu.edu/mailman/listinfo/gretl-users
_______________________________________________
Gretl-users mailing list
Gretl-users(a)lists.wfu.edu
http://lists.wfu.edu/mailman/listinfo/gretl-users