在Stata的ML编程中设置初始值

在Stata的ML编程中设置初始值,stata,Stata,我试图检查Stata是否在模型NormalReg(示例模型)中获取初始值,该模型是我从先前的reg中使用的。然而,在我看来,通过查看迭代0,它似乎没有考虑我的初始值。我们将非常感谢您为解决此问题提供的任何帮助 set seed 123 set obs 1000 gen x = runiform()*2 gen u = rnormal()*5 gen y = 2 + 2*x + u reg y x Source | SS df MS

我试图检查Stata是否在模型NormalReg(示例模型)中获取初始值,该模型是我从先前的
reg
中使用的。然而,在我看来,通过查看迭代0,它似乎没有考虑我的初始值。我们将非常感谢您为解决此问题提供的任何帮助

set seed 123
set obs 1000
gen x = runiform()*2
gen u = rnormal()*5
gen y = 2 + 2*x + u
reg y x


      Source |       SS       df       MS              Number of obs =    1000
-------------+------------------------------           F(  1,   998) =   52.93
       Model |  1335.32339     1  1335.32339           Prob > F      =  0.0000
    Residual |   25177.012   998   25.227467           R-squared     =  0.0504
-------------+------------------------------           Adj R-squared =  0.0494
       Total |  26512.3354   999  26.5388743           Root MSE      =  5.0227

------------------------------------------------------------------------------
           y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
           x |    1.99348   .2740031     7.28   0.000     1.455792    2.531168
       _cons |   2.036442   .3155685     6.45   0.000     1.417188    2.655695
------------------------------------------------------------------------------




cap program drop NormalReg
program define NormalReg
args lnlk xb sigma2
qui replace `lnlk' = -ln(sqrt(`sigma2'*2*_pi)) - ($ML_y-`xb')^2/(2*`sigma2')
end

ml model lf NormalReg (reg: y = x) (sigma2:)
ml init reg:x = `=_b[x]'
ml init reg:_cons = `=_b[_cons]'
ml max,iter(1) trace


 ml max,iter(1) trace

initial:       log likelihood =     -<inf>  (could not be evaluated)
searching for feasible values .+
feasible:      log likelihood =  -28110.03
rescaling entire vector .+.
rescale:       log likelihood = -14623.922
rescaling equations ...+++++.
rescaling equations ....
rescale eq:    log likelihood = -3080.0872
------------------------------------------------------------------------------
Iteration 0:
Parameter vector:
        reg:     reg:  sigma2:
          x    _cons    _cons
r1  3.98696        1       32

                                                   log likelihood = -3080.0872
------------------------------------------------------------------------------
Iteration 1:
Parameter vector:
         reg:      reg:   sigma2:
           x     _cons     _cons
r1  2.498536  1.773872  24.10726

                                                   log likelihood = -3035.3553
------------------------------------------------------------------------------
convergence not achieved

                                                  Number of obs   =       1000
                                                  Wald chi2(1)    =      86.45
Log likelihood = -3035.3553                       Prob > chi2     =     0.0000

------------------------------------------------------------------------------
           y |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
reg          |
           x |   2.498536   .2687209     9.30   0.000     1.971853     3.02522
       _cons |   1.773872   .3086854     5.75   0.000      1.16886    2.378885
-------------+----------------------------------------------------------------
sigma2       |
       _cons |   24.10726   1.033172    23.33   0.000     22.08228    26.13224
------------------------------------------------------------------------------
Warning: convergence not achieved
设置种子123
设置obs 1000
gen x=运行格式()*2
发电机u=r正常值()*5
发电机y=2+2*x+u
注册表y x
源| SS df MS obs数量=1000
-------------+------------------------------F(1998)=52.93
型号| 1335.32339 1 1335.32339 Prob>F=0.0000
残差| 25177.012998 25.227467 R平方=0.0504
-------------+------------------------------调整R平方=0.0494
总计| 26512.3354 999 26.5388743根MSE=5.0227
------------------------------------------------------------------------------
y|Coef。标准错误。t P>| t |[95%配置间隔]
-------------+----------------------------------------------------------------
x | 1.99348.27400031 7.28 0.000 1.455792 2.531168
_cons | 2.036442.3155685 6.45 0.000 1.417188 2.655695
------------------------------------------------------------------------------
cap程序drop NormalReg
程序定义NormalReg
args lnlk xb sigma2
qui替换'lnlk'=-ln(sqrt('sigma2'*2*\u pi))-($ML\u y-'xb')^2/(2*'sigma2')
结束
ml型号lf NormalReg(reg:y=x)(sigma2:)
ml init reg:x=`=_b[x]'
ml init reg:_cons=`=_b[_cons]'
最大毫升数,国际热核实验堆(1)道
最大毫升数,国际热核实验堆(1)道
初始:对数似然=-(无法评估)
寻找可行值+
可行:对数似然=-28110.03
重新缩放整个向量。
重缩放:对数似然=-14623.922
重缩放方程…++++++++。
重缩放方程。。。。
重缩放等式:对数似然=-3080.0872
------------------------------------------------------------------------------
迭代0:
参数向量:
reg:reg:sigma2:
x_cons_cons
r1 3.98696 1 32
对数似然=-3080.0872
------------------------------------------------------------------------------
迭代1:
参数向量:
reg:reg:sigma2:
x_cons_cons
r1 2.498536 1.773872 24.10726
对数似然=-3035.3553
------------------------------------------------------------------------------
未实现趋同
OB的数量=1000
华尔兹2(1)=86.45
对数似然=-3035.3553概率>chi2=0.0000
------------------------------------------------------------------------------
y|Coef。标准错误。z P>| z |[95%配置间隔]
-------------+----------------------------------------------------------------
注册|
x | 2.498536.2687209 9.30 0.000 1.971853 3.02522
_cons | 1.773872.3086854 5.75 0.000 1.16886 2.378885
-------------+----------------------------------------------------------------
西格玛2|
_cons | 24.10726 1.033172 23.33 0.000 22.08228 26.13224
------------------------------------------------------------------------------
警告:未实现收敛

像这样的东西非常敏感。您相信上一次回归的结果在
程序定义的确切位置仍然可见。若干不同的行动可能直接或间接地破坏这一点。最好将要使用的参数视为要在程序运行时使用程序的选项提供给程序的参数

像这样的东西非常敏感。您相信上一次回归的结果在
程序定义的确切位置仍然可见。若干不同的行动可能直接或间接地破坏这一点。最好将要使用的参数视为要在程序运行时使用程序的选项提供给程序的参数

像这样的东西非常敏感。您相信上一次回归的结果在
程序定义的确切位置仍然可见。若干不同的行动可能直接或间接地破坏这一点。最好将要使用的参数视为要在程序运行时使用程序的选项提供给程序的参数

像这样的东西非常敏感。您相信上一次回归的结果在
程序定义的确切位置仍然可见。若干不同的行动可能直接或间接地破坏这一点。最好将要使用的参数视为要在程序运行时使用程序的选项提供给程序的参数

显然,如果希望
ml
在迭代0时评估指定初始值的可能性,还必须为
sigma2
提供一个值;。将代码的最后一部分更改为:

matrix rmse = e(rmse)
scalar mse = rmse[1,1]^2

ml model lf NormalReg (reg: y = x) (sigma2:)
ml init reg:x = `=_b[x]'
ml init reg:_cons = `=_b[_cons]'
ml init sigma2:_cons = `=scalar(mse)'
ml maximize, trace

注意,σ^2的最大似然估计值将不同于均方根误差,因为最大似然不知道自由度。如果n=1000 sigma2=(998/1000)*rmse.

显然,如果希望
ml
在迭代0时评估指定初始值的可能性,还必须为
sigma2
提供一个值;。将代码的最后一部分更改为:

matrix rmse = e(rmse)
scalar mse = rmse[1,1]^2

ml model lf NormalReg (reg: y = x) (sigma2:)
ml init reg:x = `=_b[x]'
ml init reg:_cons = `=_b[_cons]'
ml init sigma2:_cons = `=scalar(mse)'
ml maximize, trace
注意,σ^2的最大似然估计值将不同于均方根误差,因为最大似然不知道自由度。n=1000 sigma2=(998/1000)*r