J'essaye d'écrire une fonction qui utilise la méthode de Newton (coefficients+(inverse hessian)*gradient)
pour trouver itérativement les coefficients pour un modèle log-linéaire.Problèmes avec la méthode de Newton pour trouver le coefficient et le hessien
J'utilise le code suivant:
##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)
Quand je lance le code, je reçois l'erreur suivante:
Error in t(x) %*% hi %*% x : non-conformable arguments
RMate stopped at line 29
Étant donné que la formule est tirée de l'ensemble des problèmes de Bill Greene, je ne pense pas que c'est un problème de formule. Je pense que je fais quelque chose de mal en passant ma fonction.
Comment puis-je résoudre ce problème?
Toute aide concernant cette fonction serait grandement appréciée.
Vous devez indiquer la langue dans les balises. –
Merci pour le commentaire. exp est une fonction de ligne de base pour les exponentielles dans r et yi et xi sont des colonnes dans la matrice de données de données intitulée dat –
Les dimensions de votre opération sont erronées. Pouvez-vous juste imprimer les dimensions de 'x' et' hi' en utilisant 'dim'? –