Чи надійна мова R для галузі економіки?


64

Я аспірант економіки, який нещодавно перейшов на R з інших дуже відомих статистичних пакетів (в основному я використовував SPSS). Моя маленька проблема на даний момент полягає в тому, що я єдиний R-користувач у своєму класі. Мої однокласники використовують Штату та Гаусса, а один із моїх професорів навіть сказав, що R ідеально підходить для техніки, але не для економіки. Він сказав, що багато пакунків будують люди, які багато знають про програмування, але не багато про економіку і тому не є надійними. Він також згадав той факт, що оскільки при створенні пакету R фактично не задіяні гроші, немає жодного стимулу робити це правильно (на відміну від Stata, наприклад), і він використовував R протягом певного часу і отримав деякі "смішні" результати в його спроби оцінити деякі речі. Більше того, він поскаржився на генератор випадкових чисел у R, який, за його словами, "

Я використовую R трохи більше місяця, і я повинен сказати, що я закохався в нього. Всі ці речі, які я чую від свого професора, просто відлякують мене.

Отже, моє запитання: "Чи надійний R для галузі економіки?".


30
"багато пакетів створені людьми, які багато знають про програмування, але не дуже про економіку". Автори пакунків практично завжди є вченими чи вченими першими та програмістами (дуже) віддаленою (останньою) секундою. Власне, я думаю, що було б завдання знайти пакет, автором якого є "програміст".
Брендон Бертелсен

9
Можу чи я запросити вас і наші інші статистичні дані економістів до economics.stackexchange.com теж - ми вітаємо ваші питання і відповіді по економіці там
EnergyNumbers

18
Здається, у коментарях вашого професора також є трохи професійного шовінізму. Як бути економістом гарантією надійності? Я скоріше довіряв розробникам програмного забезпечення (це насправді професія, а не те, що ніхто може зробити добре, не маючи особливого досвіду чи підготовки) та статистикам, щоб виробляти надійне статистичне програмне забезпечення.
Гала

23
"Ідеально підходить для техніки, але не для економії" через надійність? Він, швидше, обвалиться хмарочос, ніж економіка? Чоловік - ідіот. Покинь цю школу і знайди школу, не укомплектовану ідіотами.
Спайдермен

10
Комерційне програмне забезпечення може бути хорошим чи поганим. Програмне забезпечення з відкритим кодом може бути добрим чи поганим. Важливо, чи є корисне програмне забезпечення, яке ви використовуєте. Не вирішуйте це на основі забобонів та догм. Використовуйте реальні докази.
Девід Геффернан

Відповіді:


83

Дозвольте поділитися контрастною точкою зору. Я економіст. Мене навчали з економетрики за допомогою SAS. Я працюю у фінансових службах, і лише сьогодні ввечері я оновив моделі на основі R, які ми використаємо завтра, щоб поставити під загрозу мільйони доларів.

Ваш професор просто помиляється. Але помилка, яку він робить, ДУЖЕ поширена і її варто обговорити. Здається, що займається ваш професор, це змішання ідеї програмного забезпечення R (реалізація GNU мови S) проти пакетів (або іншого коду), реалізованих у Р. Я можу писати скажені реалізації лінійної регресії за допомогою SAS IML. Власне кажучи, я зробив саме це. Це означає, що SAS - це лайно? Звичайно, ні. SAS є лайно, тому що їх цінові кошти непрозорі, смішно дорогі, а їхні будинкові консультанти над обіцянками, під доставку і стягують премію за задоволення. Але я відволікаюсь ...

Відкритість R - це меч з двома краями: Відкритість дозволяє будь-якому Тому, Діку чи Гаррі написати дурне виконання будь-якого алгоритму, який вони придумують, курячи горщик у підвалі будівлі економіки. Така ж відкритість дозволяє практикуючим економістам відкрито ділитися кодом та вдосконалювати код один одного. Правила ліцензування з R означають, що я можу записати паралельний код для запуску R паралельно на хмарі Amazon і не потрібно турбуватися про плату за ліцензію на кластер 30 вузлів. Це ВЕЛИЧИНА виграш у симуляційному аналізі, який є великою частиною того, що я роблю.

Коментар вашого професора, що "багато пакунків будують люди, які багато знають про програмування, але не багато про економіку", без сумніву, правильні. Але на CRAN є 3716 пакетів. Ви можете бути чортом впевнені, що багато з них не були написані економістами. Точно так само, як ви можете бути впевнені, багато з 105,089 модулів в CPAN написали не економісти.

Вибирайте програмне забезпечення ретельно. Переконайтеся, що ви розумієте та протестували інструменти, якими користуєтесь. Також переконайтеся, що ви розумієте справжню економіку, за якою ви вибрали будь-яку реалізацію. Замикатися на закритому програмному рішенні коштує дорожче, ніж лише плата за ліцензування.


Спасибі за вашу відповідь. То ви пропонуєте мені спробувати навчитися чомусь іншому? Що б ти запропонував мені навчитися?
ЗбереженоByJESUS

5
Ні, я використовую R майже повністю. Чи є якісь пакети, якими ваш професор чи інші економісти багато користуються? Я не використовую жодні специфічні пакети для econ. Я використовую plyr, matrix та багато інших пакунків, але жоден не розроблений унікально для економістів.
JD Long

Так ви посилалися на "пакунки", і ви сказали, що я не повинен замикатися на закритому програмному рішенні?
ЗбереженоByJESUS

3
"Відкритість дозволяє будь-якому Тому, Діку чи Гаррі написати дерьмову реалізацію будь-якого алгоритму" - це не має нічого спільного з відкритістю, це суто результат наявності публічного API, який має багато продуктів із закритим кодом (тобто будь-які фірмові програмне забезпечення, яке має плагін-інтерфейс). Хоча хороша відповідь.
naught101

3
"Зараз немає, і ніколи не було, і ніколи не буде жодної мови програмування, в якій би було важко написати поганий код".
ardave

33

Він не більш-менш надійний, ніж інше програмне забезпечення. Базова та рекомендована R, ймовірно, менш схильна до помилок, ніж можливі пакети, але це залежить від авторів.

Але найбільшою перевагою R є те, що ви можете перевірити, чи це так! Це вільне програмне забезпечення, не як Stata або SPSS або подібне. Отже, навіть якщо це було ненадійно, це було б виявлено з часом. Це може не стосуватися власного програмного забезпечення. І ви навіть можете допомогти зробити його надійнішим.

У решті коментарів вашого професора він явно помиляється і людина поширює FUD. Але дозвольте мені сказати, що ненадійне програмне забезпечення повинно бути найменшим занепокоєнням економіста, судячи з використаних моделей та припущень та прогнозів, зроблених у цій галузі.

Дотримуйтесь R, якщо вам це подобається, і, можливо, ви і професор навіть можете сприяти розробці хорошого програмного забезпечення для економіки. Ось можливо цікавий вихідний пункт http://cran.r-project.org/web/views/Econometrics.html та http://cran.r-project.org/web/views/TimeSeries.html


1
Дуже дякую! Я дуже хочу дотримуватися Р. Я думаю, що це чудове програмне забезпечення. Крім того, я завжди був великим шанувальником відкритого коду.
ЗбереженоByJESUS

17
+1 за твердження нещасної істини сучасності. "ненадійне програмне забезпечення повинно бути найменшим занепокоєнням економіста, судячи з використаних моделей та припущень та прогнозів, зроблених у цій галузі".
цифрові карти

2
Я ціную кривий тон тут, але можлива якась незгода. Помилки у власному програмному забезпеченні можуть бути показані різними способами, наприклад, якщо є чітка незгода з результатами R, які здаються абсолютно правильними. Тут є певна FUD щодо власницького програмного забезпечення, яке так само недоречно, як і дурний FUD щодо R. Checkability in R - це перевірка в принципі практично для всіх користувачів R; це особливість у тому, що він існує, але сказати, що ви можете перевірити код на себе, теж трохи риторично. Зауважте, що для Stata значна частина коду видно користувачам; це просто виконуваний файл, якого немає.
Нік Кокс

23

Ваш професор висловлює кілька сміливих претензій. Я підозрюю, що проблемою була незнайомість мови R, а не фактичні результати. Я працюю в компанії, яка займається великим економетричним моделюванням, і ми робимо все в Р. Я також перетворила свого колегу-економіста на використання Р.

Що стосується сфери економіки в моєму особистому досвіді, питання надійності може піти навпаки. Наприклад, EVIEWS версія 5 мала деякі дивні помилки під час роботи з даними на панелі. І він повідомляє звичайну статистику Дурбін-Уотсона для об'єднаного OLS, що в налаштуваннях даних панелі є явно неправильним. Пакет R для роботи з даними на панелі також має свої проблеми, але аргумент грошей тут сильно виступає на користь R.

Нещодавно я був у курсі нестаціонарних методів панельних часових рядів. Лектор використав програмне забезпечення RATS. Демонструючи якийсь код, він порадив натиснути на якусь піктограму, яка очищає робочу область кілька разів, про всяк випадок. Поговоріть про надійність.


20

Я економіст, і займаюся науковими дослідженнями вже 4 роки, переважно займаюся прикладною економетрикою. Там є багато пакетів економетрики, і для них є місце. На мою думку, в економіці Stata використовується майже для всього, окрім часових рядів, для часових рядів використовуються щури, огляди та Ox, для програмування більш низького рівня - Matlab та Gauss.

Перевага R полягає в тому, що він здатний робити майже все, що роблять інші програми, і це безкоштовно і відкрито. Це вимагає трохи більше програмування і має менше консервованих процедур, але це все робить в кінці. Я використовую Stata більшу частину часу, але якби мені довелося вибрати одне програмне забезпечення, щоб зробити все, я вибрав би R.

R досить надійний у більшості проблем економетрики, але я можу навести приклади деяких процедур, написаних для R, які не є надійними. У мене виникли проблеми з процедурами оцінювання системи 3SLS та системи попиту. Процедури чисельної оптимізації не такі надійні, як у Stata чи Gauss. З іншого боку, R набагато краще при таких проблемах, як квантильна регресія. Тим не менш, маючи гарні знання R, ви можете дізнатися, у чому полягає проблема в написаних користувачем процедурах, виправити її та продовжити роботу. Тому я не думаю, що відсутність надійності в деяких конкретних процедурах є вагомою причиною взагалі не використовувати R.

Моя порада буде продовжувати використовувати R, але мати досвід роботи з іншою програмою, яка широко використовується у вашій галузі, наприклад, Stata for microeconometrics або Rats for time series.


13

Коли я викладав статистику випускників, я говорив своїм студентам: "Мені все одно, яким пакунком ви користуєтесь, і ви можете використовувати що-небудь для домашнього завдання, оскільки я очікую, що ви надасте змістовні пояснення, і я зніму бали, якщо я побачити tr23y5mімена змінних у ваших публікаціях. Я можу підтримати ваше навчання дуже добре в Stata, і досить добре, в Р. З SAS ви самостійно, як ви стверджуєте, що пройшли курс навчання. За допомогою SPSS або Minitab, Бог благословить вас ". Я думаю, що розумні роботодавці подумають те саме. Важливим є ваша продуктивність щодо результатів проекту. Якщо ви зможете досягти поставленої мети за 40 годин роботи, добре; якщо ви можете досягти цього в C ++ за 40 годин роботи, чудово; якщо ви знаєте, як це зробити за R за 40 годин, але ваш керівник хоче, щоб ви це робили в SAS, і вам доведеться витратити 60 годин, щоб просто вивчити деякі основи і куди йдуть крапки з комою, це може бути розумним лише в контексті великої картини решти коду, який знаходиться в SAS ... і тоді менеджер не дуже розумний, найнявши програміста R.

З цієї точки зору загальної вартості "безкоштовний" R - це надзвичайно розкритий міф. Будь-який серйозний проект вимагає спеціального коду, якщо тільки для введення даних та форматування результатів, і це не нульова вартість професійного часу. Якщо для цього введення та форматування даних потрібно 10 годин коду SAS і 20 годин коду R, R є більш дорогим програмним забезпеченням на межі , як би сказав економіст, тобто з точки зору додаткових витрат на виробництво заданої функції . Якщо для великого проекту потрібно 200 годин часу програміста R та 100 годин часу програміста Stata для забезпечення однакової функціональності, Stata в цілому дешевшає, навіть облік ліцензії ~ $ 1К, яку вам потрібно придбати. Було б цікаво побачити такі прямі порівняння; Я брав участь у переписуванні величезного безладу 2 Мб коду SPSS, який, як кажуть, накопичився протягом приблизно 10 чоловік-років на ~ 150 К код Stata, який пробігав так само швидко, може бути швидше; це було близько 1 людинорічного проекту. Я не знаю, чи є цей коефіцієнт ефективності 10: 1 типовим для порівнянь SPSS: Stata, але я не здивуюсь, якби це було. Для мене робота з R - це завжди великі витрати через витрати на пошук: я маю визначити, який із п’яти пакетів з подібними іменами виконує те, що мені потрібно зробити, і оцінити, чи достатньо це надійно для мене, щоб використовувати його в моя робота. Часто це означає, що мені дешевше писати власний код Stata за менший час, ніж я витрачав би на те, щоб змусити R працювати в заданому завданні. Слід розуміти, що це моя особиста ідіосинкразія; Більшість людей на цьому веб-сайті краще використовувати R, ніж я.

Смішно, що ваш професор вважає за краще статтю чи ГАУСУ над R, оскільки "R не писали економісти". Ні Стата, ні ГАУС; вони написані комп'ютерними науковцями за допомогою інструментів комп'ютерних вчених. Якщо ваш професор отримує ідеї щодо програмування з CodeAcademy.com, це краще, ніж нічого, але розробка програмного забезпечення професійного рівня настільки ж відрізняється від набору тексту в текстове поле CodeAcademy.com, оскільки водіння вантажного автомобіля відрізняється від велосипедного. (Статистику розпочав робочий економетрист, який перетворив комп'ютерного вченого, але він не займається цим питанням економетрії праці вже близько 25 років.)

Оновлення : Як прокоментував AndyW нижче, ви можете написати жахливий код будь-якою мовою. Потім стає питання вартості, на якій мові легше налагодити. Для мене це виглядає як поєднання того, наскільки точним та інформативним є вихід, а також наскільки легким та прозорим є сам синтаксис, і я, звичайно, не можу відповісти на це. Наприклад, Python застосовує відступ коду, що є хорошою ідеєю. Stata та R-код можна скласти через дужки, і це не буде працювати з SAS. Використання підпрограм - це меч з двома ребрами: використання *apply()спеціальної програми functionв R є, очевидно, дуже ефективною, але важче налагоджувати. Подібним чином, Stata locals може замаскувати майже все, і дефолт до порожнього рядка, хоча й корисний, також може призвести до важких помилок.


1
Це прекрасна відповідь, але надмірні узагальнення ІМО не дуже корисні (ви можете писати поганий чи хороший код практично будь-якою мовою. Stata не є магічним при застосуванні хороших стандартів кодування). Мені важко бачити, наскільки 2mb коду SPSS є ефективним SPSS-кодом для початку (з новішими версіями із підкресленням синтаксису, було б не радити навіть відкривати такий файл у редакторі). Здається, є хороший шанс, що час добре провів переписування будь-якою мовою.
Енді Ш

1
Я взагалі не пишу SPSS-код, і моє розуміння того, що код, з яким я працював, також не був написаний як код, а навпаки, зберігається з інтерфейсу точки та клацання, а потім може бути трохи прибраний. Я б міг уявити, що SPSS покладе всі параметри за замовчуванням і подібне з перетворенням інтерфейсу в код, так що це був не надзвичайно ефективний код.
Стаск

12

Я був би дуже обережний до тих, хто стверджує факт, але ніколи не підкріплює його чимось істотним.

Ви можете легко перевернути його аргументи.

Наприклад, люди, які отримують зарплату для написання коду, можуть мати менший стимул виправити це правильно, оскільки очікується, що їх код буде правильним, тоді як типовий мешканець квартири хоче взяти на себе зобов’язання, яке вразить керівників проекту. Можливо, він не міг піклуватися про те, скільки додаткового часу він проводить, роблячи це безкоштовно, якщо це означає якісну роботу.

Якщо генератор випадкових чисел "безладний" (що є невиразним терміном; легко замінити реальний факт, щоб створити резервну аргументацію), то він повинен мати можливість довести це або показати вам когось, хто може.

Якщо він отримає невідповідні результати від пакету, він повинен мати можливість вказати на кроки, які він вжив для досягнення цього результату. Якщо це дійсно помилка і у вас хороші навички програмування, ви можете навіть спробувати виправити це для нього!

Я розумію, що моя відповідь не відповідає безпосередньо на ваше запитання (вибачте). Просто з того, як він висловлює свої пункти, ви можете бачити, що за цим м’ясом немає. Якщо є, сміливо відредагуйте це у своєму питанні, щоб люди тут обговорили його далі!


5

У ReplicationWiki (над яким я працюю) ви бачите, що R був одним із програмних пакетів, які використовуються найчастіше для 2000 емпіричних досліджень, опублікованих у деяких добре створених журналах уже у 2000-2013 роках. Складається враження, що його більше використовували в останні роки. Статистичні дані використовувались набагато частіше (> 900 разів), далі йдуть MATLAB (280), SAS (60), GAUSS (60), Excel (50), R (30), FORTRAN (30), Mathematica (19), EViews (18), z-Tree (16), dynare (15), RATS (12), C (8), C ++ (6), python (5, новітні дослідження), SPSS (5) та деякі інші. Часто використовується більше, ніж один пакет.


Це цікаве підтвердження використання програмного забезпечення. Але це не стосується безпосередньо іншого питання, крім того, щоб дати чіткі вказівки на те, що R широко застосовується (висновок про те, що йому також довіряють, є германським).
Нік Кокс

2

Я використовую R півтора десятиліття, а також використовую SAS, SPSS, Calc, WEKA та пару інших інструментів. Я ніколи не насолоджувався будь-яким інструментом настільки, наскільки це було за допомогою R. В основному R призначений для тих, хто думає самостійно і щось намагається самостійно вивчити. Що стосується статистики, то все стосується методів. Користувачі можуть не знати, як методи були визначені та змодельовані в комерційному програмному забезпеченні, і вони можуть бути правильними чи неправильними. R - це для тих, хто хотів би визначити методи та використовувати ті методи, які відповідають їх потребам. Вся справа в свободі. Ця свобода не існує комерційного програмного забезпечення, незважаючи на витрачання грошей та їх купівлю. Знання є надбанням громади (суспільства), ніхто не може претендувати на авторство на те саме. Дослідження - це все, щоб знайти рішення проблем. Що стосується R, то не потрібно турбуватися про методи, які користувачі можуть вільно визначати та переглядати. Наприклад, якщо існує якась конкретна модель, проблема чи помилково визначені методи, які можна виправити шляхом виправлення або розробки нового коду. Роблячи це, дослідник не тільки розвиває знання, але й розвивається.

Перевага R полягає в тому, що не потрібно бути комп'ютерним програмістом. Статистичні методи стосуються написання функцій лише з керуючих висловлювань та циклів (для початку, речі вищого рівня надходять пізніше). R має дуже легке середовище програмування для новачків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.