Jakie zalety i wady ma R w stosunku do Stata, tj. Jaka jest zdolność R do szybkiego zestawienia obrazu rozwoju firmy, kraju, miasta lub innych danych makro w porównaniu ze zdolnością Strata do zrobienia tego samego?

Najlepsza odpowiedź

Przeszedłem ze stata na R. Oto moje spostrzeżenia:

Zalety:

  • R jest open source, będziesz mieć dostęp do naprawdę fajnych algorytmów lub oprogramowania, które ludzie napisali dla niszowych problemów.
  • R ma lepsze wizualizacje. Kiedy już opanujesz ggplot2, możesz zrobić całkiem niesamowite rzeczy z prawie każdym typem danych.
  • Odkryłem, że R jest łatwiejszy do pisania własnych pakietów i funkcji.
  • R jest bliżej społeczności zajmującej się statystyką / uczeniem maszynowym, więc „znajdziesz więcej wsparcia / pakietów niż stata.
  • Uwielbiam RStudio Gui, szczególnie podczas pracy na serwerze.
  • R zapewnia lepszą obsługę Latex.
  • R ma bardzo aktywną społeczność i listy pomocy – byli zadziwiająco szybcy w odpowiedzi na wszystkie moje pytania.
  • R współpracuje z Big Data! Pakiet RHadoop pozwala na pisanie własnych skryptów MapReduce przy użyciu funkcji R. Jeśli kiedykolwiek masz do czynienia z dużymi zbiorami danych i możesz używać tylko Stata, masz przerąbane.
  • Zwykle jest dużo więcej „hacków” w R dla skomplikowanych problemów, takich jak analiza sieci, niestandardowe bootstrapy itp. Gdy tylko odejdziesz od implementacji waniliowych, często znajdowałem funkcje skrótów w procedurach w R, podczas gdy w Stata często trzeba kodować wyjście.

Wady:

  • R to oprogramowanie typu open source, możesz trochę poczekać, aby uzyskać dostęp do nowych algorytmów, jeśli nie ma aktywnego rozwoju.
  • Stata jest znacznie bliższa społeczności ekonometrycznej i ma o wiele więcej algorytmów, pakietów i implementacji niż R. Jeśli jesteś ekonomistą, będziesz sfrustrowany brakiem kompleksowości pakietów ekonometrycznych.
  • Stata ma świetny GUI, który pozwala interaktywnie wybrać procedurę, którą chcesz uruchomić i wypełnić większość szczegółów za Ciebie. Jest to świetne, gdy używasz funkcji, której nigdy wcześniej nie używasz. R naprawdę tego nie ma – czuję, że kiedy używam RI jestem w Google przez połowę czasu.
  • Stata jest szybsze niż R [1].
  • Pobieranie modułów Stata jest znacznie bardziej usprawniony proces W przypadku modułów R w CRAN zwykle nie ma problemu (chociaż mam kłopoty, kiedy używam maszyny Centos), ale jest kilka niezbędnych pakietów, których nie ma w CRAN.
  • Standardowa wizualizacja i kreślenie w Stacie jest znacznie lepsza niż R.
  • Stata ma lepszą standardową pomoc – czuję, że mogę przeczytać pomoc dotyczącą dowolnej funkcji i dowiedzieć się dokładnie, co mam trzeba zrobić, podczas gdy nie czuję tego w przypadku kilku pakietów języka R, które są słabo udokumentowane.
  • R ma składnię „WTF” i strukturę nazewnictwa pakietów. Większość projektów typu open source tak. Brakuje mi prostoty funkcji stata (reg, lm itp.).

[1] http://ekonometrics.blogspot.com/2011/04/speeding-tickets-for-r-and-stata.html

Odpowiedź

Ogólnie rzecz biorąc, kiedy znajdę przysłówek ” oczywiście „w zdaniu znajduję po nim jakieś nieuzasadnione stwierdzenie. Tutaj nie zgadzam się z twoim twierdzeniem, że R ma „dziwaczną składnię”. Każdy wykształcony programista wolałby kodować w Haskell lub jakimś Lispie, ale faktem jest, że te języki nigdy nie dotrą do dużej liczby odbiorców. R jest wewnątrz Lispem (na przykład możesz faktycznie kodować w języku R, ale nie w Pythonie), ale jest wystarczająco blisko języka naukowego na zewnątrz. W rzeczywistości, jak zauważyłeś, jako język do analizy danych , R jest naprawdę najbardziej naturalnym i eleganckim językiem. Jeśli chcesz tego dowieść, zapoznaj się z działaniami dotyczącymi Pythona i Julii: implementacja ramek danych (pandy i data.frame w Jlia), formuł (patsy), plyr (pandy). A mimo to wszystkie te cechy wciąż wydają się być przeszczepione do innych języków. To, co ludzie postrzegają jako „dziwaczne” lub „dziwaczne”, jest albo wynikiem ustępstwa na rzecz interaktywnego użycia (np. Upuszczenia wymiaru), albo funkcjonalnego dziedzictwa języka.

Zgadzam się, że R ma wiele obszary wymagające poprawy, ale głównie nie w składni języka. Jasne, konwencje nazewnictwa są niespójne; szybkość i zarządzanie pamięcią to znane problemy; i tak dalej. Dlaczego? Kilka powodów:

  1. dyrektywa główna R (według jej twórcy, Johna Chambersa) polega na tworzeniu oprogramowania godnego zaufania. R przywiązuje dużą wagę do dokładności i niezawodności. Jego podstawowe funkcje statystyczne są najwyższej klasy; nawet jego podstawowy system graficzny został starannie przemyślany, od binowania histogramów (nie jest to trywialny problem!) do umieszczania tekstu. Szybkość nigdy nie była wielkim problemem i słusznie. Gdyby problemem była szybkość i wydajność pamięci, wszyscy byśmy kodowali w FORTRAN, który jest również łatwy i wysokopoziomowy. Kod źródłowy bazy R jest krótki (400 000 LOC; dla porównania, sam Numpy ma ten sam rozmiar) i bardzo czytelny. Kod, który można zrozumieć i którym można zaufać.
  2. Splus i R powstały w latach 80. i 90., na długo przed erą „dużych zbiorów danych” i pojawieniem się uczenia maszynowego. Ale R poprawiło się . Zarządzanie pamięcią jest znacznie lepsze, prawdopodobnie lepsze niż w MATLAB-ie. Ma trochę do zrobienia, ale pewne rzeczy można poprawić (np. Wewnętrzna reprezentacja danych).
  3. Główny zespół programistów ma minimalne obroty i młodzi programiści sprzed 15 lat są teraz po pięćdziesiątce. Ponadto są o wiele mniej zaangażowani w społeczność i stanowią obrazową / mityczną postać, taką jak Brian Ripley: profesor z Oksfordu odpowiedzialny za ponad 70\% zatwierdzeń, a nie najbardziej przyjazna osoba na świecie i na listach mailingowych R.
  4. R błaga o szybki kompilator JIT przeznaczony dla LLVM, ale takie rzeczy nie zdarzają się z dnia na dzień. Potrzebujesz zespołu wybitnych i wykształconych programistów z wiedzą na temat projektowania kompilatorów i interpretatorów, silną etyką pracy (wypchnięcie produktu za kilka lat) i pokorą, aby ponownie zaimplementować istniejący język zamiast tworzyć własny projekt próżności. Zobacz także nr 3.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *