Вопрос или проблема
Я прохожу курс по Управляемому обучению в 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 и восприятие линейной регрессии как инструмента анализа данных. Используйте эти знания для повышения точности ваших аналитических моделей и дальнейшего изучения методов машинного обучения.