Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Les posteurs les plus actifs de la semaine
Aucun utilisateur

Le Deal du moment : -50%
-50% Baskets Nike Dunk Low
Voir le deal
64.99 €

Chi-deux - R Commander

2 participants

Aller en bas

Chi-deux - R Commander Empty Chi-deux - R Commander

Message par Sandpiper Jeu 10 Oct 2013 - 21:36

Bonjour,

J'ai un problème avec R Commander pour faire un test du chi-deux dont je connais déjà la réponse (je veux juste connaitre les résidus). Quand je fais le test avec le logiciel, j'obtiens un chi-deux de 0 alors que je devrais avoir une valeur autour de 955. Et quand il me met mon tableau de contingence, il n'y a que des 1 à la place des nij.
Je m'explique : j'étudie le lien entre les proies d'un animal en fonction de divers villages. J'ai donc fait sur excel une colonne proie, une colonne village et une colonne nombre qui correspond au nombre de proies par village. Je charge ces données dans R commander et je transforme la variable nombre avec "convertir des variables numériques en facteur". Puis je fait un tri croisé en sélectionnant Proie et village. J'obtiens que des 1 dans le tableau de contingence...

D'où vient le problème et que faire ?

Merci.

ps : on peut également avec ce logiciel créer manuellement le tableau de contingence mais il ne faut pas plus de 10 colonnes et 10 lignes, ce que je dépasse de peu malheureusement, sinon ce serais trop simple.

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Ven 11 Oct 2013 - 8:26

Bonjour,

je n'utilise pas cette interface. Par contre ce qui est sur c'est que le passage de numérique en facteur va poser des problèmes. Un facteur ce n'est ni plus ni moins qu'une variable catégorielle dont chaque élément est une catégorie. Quand tu transformes en facteur tu perds toute notion de nombre. La catégorie 1 ne veut pas dire que la valeur vaut 1.

pour faire des tableaux de contingence, la fonction xtabs est toute indiquée.

Cdlt
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Dim 13 Oct 2013 - 20:29

Bonjour,

merci pour la réponse. Malheureusement, sans transformer les variables, j'obtiens le même résultat aberrant.

Merci.

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Dim 13 Oct 2013 - 21:16

J'ai l'impression que le logiciel lit mal mes données :

a partir d'un tableau de contingence, il faut bien créer une colonne correspondant à la variable X (type de village), une pour la variable Y (type de proie) et une colonne avec le nombre de proies consommées par village et par type de proie (càd les nij du tableau de contingence).

Est-ce bien cela ?

merci !

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Mar 15 Oct 2013 - 7:37

sous quelle format sont tes données ? Est-ce que tu peux donner un exemple ?
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Mar 15 Oct 2013 - 9:30

Bonjour,

Voici le lien avec mon fichier de données (légèrement simplifié, j'ai enlevé quelques données).

Quand je fais "visualiser" sur R commander, j'obtiens le même tableau que sur Excel.

Merci pour ton aide.

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Mar 15 Oct 2013 - 9:31

http://www.casimages.com/f.php?f=131015113348271598.xls

Autrement, je peux peut-être obtenir mes résidus à partir de la console R, mais je ne connais pas du tout les codes.

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Mar 15 Oct 2013 - 9:42

Déjà le chi² n'est pas de 955.
Méthode :
1. ouvrir R
2. copier le tableau dans le tableau excel
3. impor du tableau dans R : tab <- read.table("clipboard", h=T)
4. passage en table de contingence : tab2 <- xtabs(Nombre ~ Proie + Village, data=tab)
Code:
    Village
Proie  B  G  O  P
  AE  3  4  2 13
  FS  9 12  5  4
  OI  6  6  8  1
  RF  2  6 15  6
  RT  8  9  3 11
  VK  4  7  3  8
5. chi²: chi2 <- chisq.test(tab2)
6. les résidus : chi2$residuals
Code:
    Village
Proie          B          G          O          P
  AE -0.72351197 -0.89841236 -1.37568372  2.79168420
  FS  1.12768497  1.19382576 -0.74545617 -1.49835285
  OI  0.79940934  0.01585439  1.41389974 -1.99936403
  RF -1.62947851 -0.77800952  3.18443971 -0.72104138
  RT  0.63245553  0.06741999 -1.56524758  0.81839321
  VK -0.25428873  0.30205243 -0.93329580  0.76777844
cdlt
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Mar 15 Oct 2013 - 12:37

Bonjour,

Je suis désolé mais je n'y arrive pas.... je fais bien un copié des données de excel, puis je tape la première formule, je fais ok et il ne se passe rien... et si je fait un copier-coller de votre formule, j'ai le message suivant : Message d'avis :
In read.table("clipboard", h = T) :
readTableHeader a trouvé une ligne finale incomplète dans 'clipboard'


Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Mar 15 Oct 2013 - 12:43

Il faut bien partir de la première cellule, glisser vers la dernière pour tout sélectionner et ensuite faire le copier.
Sinon les résultats du test sont ici :
Code:
chi2 <- structure(list(statistic = structure(42.2119479257542, .Names = "X-squared"),
    parameter = structure(15, .Names = "df"), p.value = 0.000208478400584625,
    method = "Pearson's Chi-squared test", data.name = "tab2",
    observed = structure(c(3, 9, 6, 2, 8, 4, 4, 12, 6, 6, 9,
    7, 2, 5, 8, 15, 3, 3, 13, 4, 1, 6, 11, 8), .Dim = c(6L, 4L
    ), .Dimnames = structure(list(Proie = c("AE", "FS", "OI",
    "RF", "RT", "VK"), Village = c("B", "G", "O", "P")), .Names = c("Proie",
    "Village")), class = c("xtabs", "table"), call = xtabs(formula = Nombre ~
        Proie + Village, data = tab)), expected = structure(c(4.54193548387097,
    6.19354838709677, 4.33548387096774, 5.98709677419355, 6.4,
    4.54193548387097, 6.24516129032258, 8.51612903225806, 5.96129032258064,
    8.23225806451613, 8.8, 6.24516129032258, 5.10967741935484,
    6.96774193548387, 4.87741935483871, 6.73548387096774, 7.2,
    5.10967741935484, 6.10322580645161, 8.32258064516129, 5.8258064516129,
    8.04516129032258, 8.6, 6.10322580645161), .Dim = c(6L, 4L
    ), .Dimnames = structure(list(Proie = c("AE", "FS", "OI",
    "RF", "RT", "VK"), Village = c("B", "G", "O", "P")), .Names = c("Proie",
    "Village"))), residuals = structure(c(-0.723511972796621,
    1.12768496801934, 0.799409344165535, -1.62947851242949, 0.632455532033676,
    -0.254288726840653, -0.898412355990812, 1.19382575837053,
    0.0158543855662755, -0.778009522349969, 0.067419986246324,
    0.302052430031394, -1.37568372171191, -0.745456168025213,
    1.41389974062231, 3.18443971284759, -1.56524758424985, -0.933295802904135,
    2.79168419558682, -1.49835285073855, -1.99936402563012, -0.721041375249283,
    0.818393207364568, 0.76777844106878), class = c("xtabs",
    "table"), call = xtabs(formula = Nombre ~ Proie + Village,
        data = tab), .Dim = c(6L, 4L), .Dimnames = structure(list(
        Proie = c("AE", "FS", "OI", "RF", "RT", "VK"), Village = c("B",
        "G", "O", "P")), .Names = c("Proie", "Village"))), stdres = structure(c(-0.876796977941641,
    1.40965205013118, 0.965152552599526, -2.02881528321388, 0.793776606365423,
    -0.308162954590367, -1.1460936452464, 1.57092751831944, 0.0201496369370379,
    -1.01969396445948, 0.0890733991384093, 0.385324587625945,
    -1.69492698962367, -0.947382424276266, 1.73549926108598,
    4.03093668142246, -1.99724074368497, -1.14987785395631, 3.54538297007632,
    -1.96282589467374, -2.5296600448907, -0.940800632416673,
    1.07640042444908, 0.97506323031098), class = c("xtabs", "table"
    ), call = xtabs(formula = Nombre ~ Proie + Village, data = tab), .Dim = c(6L,
    4L), .Dimnames = structure(list(Proie = c("AE", "FS", "OI",
    "RF", "RT", "VK"), Village = c("B", "G", "O", "P")), .Names = c("Proie",
    "Village")))), .Names = c("statistic", "parameter", "p.value",
"method", "data.name", "observed", "expected", "residuals", "stdres"
), class = "htest")
cdlt
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Mer 16 Oct 2013 - 18:41

Merci de m'avoir sauvé !

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Lun 21 Oct 2013 - 14:55

Bonsoir, je reviens vers vous car j'ai de nouveau un problème. Je veux maintenant comparer mes colonnes (càd les villages) 2 à 2. J'utilise Biostatgv, qui crée les commandes sur R et donne les résultats. J'ai fait un test de Friedman et un Tau de Kendall qui donnent des résultats différents : pour kendall, j'ai une p-value de 1.2E-6 alors que pour Friedman, p = 1 !! Ce n'est vraiment pas logique.


Voici les commandes utilisées :

Tau de Kendall :
m=matrix(c(0,0,76,40,0,0,47,50,0,0,0,0,61,25,0,0,0,0,0,0,0,0,5,2,0,0,1,2,0,0,10,9,0,0,22,34,0,0,1,2),20,2, byrow=TRUE)
cor.test(m[,1], m[,2], method="kendall")

Friedman :
m = matrix(c(0,0,76,40,0,0,47,50,0,0,0,0,61,25,0,0,0,0,0,0,0,0,5,2,0,0,1,2,0,0,10,9,0,0,22,34,0,0,1,2),nrow=20,ncol=2, byrow=TRUE, dimnames=list(1:20,paste("Groupe",1:2)))
friedman.test(m)

Où est le problème ?

Merci pour votre aide !

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Lun 21 Oct 2013 - 15:45

Sandpiper a écrit:Ce n'est vraiment pas logique.
Au contraire. Le tau de kendll te montre un fort lien entre tes deux variables. L'hypothèse nulle du test de firedman est qu'il n'y a pas de différences entre les groupes. Si les deux variables sont très proches (très fort tau kendall) alors tu t'attends à ce que les groupes soient aussi très proches et donc pas de différence avec le test de friedman. C'est exactement ce que tu observes.
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Lun 21 Oct 2013 - 16:47

Ah oui, sur ce coup là je suis d'accord, j'avais pas remarqué que c'était l'inverse. Par contre, pour la moitié des comparaisons, les 2 tests ne s'accordent pas, par exemple j'ai p>0.05 pour les deux tests.

Y aurait-il une explication statistique ? Quel test croire ?

Thanks.

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Mar 22 Oct 2013 - 7:00

Tout simplement parce que tu ne mesures pas la même chose avec les deux. Dans un cas c'est un lien, dans l'autre une comparaison de moyenne. Tu peux très bien ne pas avoir de lien entre les deux et pas de différence de moyenne.
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Mar 22 Oct 2013 - 10:36

D'accord. Juste une dernière question si je peux me permettre :
j'ai voulu vérifier avec un collègue quelques tau en faisant les calculs à la main et on a des résultats bien différents, par exemple 0.21 contre 0.08. Ces calculs sont longs et complexes mais on a fait tous les deux le calcul de manière indépendante et on arrive sr le même tau. Puis-je faire confiance quand même à R ?

Merci, j'espère que c'est ma dernière question :-).

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Mar 22 Oct 2013 - 11:10

j'ai pris un exemple de valeur et j'arrive bien au même tau que la fonction cor.
A combien tu arrives pour les données suivantes :
Code:
x <- c(31L, 23L, 48L, 50L, 33L, 12L, 11L, 43L, 46L, 28L)
y <- c(27L, 20L, 35L, 13L, 48L, 33L, 29L, 21L, 38L, 47L)
Peux-tu donner le code de ton calcul ?
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Mar 22 Oct 2013 - 18:45

A la main j'obtiens un tau de -0.022 contre tau= -0.0667 avec R (biostatgv). le code est : m=matrix(c(31,27,23,20,48,35,50,13,33,48,12,33,11,29,43,21,46,38,28,47),10,2, byrow=TRUE)
cor.test(m[,1], m[,2], method="kendall")

Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par droopy Lun 28 Oct 2013 - 9:42

il faut faire toute les comparaisons possibles :
Code:
rx <- rank(x)
ry <- rank(y)
rks <- cbind(rx, ry)

# toutes combinaisons 2 à 2 possibles
co <- combn(length(x),2)

# la fonction qui compare deux couples de rangs deux à deux (rxi, ryi) et (rxj, ryj):
fun <- function(i, j) {
  aux <- (all(rks[i,]>rks[j,]) | all(rks[i,]<rks[j,]))
  aux <- aux*1
  aux
}
# si rxi > rxj et ryi > ryj, ou si rxi < rxj et ryi < ryj alors c'est une paire concordante, sinon non

# cherche à savoir si pour chaque comparaison de 2 lignes 2 à 2, si elle concordante (1) ou non (0)
nc <- apply(co, 2, function(u) fun(u[1], u[2]))
head(nc)
[1] 1 1 0 1 0 0
co[,1:6]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    1    1    1
[2,]    2    3    4    5    6    7

# ce qui veut dire que tous les rangs de la ligne 1 sont > ou < aux rangs des lignes 2 et 3 mais pas à ceux de la ligne 4
# vérification
rks[1:4,]
     rx ry
[1,]  5  4
[2,]  3  2
[3,]  9  7
[4,] 10  1

# calcule la somme des paires concordantes :
nc <- sum(nc)
# calcule le nombre de paires non concordantes (nombre de comparaisons possibles - nbre de paires concordantes)
nd <- ncol(co)-nc
# le calcul du tau :
(nc-nd)/ncol(co)
[1] -0.06666667
Pour ce qui est des calculs de base tu peux avoir confiance en R, les personnes en charge du logiciel se seraient aperçu du problème depuis longtemps.
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Sandpiper Lun 4 Nov 2013 - 16:45

C'est bon merci j'ai toutes mes p-values !! Par contre, rassurez moi, il est bien obsolète de comparer 2 p-values entre elles ? Par exemple si p1 = 0.02 et p2=0.00001, la différence n'est pas plus significative pour la comparaison de p2 ?


Sandpiper

Nombre de messages : 46
Date d'inscription : 24/05/2013

Revenir en haut Aller en bas

Chi-deux - R Commander Empty Re: Chi-deux - R Commander

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum