楼主: zhyalo
2673 4

[问答] 通过牛顿算法找最大值 [推广有奖]

  • 1关注
  • 0粉丝

高中生

70%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
527 点
帖子
12
精华
0
在线时间
52 小时
注册时间
2015-4-5
最后登录
2019-5-6

楼主
zhyalo 发表于 2015-4-26 15:05:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
以下的code是用牛顿算法来找使得目标函数最大化的参数b ,原方程为y[i]=a+b*x[i]+e[i]  假设a=1  ,  e~N(0,1)iid
即通过极大似然估计的方法估计参数b
但是若a也是未知数,能否用该方法同时估计a,b  使得目标函数最大化   


##目标函数
f<-function(x,y,b)
{
sum(-0.5*log(2*pi)-(y-1-b*x)^2/2)
}
##一阶导数
df<-function(x,y,b)
{
sum((y-1-b*x)*x)
}
##二阶导数
d2f<-function(x,y,b)
{
sum(-x^2)
}
##循环找到最好的b
n=10
b=rep(NA,n)
x=matrix(c(1,2,3,4,5),5,1)
y=matrix(c(3,5,7,9,11),5,1)
b[1]=5   #赋给b的初始值
for(i in 1:n)
{
b[i+1]<-b[i]-(d2f(x,y,b[i]))^(-1)*df(x,y,b[i])
}
## 画图 Check the convergence
par(mfrow = c(4, 1))
plot(b,ylim=c(0,5),type = "l", col = "red")

p=f(x,y,b[1])
for(i in 2:n)
p=c(p,f(x,y,b[i]))
plot(p,type="l", col = "red")

q=df(x,y,b[1])
for(i in 2:n)
q=c(q,df(x,y,b[i]))
plot(q,type = "l", col = "red")            

plot(rep(d2f(x,y,b),n), type = "l", col = "red")




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:最大值 极大似然估计 目标函数 极大似然 code 最大值 未知数

沙发
katymeala 发表于 2015-4-26 15:43:42
基础包里的nlm()就是实现这个功能的
已有 1 人评分论坛币 收起 理由
admin_kefu + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
lasgpope 学生认证  发表于 2015-4-26 17:01:07 来自手机
zhyalo 发表于 2015-4-26 15:05
以下的code是用牛顿算法来找使得目标函数最大化的参数b ,原方程为y=a+b*x+e  假设a=1  ,  e~N(0,1)iid
...
看看。。。

板凳
zhyalo 发表于 2015-4-26 22:58:43
katymeala 发表于 2015-4-26 15:43
基础包里的nlm()就是实现这个功能的
是的,但是我想弄清楚是怎么实现的

报纸
nuomin 发表于 2015-4-27 15:50:15
帮你找到了
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=2927102&page=1#pid23883587

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 19:36