如何使用NLS等回归估计模型参数?Stata实操问题咨询
Stata非线性最小二乘(NLS)参数估计问题解决方案
问题2:do文件中beta变量灰显的成因与影响
- 成因:
beta是Stata内置的系统保留常量,代表当前Stata版本的发行编号,do文件编辑器的语法高亮规则会对系统保留字做特殊标记,因此出现灰显效果。 - 影响:该效果仅为编辑器的显示规则,完全不会影响代码的实际运行,和NLS估计失败没有任何关联。如果怕后续混淆,直接把自定义参数名改为
beta1、risk_beta这类非保留字名称即可,不需要调整代码逻辑。
问题1:alpha参数无法通过NLS估计的排查解决步骤
NLS为迭代求解的非线性算法,无法输出估计值基本都是迭代不收敛导致的,按以下优先级排查即可:
- 第一步:调整参数初始值
NLS对初始值敏感度极高,初始值偏离真实值过远是90%以上估计失败的原因。你可以通过两种方式设置合理初始值:- 参考同领域已发表文献中同类模型的参数取值,直接作为初始值代入
- 对你的理论模型做线性近似(可线性化的模型先做对数变换跑OLS),将OLS得到的系数作为NLS的初始值
Stata中设置初始值的语法示例:
* 示例中y为被解释变量,模型表达式替换为你自己的理论模型,初始值替换为你测算的合理取值 nl (y = {alpha}*return + {beta}*risk + {gamma}*env) , /// parameters(alpha beta gamma) /// initial(alpha 0.8 beta 0.3 gamma 0.1) - 第二步:检查模型书写规范
确认模型表达式中alpha对应的项没有拼写错误,变量名和数据集内的变量名完全一致,括号、运算符号没有缺漏。 - 第三步:调整迭代参数
如果初始值设置合理仍不收敛,可以放宽迭代规则,比如调高最大迭代次数、调低收敛阈值:nl (y = {alpha}*return + {beta}*risk + {gamma}*env) , /// parameters(alpha beta gamma) /// initial(alpha 0.8 beta 0.3 gamma 0.1) /// iterate(5000) tolerance(1e-6) - 第四步:排查数据质量问题
确认和alpha相关的核心解释变量没有大量缺失值、极端值,和其他变量不存在严重多重共线性,可以先运行corr 核心变量名查看相关系数,若系数超过0.8先处理共线性问题再做估计。
内容的提问来源于stack exchange,提问作者Rassul Kalfane
相关产品推荐
相关产品推荐

