Allo tout le monde
Partie 1 :
J’ai appris récemment une façon d’obtenir des p-values plus robustes. Cette méthode est beaucoup plus sévère, car elle ne suppose rien à la base (on n’a pas besoin de normalité, ni rien d’autres). Elle s’applique donc en tout temps. Je l’ai utilisé dans un contexte où ma superviseure voulait voir si les résultats qu’elle avait obtenu était correcte puisqu’elle avait beaucoup de comparaisons qui étaient significatives. La façon la plus simple est de renommer notre variable qui contient les p-values avec le nom “raw_p”. Après, on applique tout simplement la procédure suivante :
PROC MULTTEST pdata = “nom du fichier” FDR;
RUN;
Le pdata n’est pas une erreur, ça dit à la procédure que le fichier que tu lui donnes contient tes p-values avec comme nom de variable “raw_p”. Par curiosité, allez voir comment ça se calcule, c’est tout simple, mais intéressant.
Partie 2 :
J’ai aussi découvert une nouvelle procédure SAS qui à la base a été conçue pour des modèles non-linéaires, mais qui peut quand même être utilisée pour des modèles linéaires. En fait, cette méthode permet de tout faire parce que lorsque la fonction n’est pas disponible en option, il est possible d’écrire la log-vraisemblance. Ma superviseure l’a même déjà utilisé en mettant une combinaison de deux log-vraisemblances. Voici un exemple utilisant la distribution gamma. J’ai dû utiliser la log-vraisemblance puisque cette distribution n’est pas disponible dans les options.
Prenons une variable X prenant comme valeur : 0 pour le traitement 1 et 1 pour le traitement 2.
Prenons une variable Z qui compte un certain nombre de jours. (Je ne suis pas très inspirée pour les variables.)
On veut voir l’effet des traitements 1 et 2.
Supposons que notre effet aléatoire est que tous les sujets étaient dans une même éprouvette.
PROC
NLMIXED DATA = donnees;
PARMS s2u= ?? nu = ?? to ?? by ? beta0 = ?? beta1 = ??;
eta = beta0 + x*beta1 + u;
mu = 1/eta;
ll = nu*(-y/mu – log(mu));
MODEL Z ~ general(ll);
RANDOM u ~ normal (0, s2u) subject = eprouvette;
ESTIMATE ‘Traitement 2‘ (beta0 + beta1)**(-1);
ESTIMATE ‘Traitement 1‘ (beta0)**(-1);RUN;
PARMS permet d’insérer des valeurs initiales qui peuvent être trouvées avec un PROC MIXED dont la moyenne est transformée de la même manière. Par exemple, comme mu est égale à l’inverse de la forme linéaire, on met l’inverse dans le PROC MIXED et on prend les valeurs estimées des paramètres (Intercept = beta0, l’autre estimation à beta1). Dans le PROC MIXED, on met aussi un effet aléatoire et s2u du PROC NLMIXED est égale à l’estimé de la variance de l’effet aléatoire dans le PROC MIXED. Finalement, le nu est égale à mu/var résiduelle. Encore une fois, la variance résiduelle est trouvée à l’aide du PROC MIXED. Le mu peut avoir deux valeurs différentes, il y a donc deux valeurs de nu possibles. En effet, si x = 0, mu1 = 1/beta0 et si x = 1, mu2 = 1/(beta0 + beta1).
En théorie, avant l’énoncé MODEL, il est possible d’écrire des commandes comme dans un DATA. Par contre, j’ai eu quelques problèmes avec cette possibilité de PROC NLMIXED donc si ça ne marche pas, ce n’est pas de ma faute
.
Si vous avez quelque chose que vous comprenez pas, dites-le moi. Je sais que la procédure est assez complexe, mais un coup qu’on la comprend, elle permet de faire bien des choses. Seul avertissement, faites attention pour ne pas mettre n’importe quoi dans les valeurs initiales parce que ça prend pas grand chose pour qu’il se décide à ne pas vouloir converger.
Marie-Eve