|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: Re: Randomly selecting variables in panel, collapsing, and simulating
From |
John Antonakis <[email protected]> |
To |
[email protected] |
Subject |
Re: st: Re: Randomly selecting variables in panel, collapsing, and simulating |
Date |
Sat, 13 Jun 2009 19:21:47 +0200 |
Great. All works fine.
A quick question on simulating now.
Regarding my actual data, I have about 450 clusters with about 8
observations per cluster (total n = about 4,000).
So, with respect to the below, how does one determine the appropriate
amount of simulations to request in a Monté Carlo?
Best,
J.
____________________________________________________
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
____________________________________________________
On 13.06.2009 19:11, Martin Weiss wrote:
<>
Last email was a little asinine... -simulate-´s default expression is
only _b, so you have to request _se...
Also, I simply added additional clusters to the -input- statement...
Everything should work as expected now. Check carefully for any
non-intuitive results, though...
**********
clear*
input byte(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
4 3 2 6 1
4 2 1 9 2
4 8 2 8 3
4 5 2 1 4
5 4 2 5 1
5 2 3 1 2
5 9 6 4 3
end
capt prog drop sim
/*
Define the program
*/
prog sim
vers 10.1
preserve
gen random=runiform()
sort i random
by i: gen byte group=/*
*/cond(_n<=_N/2,1,2)
drop random
collapse (mean) y x z, /*
*/by(i group)
/*
get replacement
as requested by John
*/
by i: replace y = y[1]
by i: drop if _n==1
reg y x z
restore
end
/*
simulate
*/
simulate _b _se, reps(20)/*
*/ seed (123) : sim
/*
get t statistics and
p values
*/
foreach v in x z {
gen t_`v' = /*
*/_b_`v'/_se_`v'
gen p_`v' =/*
*/ 2*(1-normal(abs(t_`v')))
}
**********
HTH
Martin
_______________________
----- Original Message ----- From: "Martin Weiss" <[email protected]>
To: <[email protected]>
Sent: Saturday, June 13, 2009 6:55 PM
Subject: Re: st: Re: Randomly selecting variables in panel,
collapsing, and simulating
<>
And here is how you would -simulate- the thing. With 3 observations
and 2 slopes plus constant, this model is not well identified, to put
it mildly, so the standard errors are lacking and the last lines
cannot work... John, how do you intend to remedy the situation?
**********
clear*
input byte(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
capt prog drop sim
/*
Define the program
*/
prog sim
vers 10.1
preserve
gen random=runiform()
sort i random
by i: gen byte group=/*
*/cond(_n<=_N/2,1,2)
drop random
collapse (mean) y x z, /*
*/by(i group)
/*
get replacement
as requested by John
*/
by i: replace y = y[1]
by i: drop if _n==1
reg y x z
restore
end
/*
simulate
*/
simulate, reps(20)/*
*/ seed (123) : sim
/*
get t statistics and
p values
*/
foreach v in x z {
gen t_`v' = /*
*/_b_`v'/_se_`v'
gen p_`v' =/*
*/ 2*(1-normal(abs(t_`v')))
}
**********
HTH
Martin
_______________________
----- Original Message ----- From: "John Antonakis"
<[email protected]>
To: <[email protected]>
Sent: Saturday, June 13, 2009 6:24 PM
Subject: Re: st: Re: Randomly selecting variables in panel,
collapsing, and simulating
Hi Martin:
Thanks for the reply and the code! You are so helpful with everyone
and always seem to be able to find an elegant solution! As an aside,
what is a nice resource to learn how to program nicely in Stata?
I made a mistake in the 3), which you noticed.
So, this was 2)--(I am only putting one space after each entry so
that the formatting doesn't get too messed up):
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
Now for 3), I want to put the data in such as way as to be able to
regress the y of the first observation in each cluster on the x and
z of the second observation in each cluster
i y x z
1 6.5 9.5 4.5
2 7.3 8 6.7
3 5 11 6
Thank you very much for your help.
Best,
J.
____________________________________________________
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
____________________________________________________
On 13.06.2009 18:06, Martin Weiss wrote:
<>
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/
*
* 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: Randomly selecting variables in panel, collapsing, and simulating
- st: Re: Randomly selecting variables in panel, collapsing, and simulating
- Re: st: Re: Randomly selecting variables in panel, collapsing, and simulating
- Re: st: Re: Randomly selecting variables in panel, collapsing, and simulating
- Re: st: Re: Randomly selecting variables in panel, collapsing, and simulating