To learn more about Industrial Organizations and STATA programming, I have been trying to replicate the BLP (1995) code, but I am having issues on the estimation part, that I hope someone may help me with.
I have trace where the problem comes up.
Code:
Source | SS df MS Number of obs = 2,217
-------------+---------------------------------- F(5, 2211) = 279.64
Model | 1639.14273 5 327.828545 Prob > F = 0.0000
Residual | 2592.05292 2,211 1.17234415 R-squared = 0.3874
-------------+---------------------------------- Adj R-squared = 0.3860
Total | 4231.19565 2,216 1.90938432 Root MSE = 1.0827
------------------------------------------------------------------------------
logit_depvar | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
hpwt | -.1205578 .277234 -0.43 0.664 -.6642241 .4231085
air | -.0347453 .0728063 -0.48 0.633 -.1775211 .1080305
mpd | .2631698 .0431176 6.10 0.000 .1786145 .347725
space | 2.341023 .1251805 18.70 0.000 2.09554 2.586507
price | -.0887309 .0040258 -22.04 0.000 -.0966257 -.0808362
_cons | -10.06885 .2528788 -39.82 0.000 -10.56476 -9.572949
------------------------------------------------------------------------------
option expression() required
The moment expression is incorrectly specified.
r(198);Code:
program main
prepare_data
table_3
end
program prepare_data
insheet using "C:\Users\Max\Desktop\Artigos\Cars\BLP_Pyton\trunk\analysis\Transparent Identification (BLP Replication)\external\data\blp_1999_data.csv", clear comma names double
drop v19
save "C:\Users\Max\Desktop\Artigos\Cars\Stata_Tutorial_IndustrialOrganizations\blp_data.dta", replace
end
program table_3
use "C:\Users\Max\Desktop\Artigos\Cars\Stata_Tutorial_IndustrialOrganizations\blp_data.dta", clear
cap matrix drop TABLE
* Column 1 (OLS)
reg logit_depvar hpwt air mpd space price
compute_inelastic_demand, price_coef_name(price) option expression() required
local ols_inelastic_lower = round(r(ci_lower), 0.001)
local ols_inelastic_upper = round(r(ci_upper), 0.001)
matrix TABLE = _b[_cons] \ _se[_cons] \ ///
_b[hpwt] \ _se[hpwt] \ ///
_b[air] \ _se[air] \ ///
_b[mpd] \ _se[mpd] \ ///
. \ . \ ///
_b[space] \ _se[space] \ ///
. \ . \ ///
_b[price] \ _se[price] \ r(num_inelastic)
scalar ols_r2 = e(r2)
* Column 2 (IV)
* First construct the instruments, following BLP (1995, p. 861)
egen ncar_firm = count(1), by(year firm_id)
local five_dmd_variables "const hpwt air mpd space"
foreach var of local five_dmd_variables{
* Reproduces IV construction from BLP (1995) code
gen own_`var' = `var' * ncar_firm
egen all_`var' = total(`var'), by(year)
}
local indep_var "const hpwt air mpd space price" /// GMM estimation
local inst_var "const hpwt air mpd space own_* all_*"
gmm (logit_depvar - {xb:`indep_var'}), ///
instruments(`inst_var') ///
winitial(identity) center
compute_2sls_se, indep_var(`indep_var') inst_var(`inst_var') option expression() required
compute_inelastic_demand, price_coef_name(xb_price:_cons)
local iv_inelastic_lower = round(r(ci_lower), 0.001)
local iv_inelastic_upper = round(r(ci_upper), 0.001)
matrix TABLE = nullmat(TABLE) , ///
(_b[xb_const:_cons] \ _se[xb_const:_cons] \ ///
_b[xb_hpwt:_cons] \ _se[xb_hpwt:_cons] \ ///
_b[xb_air:_cons] \ _se[xb_air:_cons] \ ///
_b[xb_mpd:_cons] \ _se[xb_mpd:_cons] \ ///
. \ . \ ///
_b[xb_space:_cons] \ _se[xb_space:_cons] \ ///
. \ . \ ///
_b[xb_price:_cons] \ _se[xb_price:_cons] \ r(num_inelastic))
* Column 3 (OLS w/ logs)
foreach var of varlist price hpwt space mpg {
replace `var' = log(`var')
}
replace trend = year // transform trend to get the same intercept coefficient
reg price hpwt air mpg space trend
matrix TABLE = nullmat(TABLE) , ///
(_b[_cons] \ _se[_cons] \ ///
_b[hpwt] \ _se[hpwt] \ ///
_b[air] \ _se[air] \ ///
. \ . \ ///
_b[mpg] \ _se[mpg] \ ///
_b[space] \ _se[space] \ ///
_b[trend] \ _se[trend] \ . \ . \ .)
matrix_to_txt, saving("C:\Users\Max\Desktop\Artigos\Cars\Stata_Tutorial_IndustrialOrganizations\tables.txt") mat(TABLE) format(%20.3f) ///
title(<tab:ols_logit>) append
file open f using ../output/tables.txt, write append
file write f "(`ols_inelastic_lower'-`ols_inelastic_upper')" _tab
file write f "(`iv_inelastic_lower'-`iv_inelastic_upper')" _tab "." _n
file close f
matrix TABLE = ols_r2 , ., e(r2)
matrix_to_txt, saving("C:\Users\Max\Desktop\Artigos\Cars\Stata_Tutorial_IndustrialOrganizations\tables.txt") mat(TABLE) format(%20.3f) title() append
end
* Replicates standard errors from BLP (1995)
program compute_2sls_se, eclass
syntax, indep_var(varlist) inst_var(varlist)
preserve
predict resid
* local inst_var const hpwt air mpd space own_* all_*
foreach instrument of varlist `inst_var' {
gen mom_`instrument' = `instrument' * resid
}
quietly corr mom_*, covariance
matrix VCOV_MOM = r(C)
mkmat `indep_var', matrix(X)
mkmat `inst_var', matrix(Z)
matrix JACOBIAN = Z' * X / _N
matrix VCOV_PARAM = ///
inv(JACOBIAN' * JACOBIAN) * JACOBIAN' * VCOV_MOM * JACOBIAN * inv(JACOBIAN' * JACOBIAN) / _N
ereturn repost V = VCOV_PARAM
restore
end
program compute_inelastic_demand, rclass
syntax, price_coef_name(string)
* Rounds inputs to ensure match with BLP (1995) table
scalar price_coef = round(_b[`price_coef_name'], 0.001)
scalar price_coef_se = round(_se[`price_coef_name'], 0.001)
gen price_elasticity = -price_coef * price * (1-share)
quietly count if price_elasticity < 1
return scalar num_inelastic = `r(N)'
gen price_elasticity_ci_upper = -(price_coef + 2*price_coef_se) * price * (1-share)
quietly count if price_elasticity_ci_upper < 1
return scalar ci_upper = `r(N)'
gen price_elasticity_ci_lower = -(price_coef - 2*price_coef_se) * price * (1-share)
quietly count if price_elasticity_ci_lower < 1
return scalar ci_lower = `r(N)'
drop price_elasticity*
endCode:
clear
input double(logit_depvar hpwt) byte air double(mpd space price)
-6.725221995827 .528996865204 0 1.888145604396 1.1502 4.935802469136
-7.175606516457 .494324423288 0 1.935989010989 1.278 5.516049382716
-7.852502562348 .467613439557 0 1.716799450549 1.4592 7.108641975309
-7.424867073844 .42654028436 0 1.687870879121 1.6068 6.83950617284
-7.590731362432 .452488687783 0 1.504285714286 1.6458 8.928395061728
-5.761440843009 .450870646766 0 1.726813186813 1.6224 7.153086419753
-5.800458924364 .564001961746 0 1.727925824176 1.768 9.856790123457
-7.494032269991 .731367541212 0 2.194120879121 1.768 11.269135802469
-5.893490833865 .719013923762 0 2.056153846154 1.816 12.135802469136
-7.37054142125 .728323699422 0 1.978269230769 1.744 12.97037037037
-8.837259359519 .732484076433 0 1.918186813187 1.808 15
-5.780288130463 .729386892178 0 1.912623626374 1.808 16.044444444444
-7.402376987159 .780748663102 0 2.018324175824 1.776 18.22962962963
-7.87526574482 .716510903427 0 1.892596153846 1.832 19.167901234568
-5.38771548063 .419384902144 0 2.211923076923 1.122 5.16049382716
-5.513151785684 .487231182796 0 1.802472527473 1.387 5.938271604938
-5.159829472982 .451713395639 0 1.682307692308 1.5352 6.60987654321
-6.180926607269 .468648998061 0 1.62 1.41 7.212345679012
-5.992941074536 .702408256881 0 1.604423076923 1.5732 8.434567901235
-7.742032900857 .388531618435 0 1.4175 1.736 7.644444444444
-7.087644340445 .388531618435 0 1.4175 1.736 7.982716049383
-4.616703146464 .385638297872 0 1.406373626374 1.736 8.372839506173
-6.038658871342 .631188118812 0 1.463118131868 1.736 10.207407407407
-7.802465286548 .843222985634 0 1.872568681319 1.2627 13.661728395062
-6.738130217816 .659314313114 0 1.528763736264 1.8 10.345679012346
-8.898149315437 .77528349919 0 1.65782967033 1.8 11.572839506173
-7.857978882178 .772779700115 0 1.893708791209 1.8 12.123456790123
-7.629367819706 .49504950495 0 2.330975274725 1.0168 4.925925925926
-5.637141076827 .431034482759 0 1.949340659341 1.379 6.049382716049
-7.595590772216 .413907284768 0 1.654491758242 1.4784 6.733333333333
-6.161708963165 .446841294299 0 1.614436813187 1.6146 6.856790123457
-9.585797856799 .45101088647 0 1.544340659341 1.5862 6.683950617284
-6.701175396079 .386151797603 0 1.378557692308 1.768 8.143209876543
-8.070101066651 .679012345679 0 1.55657967033 1.768 10.427160493827
-5.181236055153 .384812724474 0 2.266442307692 1.141 4.738271604938
-5.463168183523 .384172109105 0 2.130700549451 1.3277 5.518518518519
-5.38139545377 .464297150176 0 1.711236263736 1.5939 6.597530864198
-6.163448235385 .497768623412 0 1.732376373626 1.425 7.187654320988
-7.450346159145 .380952380952 0 1.458667582418 1.736 8.118518518519
-5.578863554699 .376850605653 0 1.443090659341 1.736 8.874074074074
-5.203481508363 .60286360211 0 1.447541208791 1.736 9.706172839506
-7.324715240714 .82023239918 0 2.050590659341 1.677 13.074074074074
-7.39708396913 .719637223975 0 2.079519230769 1.8 18.318518518519
-7.579640177217 .729562262642 0 1.970480769231 1.736 21.76049382716
-6.841955237469 .382848392037 0 2.127362637363 1.3419 5.637037037037
-6.924573150893 .449194547708 0 1.648928571429 1.638 6.859259259259
-7.066129412843 .720504353047 0 1.65782967033 1.4972 8.120987654321
-7.532588465879 .595681310499 0 1.533214285714 1.8 9.525925925926
-6.654976390355 .598251265532 0 1.630013736264 1.8 11.046913580247
-5.449077174338 .445879458795 0 1.86478021978 1.6016 7.404938271605
-6.244589705636 .578313253012 0 1.730151098901 1.768 9.83950617284
-6.245083863989 .716364450414 0 1.862554945055 1.7933 11.98024691358
-7.318705638377 .77399380805 0 1.920412087912 1.76 13.474074074074
-5.468062504112 .440917107584 0 1.852541208791 1.3608 5.906172839506
-8.017784479964 .415282392027 0 1.667843406593 1.4025 6.553086419753
-6.229720910417 .446291166513 0 1.602197802198 1.6195 6.750617283951
-7.620248469214 .391363022942 0 1.4175 1.728 7.767901234568
-7.106055733275 .620181025813 0 1.746840659341 1.4235 6.143209876543
-5.881441826009 .449055435119 0 1.65782967033 1.5939 7.222222222222
-7.009599786801 .458280657396 0 1.604423076923 1.4208 7.523456790123
-5.896781323347 .613195977434 0 1.469793956044 1.768 9.308641975309
-7.275763014923 .664609541894 0 1.534326923077 1.8 10.395061728395
-6.718326740432 .776598498576 0 1.733489010989 1.6401 11.251851851852
-10.054804973755 .465766185375 0 2.201909340659 1.1136 7.641975308642
-8.044587548282 .487908358082 0 1.98271978022 1.2627 8.876543209877
-7.226972850754 .373878364905 0 2.332087912088 1.092 6.037037037037
-7.000540728132 .428481411468 0 2.79717032967 .906 4.286419753086
-6.320242054469 .43935052531 0 2.470054945055 .992 5.234567901235
-10.058397075003 .277777777778 0 2.789381868132 .7896 3.83950617284
-9.092117377617 .375939849624 0 2.438901098901 1.0368 5.138271604938
-8.722849008341 .24375 0 2.836112637363 .8586 3.444444444444
-9.875475937897 .436724565757 0 2.542376373626 1.0106 5.41975308642
-9.978877371848 .409722222222 0 1.858104395604 1.295 13.116049382716
-9.180665140251 .398514015535 0 1.820274725275 1.295 13.38024691358
-9.082277013601 .525259284041 0 1.530989010989 1.295 15.748148148148
-8.312732485058 .622621930128 0 1.650041208791 1.183 18.441975308642
-10.187085015326 .333531864205 0 2.612472527473 1.053 4.698765432099
-9.703643207457 .364356435644 0 2.087307692308 1.1682 8.587654320988
-8.6207644385 .430816016219 0 2.280906593407 1.0205 8.876543209877
-9.30211179366 .634495084897 0 1.952678571429 1.0496 16.037037037037
-8.978212908876 .293654955427 0 2.553502747253 1.002 4.555555555556
-10.122375976667 .349397590361 0 2.122912087912 1.1352 8.333333333333
-6.217754549513 .450127877238 0 2.584656593407 .948 4.920987654321
-6.75767044042 .497695852535 0 2.388832417582 1.0354 5.308641975309
-6.617200108078 .467532467532 0 2.298708791209 1.1008 5.62962962963
-9.605431006932 .387858347386 0 1.773543956044 1.2395 7.034567901235
-8.108781000785 .42731277533 0 2.335425824176 1.0332 6.414814814815
-5.104170658 .31914893617 0 2.692582417582 .9699 4.555555555556
-6.590614088581 .240629338269 0 2.480068681319 1.1008 6.417283950617
-7.765050850697 .328293736501 0 2.060604395604 1.1946 7.404938271605
-8.59832323573 .376114773168 0 2.182994505495 1.2627 8.320987654321
-8.703890107146 .441330998249 0 2.082857142857 1.2648 10.234567901235
-6.382279292207 .400962309543 0 2.253263157895 1.1502 4.782296650718
-6.99530621771 .371609067261 0 2.161789473684 1.278 5.418660287081
-7.725352136363 .347705146036 0 1.964947368421 1.4592 6.715311004785
-7.397157080116 .315357931252 0 2.130526315789 1.6068 6.66028708134
-7.590750652679 .424088210348 0 1.660421052632 1.6536 9.294258373206
-5.869501152436 .357057843371 0 1.511052631579 1.768 9.468899521531
-7.54825092196 .510667271902 0 1.420736842105 1.768 10.784688995215
-5.868270574208 .498338870432 0 1.326947368421 1.816 11.698564593301
endIf anyone can guide me through it, I appreciate it!!
Max
0 Response to Error option expression() required
Post a Comment