Les posteurs les plus actifs de la semaine
Eric Wajnberg
 
zezima
 
Nik
 
margotte185
 
c@ssoulet
 
Coco
 
Ayana
 


Comment simuler des données appariées sans inflation du SD

Voir le sujet précédent Voir le sujet suivant Aller en bas

Comment simuler des données appariées sans inflation du SD

Message par zezima le Ven 15 Sep 2017 - 15:26

Bonjour,

Je suis en train d'essayer de simuler des données appariées réalistes.

Le modèle que je veux faire est NULL, pour 4 groupes.
Moyenne_1=0
Moyenne_2=0
Moyenne_3=0
Moyenne_4=0
SD pour chaque groupe=1
Les groupes sont appariés.

Code:
Null1=rnorm(120000,0,1)
Null2=Null1+rnorm(120000,0,1)
Null3=Null2+rnorm(120000,0,1)
Null4=Null3+rnorm(120000,0,1)
boxplot(Null1,Null2,Null3,Null4)


J'ai réalisé ma simulation en prenant chaque donnée au temps t et en additionnant une loi normale simulée de même moyenne et même variance.

Mais au final, chaque groupe est plus variant que les précédents.

Savez-vous quel SD il faut choisir pour chaque nouveau groupe pour éviter une inflation du SD (qui doit surement être dû à la variance intra-sujet que je récupère à chaque fois ?

Merci d'avance
avatar
zezima

Nombre de messages : 747
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par Ayana le Ven 15 Sep 2017 - 17:20

Bonjour,

Var(X+Y)=Var(X)+Var(Y)+2Cov(X,Y)

Par exemple ici Null2=Null1+N(0,1) donc sd(Null2)=sqrt(2) car tes variables sont independantes.

Ce que tu peux faire c'est utiliser une loi multivariee normale (fonction rmvnorm du package ‘mvtnorm`) ou tu as juste a specifier ton vecteur de moyennes et ta matrice de variance/covariance.

Ayana
avatar
Ayana

Nombre de messages : 458
Localisation : Londres
Date d'inscription : 18/08/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par Eric Wajnberg le Dim 17 Sep 2017 - 9:29

Je ne suis pas sûr de bien comprendre la démarche de simulation adoptée. Le but est de simuler des données appariées, or la procédure proposée simule plutôt des données corrélées, ce qui n'est pas forcément la même chose.

Par ailleurs, l'inflation de la variance est due au fait que chaque série vient de la précédente.

Pourquoi ne pas simplement faire:

Code:
Null1=rnorm(120000,0,1)
Null2=Null1+rnorm(120000,0,1)
Null3=Null1+rnorm(120000,0,1)
Null4=Null1+rnorm(120000,0,1)
boxplot(Null1,Null2,Null3,Null4)
Dans ce cas, il n'y a plus d'inflation de la variance, et les données restent bien corrélées deux-à-deux (encore une fois si c'est ce qui est souhaité).

Si vraiment le but est de simuler des données corrélées plutôt qu'appariées, alors la procédure proposée par Ayana (qui passe par la décomposition de Cholesky de la matrice de variance-covariance) est évidement préférable.

HTH, Eric.
avatar
Eric Wajnberg

Nombre de messages : 694
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par zezima le Lun 18 Sep 2017 - 11:04

Bonjour et merci à tous les deux pour vos réponses.

Ayana
Merci pour l'astuce, je pense essayer ce package, on peut donc bien simuler des données appariées ?
Et d'après la formule que tu m'as donné, ma méthode pour créer Null2 est mauvaise car dans tous les cas j'aurais un SD plus grand.

On est en droit de se demander du coup, est-ce qu'on n'est pas censé en théorie avoir une variabilité plus importante entre chaque temps ?

Eric
En faite je veux que valeur d'un individu à un temps ait sa valeur dépendant de la valeur précédente (par exemple un patient ayant une valeur grande au temps 0 aura une valeur autour de cette grande valeur au temps 1).

Selon toi, il est normal dans une série temporelle d'avoir une inflation de la variance à force d'avancer dans le temps (pour des données appariées) ?

Merci pour ce code mais ce que j'essaie de faire est d'avoir chacune des valeur appariées sur les 4 temps. Or ici ils ne sont appariés que sur 2 temps.
avatar
zezima

Nombre de messages : 747
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par zezima le Lun 18 Sep 2017 - 13:50

Rebonjour,

Ayana, j'ai testé la fonction que tu m'as proposé, cependant je n'ai aucune idée de quelle covariance prendre :

Code:
library(mvtnorm)

sigma <- matrix(c(13^2,100,100,13^2), ncol=2)
x <- rmvnorm(n=50000, mean=c(72,72), sigma=sigma)
colMeans(x)
var(x)

sd(x[,1]);sd(x[,2])

cor.test(x[,1],x[,2])

boxplot(x[,1],x[,2])

J'ai pris 100, mes données sont un peu corrélées mais je n'ai aucune idée de quelle valeur choisir, sais-tu comment on peut procéder ?

Merci d'avance
avatar
zezima

Nombre de messages : 747
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par Eric Wajnberg le Lun 18 Sep 2017 - 23:11

zezima a écrit:En faite je veux que valeur d'un individu à un temps ait sa valeur dépendant de la valeur précédente (par exemple un patient ayant une valeur grande au temps 0 aura une valeur autour de cette grande valeur au temps 1).
Le fait que les données ait une structure longitudinale ne change rien. Le problème reste le même, et travailler sur la décomposition de cholesky de la matrice de variance-covariance est la bonne, je pense.
zezima a écrit:Selon toi, il est normal dans une série temporelle d'avoir une inflation de la variance à force d'avancer dans le temps (pour des données appariées) ?
Non. Ca dépend de la méthode de simulation adoptée.
zezima a écrit:Merci pour ce code mais ce que j'essaie de faire est d'avoir chacune des valeur appariées sur les 4 temps. Or ici ils ne sont appariés que sur 2 temps.
Dans mon code, les données sont corrélées sur les 4 temps:
Code:
Null1=rnorm(120000,0,1)
Null2=Null1+rnorm(120000,0,1)
Null3=Null1+rnorm(120000,0,1)
Null4=Null1+rnorm(120000,0,1)
cor(Null1,Null4)
[1] 0.7102614

Enfin, je vois toujours une confusion entre "appariées" et "corrélées". On peut avoir des données appariées qui ne sont pas corrélées, et réciproquement.

HTH, Eric.
avatar
Eric Wajnberg

Nombre de messages : 694
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par zezima le Mar 19 Sep 2017 - 7:35

Merci,

D'accord, je vais même faire en sorte que la corrélation soit proche de 0 car le hasard voudrait ça sur un échantillonnage aléatoire.
Je vais également explorer la décomposition de Cholesky.

Pour le coup la caractéristique qui m'intéresse vraiment c'est l'appariement de mes données mais dans le code que tu as écrit je ne vois pas en quoi elles sont appariées.
L'échantillon 1 est apparié avec tous les autres échantillons mais on ne peut pas en dire autant des échantillons 2, 3 et 4.

Eric Wajnberg a écrit:Non. Ca dépend de la méthode de simulation adoptée.
Oui et d'ailleurs c'est dommage car je viens de voir qu'un groupe de travail de l'ENSAI a présenté récemment à la sfds le sujet "Biais liés aux méthodes d'appariement des données".
avatar
zezima

Nombre de messages : 747
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par Eric Wajnberg le Mar 19 Sep 2017 - 8:27

La décomposition de Cholesky est la méthode utilisée dans la solution proposée par Ayana. Dans le code que je donne, toutes les quatre variables sont corrélées entres elles. On pourra le vérifier, au moins graphiquement, avec :
Code:
plot(data.frame(Null1,Null2,Null3,Null4))
Ceci vaut pour des données corrélées, pas nécessairement appariées (..).

HTH, Eric.
avatar
Eric Wajnberg

Nombre de messages : 694
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Comment simuler des données appariées sans inflation du SD

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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