Как я могу сказать R использовать определенный уровень в качестве эталона, если я использую двоичные независимые переменные в регрессии?
Просто по умолчанию используется какой-то уровень.
lm(x ~ y + as.factor(b))
с b {0, 1, 2, 3, 4}
. Скажем, я хочу использовать 3 вместо нуля, который используется R.
r
regression
linear-regression
categorical-data
dummy-variable
Мэтт Баннерт
источник
источник
b
вы можете указать порядок уровней с помощьюfactor(b, levels = c(3,1,2,4,5))
. Однако сделайте это на этапе обработки данных внеlm()
вызова. В моем ответе ниже используетсяrelevel()
функция, поэтому вы можете создать коэффициент, а затем сместить опорный уровень в соответствии с вашими потребностями.Ответы:
Смотрите
relevel()
функцию. Вот пример:Теперь изменим фактор
b
вDF
при использованииrelevel()
функции:Модели оценили различные референтные уровни.
источник
within
, ноdf$bR = relevel(df$b, ref=3)
.Другие упомянули
relevel
команду, которая является лучшим решением, если вы хотите изменить базовый уровень для всех анализов ваших данных (или готовы жить с изменением данных).Если вы не хотите изменять данные (это однократное изменение, но в будущем вам снова понадобится поведение по умолчанию), вы можете использовать комбинацию функции
C
(обратите внимание на верхний регистр) для установки контрастов иcontr.treatments
функции с базовый аргумент для выбора, какой уровень вы хотите использовать в качестве базового.Например:
источник
Команда
relevel()
- это сокращенный метод ответа на ваш вопрос. Что он делает, так это переупорядочивает множитель так, чтобы первым был уровень ссылки. Следовательно, изменение порядка уровней факторов также будет иметь тот же эффект, но даст вам больше контроля. Возможно, вы хотели иметь уровни 3,4,0,1,2. В таком случае...Я предпочитаю этот метод, потому что мне легче увидеть в моем коде не только ссылку, но и положение других значений (вместо того, чтобы смотреть на результаты для этого).
ПРИМЕЧАНИЕ: НЕ делайте это упорядоченным фактором. Фактор с указанным порядком и упорядоченный коэффициент - это не одно и то же.
lm()
может начать думать, что вам нужны полиномиальные контрасты, если вы это сделаете.источник
Я знаю, что это старый вопрос, но у меня была аналогичная проблема, и я обнаружил, что:
делает именно то, что вы просили.
источник
as.factor()
если нужно, например, используя...+relevel(as.factor(mycol), ref = "myref")+...
Вы также можете вручную пометить столбец
contrasts
атрибутом, который, похоже, соблюдается функциями регрессии:источник
Для тех, кто ищет версию dplyr / tidyverse. Основываясь на решении Гэвина Симпсона:
источник
relevel()
илиforcats::fct_relevel()
relevel
работает только с факторами.fct_relevel
работает только с факторами. Между функциями нет никакой разницы, кроме названия, AFAIK. Высказывание «Если переменная является фактором, который вы также можете использоватьfct_relevel
» подразумевает, что если переменная не является фактором, который вы можете использоватьrelevel
, но это неверно.