Dear Spencer and Prof. Fox,
Thank you for your replies. I'll very appreciate, if you have any ideas
concerning the problem described below.
First, I'd like to describe the model in brief.
In general I consider a model with three equations.
First one is for annual GRP growth - in general it looks like:
1) GRP growth per capita = G(investment, migration, initial GRP per capita,
spatial lag on GRP growth + some additional explanatory variables to control
for regional disparities),
where spatial lag on GRP growth in year t is simply spatial weights matrix
W(n*n) (weights - are inverse square distances between regional centers; with
zeros on the main diagonal) times GRP growth in year t, (n*1). I compute it
manually for every year.
Two others are for migration (labor supply) and investment (capital supply):
2) Migration = M(factors, explaining migration)
3) Investment = I(factors, explaining investment)
I consider GRP growth, migration and investment to be endogenous and all others
vars to be exogenous to the model. The data are over 77 regions (n=77) and 8
years (t = 1997..2004), so that I have total 616 observations.
Actually, the final goal of the study is to estimate a model 1) simultaneously
by FIML 2) with Mundlak (1978, 1981) specification of panels to capture for
fixed and between effects 3) with spatial lag on GRP growth. As for spatial lag
- the model needs to be estimated by maximum likelihood (as it is shown in
Anselin 1988, for example)
The main problems with Mundlak are increasing number of variables: as well as
dimension of a model (additional between equations). So to begin with, I try to
estimate pool, which is obviously easier, and proceed as follows:
Consider the following specification:
model.3eq.33 <- specify.model( )
ln.inv.p0.pc -> ln.grp.phvi.pc ,
beta13 , NA
ln.migr.new -> ln.grp.phvi.pc ,
beta12 , NA
ln.grp.corr.pc97 -> ln.grp.phvi.pc ,
gamma11 , NA
ln.sh.ind.rawwide -> ln.grp.phvi.pc ,
gamma12 , NA
port -> ln.grp.phvi.pc ,
gamma13 , NA
t12 -> ln.grp.phvi.pc ,
gamma14 , NA
wd.ln.grp.phvi.pc -> ln.grp.phvi.pc ,
rho , NA
(Intercept) -> ln.grp.phvi.pc ,
alpha1 , NA
ln.income.pc.fcb97 -> ln.migr.new ,
gamma21 , NA
ln.unempl.level97 -> ln.migr.new ,
gamma26 , NA
avertemp.jan.cs -> ln.migr.new ,
gamma22 , NA
ln.pop.gr.89.26mbe -> ln.migr.new ,
gamma23 , NA
ln.pass.railway.percap -> ln.migr.new ,
gamma24 , NA
ln.city -> ln.migr.new ,
gamma25 , NA
(Intercept) -> ln.migr.new ,
alpha2 , NA
ln.grp.corr.pc97 -> ln.inv.p0.pc ,
gamma31 , NA
avertemp.jan.cs -> ln.inv.p0.pc ,
gamma32 , NA
permafrost -> ln.inv.p0.pc ,
gamma33 , NA
ln.indoutput.fuel.p0.pc -> ln.inv.p0.pc ,
gamma34 , NA
ln.phone1995 -> ln.inv.p0.pc ,
gamma35 , NA
(Intercept) -> ln.inv.p0.pc ,
alpha3 , NA
ln.grp.phvi.pc <-> ln.grp.phvi.pc ,
sigma11 , NA
ln.grp.phvi.pc <-> ln.migr.new ,
sigma12 , NA
ln.grp.phvi.pc <-> ln.inv.p0.pc ,
sigma13 , NA
ln.migr.new <-> ln.migr.new ,
sigma22 , NA
ln.migr.new <-> ln.inv.p0.pc ,
sigma23 , NA
ln.inv.p0.pc <-> ln.inv.p0.pc ,
sigma33 , NA
So I consider a model with 3 equations, 3 endogenous and 13 exogenous variables
and 6 double-arrow relations for error covariance.
Then, I use raw moments to capture (Intercept) in each equation:
raw.3eq.33 <- raw.moments(~ ln.grp.phvi.pc + ln.inv.p0.pc + ln.migr.new +
ln.grp.corr.pc97 + ln.sh.ind.rawwide + port + t12 + wd.ln.grp.phvi.pc +
ln.income.pc.fcb97 + ln.unempl.level97 + avertemp.jan.cs + ln.pop.gr.89.26mbe +
ln.pass.railway.percap + ln.city + permafrost + ln.indoutput.fuel.p0.pc +
ln.phone1995, data=pool.spat)
Next, I estimate model by sem-function (here, I declare fixed exogenous
variables, including spatial lag 'wd.ln.grp.phvi.pc' ... though I am not sure
about that)
model.3eq.33.estim <- sem(model.3eq.33, raw.3eq.33, 616,
fixed.x=c('ln.grp.corr.pc97', 'ln.sh.ind.rawwide', 'port', 't12',
'wd.ln.grp.phvi.pc', 'ln.income.pc.fcb97', 'ln.unempl.level97',
'avertemp.jan.cs', 'ln.pop.gr.89.26mbe', 'ln.pass.railway.percap', 'ln.city',
'permafrost', 'ln.indoutput.fuel.p0.pc', 'ln.phone1995', '(Intercept)'),
raw=TRUE)
Then, R returns:
Warning message:
Negative parameter variances.
Model is probably underidentified.
in: sem.default(ram = ram, S = S, N = N, param.names = pars, var.names = vars,
:
Obtained summary:
summary(model.3eq.33.estim)
Model fit to raw moment matrix.
Model Chisquare = 398.81 Df = 24 Pr(>Chisq) = 0
Goodness-of-fit index = 0.944
Adjusted goodness-of-fit index = 0.60099
RMSEA index = 0.15923 90 % CI: (0.14569, 0.17316)
BIC = 175.29
Normalized Residuals
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.9120 0.0000 0.0000 0.0268 0.0000 1.5600
Parameter
Estimate
Std Error
z value
Pr(>|z|)
beta13
0.0151
0.0031
4.9157
0.0000
ln.grp.phvi.pc
<---
ln.inv.p0.pc
beta12
0.9983
0.4831
2.0663
0.0388
ln.grp.phvi.pc
<---
ln.migr.new
gamma11
-0.0268
0.0074
-3.6420
0.0003
ln.grp.phvi.pc
<---
ln.grp.corr.pc97
gamma12
0.0120
0.0174
0.6867
0.4923
ln.grp.phvi.pc
<---
ln.sh.ind.rawwide
gamma13
0.0116
0.0062
1.8803
0.0601
ln.grp.phvi.pc
<---
port
gamma14
-0.0063
0.0058
-1.0996
0.2715
ln.grp.phvi.pc
<---
t12
rho
0.7542
0.0479
15.7449
0.0000
ln.grp.phvi.pc
<---
wd.ln.grp.phvi.pc
alpha1
0.1488
0.0667
2.2323
0.0256
ln.grp.phvi.pc
<---
(Intercept)
gamma25
0.0027
0.0013
2.1277
0.0334
ln.migr.new
<---
ln.income.pc.fcb97
gamma26
0.0038
0.0012
3.1503
0.0016
ln.migr.new
<---
ln.unempl.level97
gamma27
0.0003
0.0000
9.7510
0.0000
ln.migr.new
<---
avertemp.jan.cs
gamma28
-0.0028
0.0003
-9.6679
0.0000
ln.migr.new
<---
ln.pop.gr.89.26mbe
gamma29
0.0020
0.0009
2.2828
0.0224
ln.migr.new
<---
ln.pass.railway.percap
gamma210
0.0030
0.0004
8.2058
0.0000
ln.migr.new
<---
ln.city
alpha2
-0.0244
0.0041
-5.9237
0.0000
ln.migr.new
<---
(Intercept)
gamma31
0.7727
0.1070
7.2237
0.0000
ln.inv.p0.pc
<---
ln.grp.corr.pc97
gamma37
0.0123
0.0063
1.9596
0.0500
ln.inv.p0.pc
<---
avertemp.jan.cs
gamma311
0.1208
0.1118
1.0799
0.2802
ln.inv.p0.pc
<---
permafrost
gamma312
0.1805
0.0246
7.3497
0.0000
ln.inv.p0.pc
<---
ln.indoutput.fuel.p0.pc
gamma313
0.3888
0.1360
2.8591
0.0042
ln.inv.p0.pc
<---
ln.phone1995
alpha3
-1.1867
0.8601
-1.3798
0.1677
ln.inv.p0.pc
<---
(Intercept)
sigma11
0.0025
0.0001
17.3196
0.0000
ln.grp.phvi.pc
<-->
ln.grp.phvi.pc
sigma12
0.0000
0.0000
-1.3206
0.1867
ln.migr.new
<-->
ln.grp.phvi.pc
sigma13
0.0001
NaN
NaN
NaN
ln.inv.p0.pc
<-->
ln.grp.phvi.pc
sigma22
0.0000
0.0000
17.5513
0.0000
ln.migr.new
<-->
ln.migr.new
sigma23
-0.0001
0.0001
-0.5696
0.5690
ln.inv.p0.pc
<-->
ln.migr.new
sigma33
0.5859
0.0334
17.5470
0.0000
ln.inv.p0.pc
<-->
ln.inv.p0.pc
Iterations = 205
Aliased parameters: sigma13
Warning message:
NaN in: sqrt(diag(object$cov))
So R estimates the model with NaN for sigma13: I'm not sure what it means... As
you can see, maximum is occurred at a negative value for sigma13. At the same
time one can check for rank condition - if I'm not mistaken, all three
equations are exact.
After that, I estimate another specification, for example, including
'ln.postgrad.students.pc.be' (post-graduate students) instead of 't12' (dummy
for poor and depressed regions), so that these two specifications differ only
in one exogenous variable. I proceed in the same manner as before (including
'ln.postgrad.students.pc.be' instead of 't12' in specifying the model,
computing raw moments and declaring new var to be fixed exogenous). So, I do
not provide sem's code for the sake of space saving.
Now R estimates the system "correctly", without any warning messages:
Model fit to raw moment matrix.
Model Chisquare = 405.73 Df = 24 Pr(>Chisq) = 0
Goodness-of-fit index = 0.94308
Adjusted goodness-of-fit index = 0.59441
RMSEA index = 0.16069 90 % CI: (0.14715, 0.17462)
BIC = 182.21
Normalized Residuals
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.9210 0.0000 0.0000 0.0286 0.0000 1.6000
Parameter
Estimate
Std Error
z value
Pr(>|z|)
beta13
0.0157
0.0036
4.3162
0.0000
ln.grp.phvi.pc
<---
ln.inv.p0.pc
beta12
0.9143
0.5337
1.7132
0.0867
ln.grp.phvi.pc
<---
ln.migr.new
gamma11
-0.0268
0.0068
-3.9642
0.0001
ln.grp.phvi.pc
<---
ln.grp.corr.pc97
gamma12
0.0221
0.0171
1.2919
0.1964
ln.grp.phvi.pc
<---
ln.sh.ind.rawwide
gamma13
0.0141
0.0069
2.0499
0.0404
ln.grp.phvi.pc
<---
port
gamma14
0.0061
0.0032
1.8769
0.0605
ln.grp.phvi.pc
<---
ln.postgrad.students.pc.be
rho
0.7483
0.0480
15.5823
0.0000
ln.grp.phvi.pc
<---
wd.ln.grp.phvi.pc
alpha1
0.1433
0.0591
2.4256
0.0153
ln.grp.phvi.pc
<---
(Intercept)
gamma25
0.0026
0.0014
1.8682
0.0617
ln.migr.new
<---
ln.income.pc.fcb97
gamma26
0.0038
0.0013
2.8600
0.0042
ln.migr.new
<---
ln.unempl.level97
gamma27
0.0003
0.0000
9.3817
0.0000
ln.migr.new
<---
avertemp.jan.cs
gamma28
-0.0028
0.0003
-9.5709
0.0000
ln.migr.new
<---
ln.pop.gr.89.26mbe
gamma29
0.0021
0.0010
2.1621
0.0306
ln.migr.new
<---
ln.pass.railway.percap
gamma210
0.0030
0.0004
7.9666
0.0000
ln.migr.new
<---
ln.city
alpha2
-0.0242
0.0042
-5.7363
0.0000
ln.migr.new
<---
(Intercept)
gamma31
0.7733
0.1096
7.0574
0.0000
ln.inv.p0.pc
<---
ln.grp.corr.pc97
gamma37
0.0123
0.0067
1.8285
0.0675
ln.inv.p0.pc
<---
avertemp.jan.cs
gamma311
0.1209
0.1201
1.0065
0.3142
ln.inv.p0.pc
<---
permafrost
gamma312
0.1806
0.0250
7.2323
0.0000
ln.inv.p0.pc
<---
ln.indoutput.fuel.p0.pc
gamma313
0.3879
0.1379
2.8129
0.0049
ln.inv.p0.pc
<---
ln.phone1995
alpha3
-1.1881
0.8754
-1.3572
0.1747
ln.inv.p0.pc
<---
(Intercept)
sigma11
0.0025
0.0001
17.2039
0.0000
ln.grp.phvi.pc
<-->
ln.grp.phvi.pc
sigma12
0.0000
0.0000
-1.1470
0.2514
ln.migr.new
<-->
ln.grp.phvi.pc
sigma13
-0.0001
0.0010
-0.0820
0.9346
ln.inv.p0.pc
<-->
ln.grp.phvi.pc
sigma22
0.0000
0.0000
17.5416
0.0000
ln.migr.new
<-->
ln.migr.new
sigma23
-0.0001
0.0002
-0.4366
0.6624
ln.inv.p0.pc
<-->
ln.migr.new
sigma33
0.5859
0.0334
17.5370
0.0000
ln.inv.p0.pc
<-->
ln.inv.p0.pc
Iterations = 137
In fact, I've estimated about 30 specifications trying to experiment with
different additional explanatory variables in the first equation, and about two
thirds of 30 are turned out to be estimated with that warning message (Negative
parameter variances with NaN for sigma's variances). I've not been clarified
yet with the final specification... though I am not sure that's the case.
Perhaps, I do something wrong concerning specification of error covariance
structure.
Do you have any idea? I'll be pleased by any suggestion.
Sorry to trouble you.
Thanks in advance,
Denis Fomchenko
Research fellow
Department for Economic Development Problems
Institute for the Economy in Transition
5, Gazetny lane, Moscow 125993, Russia
e-mail: [EMAIL PROTECTED]
http://www.iet.ru
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html