【问题标题】:Using non-linear regression to remedy serial correlation in Stata使用非线性回归来修正 Stata 中的序列相关性
【发布时间】:2014-11-22 10:38:09
【问题描述】:

我正在尝试使用 nl 命令在 Stata 中运行非线性回归。我运行回归的原因是我的数据表现出序列相关性 - AR(1)。我使用以下命令。

nl (m = {b0}+  {b1}*lagm + {b2}*y + {b3}*r ({b10})*{b4}*lagy + ({b10})*{b5}*lagy + ({b10})*{b6}*lag2m),  initial(b0 0 b1 0.9 b2 0.09 b3 -0.0055 b4 0 b5 0 b6 0.5 b10 0), if A>2

但是,我得到了错误

"计算表达式时发生错误 #198 无效的 '(' 起始值无效或某些 RHS 变量有缺失值"

我曾多次尝试更改初始值,如您所见,我确保缺失值对于滞后变量没有问题。

最好的,

【问题讨论】:

  • 为什么不适合这个 DGP 的明确含义?

标签: regression stata


【解决方案1】:

您需要使用variables 选项。如果您不这样做,那么如果估计样本包含任何缺失值,nl 就会发出一条返回代码为 480 的错误消息。这是第二个问题。

您的第一个错误代码是 r(198),因此您的语法显示不正确。 “{b3}r ({b10}){b4}*lagy” 部分肯定很糟糕(需要一些算术运算符),并且您的 if 子句位于错误/非标准位置,尽管后者出乎意料地不是问题。

如果不详细了解您的数据以及您输入的确切内容,就很难准确诊断出问题所在,但这两个修复应该会有所帮助。

这里有两个可重现的例子,一个有效,一个失败:

webuse sunspot, clear
tsset time
nl (spot ={b0}+{b1}*L.spot) if time >0, initial(b0 0 b1 0) variables(L.spot)
nl (spot ={b0}+{b1}*L.spot{b3}) if time >0, initial(b0 0 b1 0 b3 0) variables(L.spot) 

如果您tsset 您的数据,您也可以使用滞后运算符,而不是手动创建滞后。

您也可以像这样拟合 AR(1) 模型:

arima spot, ar(1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2015-01-19
    • 2012-03-14
    • 2016-09-04
    • 2011-12-09
    • 2012-09-17
    • 2013-10-25
    相关资源
    最近更新 更多