ニュートン法(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の問題セットから引き出されていることを考えると、数式の問題ではないと思います。関数を渡す際に何か問題が発生していると思います。
どうすればこれを修正できますか?
この機能の助けをいただければ幸いです。