2015-10-09 2 views
0

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

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") 

Любой идея о том, как добавить второй участок на этом, учитывая, что кадры разные? Спасибо за любую помощь.

+0

Можете ли вы описать свою цель словами. Вы хотите построить предсказанные значения 'y' по сравнению с' x', на основе модели управления для 'z'? С отдельными цветами для 'y1' и' y2'? – davechilders

+0

Да, это точно. Я также добавлю этот текст к вопросу. –

+0

Множество опций о том, как это сделать, но исходя из того, как вы в настоящее время сталкивались с проблемой, вам, вероятно, просто нужно добавить дополнительные слои на основе разных наборов данных. См. [Здесь] (http://stackoverflow.com/questions/2329851/how-can-i-add-another-layer-new-series-to-a-ggplot) и [здесь] (http: // stackoverflow. com/questions/9109156/ggplot-combining-two-plot-from-different-data-frames). – aosmith

ответ

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") 

Результат: enter image description here

Смежные вопросы