0

ニュートン法(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

数式がBillGreeneの問題セットから引き出されていることを考えると、数式の問題ではないと思います。関数を渡す際に何か問題が発生していると思います。

どうすればこれを修正できますか?
この機能の助けをいただければ幸いです。

4

1 に答える 1

2

ジョナサンがコメントで言ったように、適切な寸法が必要です:

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

ただし、適切なツールも使用する必要があるため、パッケージ内の関数および/またはパッケージloglin内の関数を確認してください。両方とも、R のインストール時に既定でインストールされます。statsloglmMASS

于 2009-12-01T12:43:21.557 に答える