Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Comment simuler des données appariées sans inflation du SD
3 participants
Page 1 sur 1
Comment simuler des données appariées sans inflation du SD
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.
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
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
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Comment simuler des données appariées sans inflation du SD
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
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
Ayana- Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009
Re: Comment simuler des données appariées sans inflation du SD
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:
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.
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)
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.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: Comment simuler des données appariées sans inflation du SD
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.
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.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Comment simuler des données appariées sans inflation du SD
Rebonjour,
Ayana, j'ai testé la fonction que tu m'as proposé, cependant je n'ai aucune idée de quelle covariance prendre :
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
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
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Comment simuler des données appariées sans inflation du SD
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: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).
Non. Ca dépend de la méthode de simulation adoptée.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) ?
Dans mon code, les données sont corrélées sur les 4 temps: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.
- 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.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: Comment simuler des données appariées sans inflation du SD
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.
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.
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".Eric Wajnberg a écrit:Non. Ca dépend de la méthode de simulation adoptée.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Comment simuler des données appariées sans inflation du SD
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 :
HTH, Eric.
- Code:
plot(data.frame(Null1,Null2,Null3,Null4))
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Sujets similaires
» Comment exploiter des données...Sans accès aux sources ?
» Simuler des données "skewed" ou "kurtotiques"
» Comment importer sans NA ?
» NSN et données appariées
» Données indépendentes ou appariées ?
» Simuler des données "skewed" ou "kurtotiques"
» Comment importer sans NA ?
» NSN et données appariées
» Données indépendentes ou appariées ?
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum