Programmation sur R erreur de valeur manquante
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Programmation sur R erreur de valeur manquante



  1. #1
    MBBBBBBBB

    Programmation sur R erreur de valeur manquante


    ------

    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 :

    e
    Code:
    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

    -----
    Dernière modification par JPL ; 05/05/2019 à 20h34. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    minushabens

    Re : Programmation sur R erreur de valeur manquante

    le message d'erreur signifie que la fonction der2 n'a pas renvoyé un nombre, mais quelque-chose qui n'est pas comparable à zéro, probablement l'une des valeurs NA (manquant) ou NaN (not a number).

  3. #3
    MBBBBBBBB

    Re : Programmation sur R erreur de valeur manquante

    Le problème c'est que quand je teste la fonction der2 a part j'obtiens bien un nombre.

  4. #4
    minushabens

    Re : Programmation sur R erreur de valeur manquante

    tu ne dois pas la tester avec les même arguments que quand elle est appelée par la fonction stimationUniv3.

  5. A voir en vidéo sur Futura
  6. #5
    minushabens

    Re : Programmation sur R erreur de valeur manquante

    regarde:

    > der2(matrix(rep(1000,4),2),1)
    [1] NaN

  7. #6
    MBBBBBBBB

    Re : Programmation sur R erreur de valeur manquante

    D'accord dans ce cas je vais essayer de tester avec les mêmes paramètres merci

  8. #7
    MBBBBBBBB

    Re : Programmation sur R erreur de valeur manquante

    Ah oui d'accord mais à quoi est du ce résultat car avec d3s test sur un échantillon avec simulation celle ci me renvoyait bien un nombre

  9. #8
    LeMulet

    Re : Programmation sur R erreur de valeur manquante

    Sans rien connaitre à la méthode de Newton, un truc (éventuellement) suspect (sait-on jamais) :
    Code:
      d1 <- d1+X[i]*(Y[i]-(exp(X[i]*beta)/(1+exp(-X[i]*beta))))
      d2 <- d2-((X[i]**2)*(exp(X[i]*beta)/(1+exp(X[i]*beta))**2))
    Vous êtes sûr que c'est un * dans la formule avec d2 ?
    Ca pourrait expliquer un dépassement de capacité pour d2.
    Bonjour, et Merci.

  10. #9
    MBBBBBBBB

    Re : Programmation sur R erreur de valeur manquante

    Oui c'est bien une multiplication, der2 et la dérivé seconde c'est enfaite la dérivé de der1 par rapport à x

  11. #10
    minushabens

    Re : Programmation sur R erreur de valeur manquante

    au fait tu n'as pas besoin de faire une boucle ici:

    Code:
      d2 <- 0
      for (i in 1:length(X)){
        d2 <- d2-((X[i]**2)*(exp(X[i]*beta)/(1+exp(X[i]*beta))**2))
      }
    tu peux faire juste

    d2<- -sum((X^2*exp(X*beta)/(1+exp(X*beta))^2)

    la fonction sum fait les itérations pour toi.

    mais ça ne résoudra pas ton problème, qui est que tu calcules une exponentielle avec un argument trop grand (on est limité à exp(709) environ)

  12. #11
    invite73192618

    Re : Programmation sur R erreur de valeur manquante

    Les débordements viennent souvent d'une division par quelque chose trop proche de zéro. Ajouter un epsilon aux dénominateurs (genre 10^-8) pourrait résoudre le problème.

  13. #12
    MBBBBBBBB

    Re : Programmation sur R erreur de valeur manquante

    Bonjour, j'ai essayé en rajoutant 10^-8 au dénominateur mais cela n'a rien changé du coup j'ai remplacé le condition if par abs(der2(D, beta_1)) >0 ce qui revient au même que der2(D, beta_1)!=0 il me semble mais mon résultat est faussé, le programme n'execute pas la boucle while pourtant, quand je teste avec certaines valeurs la condition est bien vérifiée

  14. #13
    minushabens

    Re : Programmation sur R erreur de valeur manquante

    regarde aussi la fonction R all.equal()

Discussions similaires

  1. Erreur de programmation sous mplab v8.10 et C18
    Par rahimabdou dans le forum Électronique
    Réponses: 1
    Dernier message: 26/06/2015, 22h18
  2. Programmation Pascal, erreur
    Par Moresby dans le forum Programmation et langages, Algorithmique
    Réponses: 27
    Dernier message: 18/01/2014, 14h14
  3. Erreur programmation PIC18F2550
    Par punky591 dans le forum Électronique
    Réponses: 0
    Dernier message: 25/10/2008, 14h03
  4. Réponses: 12
    Dernier message: 18/04/2008, 07h08
  5. erreur 0X00 programmation PIC plus questions sur les PIC
    Par invite4a8ccabd dans le forum Électronique
    Réponses: 4
    Dernier message: 22/07/2007, 14h36