【问题标题】:Problems with Newton's Method for finding coefficient and Hessian牛顿法求系数和 Hessian 的问题
【发布时间】:2010-12-21 20:59:41
【问题描述】:

我正在尝试编写一个函数,该函数使用牛顿法(coefficients+(inverse hessian)*gradient) 来迭代地找到对数线性模型的系数。

我正在使用以下代码:

 ##reading in the data
    dat<-read.csv('hw8.csv')
    summary(dat)
    # data file containing yi and xi
    attach(dat)
    ##Creating column of x's
    x<-cbind(1,xi)

    mle<-function(c){
     gi<- 1-yi*exp(c[1]+c[2]*xi)
     hi<- gi-1
     H<- -1*(t(x)%*%hi%*%x)
     g<-t(x)%*%gi
     c<-c+solve(H)%*%g
      return(c)
    }

    optim(c(0,1),mle,hessian=TRUE)

当我运行代码时,我收到以下错误:

Error in t(x) %*% hi %*% x : non-conformable arguments
RMate stopped at line 29

鉴于公式是从比尔格林的问题集中得出的,我不认为这是一个公式问题。我认为我在传递函数时做错了。

我该如何解决这个问题?
对此功能的任何帮助将不胜感激。

【问题讨论】:

  • 你应该在标签中注明语言。
  • 感谢您的评论。 exp 是 r 和 yi 中指数的基线函数,xi 是数据数据矩阵中标题为 dat 的列
  • 您的操作维度有误。你能用dim打印出xhi的尺寸吗?

标签: r newtons-method


【解决方案1】:

正如乔纳森在 cmets 中所说,您需要适当的尺寸:

R> X <- matrix(1:4, ncol=2)
R> t(X) %*% X 
     [,1] [,2]
[1,]    5   11
[2,]   11   25
R> 

但您也应该使用适当的工具,因此可以查看stats 包中的loglin 函数,和/或MASS 包中的loglm 函数。默认情况下,两者都将随您的 R 安装一起安装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2016-07-21
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    相关资源
    最近更新 更多