编写返回矩阵的Stata ado文件时遇invalid syntax错误,求解决方案
解决Stata ado文件返回矩阵的语法错误
你的代码核心错误是return P0这一行的语法不符合Stata规范,Stata的return命令不能直接以这种形式返回矩阵,需要明确指定返回的结果名称和对应的矩阵对象。以下是两种修正方案:
方案1:返回结果到r()临时结果集
如果不需要将结果存入估计结果空间,可使用return matrix命令:
prog drop EM program define EM matrix P0 = (.9, 0.09,0.01 \ 0.1, 0.8, 0.1 \ 0.05, 0.15, 0.8) return matrix P0 = P0 end EM return list // 查看返回的所有结果 matrix list r(P0) // 单独查看返回的矩阵
方案2:返回结果到e()估计结果集(保留eclass选项)
如果你的程序作为估计类命令使用,需要保留eclass选项,那么用ereturn matrix命令将矩阵存入e()空间:
prog drop EM program define EM, eclass matrix P0 = (.9, 0.09,0.01 \ 0.1, 0.8, 0.1 \ 0.05, 0.15, 0.8) ereturn matrix P0 = P0 end EM ereturn list // 查看eclass空间的所有结果 matrix list e(P0) // 单独查看返回的矩阵
关键说明
return matrix <name> = <matrix>:把矩阵存入r()临时结果集,适合普通命令返回结果。ereturn matrix <name> = <matrix>:把矩阵存入e()估计结果集,适合带eclass选项的估计类命令。- 执行命令后,通过
return list或ereturn list可查看所有返回结果,用matrix list r(<name>)或matrix list e(<name>)可单独查看目标矩阵。
内容的提问来源于stack exchange,提问作者jgr
相关产品推荐
相关产品推荐

