WedX - журнал о программировании и компьютерных науках

Постройте 2 разные модели на одном ggplot2

Я использую один и тот же набор многомерных моделей для разных зависимых переменных. Я хотел бы сгенерировать прогнозируемые значения различных y по сравнению с x на основе модели, контролирующей z, а затем отобразить их в том же ggplot2, чтобы каждая модель имела другой цвет. Следующий код генерирует две модели для взаимосвязи между x и y1 и y2 с учетом z, неопределенности, а затем отображает только одну из них:

require(ggplot2)
set.seed(123)
dat <- data.frame(x = rnorm(100), z = rnorm(100), y1 = rnorm(100), y2 = rnorm(100))
dat1 <- dat[,c(1,2,3)]
dat2 <- dat[,c(1,2,4)]

mod1 <- lm(y1 ~ x + z, data = dat1)
mod2 <- lm(y2 ~ x + z, data = dat2)

dat1$mod1 <- predict(mod1, newdata =dat1)  
err <- predict(mod1, newdata =dat1, se = TRUE)   
dat1$ucl <- err$fit + 1.96 * err$se.fit
dat1$lcl <- err$fit - 1.96 * err$se.fit   

dat2$mod2 <- predict(mod2, newdata =dat2)  
err <- predict(mod2, newdata =dat2, se = TRUE)   
dat2$ucl <- err$fit + 1.96 * err$se.fit
dat2$lcl <- err$fit - 1.96 * err$se.fit   

ggplot(dat1) + 
        geom_point(aes(x = x, y = mod1), size = .8, colour = "black") +
        geom_smooth(data = dat1, aes(x= x, y = mod1, ymin = lcl, ymax = ucl), size = 1, colour = "darkblue", se = TRUE, stat = "smooth", method = "lm")

Есть идеи, как добавить второй сюжет, учитывая, что кадры разные?

Спасибо за любую помощь.

09.10.2015

  • Вы можете описать свою цель словами. Вы хотите построить прогнозируемые значения y в сравнении с x на основе модели, контролирующей z? С отдельными цветами для y1 и y2? 09.10.2015
  • Да, именно так. Я тоже добавлю этот текст к вопросу. 09.10.2015
  • Существует множество вариантов того, как это сделать, но в зависимости от того, как вы в настоящее время подошли к проблеме, вам, вероятно, просто нужно добавить дополнительные слои на основе разных наборов данных. См. здесь и здесь, чтобы начать. 09.10.2015

Ответы:


1

Просто добавьте новые слои с data=dat2 и y=mod2. Я сделал точки и линию красными.

ggplot(dat1) + 
  geom_point(aes(x = x, y = mod1), size = .8, colour = "black") +
  geom_smooth(data = dat1, aes(x= x, y = mod1, ymin = lcl, ymax = ucl), size = 1, colour = "darkblue", se = TRUE, stat = "smooth", method = "lm") +
  geom_point(data=dat2, aes(x = x, y = mod2), size = .8, colour = "red") +
  geom_smooth(data = dat2, aes(x= x, y = mod2, ymin = lcl, ymax = ucl), size = 1, 
              colour = "red", se = TRUE, stat = "smooth", method = "lm")

Результат:  введите описание изображения здесь

10.10.2015
  • но этот способ не включает легенду 10.04.2019
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]