Dear All,
I am trying to run a loop after I have defined and called mata. I have several markets (n=17) and I would like to loop over the markets rather than just running the code for every market separately. I got some good help before with the mata code. But now after I run the code it gives me an error: no observations!
This is the code:
and this is the error:
I have also tried adding - capture -
the error is different now:
I am trying to run a loop after I have defined and called mata. I have several markets (n=17) and I would like to loop over the markets rather than just running the code for every market separately. I got some good help before with the mata code. But now after I run the code it gives me an error: no observations!
This is the code:
Code:
cd "$maindataset_jadPC"
use mdl_2021_first_part, clear
clear mata
mata:
void GMM_DLW(todo,betas,crit,g,H)
{
PHI=st_data(.,("phi"))
PHI_LAG=st_data(.,("phi_lag"))
Z=st_data(.,("const","l_lag","k"))
X=st_data(.,("const","l","k"))
X_lag=st_data(.,("const","l_lag","k_lag"))
Y=st_data(.,("y"))
C=st_data(.,("const"))
OMEGA=PHI-X*betas'
OMEGA_lag=PHI_LAG-X_lag*betas'
OMEGA_lag_pol=(C,OMEGA_lag)
g_b = invsym(OMEGA_lag_pol'OMEGA_lag_pol)*OMEGA_lag_pol'OMEGA
XI=OMEGA-OMEGA_lag_pol*g_b
crit=(Z'XI)'(Z'XI)
}
void GMM_DLW_TL(todo,betas,crit,g,H)
{
PHI=st_data(.,("phi"))
PHI_LAG=st_data(.,("phi_lag"))
Z=st_data(.,("const","l_lag","k","l_lag2","k2","l_lagk"))
X=st_data(.,("const","l","k","l2","k2","lk"))
X_lag=st_data(.,("const","l_lag","k_lag","l_lag2","k_lag2","l_lagk_lag"))
Y=st_data(.,("y"))
C=st_data(.,("const"))
OMEGA=PHI-X*betas'
OMEGA_lag=PHI_LAG-X_lag*betas'
OMEGA_lag_pol=(C,OMEGA_lag)
g_b = invsym(OMEGA_lag_pol'OMEGA_lag_pol)*OMEGA_lag_pol'OMEGA
XI=OMEGA-OMEGA_lag_pol*g_b
crit=(Z'XI)'(Z'XI)
}
void DLW()
{
S=optimize_init()
optimize_init_evaluator(S, &GMM_DLW())
optimize_init_evaluatortype(S,"d0")
optimize_init_technique(S, "nm")
optimize_init_nmsimplexdeltas(S, 0.1)
optimize_init_which(S,"min")
optimize_init_params(S,(1,0.8,0.2))
p=optimize(S)
p
st_matrix("beta_dlw",p)
}
void DLW_TRANSLOG()
{
S=optimize_init()
optimize_init_evaluator(S, & GMM_DLW_TL())
optimize_init_evaluatortype(S,"d0")
optimize_init_technique(S, "nm")
optimize_init_nmsimplexdeltas(S, 0.1)
optimize_init_which(S,"min")
optimize_init_params(S,(0,0,0,0,0,0))
p=optimize(S)
p
st_matrix("beta_dlwtranslog",p)
}
end
//end mata here
cap program drop dlw
program dlw, rclass
preserve
sort ordinal year
mata DLW()
end
*------------------------------------------------------------------------------------------------*
cap program drop dlw_translog
program dlw_translog, rclass
preserve
sort ordinal year
mata DLW_TRANSLOG()
end
// use the loop here
forvalues j= 1/17 {
keep if markets ==`j'
//basic ols estimates
reg y l k i.year
gen beta_lols=_b[l]
gen beta_kols=_b[k]
gen Markup_ols=_b[l]/alpha_l
//ACF estimates
dlw
gen beta_c1=beta_dlw[1,1]
gen beta_l1=beta_dlw[1,2]
gen beta_k1=beta_dlw[1,3]
gen Markup_dlw1=beta_l1/alpha_l
gen omega_dlw1=phi-beta_l1*l-beta_k1*k
dlw_translog
gen betal_tl1=beta_dlwtranslog[1,2]
gen betal_tl2=beta_dlwtranslog[1,4]
gen betak_tl1=beta_dlwtranslog[1,3]
gen betak_tl2=beta_dlwtranslog[1,5]
gen betalk_tl=beta_dlwtranslog[1,6]
gen betal_tl=betal_tl1+2*betal_tl2*l+betalk_tl*k
gen mar_dlwz2=betal_tl/alpha_l
}
Code:
Iteration 242: f(p) = 8423.563
Iteration 243: f(p) = 8423.5613
Iteration 244: f(p) = 8423.5613
Iteration 245: f(p) = 8423.5612
1 2 3 4 5 6
+-------------------------------------------------------------------------------------------+
1 | -.0357106538 .0331540067 .022495456 .042301098 -.0053182375 .0396587528 |
+-------------------------------------------------------------------------------------------+
(3 missing values generated)
(3 missing values generated)
(3 missing values generated)
(1,249 observations deleted)
no observations
r(2000);
end of do-file
r(2000);
How to cope with this error?
Thank you
.
Code:
// use the loop here
forvalues j= 1/17 {
keep if markets ==`j'
//basic ols estimates / trying with -capture-
capture reg y l k i.year
gen beta_lols=_b[l]
gen beta_kols=_b[k]
gen Markup_ols=_b[l]/alpha_l
//ACF estimates
dlw
gen beta_c1=beta_dlw[1,1]
gen beta_l1=beta_dlw[1,2]
gen beta_k1=beta_dlw[1,3]
gen Markup_dlw1=beta_l1/alpha_l
gen omega_dlw1=phi-beta_l1*l-beta_k1*k
dlw_translog
gen betal_tl1=beta_dlwtranslog[1,2]
gen betal_tl2=beta_dlwtranslog[1,4]
gen betak_tl1=beta_dlwtranslog[1,3]
gen betak_tl2=beta_dlwtranslog[1,5]
gen betalk_tl=beta_dlwtranslog[1,6]
gen betal_tl=betal_tl1+2*betal_tl2*l+betalk_tl*k
gen mar_dlwz2=betal_tl/alpha_l
}
Code:
23. . } (0 observations deleted) variable beta_lols already defined r(110); end of do-file r(110); .

Comment