|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
st: Re: Randomly selecting variables in panel, collapsing, and simulating
From |
"Martin Weiss" <[email protected]> |
To |
<[email protected]> |
Subject |
st: Re: Randomly selecting variables in panel, collapsing, and simulating |
Date |
Sat, 13 Jun 2009 18:06:58 +0200 |
<>
Here is the code for 1) and 2). I do not understand the intent in number 3:
If you really do want the first obs on y in each cluster, why does your
example say "7.5" then? Should it not be 6.5?
**********
clear*
input i y x z n
1 5 8 3 1
1 9 10 5 2
1 8 12 6 3
1 6 9 4 4
2 5 7 2 1
2 9 13 4 2
2 8 8 7 3
2 6 8 6 4
2 8 8 7 5
2 8 8 7 6
3 5 7 2 1
3 9 11 7 2
3 8 11 5 3
end
compress
list, noobs
/*
get groups
*/
gen random=runiform()
sort i random
by i: gen byte group=/*
*/cond(_n<=_N/2,1,2)
l, noo sepby(i)
drop random
collapse (mean) y x z, /*
*/by(i group)
l, noo sepby(i)
**********
HTH
Martin
_______________________
----- Original Message -----
From: "John Antonakis" <[email protected]>
To: <[email protected]>
Sent: Saturday, June 13, 2009 3:19 PM
Subject: st: Randomly selecting variables in panel, collapsing, and
simulating
Hi:
I want to do something that is quite straightforward, but don't yet have
the programming skills to do this, so I would appreciate some help.
Basically, I want to select randomly within clusters, then collapse, then
estimate a regression model that I would like to simulate. I would like
to define it as an e-class program so that I can easily incorporate a
simulation in there.
I have the following data structure (I have added a line in-between
clusters to facilitate viewing):
i y x z n
1 5 8 3 1
1 9 10 5 2
1 8 12 6 3
1 6 9 4 4
2 5 7 2 1
2 9 13 4 2
2 8 8 7 3
2 6 8 6 4
2 8 8 7 5
2 8 8 7 6
3 5 7 2 1
3 9 11 7 2
3 8 11 5 3
Where y is the dependent variable, and x and z are covariates (note, I
have more covariates, so I would like to use something general that works
even with more covariates), "i" is the panel identifier and "n" is number
of observations in each cluster. Note that each cluster does not have the
same number of observations
I would like to do the following:
1) by cluster (i.e., within in each cluster), randomly split the
observations into two groups, with an equal amount of observations (if
number of observations are even); if the number of observations are odd,
then one of the group will have 1 more observation than the other. Thus, I
would now have this:
i y x z n g
1 8 12 6 3 1
1 5 8 3 1 1
1 6 9 4 4 2
1 9 10 5 2 2
2 9 13 4 2 1
2 5 7 2 1 1
2 8 8 7 3 1
2 8 8 7 5 2
2 6 8 6 4 2
2 8 8 7 6 2
3 5 7 2 1 1
3 8 11 5 3 2
3 9 11 7 2 2
2) collapse observations at the group level for each cluster to get:
i g y x z 1 1 6.5 10 4.5
1 2 7.5 9.5 4.5
2 1 7.3 9.3 4.3
2 2 7.3 8 6.7
3 1 5 7 2
3 2 8.5 11 6
3) then I want to the data as below, so that I can regress the y of the
first observation in each cluster to the x and z of the second observation
in each cluster
i y x z 1 7.5 9.5 4.5
2 7.3 8 6.7
3 8.5 11 2
4) once I have this I want to simulate it, using something like this:
capture program drop sim
version 10.1
program define sim, eclass
[here is the code I would like to insert to make points 1-4 above run]
simulate _b _se, reps(20) seed (123) : sim,
foreach v in x z {
gen t_`v' = _b_`v'/_se_`v'
gen p_`v' = 2*(1-normal(abs(t_`v')))
Thank you.
John.
--
____________________________________________________
Prof. John Antonakis
Associate Dean Faculty of Business and Economics
University of Lausanne
Internef #618
CH-1015 Lausanne-Dorigny
Switzerland
Tel ++41 (0)21 692-3438
Fax ++41 (0)21 692-3305
Faculty page:
http://www.hec.unil.ch/people/jantonakis&cl=en
Personal page:
http://www.hec.unil.ch/jantonakis
____________________________________________________
*
* 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/