Я пытаюсь написать функцию, которая использует метод Ньютона (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
Учитывая, что формула взята из множества задач Билла Грина, я не думаю, что это проблема формулы. Я думаю, что делаю что-то не так, передавая свою функцию.
Как я могу это исправить?
Любая помощь с этой функцией будет принята с благодарностью.