Bonjour, j'ai un dm à faire sur la logiciel R. Le but de se projet est de faire des analyse et de créer un package sur R.
J'ai un problème récurrent qui intervient sur une de mes fonctions j'ai essayé plein de procédé pour le résoudre mais je n'ai pas réussi.
Le programme consiste à estimer un paramètre grâce a la méthode de newton :
Voici mon code :
eCode:stimationUniv3 <- function(beta, D, eps){ X <- D[,1] Y <- D[,2] beta_0 <- beta beta_1 <- beta_0 - (der1(D, beta_0)/der2(D, beta_0)) while(abs(beta_0 - beta_1) > eps){ a <- beta_1 if ((der2(D, beta_1) != 0)){ beta_1 <- beta_1 - (der1(D, beta_1)/der2(D, beta_1)) beta_0 <- a } else { break } } return(beta_1) } avec der1 : der1 <- function(D, beta){ X <- D[,1] Y <- D[,2] d1 <- 0 for (i in 1:length(X)){ d1 <- d1+X[i]*(Y[i]-(exp(X[i]*beta)/(1+exp(-X[i]*beta)))) } return(d1) } der2 : der2 <- function(D,beta){ X <- D[,1] Y <- D[,2] d2 <- 0 for (i in 1:length(X)){ d2 <- d2-((X[i]**2)*(exp(X[i]*beta)/(1+exp(X[i]*beta))**2)) } return(d2) } D est l'échantillon fournit grâce a la fonction simulation : simulationUniv <- function(n, beta){ X<- rnorm(n,0,1) Y<-numeric(n) Y <-rbinom(n,1,prob=exp(t(X)*beta)/(1+(exp(t(X)*beta)))) ech <- cbind(X, Y) return (ech) }
Lorsque j'execute le programme estimationUniv l'erreur est la suivante:
Error in if ((der2(D, beta_1) != 0)) { :
missing value where TRUE/FALSE needed
cependant lorsque je teste der2 j'obtiens une valeur numérique donc je ne comprends pas comment résoudre le problème des valeurs manquantes
Merci pour votre aide
-----