Ответ 1
R поставляется с несколькими руководствами, доступными из меню "Справка" в меню "Ваниль R" в правом верхнем углу при запуске R и также в нескольких местах он-лайн.
Глава 11 " Введение в R" содержит, например, несколько страниц по формулам.
Я не знаю, что он представляет собой "всеобъемлющий" ресурс, но он охватывает много * того, что вам нужно знать о том, как работают формулы.
* Действительно, почти все, что может быть использовано 95% пользователей
Каноническая ссылка на формулы на языке S может быть
Chambers J.M. и Hastie T.J., eds. (1992), Статистические модели в С. Чепмен и Холл, Лондон.
хотя происхождение подхода происходит от
Wilkinson G.N. и Rogers C.E. (1973). "Символическое описание факториальных моделей для анализа дисперсии". Прикладная статистика, 22, 392-399
Несколько недавних книг, связанных с R, обсуждают формулы, но я не знаю, что я бы назвал их всеобъемлющими.
Существует также множество онлайновых ресурсов (например здесь) часто с очень полезной информацией.
Тем не менее, как только вам станет удобно пользоваться формулами в R, и у вас есть контекст, в который можно добавить больше знаний, страница справки содержит удивительное количество информации (наряду с другими страницами, на которые она ссылается). Это немного красноречиво и загадочно, но как только у вас будет более широкая база знаний о конкретном способе работы R, это может быть весьма полезно.
Конкретные вопросы, касающиеся R-формул (в зависимости от их содержимого), скорее всего, будут обсуждаться как в StackOverflow, так и в CrossValidated. Действительно, есть некоторые довольно сложные вопросы, касающиеся уже найденных формул (использование поисковых запросов, таких как [r] formula
может быть плодотворным), и было бы полезно иметь больше таких вопросов, чтобы помочь пользователям бороться с этими проблемами; если у вас есть конкретные вопросы, я бы попросил вас спросить.
Что касается "избыточного" и "противоречивого", я полагаю, вы имеете в виду такие вещи, как тот факт, что существует более одного способа указать модель без перехвата: y ~ . -1
и y ~ . +0
работают, например, но в несколько разных контекстах каждый имеет смысл.
Кроме того, существует общая ошибка, заключающаяся в том, чтобы изолировать квадратичные и более высокие члены порядка от интерфейса формулы (использовать I(x^2)
в качестве предиктора, чтобы он прошел через интерфейс формулы невредимым и выжил достаточно далеко, чтобы интерпретироваться как алгебраический выражение). Опять же, как только вы получите представление о том, что происходит "за кадром", что кажется гораздо менее неприятным.
Конкретные примеры вещей, которые я только что упомянул:
lm(dist ~ . -1, data=cars) # "remove-intercept-term" form of no-intercept
lm(dist ~ . +0, data=cars) # "make-intercept-zero" form of no-intercept
lm(dist ~ speed + speed^2, data=cars) # doesn't do what we want here
lm(dist ~ speed + I(speed^2), data=cars) # gets us a quadratic term
lm(dist ~ poly(speed,2), data=cars) # avoid potential multicollinearity
Я согласен с тем, что интерфейс формулы может, по крайней мере, использовать небольшое руководство и лучшие примеры в справке ?formula
.