kzen.dev
  • Questions
  • Tags
  • Utilisateurs
Notifications
Récompenses
Inscription
Une fois inscrit, vous serez informé des réponses et des commentaires à vos questions.
Connectez-vous
Si vous avez déjà un compte, connectez-vous pour vérifier les nouvelles notifications.
Il y aura des récompenses pour les questions, réponses et commentaires ajoutés.
Détails
Source
Editer
 Pantera
Pantera
Question

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 ?

67 2012-08-02T23:07:38+00:00 3
 Jaap
Jaap
Question modifiée 16 octobre 2017 в 9:47
Programmation
r
r-faq
Cette question a 1 réponse en anglais, pour les lire connectez-vous à votre compte.
David  J. Harris
David J. Harris
3 août 2012 в 1:24
2012-08-03T01:24:30+00:00
Détails
Source
Editer
#16858024

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.

David  J. Harris
David J. Harris
Réponse modifiée 24 juin 2018 в 1:37
100
0
Martin O'Leary
Martin O'Leary
2 août 2012 в 11:38
2012-08-02T23:38:02+00:00
Détails
Source
Editer
#16858023

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

> print(year)
[1] 1956 1957 1957 1958 1958 1959
> dummy <- as.numeric(year == 1957)
> print(dummy)
[1] 0 1 1 0 0 0
> dummy2 <- as.numeric(year >= 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).

53
0
Ricardo Gonz&#225;lez-Gil
Ricardo González-Gil
3 août 2012 в 9:44
2012-08-03T09:44:27+00:00
Détails
Source
Editer
#16858025

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 <- factor ( with ( data, ifelse ( ( year == 1957 ), 1 , 0 ) ) )

(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 ?

data$factor_year_2 <- factor ( with ( data, ifelse ( ( year < 1957 ), 0 , 1 ) ) )

Je peux ensuite introduire ce facteur comme variable muette dans mes modèles. Par exemple, pour voir s'il existe une tendance à long terme dans une variable y :

summary ( lm ( y ~ t,  data = data ) )

J'espère que cela vous aidera !

Ricardo Gonz&#225;lez-Gil
Ricardo González-Gil
Réponse modifiée 7 mai 2014 в 4:48
9
0
Ajouter une question
Catégories
Toutes
Technologie
Culture / Loisirs
Vie / Arts
Science
Professionnel
Entreprises
Utilisateurs
Tous
Nouveau
Populaire
1
Ilya Smirnov
Enregistré il y a 6 jours
2
Денис Васьков
Enregistré il y a 1 semaine
3
Dima Patrushev
Enregistré il y a 1 semaine
4
sirojidddin otaboyev
Enregistré il y a 2 semaines
5
Елена Гайдамамакинат
Enregistré il y a 2 semaines
DE
ES
FR
ID
JA
KO
PT
RU
TR
ZH
© kzen.dev 2023
Source
stackoverflow.com
sous licence cc by-sa 3.0 avec l'attribution