Poprawianie nazw zmiennych w zbiorze danych

11

Dobre nazwy zmiennych to:

a) krótki / łatwy do pisania,

b) łatwe do zapamiętania,

c) zrozumiałe / komunikatywne.

Czy coś zapomniałem? Spójność jest na co zwrócić uwagę. Powiedziałbym, że spójne konwencje nazewnictwa przyczyniają się do powyższych cech. Spójność przyczynia się do (b) łatwości przypominania i (c) zrozumiałości, chociaż inne czynniki są często ważniejsze. Istnieje wyraźny kompromis między (a) długością nazwy / łatwością pisania (np. Wszystkie małe litery) a (c) zrozumiałością.

Poświęcam sporo uwagi na te kwestie, ponieważ tysiące ludzi korzystają z danych i mam nadzieję, że wielu użyje mojego kodu do przygotowania danych i ułatwienia niektórych rodzajów analiz. Dane z Longitudinal Study of Adolescent Health są podzielone na wiele zestawów danych. Moim pierwszym krokiem było pobranie 227 zmiennych w najczęściej używanym zbiorze danych, ich przekodowanie, nadanie im bardziej znaczących nazw. Oryginalne nazwy zmiennych to rzeczy takie jak „pomoc”, „s1”, „s2”, które nazwałem „pomoc2”, „wiek” i „male.is”. Istnieją tysiące innych zmiennych w innych zestawach danych, które można łączyć w zależności od celów badacza.

Tak długo, jak zmieniam nazwy zmiennych, chcę, aby były jak najbardziej użyteczne. Oto niektóre z rozważanych przeze mnie problemów. Do tej pory używałem tylko małych liter i unikałem używania myślników lub podkreślników, a kropki używałem tylko w jednym, bardzo określonym celu. Ma to zaletę prostoty i spójności i nie powoduje problemów dla większości zmiennych. Ale gdy sprawy stają się coraz bardziej złożone, kusi mnie, by przerwać moją konsekwencję. Weźmy na przykład moją zmienną „talkprobmsum”, łatwiej byłoby ją odczytać jako „talkProbMSum” lub jeszcze lepiej „talk.prob.m.sum”, ale jeśli zamierzam używać wielkich liter lub kropek do oddzielania słów, to nie powinienem tego robić dla wszystkich zmiennych?

Niektóre zmienne są rejestrowane więcej niż jeden raz, np. Zmienne rasy, więc dołączyłem .is lub .ih, aby wskazać, czy pochodzą one z kwestionariusza szkolnego czy domowego. Ale z pewnością są pewne powtórzenia, których jeszcze nie znam, czy lepiej byłoby dołączyć odwołanie do zestawu danych do nazwy każdej zmiennej?

Muszę wyśrodkować grupę i znormalizować wiele zmiennych, tak jak to zrobiłem, dodając .zms, co oznacza wynik Z dla mężczyzn i szkoły.

Wszelkie ogólne lub szczegółowe przemyślenia lub zasoby są bardzo mile widziane. Zobacz to repozytorium dla mojego kodu i statystyk opisowych z listą nazw zmiennych. Krótko opisałem powód udostępnienia tego kodu tutaj i został on tutaj nieco opublikowany , ale te dwa ostatnie linki nie są tak naprawdę istotne w kwestii konwencji nazewnictwa zmiennych. Dodano: Zredagowałem to lekko, głównie przesuwając akapit, aby uniknąć niektórych nieporozumień widocznych w komentarzach. Dzięki za przemyślenia!

Dodano 05.09.2016: Warto zauważyć, R Style Guide Hadley Wickhama i R Style Guide Google ... Hadley mówi:

Nazwy zmiennych i funkcji powinny być pisane małymi literami. Użyj znaku podkreślenia (_), aby oddzielić słowa w nazwie.

Google mówi:

Nie używaj podkreślników (_) ani łączników (-) w identyfikatorach. Identyfikatory należy nazwać zgodnie z następującymi konwencjami. Preferowaną formą nazw zmiennych są wszystkie małe litery i słowa oddzielone kropkami (nazwa zmiennej.nazwa), ale nazwa zmiennej jest również akceptowana; nazwy funkcji mają początkowe wielkie litery i nie zawierają kropek (FunctionName); stałe są nazywane jak funkcje, ale z początkowym k.

Michael Bishop
źródło
+1 za utworzenie publicznego repozytorium do udostępniania wśród naukowców, chociaż to pytanie naprawdę należy do Stack Overflow.
nico
6
Dlaczego to pytanie byłoby lepsze na SO, @nico? Moim zdaniem nie chodzi tu o programowanie, a nawet o R, ale raczej o odpowiednie praktyki dokumentowania i wykorzystywania danych.
whuber
4
@whuber: Rozumiem twój punkt widzenia. Jednak czytając pytanie, zobaczyłem to jako „jak mam wywoływać moje zmienne?”, Co dla mnie brzmi bardziej jak kwestia programowania, a nie statystyki ... Po zastanowieniu prawdą jest również to, że widzowie są bliżej to, co wykorzysta rzeczywiste dane niż dane SO.
nico
2
+1, myślę, że to świetne pytanie i pochwały za zrobienie tego
Gung - Przywróć Monikę
2
Myślę, że to powinno pozostać otwarte.
gung - Przywróć Monikę

Odpowiedzi:

4

Najlepszą odpowiedzią na to pytanie jest uchylenie się. Zasadniczo nie ma znaczenia, jakie są krótkie nazwy zmiennych, o ile są one dobrze udokumentowane gdzieś w słowniku. Niestety, ponieważ R nie ma na to zasobów rodzimych, ludzie zwykle nie zawracają sobie tym głowy. (Brak jest dla mnie największym niepowodzeniem w języku jako narzędziu statystycznym).

Istnieją różne pakiety R zapewniające tę maszynę, np. HmiscKtórych używasz, i memisc. Ale naprawdę najlepszą opcją jest przekształcenie całości w pakiet R. W ten sposób przetwarzane dane mogą być obiektem z odpowiednią stroną pomocy, która opisuje to, co teraz się nazywa, i może przypisać kredyt tam, gdzie jest to należne. Pakiet może również udostępniać surowe dane i funkcje przetwarzania, aby ludzie mogli zobaczyć, co zrobiłeś, aby uzyskać produkt końcowy.

Sugestia: w ogóle nie uwzględniaj danych pochodnych, takich jak zmienne i ich wersje z oceną Z, w ostatecznym obiekcie danych, jeśli tylko możesz pomóc, po prostu podaj odpowiednie funkcje, aby to zrobić. Dane pochodne to po prostu kłopoty z punktu widzenia zarządzania danymi.

sprzężonyprior
źródło
Mówicie, że nazwy zmiennych nie mają większego znaczenia, o ile są dobrze udokumentowane ... Nie chcę robić góry ze wzgórza mola, ale myślę, że mają one do pewnego stopnia znaczenie. Zmienne nazwy, które są trudne do zapamiętania lub trudne do wpisania, mają realny koszt w czasie badań. Zwłaszcza jeśli te same nazwy zmiennych są używane przez tysiąc badaczy. Dziękuję za inne wskazówki :)
Michael Bishop
4

Oto drobiazg: myślę, że lepiej używać podkreślników niż kropek. Powodem jest to, że większość języków programowania, w przeciwieństwie do R, nie obsługuje okresów w identyfikatorach, ale prawie wszystkie obsługują podkreślenia. Zakładam, że chcesz, aby Twój zestaw danych był użyteczny dla osób, które nie używają R.

Kodiolog
źródło
1

Przede wszystkim dziękuję za zrobienie tego - jestem pewien, że wiele osób to doceni, chociaż niewielu będzie wiedziało, że to zrobiłeś.

Interfejs użytkownika RStudio nie interpretuje (przynajmniej przy domyślnych opcjach?) Żadnych separatorów w nazwie zmiennej. Na przykład Eclipse traktuje wielkie litery jako osobne słowa, więc możesz użyć Ctrl + strzałek, aby szybko edytować kod w stylu Java ageStandardizedMaleSchool. Nie mogę wymyślić lepszych powodów, aby preferować jeden separator od drugiego, więc podkreślenia lub czapki wydają mi się w porządku.

Zasadniczo sugeruję wydłużenie nazw zmiennych zamiast trzymania się skomplikowanego schematu skrótów. Łatwo jest tworzyć literówki takie jak talk.prob.m.sumzamiast talk.prob.sum.msi trudno jest wykryć i prześledzić błędy w analizie statystycznej. (Nieco powiązane: miłym powiedzeniem, które przeczytałem na jakimś blogu, jest pisanie twoich zmiennych zmiennych, takich jak skandynawskie słowa - SickHouse i ToothHealer zamiast szpitala i dentysty .)

Na koniec: standaryzacja, centrowanie itp. Są zwykle wykonywane po czyszczeniu danych. Jeśli nie ma czyszczenia, może warto rozważyć pozostawienie tego każdemu, kto przeanalizuje dane. Lub, jeśli robisz to sam, wskaż wszystkie kroki, które podjąłeś - późniejsze analizy i interpretacje mogą od tego zależeć.

juod
źródło