Меня озадачивают формулы в R.
Скажем, у меня есть формула, в которой правая часть включает преобразование, например log(var) или (1-var).
(1-var), то результат model.frame(...) игнорирует преобразованную переменную.log(var), то результат model.frame(...) включает преобразованную переменную.Почему? Это потому, что структура формул была написана для линейных моделей, а вычитания приводят к идеальной мультиколлинеарности? И самое главное: Как я могу получить переменные из формулы, которая включает произвольно преобразованные переменные в правой части?
dt <- data.frame(V1=1:3, V2=4:6) # sample data
fml <- V1 ~ V2 + (1-V2)
model.frame(fml, dt) # get variables --> ignores (1-V2)
# V1 V2
# 1 1 4
# 2 2 5
# 3 3 6
# This works
fml <- V1 ~ V2 + log(V2)
model.frame(fml, dt) # get variables --> includes log(V2)
# V1 V2 log(V2)
# 1 1 4 1.386294
# 2 2 5 1.609438
# 3 3 6 1.791759
Технические характеристики
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
например: «Хотя формулы обычно включают только имена переменных и факторов, они также могут включать арифметические выражения. Формула log (y) ~ a + log (x) вполне допустима. Когда такие арифметические выражения включают операторы, которые также символически используются в модели В формулах может возникнуть путаница между использованием арифметических и символических операторов. Чтобы избежать этой путаницы, функцию I () можно использовать для заключения в скобки тех частей формулы модели, в которых операторы используются в их арифметическом смысле. Например, в формуле y ~ a + I (b + c), член b + c следует интерпретировать как сумму b и c ".





В отличие от журнала, знак вычитания имеет особое значение в синтаксисе формулы; в результате R может анализировать функцию журнала, но не знак вычитания. Чтобы регрессировать на 1 - X, используйте I (1 - x), как в
> dt <- data.frame(V1=1:3, V2=4:6) # sample data
>
> fml <- V1 ~ V2 + I(1-V2)
> model.frame(fml, dt)
V1 V2 I(1 - V2)
1 1 4 -3
2 2 5 -4
3 3 6 -5
Я всегда считаю полезным узнать не только ответ, но и то, где он находился. В данном случае это задокументировано в
?formula.