這是要估計的函數形式,nl可以成功估計beta0,rho,delta等參數(
http://www.stata.com/capabilities/nlreg.html)
,stata官方網站有示範以ml的方式估計非線性(
http://www.stata.com/support/faqs/stat/nl_ml.html)
試著仿造過程遇到幾個難處:
⑴ delta k^{-rho} 的那個地方有些不解。我看書上類似把k視實際變數,而非代表變數??
(2) 是否可以利用 local logout: word 1 of `varlist' 的語法在輸入 y =k l時
stata 將右手式的第一個式為k(capital),第二個變數視為l(labor)
可以請各位幫我看看是哪邊的代碼需要修改。
codes:
/*ces dgp*/
clear
setseed 9876
setobs 1000
genu=rnormal()
genk=runiform()
genl=runiform()
scalarrho = 0.2
scalardelta = 0.3
scalar b0 = 0.4
genq = b0 - (1/rho)*log(delta*k^(-1*rho) + (1-delta)*l^(-1*rho)) + u
/*ml ces function */
captureprogram drop mlces
programdefine mlces,rclass
version10
args lnf b0 rho delta
syntax varlist(min=3 max=3) [aw fw iw] if, at(name)
local logout: word 1 of `varlist'
local capital: word 2 of `varlist'
local labor: word 3 of `varlist'
// Retrieve parameters out of at
tempname b0 rho delta
scalar `b0' = `at'[1,1]
scalar `rho' = `at'[1,2]
scalar `delta' = `at'[1,3]
tempvar res
qui gen double `res' = $ML_y1 -(`b0'-(1/`rho’)*(`delta*k^(-`rho')+ (1-`delta’)*l^(-`rho')))
qui replace `lnf' = log(normalden($ML_y1,`res',1))
end
ml model lf mlces (q=l k) /b0 /rho /delta
ml max