Коэффициенты регрессии Лассо для нахождения линейной модели

#r #linear-regression #dummy-variable

#r #линейная регрессия #фиктивная переменная

Вопрос:

Я делаю линейные модели в R. Мои факторы включают показатели рождаемости, смертности, младенческой смертности, ожидаемой продолжительности жизни и региона. регион имеет 7 уровней, используя числовые числа для представления каждого региона:

  1. Восточная Азия и Тихий океан
  2. Южная Азия
  3. Европа и Центральная Азия
  4. Северная Америка
  5. Латинская Америка
  6. Ближний Восток и Северная Африка
  7. Африка к югу от Сахары

Я запустил регрессию Лассо в R, чтобы попытаться улучшить обобщенную линейную модель. Коэффициенты регрессии Лассо следующие:
введите описание изображения здесь

Я помещу факторы, выбранные с помощью регрессии Лассо, в функцию lm в R:

 Lasso.lm <- lm(log(GNIpercapita) ~ deathrate   infantdeaths   life.exp.avg   
                                    life.exp.diff   region, data=econdev) 
  

Однако для регионов, как мне добавить каждый регион в линейную модель lm? Например, я не могу добавить как . regionEast Asia amp; Pacific regionEast Asia amp; Pacific

Комментарии:

1. Вы можете создать фиктивную переменную: 1, если <желаемая категория> 0 в противном случае. И просто добавьте это к вашей регрессии myDummy .

2. Думаю, я не очень хорошо сформулировал этот вопрос. Я хочу найти скорректированный квадрат R, который говорит мне о предсказуемости. скорректированный квадрат R, который я получаю для обобщенной модели, равен 0,8298. Я не уверен, как интерпретировать этот результат регрессии лассо. Как мне определить предсказуемость регрессии лассо? Я пытаюсь улучшить свою линейную модель, используя различные методы.

Ответ №1:

Вы не можете использовать фрагменты и части категории.

Вы можете исключить числовые переменные или целые столбцы категориальных переменных, но вы не можете выбирать отдельные категории, поскольку это фрагментирует ваш фрейм данных.

Возможно, вам было бы лучше использовать результат самой регрессии Lasso и делать прогнозы на его основе. Это не меньшая регрессия из-за регуляризации. Он более сложный, более надежный и менее прямой, но не «хуже».

Если это не работает для вас, то вы можете запустить lm() с выбранными непрерывными переменными и переменной всей области и признать, что модель несовершенна, как и все модели, или удалить область и согласиться на то, что может быть менее прогностической моделью.

Комментарии:

1. Они могли бы добавлять отдельные уровни, создавая двоичную фиктивную переменную, поэтому, когда region == Восточная Азия и Тихий океан, это единица, в противном случае ноль.

2. Да, вы можете создавать категории для other и тому подобное, для агрегирования регионов, вы, безусловно, можете объединить все остальные уровни переменных в один. Но, скорее всего, вы не получите требуемой точности от lm() выполнения этого, которую вы получаете от использования регуляризованной модели.

3. Мой комментарий был призван проиллюстрировать, как ваши первые два абзаца неверны. Но есть варианты моделирования, однако их, вероятно, лучше обсудить на перекрестной проверке — кроме того, они не добавили достаточно деталей к своему вопросу, чтобы указать, что требуется регрессия лассо.

4. Я понимаю, что вы говорите @user20650 . Вопросы оставили много предположений, в которых я, по общему признанию, беден. И я склонен отвечать в контексте наилучших практик, в отличие от can it be done. Всегда хорошо иметь фольгу, отражающую эту другую сторону.

5. Вы можете очень хорошо использовать фрагменты и части категориальной переменной. Если логика имеет смысл при разделении категориальной переменной на определенные две группы, вполне нормально создать фиктивную переменную соответствующим образом.

Ответ №2:

Я согласен с предыдущими комментариями в том, что не рекомендуется выбирать части категориальной переменной. Если вы все еще хотите это сделать, с помощью пакета modeldb легко создать фиктивные переменные для каждого уровня вашей категориальной переменной. Помните, что в вашей регрессии lm () вы должны оставить один уровень категориальной переменной, чтобы избежать идеальной коллинеарности.

 library(modeldb)

df %>% 
  add_dummy_variables(region)
  

Комментарии:

1. Почему это не рекомендуется? Такой вещи не существует. Если логика имеет смысл при разделении категориальной переменной на определенные две группы, вполне нормально создать фиктивную переменную соответствующим образом.

2. Это зависит от использования, которое OP дает регрессии. Если OP хочет сделать какой-то причинно-следственный вывод, используя коэффициенты регрессии, то исключение частей категориальной переменной не имеет смысла. Если целью является модель для прогнозирования, то это может иметь смысл.

3. Думаю, я не очень хорошо сформулировал этот вопрос. Я хочу найти скорректированный квадрат R, который говорит мне о предсказуемости. скорректированный квадрат R, который я получаю для обобщенной модели, равен 0,8298. Я не уверен, как интерпретировать этот результат регрессии лассо. Как мне определить предсказуемость регрессии лассо?