楼主: 迷途mitu
10486 22

[问答] R中极大似然估计的初始值问题 [推广有奖]

11
iooo 发表于 2012-4-22 10:40:39
迷途mitu 发表于 2012-4-22 10:31
可不可以用似然估计的结果循环代入来逼近呢?初始值随便取一个,然后迭代?行不行?
一般不行。最大似然函数值一般都是非线性优化问题。这类问题,大都是给一个初始位置,然后向周围探索,如果有更高的地方,就跑到那个更高的地方,然后进一步探索,直到找到一个位置,从这个位置放眼看去,周围没有更高的了。如果你一开始就位于这个求最优的程序找到的“最高点”,通常这个程序仍然认为该点是最高点。

12
迷途mitu 发表于 2012-4-22 10:53:35
iooo 发表于 2012-4-22 10:40
一般不行。最大似然函数值一般都是非线性优化问题。这类问题,大都是给一个初始位置,然后向周围探索,如 ...
这种情况在单变量的时候比较好解决,通过不同区域取值就可以做到。
但是对于多变量呢?就不容易处理了啊

13
firelife 发表于 2012-4-22 10:58:37
多变量也是一样的

#产生gamma随机数
x <- rgamma(100,shape=3,scale=10)
#定义极大似然函数,dgamma里面设置log=T
like <- function(y) -sum(dgamma(x,shape=y[1],scale=y[2],log=T))
#设定函数初始值
y0 <-c(2,9.9)
#nlm函数求解
nlm(like,y0)

14
迷途mitu 发表于 2012-4-22 11:01:29
firelife 发表于 2012-4-22 10:58
多变量也是一样的

#产生gamma随机数
我知道多变量也是一样要这样设定初始值的,但是如果要考虑不同区域的话那不是会有很多很多组合么?尤其是变量特别多的时候。

15
iooo 发表于 2012-4-22 11:08:57
迷途mitu 发表于 2012-4-22 11:01
我知道多变量也是一样要这样设定初始值的,但是如果要考虑不同区域的话那不是会有很多很多组合么?尤其是 ...
是的,这也正是维度较高时,非线性优化所面临的麻烦。

16
iooo 发表于 2012-4-22 11:19:00
迷途mitu 发表于 2012-4-22 11:01
我知道多变量也是一样要这样设定初始值的,但是如果要考虑不同区域的话那不是会有很多很多组合么?尤其是 ...
实际上,一个最可靠的找全局最高点的方法就是“格点法”,东西标定坐标,南北标定坐标,然后计算每个坐标的“山的高度”,对应最高的那个就是你要找的坐标。如果你每个维度上都给n个标记,2维就是n*n个坐标,3为就是n^3个坐标,10维就是n^10个坐标,这是一个很大的数字,特别是你想精确地找到你要的那个坐标的话(这意味着n一般较大)。所以,非线性优化,就是找到可以替代这种可靠但效率极低的算法 ,不同的算法,有不同策略。
已有 1 人评分经验 热心指数 收起 理由
qoiqpwqr + 20 + 1 热心帮助其他会员

总评分: 经验 + 20  热心指数 + 1   查看全部评分

17
迷途mitu 发表于 2012-4-22 13:34:40
iooo 发表于 2012-4-22 11:19
实际上,一个最可靠的找全局最高点的方法就是“格点法”,东西标定坐标,南北标定坐标,然后计算每个坐标 ...
嗯 这样效率肯定好低的 还是谢谢你啊

18
可爱的ii 在职认证  发表于 2012-9-13 14:51:23
firelife 发表于 2012-4-22 10:58
多变量也是一样的

#产生gamma随机数
谢谢 很有帮助

19
zippo414 发表于 2012-9-14 23:56:52
我看了一下前面的回复,都关注了可能会得到局部极值的问题,那么可以用一种全局最优的数值优化方法求极值就可以了,比如模拟退火算法。这种算法对初始值是没有要求的,optim(...,option='SANN')就是模拟退火算法。不过建议你最好读一些关于这个算法的文献,不然里面的一些参数会不知道什么意思,比如要设定温度。

20
心若流沙 发表于 2015-1-13 10:54:04
我也遇到了同样的问题,同问

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 17:17