Amélioration des noms de variables dans un ensemble de données


11

Les bons noms de variables sont:

a) court / facile à taper,

b) facile à retenir,

c) compréhensible / communicatif.

Suis-je en train d'oublier quelque chose? La cohérence est quelque chose à rechercher. La façon dont je dirais que les conventions de dénomination cohérentes contribuent aux qualités ci-dessus. La cohérence contribue à (b) la facilité de rappel et (c) la compréhensibilité, bien que d'autres facteurs soient souvent plus importants. Il y a un compromis clair entre (a) la longueur du nom / la facilité de frappe (par exemple en minuscules) et (c) la compréhensibilité.

J'investis un peu de réflexion sur ces questions parce que des milliers de personnes utilisent les données et j'espère que beaucoup utiliseront mon code pour préparer les données et faciliter certains types d'analyse. Les données de l'étude longitudinale sur la santé des adolescents sont divisées en plusieurs ensembles de données. Ma première étape a été de prendre les 227 variables du jeu de données le plus couramment utilisé, de les recoder, de leur donner des noms plus significatifs. Les noms de variables d'origine sont des choses comme "aid", "s1", "s2", que j'ai renommé "aid2", "age" et "male.is". Il existe des milliers d'autres variables dans les autres ensembles de données qui peuvent être fusionnées en fonction des objectifs du chercheur.

Tant que je renomme des variables, je veux les rendre aussi utiles que possible. Voici quelques-unes des questions que j'ai examinées. Jusqu'à présent, je n'ai utilisé que des minuscules et évité d'utiliser des tirets ou des traits de soulignement, et je n'ai utilisé les points que dans un but très spécifique. Cela a la vertu de simplicité et de cohérence et ne pose aucun problème pour la plupart des variables. Mais à mesure que les choses deviennent plus complexes, je suis tenté de briser ma cohérence. Prenez, par exemple, ma variable "talkprobmsum", il serait plus facile de lire comme "talkProbMSum" ou mieux encore "talk.prob.m.sum", mais si je vais utiliser des majuscules ou des points pour séparer les mots, alors ne devrais-je pas le faire pour toutes les variables?

Certaines variables sont enregistrées à plusieurs reprises, par exemple les variables raciales, j'ai donc ajouté .is ou .ih pour indiquer si elles proviennent du questionnaire à l'école ou à domicile. Mais il y a sûrement des répétitions que je ne connais pas encore, serait-il préférable d'ajouter une référence à l'ensemble de données au nom de chaque variable?

J'ai besoin de centraliser le groupe et de normaliser un grand nombre de variables, comme je l'ai fait en ajoutant .zms signifiant z-score par homme et par école.

Toutes les pensées ou ressources générales ou spécifiques sont grandement appréciées. Voir ce référentiel pour une partie de mon code et des statistiques descriptives avec une liste de noms de variables. J'ai brièvement décrit la raison du partage de ce code ici , et il a été rendu public un peu ici , mais ces deux derniers liens ne sont pas vraiment pertinents pour la question des conventions de dénomination des variables. Ajouté: J'ai modifié cela légèrement, principalement en déplaçant simplement un paragraphe, pour essayer d'éviter une partie de la confusion évidente dans les commentaires. Merci pour vos pensées!

Ajouté 05/09/2016: Cela vaut la peine de noter Guide R Style Hadley Wickham et Guide R Style Google ... Hadley dit:

Les noms de variable et de fonction doivent être en minuscules. Utilisez un trait de soulignement (_) pour séparer les mots d'un nom.

Google dit:

N'utilisez pas de traits de soulignement (_) ou de tirets (-) dans les identificateurs. Les identificateurs doivent être nommés conformément aux conventions suivantes. La forme préférée pour les noms de variables est toutes les lettres minuscules et les mots séparés par des points (variable.name), mais variableName est également accepté; les noms de fonction ont des majuscules initiales et aucun point (FunctionName); les constantes sont nommées comme des fonctions mais avec un k initial.


+1 pour la mise en place d'un référentiel public à partager entre les chercheurs, bien que cette question appartient vraiment à Stack Overflow.
nico

6
Pourquoi cette question serait-elle meilleure sur SO, @nico? Il ne me semble pas qu'il s'agisse de programmation ou même de R, mais plutôt de pratiques appropriées pour documenter et utiliser les données.
whuber

4
@whuber: Je comprends votre point. Cependant, en lisant la question, je l'ai vue comme "comment dois-je appeler mes variables?", Ce qui pour moi ressemble plus à une question de programmation et non à des statistiques ... À la réflexion, il est également vrai que le public ici est plus proche de celle qui utilisera les données réelles que celle de SO.
nico

2
+1, je pense que c'est une excellente question et bravo pour le faire
gung - Réinstallez Monica

2
Je pense que cela devrait rester ouvert.
gung - Rétablir Monica

Réponses:


4

La meilleure réponse à cette question est de la contourner. Fondamentalement, peu importe le nom court des variables tant qu'il est bien documenté quelque part dans un livre de codes. Hélas, puisque R n'a pas de ressources natives pour cela, les gens ont tendance à ne pas s'embêter. (Le manque est, pour moi, le plus gros échec de la langue en tant qu'outil statistique).

Il existe différents packages R fournissant cette machine, par exemple Hmiscque vous utilisez, et memisc. Mais vraiment, la meilleure option est de faire le tout dans un package R. De cette façon, les données traitées peuvent être un objet avec une page d'aide correspondante qui décrit ce que tout est maintenant appelé et peut attribuer un crédit à son échéance. Le package peut également exposer les données brutes et vos fonctions de traitement pour que les gens voient ce que vous avez fait pour fabriquer le produit final.

En outre, une suggestion: n'incluez pas du tout les données dérivées comme les variables et leurs versions z-score dans l'objet de données final si vous pouvez l'aider, fournissez simplement les fonctions pour le faire à la place. Les données dérivées ne sont que des problèmes du point de vue de la gestion des données.


Vous dites que les noms de variables importent peu tant qu'ils sont bien documentés ... Je ne veux pas faire une montagne d'une taupe, mais je pense qu'ils importent dans une certaine mesure. Les noms de variables difficiles à mémoriser ou à taper ont un coût réel en temps de recherche. Surtout si les mêmes noms de variables sont utilisés par un millier de chercheurs. Merci pour vos autres conseils cependant :)
Michael Bishop

4

Voici une petite chose: je pense qu'il vaut mieux utiliser des soulignements que des points. La raison en est que la plupart des langages de programmation, contrairement à R, ne prennent pas en charge les périodes dans les identificateurs, mais presque tous prennent en charge les traits de soulignement. Et je suppose que vous voulez que votre jeu de données soit utile aux personnes qui n'utilisent pas R.


1

Tout d'abord, merci d'avoir fait cela - je suis sûr que beaucoup de gens l'apprécieront, même si peu de gens savent que vous l'avez fait.

L'interface utilisateur RStudio n'interprète (au moins avec les options par défaut?) Aucun séparateur dans le nom de variable. Par exemple, Eclipse traite les parties en majuscule comme des mots séparés, vous pouvez donc utiliser les flèches Ctrl + pour modifier rapidement le code de style Java comme ageStandardizedMaleSchool. Je ne peux pas trouver de meilleures raisons de préférer un séparateur à un autre, donc les soulignements ou les capuchons me semblent bien.

En général, je suggère d'allonger les noms de variables, plutôt que de s'en tenir à un schéma d'abréviation complexe. Il est facile de faire des fautes de frappe comme talk.prob.m.sumau lieu de talk.prob.sum.ms, et il est difficile de repérer et de tracer des erreurs dans l'analyse statistique. (Assez lié: un bon dicton que j'ai lu sur un blog est d'écrire vos noms de variables comme des mots scandinaves - SickHouse et ToothHealer au lieu de l' hôpital et du dentiste .)

Sur une note finale: la standardisation, le centrage, etc. sont généralement effectués après le nettoyage des données. S'il n'y a pas de nettoyage, envisagez peut-être de laisser cela à quiconque analysera les données. Ou, si vous faites vous-même le nettoyage, indiquez toutes les étapes que vous avez suivies - les analyses et interprétations ultérieures pourraient en dépendre beaucoup.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.