Модель линейной регрессии

Вопрос или проблема

Я прохожу курс по Управляемому обучению в R: Регрессия. Есть раздел, в котором мне нужно предсказать артериальное давление, учитывая возраст и вес. Это был МОЙ подход

# Создать формулу и вывести ее
fmla <- lm(blood_pressure ~ age + weight, data=bloodpressure)
fmla

# Подогнать модель: bloodpressure_model
bloodpressure_model <- fmla

# Вывести bloodpressure_model и вызвать summary() 
bloodpressure_model
summary(bloodpressure_model)

Это была неправильная отправка. Сообщение об ошибке гласило – “Содержимое переменной fmla неверно.”

Решение DataCamp было таким

# bloodpressure находится в рабочем пространстве
summary(bloodpressure)

# Создать формулу и вывести ее
fmla <- blood_pressure ~ age + weight
fmla <- lm(blood_pressure ~ age + weight, data=bloodpressure)

fmla

# Подогнать модель: bloodpressure_model
bloodpressure_model <- lm(fmla, data = bloodpressure)

# Вывести bloodpressure_model и вызвать summary()
bloodpressure_model
summary(bloodpressure_model) 

Обе модели имели одинаковые диагностические результаты. В чем проблема с МОИМ подходом?

Это должно быть багом на их сервере. Переменная fmla должна содержать одинаковое содержимое в вашем коде и в их. Это потому, что последнее присваивание в обеих скриптах –

fmla <- lm(blood_pressure ~ age + weight, data=bloodpressure)

fmla – это модельная формула: fmla <- formula(blood_pressure ~ age + weight)

Так что правильное решение должно быть

# bloodpressure находится в рабочем пространстве
summary(bloodpressure)

# Создать формулу и вывести ее
fmla <- formula(blood_pressure ~ age + weight)

fmla

# Подогнать модель: bloodpressure_model
bloodpressure_model <- lm(fmla, data = bloodpressure)

# Вывести bloodpressure_model и вызвать summary()
bloodpressure_model
summary(bloodpressure_model) 

Ответ или решение

Модель линейной регрессии: Ошибки и их исправления в R

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

Понимание подхода

В вашем коде вы пытались создать формулу для линейной модели следующим образом:

# Создаем формулу и выводим ее
fmla <- lm(blood_pressure ~ age + weight, data=bloodpressure)
fmla

Данная конструкция создает линейную модель сразу с помощью lm() и присваивает её переменной fmla. Тем не менее, в R переменная fmla не оканчивается на формуле, а вместо этого содержит саму модель, что является источником ошибки.

Анализ ошибки

Ошибка, с которой вы столкнулись, связана с тем, что переменная fmla не содержит корректную формулу для линейной регрессии. Сообщение об ошибке гласит, что содержимое переменной не соответствует ожидаемому формату. Ваша цель заключалась в создании формулы, а не модели.

В самой корректной версии решения:

# Создаем формулу
fmla <- formula(blood_pressure ~ age + weight)

# Подгоняем модель к данным
bloodpressure_model <- lm(fmla, data = bloodpressure)

Переменная fmla в этом случае правильно определяет зависимость и может быть использована для создания модели линейной регрессии.

Корректное исправление кода

Ниже приведен исправленный код для вашей задачи, который учитывает все аспекты:

# Убедитесь, что данные bloodpressure загружены
summary(bloodpressure)

# Создаем формулу для линейной модели
fmla <- formula(blood_pressure ~ age + weight)

# Выводим созданную формулу
print(fmla)

# Подгоняем модель: bloodpressure_model
bloodpressure_model <- lm(fmla, data = bloodpressure)

# Выводим результаты модели и используем summary() для диагностики
print(bloodpressure_model)
summary(bloodpressure_model)

Заключение

В результате мы прояснили, что ошибка исходила из неверного присвоения переменной fmla. Правильное использование функции formula() позволяет задать зависимость между переменными, что является критически важным для успешного построения модели линейной регрессии.

Теперь ваш код станет более понятным и логичным, улучшая вашу практику работы с R и восприятие линейной регрессии как инструмента анализа данных. Используйте эти знания для повышения точности ваших аналитических моделей и дальнейшего изучения методов машинного обучения.

Оцените материал
Добавить комментарий

Капча загружается...