IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Réaliser une boucle pour faire des tests statistiques


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Réaliser une boucle pour faire des tests statistiques
    Bonjour tout le monde

    Je voudrais écrire une boucle pour faire des tests statistiques.

    Dans un premier temps j'aimerai pouvoir faire une boucle sur un test de normalité comme le shapiro.test sur toute les colonnes d'une matrice importé j'ai donc mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i in 1:ncol(A)){shapiro.test(A[,i])}
    et j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error: is.numeric(x) n'est pas TRUE
    du coup je sais pas trop comment m'y prendre.

    Et dans un deuxième temps j'aimerais pouvoir faire les tests statistiques (student, wilcoxon...) 2 à 2 en faisant une boucle et qui me mettrait les pvalues entre les variables testée dans une autre matrice et je n'y arrive pas pour le moment.

    Je vous remercie d'avance!

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Le message d'erreur que vous obtenez est assez explicite : il semblerait que certaines des colonnes de votre matrice A ne soient pas de type numérique et la fonction "shapiro.test" prend en entrée un vecteur de type numérique.
    A vérifier/modifier en amont ou bien à "forcer" dans votre fonction à l'aide la la fonction : as.numeric().

    Pour votre second problème (les tests deux à deux et p-value dans une autre matrice), je vous invite à venir poser le code que vous avez testé (et les éventuels messages d'erreur), ainsi que le détail des points qui vous posent soucis / que vous ne parvenez pas à faire en R.

    Bonne continuation


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    alors ce que j'ai essayé de faire pour la boucle (j'ai essayé ça sur un test de shapiro) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A<-read.table("global.txt",header=T,row.names=1,sep="\t") 
    for (i in 1:ncol(A)){shapiro.test(c[,i],A[,i])}
    Voici le message d'erreur : Error in shapiro.test(A[, i]) : toutes les valeurs de 'x' sont identiques
    Mais je pense que c'est parce qu'il y a beaucoup de 0 dans le tableau mais ce sont les données que j'ai récoltées qui sont comme ca ^^

    Bon après je ne sais pas trop comment faire en sorte que les pvalue se mettent dans une autre matrice.


    [EDIT] J'ai oublié de donner ça : https://ent.unr-runn.fr/filex/get?k=ktpdufP8nXSxu5qeh5O (= le fichier que je viens d'utiliser).

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Concernant le contenu de vos données et leur potentielle utilisation dans des tests statistiques, c'est à vous de faire le travail "statistique" en amont afin de savoir si ces tests sont applicables sur de telles données.
    Pour rappel, si vous souhaitez obtenir l'aide d'une fonction dans R (par exemple celle du test de shapiro que vous utilisez) : ?shapiro.test.

    Sinon, concernant votre code, je ne comprends pas à quoi correspond l'élément : c[,i], dans votre appel à la fonction "shapiro.test" ? Si vous regardez l'aide de cette fonction dans R, vous verrez qu'elle prend en argument un seul élément (vecteur).

    Pour ce qui est de stocker les résultats d'une boucle dans un autre vecteur par exemple, il suffit de créer ce vecteur avant la boucle puis de le remplir à chaque itération.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    A<-read.table("global.txt",header=T,row.names=1,sep="\t") 
     
    RES<-rep(NA,ncol(A))
     
    for (i in 1:ncol(A))
    {
        RES[i]<-shapiro.test(A[,i])
    }
    > Cet exemple est là pour vous montrer le principe mais il n'est pas forcément à utiliser tel quel. Penser à bien vérifier ce que retourne la fonction "shapiro.test" !

    Voir ensuite du côté des fonctions de type "apply", qui permettent de se passer des boucles dans certains cas

    Enfin, je ne serais que trop vous conseiller de jeter un coup d'oeil aux nombreux tutoriels R (disponibles notamment ici : http://r.developpez.com/), qui contiennent une mine d'informations utiles, notamment concernant des questions "de base" comme le fait de stocker des résultats dans un vecteur.

    Bonne continuation !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/06/2011, 03h01
  2. Remplir une table pour faire des tests
    Par softopus dans le forum Débuter
    Réponses: 3
    Dernier message: 15/02/2010, 21h26
  3. Réponses: 3
    Dernier message: 21/01/2009, 19h14
  4. réaliser une boucle pour afficher des sources
    Par cloridriks dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2008, 16h21
  5. [SQL] Récupération éventuelle d'une variable pour faire des tests
    Par mougeole dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/05/2006, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo