我试图用R中的最大似然来估计几个参数,更具体地说,在R中的STATA包中,特别是constrOptim(),我在Python中编程,R通过RPY2。
在我的模型中,我假设数据遵循Beta分布,所以我使用预先指定的参数值创建了一个模拟数据集,现在我试图估计这些参数,以验证我的估计程序是否工作正常。
我观察到的是,我的估计对初始参数相当敏感。例如,我有11个参数要估计(我们将这些参数称为pam1..pam11),它们的真实值是:

pam1=0.2  pam2=0.3  pam3=0.4  pam4=0.7 pam5=0.55  pam6=0.45  pam7=0.1  pam8=0.01 pam9=0.01 pam10=45 pam11=45

constrOptim()中,我将启动参数设置为:
start_param=FloatVector(pam1、pam2、pam3、pam4、pam5、pam6、pam7、pam8、pam9、pam10、pam、11)
在这里我设置了起始值。我观察到,当我使用不同的起始值集时,结果会发生变化。例如,当我使用集合时
start_param=FloatVector((0.2,0.3,0.4,0.6,0.7,0.8,0.3,0.011,0.011,15,15))

我得到以下估计
$par

 [1]  0.20851065  0.30348571  0.43616932  0.73695654  0.58287221
0.45541506

 [7]  0.11191879  0.02233908  0.01988878 46.57249043 45.48544918

$value

[1] -215.9711

$convergence

[1] 0

但当我使用另一个集合作为例子时:
start_param=FloatVector((0.2,0.3,0.4,0.75,0.55,0.45,0.3,0.05,0.05,59,59))

结果变了,我好像失去了收敛性
$par

[1]  0.17218738  0.27165359  0.48458978  0.80295773  0.62618983  0.43254786

[7]  0.12426385  0.02991442  0.01853252 57.78269692 59.35376216

$value

[1] -146.9858

$convergence

[1] 1

我的问题是:
我已经看到,在Stata中,有一个选项可以为数值优化算法搜索更好的起始值。我试图通过设置一个矩阵来设置多个起始值,但这不起作用。
constrOptim中是否有允许我执行此类操作的选项?
多谢提前。
有关更多信息,我用于constrOptim()的规范是:
res=statsr.constrOptim(start_param,Rmaxlikelihood,grad='NULL',ui=ui,ci=ci,method="Nelder-Mead",control=list("maxit=3000,trace=F"))

最佳答案

我在R中遇到一个函数,它正是我想要的。
包'Rsolnp'具有函数“gosolnp”,该函数被描述为执行solnp解算器的随机初始化和多次重新启动。
它非常有效,文档提供了如何使用它的示例。
更多:http://cran.r-project.org/web/packages/Rsolnp/Rsolnp.pdf

10-06 01:46