2013-03-07 17 views
3

我想使用R中的常量最大似然估計幾個參數,更具體地說,是使用R中stata包中的constrOptim()。我使用Python編程並使用R通過RPy2 。如何在constrOptim中設置多個起始值()

在我的模型中,我假設數據遵循Beta分佈,所以我通過使用預先指定的參數值創建了一個模擬數據集,現在我試圖估計這些參數以驗證我的估計程序工作正常。

我觀察到的是我的估計對初始參數非常敏感。比如我有11個參數估計(我們稱之爲參數爲pam1..pam11)和它們的真正價值在於:

START_PARAM = FloatVector:

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()我作爲設置啓動參數((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")) 
+3

我不認爲這是一種選擇,但你可以簡單地調用函數幾次, 在一個循環中,用不同的(隨機)的出發點,並保持結果的最佳值。 – 2013-03-07 18:33:31

回答

0

我碰到R中一個函數,它不正是我一直在尋找來了。 包'Rsolnp'具有函數「gosolnp」,該函數被描述爲執行solnp解算器的隨機初始化和多次重新啓動。

它非常高效,文檔提供了有關如何使用它的示例。

更多:http://cran.r-project.org/web/packages/Rsolnp/Rsolnp.pdf

相關問題