Я озадачен формулами в 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)