Générer une variable fictive

J'ai des difficultés à générer les variables fictives suivantes dans R :

J'analyse des données de séries chronologiques annuelles (période 1948-2009). J'ai deux questions :

  1. Comment puis-je générer une variable muette pour l'observation n° 10, c'est-à-dire pour l'année 1957 (valeur = 1 en 1957 et zéro sinon) ?

  2. Comment générer une variable muette qui est nulle avant 1957 et prend la valeur 1 à partir de 1957 et jusqu'en 2009 ?

Une autre option qui peut mieux fonctionner si vous avez beaucoup de variables est factor et model.matrix.

> year.f = factor(year)
> dummies = model.matrix(~year.f)

Cela comprendra une colonne d'interception (tous les uns) et une colonne pour chacune des années de votre ensemble de données, sauf une, qui sera la valeur par défaut ou d'interception.

Vous pouvez changer la façon dont la valeur par défaut est choisie en modifiant contrasts.arg dans model.matrix.

De plus, si vous voulez omettre l'intercept, vous pouvez simplement laisser tomber la première colonne ou ajouter +0 à la fin de la formule.

J'espère que cela vous sera utile.

Commentaires (10)

La manière la plus simple de produire ces variables fictives est la suivante :

> print(year)
[1] 1956 1957 1957 1958 1958 1959
> dummy  print(dummy)
[1] 0 1 1 0 0 0
> dummy2 = 1957)
> print(dummy2)
[1] 0 1 1 1 1 1

Plus généralement, vous pouvez utiliser ifelse pour choisir entre deux valeurs en fonction d'une condition. Ainsi, si au lieu d'une variable fictive 0-1, vous vouliez, pour une raison quelconque, utiliser 4 et 7, vous pourriez utiliser ifelse(année == 1957, 4, 7).

Commentaires (0)

Ce que je fais normalement pour travailler avec ce genre de variables fictives est :

(1) comment puis-je générer une variable muette pour l'observation n°10, c'est-à-dire pour l'année 1957 (valeur = 1 en 1957 et zéro sinon).


data$factor_year_1 
Commentaires (0)