2014-05-08 3 views
1

proc glm facilite l'ajout d'effets fixes sans création de variables fictives pour toutes les valeurs possibles de la variable de classe.La régression avec des erreurs standard robustes (blanches) et la variable CLASS pour les effets fixes

proc reg est capable de calculer des erreurs standard robustes (blanches), mais cela nécessite de créer des variables fictives individuelles.

Existe-t-il un moyen de combiner ces fonctionnalités? J'aimerais pouvoir ajouter un certain nombre de variables de classe et recevoir des erreurs de type Blanc dans ma sortie. Par exemple:

Avec proc glm, je peux faire cette régression. Cela donnera des résultats corrects quel que soit le nombre de niveaux contenus dans les variables de classe, mais il ne calculera pas les erreurs standard robustes.

proc glm data=ds1; 
    class class1 class2 class3; 
    weight n; 
    model y = c class1 class2 class3/solution; 
run; 

avec proc reg, je peux faire:

proc reg data=ds2; 
    weight n; 
    model y = x/white; 
run; 

qui contient des erreurs standard blanc, mais ne tient pas compte des effets fixes. Pour ce faire, je pourrais avoir besoin de 50 variables fictives ou plus et une déclaration de modèle comme model y = x class1_d1 class1_d2 ... class3_dn /white;. Se transformerait en un nombre fou ou des variables fictives si je commençais à ajouter des termes d'interaction. De toute évidence, je pourrais écrire une macro pour créer les variables fictives, mais cela semble être une fonction tellement fondamentale que je ne peux m'empêcher de penser qu'il me manque quelque chose d'évident (STATA et R ont tous les deux des façons de le faire facilement). Pourquoi ne puis-je pas utiliser l'instruction class dans proc reg ou obtenir des erreurs standard robustes sur proc glm?

Répondre

1

Je pense que j'ai trouvé une partie de la réponse, bien que je serais intéressé par d'autres solutions ou des modifications à celui-ci.

proc glmmod peut être utilisé pour créer l'ensemble de données pour proc reg:

proc glmmod noprint outdesign=ds2 data=ds1; 
    class class1 class2 class3; 
    weight n; 
    model y = c class1 class2 class3; 
run; 

proc reg data=ds2; 
    weight n; 
    model y = col2-col50/white; 
run; 

proc glmmod utilise la syntaxe GLM et délivre un ensemble de données de régression avec toutes les variables muettes que proc reg des besoins.

Pas aussi propre qu'une simple solution PROC (et vous devez garder une trace des étiquettes pour voir à quoi ColXX fait référence), mais cela semble fonctionner parfaitement.

+0

Je pense que c'est la bonne réponse. Je ne vois pas d'autre moyen de le faire. – Joe

0

Je pense que vous pouvez: (1) supprimer des observations avec des variables manquantes (2) rabaisser les variables indépendantes en utilisant le standard proc (3) régressent les variables dépendantes des variables indépendantes avilis

http://pages.stern.nyu.edu/~adesouza/sasfinphd/index/node60.html http://pages.stern.nyu.edu/~adesouza/sasfinphd/index/node61.html

Les coefficients de la procédure ci-dessus sont exactement les mêmes que ceux de proc glm (théorème de Frisch-Waugh). Mais, vous n'avez pas besoin de créer des mannequins (ce qui est votre problème principal). Pour obtenir des erreurs standard robustes, vous pouvez simplement utiliser proc reg sur l'étape (3) avec des erreurs standard blanches.

Espérons que ça aide.

Questions connexes