Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS STAT
SAS STAT Forum d'entraide sur les fonctionnalités liées à la statistique sur SAS : statistique descriptive, test, régression, classification
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2011, 17h15   #1
Invité régulier
 
Astrid Genet
Inscription : novembre 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Astrid Genet

Informations forums :
Inscription : novembre 2010
Messages : 43
Points : 7
Points : 7
Par défaut Modéle mixte avec contraintes sur les paramètres

Bonjour,

Je voudrais ajuster avec Proc Mixed 3 modèles en simultané en mettant des contraintes sur les paramètres du dernier (SUR). Voici les 3 modèles:
Y1 = a1 + b1 X1 + c1 X2
Y2 = a2 + b2 X1 + d2 X3
Y3 = a3 + b3 X1 + c3 X2 + d3 X3

Les contraintes sont:
a1 + a2 - a3 = 0
b1 + b2 - b3 = 0
c1 - c3 = 0
d2 - d3 = 0

J'ai créé des dummies pour les contraintes:
dum_a1 dum_a2 dum_a3 dum_b1 dum_b2 dum_b3 dum_c1 dum_c2 dum_c3 dum_d2 dum_d3. les dummies en "3" sont égales à -1 les autres à 1.

Les valeurs sont triées par classY et les variables sont mises à 0 lorsque ce n'est pas leur classe. Voici le modèle, sachant qu'il y a des mesures répétées dans le temps (âge) et que la matrice de cov. suite une structure autorégresive (AR(1)). J'ai donc utilisé un produit direct UN@AR(1) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
proc mixed DATA= Toto ic;
  class classY Individu Age;
  model Y = Intercept1 Intercept1 * X1 Intercept1 * X2
                Intercept2 Intercept2 * X1 Intercept2 * X3
                Intercept3 Intercept3 * X1 Intercept3 * X2 Intercept3 * X3
                Intercept1 * dum_a1 Intercept2 *dum_a2 Intercept3 * dum_a3                X1 * dum_b1 X2 * dum_b2 X3 * dum_b3 X1 * dum_c1
                X2 * dum_c2 X3 * dum_c3 X2 * dum_d2 X3 * dum_d3
              / solution noint;
  repeated classY Age / subject= Individu type= UN@AR(1)R;
  random Intercept1 Intercept2 Intecept3 / subject=individu solution G;
 
run;
Mais à mon avis il y a un problème car je n'ai déclaré nulle part la forme des contraintes (les sommes qui s'annulent).

Est-ce que quelqu'un est familier de la question ou bien aurait une idée?

Merci!

Astrid
AstridG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 13h04   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
quand je fais des modèles sous contraintes, j'utilise les proc LP ou NLP. les contraintes s'y écrivent simplement à la suite du modèle avec lincon

Pour les GLM ou Mixed il me semble que cela ne s'écrit pas mais se déduit : si CLASS contient 'toto' avec trois modalités alors la troisième est mise à zéro.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 13h46   #3
Invité régulier
 
Astrid Genet
Inscription : novembre 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Astrid Genet

Informations forums :
Inscription : novembre 2010
Messages : 43
Points : 7
Points : 7
Bonjour Datametric,

Le problème de LP ou NLP c'est qu'on ne peut pas y inclure les effets aléatoires.
Je devrai donc inclure mes contraintes au niveau "class"?

Mais comment formuler ça?

Je ne trouve aucune information sur la question, ni dans la littérature, ni en ligne.

Astrid
AstridG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 14h19   #4
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Citation:
Pour les GLM ou Mixed il me semble que cela ne s'écrit pas mais se déduit : si CLASS contient 'toto' avec trois modalités alors la troisième est mise à zéro.
si tu inclus un intercepte... ou si ce n'est pas lié à un intercepte c'est révélateur d'un problème de paramétrage.

@Astrid: La gestion des contraintes est assez limitée sous mixed. De souvenir, cette gestion est plus souple sous NLMIXED. Par ailleurs, est ce que ton modèle converge? son écriture me parait suspecte... Y-a-t-il une relation entre les trois Y?
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 14h43   #5
Invité régulier
 
Astrid Genet
Inscription : novembre 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Astrid Genet

Informations forums :
Inscription : novembre 2010
Messages : 43
Points : 7
Points : 7
Bonjour Manoutz,

Oui, le modèle converge très bien sans les contraintes (je l'ai simplifié pour l'exemple). Les trois Y sont liés, Y3 est la somme pondérée de Y1 et Y2. D'où les contraintes. Je pourrai effectivement passer par NLMIXED. Le problème c'est qu'on ne peut pas faire d'estimation REML avec NLMIXED.
Cependant j'ai l'impression qu'il existe une possibilité sous mixed en passant par type= lin() qui permet de mettre des contraintes linéaires sur la structure de la matrice de covariance. Je creuse...

Astrid
AstridG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 21h34   #6
Invité régulier
 
Astrid Genet
Inscription : novembre 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Astrid Genet

Informations forums :
Inscription : novembre 2010
Messages : 43
Points : 7
Points : 7
On peut effectivement imposer des contraintes en définissant la structure de la matrice de covariance en utilisant le type= Lin(param) et la matrice ldata= matrice (qu'on définit soi-même) du statement repeated de Proc Mixed, avec param le nombre de paramètres de covariance du modèle:

Code :
1
2
 
repeated Var1_class  / subject= Individu type= LIN(param) ldata=ldata R Rcorr;
Si on a des mesures répétées dans le jeu de données par ailleurs, il faut faire appel à un produit direct pour la structure de la matrice de covariance globale, par exemple si les mesures répétées sont de type auto-régressif:

Code :
1
2
 
repeated Var1_class Var2_class  / subject= Individu type= LIN(param)@AR(1) ldata=ldata R Rcorr;
Mais c'est là que ça coince car SAS n'autorise les produits directs que lorsque la structure de la matrice de covariance liée à la première variable est de type "unstructured" (UN). Dans ce cas là ça marche très bien.

Dans mon cas où je veux définir moi-même la structure de la matrice de covariance, l'instruction LIN(param)@AR(1) n'existe pas.

Manoutz a raison, la gestion des contriantes est limitées sous proc mixed.

Astrid
AstridG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 10h46   #7
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Je n'ai sans doute pas intégré toutes les problématiques de ta situation, mais je me demandais si une écriture utilisant les catégories de ta réponse pouvait se défendre:

Code :
1
2
3
4
5
6
proc mixed DATA= Toto ic;
  class classY Individu Age;
  model Y = (Yclass=1) X1*(Yclass=1) x2*(Yclass=1) (Yclass=2) X1*(Yclass=2) x3*(Yclass=2)
              / solution noint;
  repeated classY Age / subject= Individu type= ???/*ma proposition se fonde pour les effets fixes*/ ldata=ldata R Rcorr;
run;
Citation:
Le problème c'est qu'on ne peut pas faire d'estimation REML avec NLMIXED.
En quoi est ce un problème dans ton cas? Quel est ton but?
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h57.


 
 
 
 
Partenaires

Hébergement Web