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