r: создание подгоночных и фактических графиков с использованием lm и ggplot2 - PullRequest
0 голосов
/ 21 декабря 2018

Я использую линейную модель и хочу создать среду для визуализации моих значений actual против fitted с использованием ggplot2 быстрым, воспроизводимым способом, чтобы при запуске модели я мог быстро вытащитьдо последнего запуска и посмотреть, где у меня есть самые большие остатки.

Я создал примерный набор данных для его запуска, но в итоге столкнулся с ошибками при добавлении подогнанных значений к визуализации (только значения actual являются простыми).См. Пример кода ниже:

# creating sample data set
dfmodel<- data_frame(seq(as.Date('2018-01-01'), as.Date('2018-01-10'), by= 'day'), rnorm(10, 12, 3), rnorm(10, 14, 5))
colnames(dfmodel)<- c( 'date','var1', 'var2')

# running model
lmodel<- lm(var1~ var2, data= dfmodel)

# applying fitted values to my data frame
dfmodel$fitted<- lmodel$fitted.values

# creating ggplot object for visualization
lmodel_plot<- ggplot(dfmodel, aes(x= date, y= var1))
lmodel_plot + geom_line(y= fitted) 

# attempting to layer in fitted value, but generating this error:
Error in rep(value[[k]], length.out = n) : attempt to replicate an object of type 'closure'

Цель состоит в том, чтобы мои значения actual и fitted были размещены на одной диаграмме на одной оси (и, в конечном итоге, наложить остатки на более полную картину),

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Вы забыли aes () для geom_line

# creating sample data set
dfmodel<- data_frame(seq(as.Date('2018-01-01'), as.Date('2018-01-10'), by= 'day'), 
rnorm(10, 12, 3), rnorm(10, 14, 5))
colnames(dfmodel)<- c( 'date','var1', 'var2')

# running model
lmodel<- lm(var1~ var2, data= dfmodel)

# applying fitted values to my data frame
dfmodel$fitted<- lmodel$fitted.values

# creating ggplot object for visualization
lmodel_plot <- ggplot(dfmodel, aes(x= date, y= var1)) +
  geom_line(aes(y= fitted))
0 голосов
/ 21 декабря 2018

Вам нужно использовать как точки, так и линии.В противном случае (для этих данных) невозможно отобразить оба значения как geom_line, если кто-то не знает пути.

dfmodel %>% 
  ggplot(aes(date,var1))+geom_point(colour="red")+geom_line(aes(y=fitted))
0 голосов
/ 21 декабря 2018

Ваша функция построения графика была отключена, ваша модель Var1 vs Var2, поэтому вы хотите построить график y = Vars и x = Var1.

library(ggplot2)
# creating ggplot object for visualization
lmodel_plot<- ggplot(dfmodel, aes(x= var2, y= var1)) +
  geom_point() +geom_line(aes(y= fitted)) 

print(lmodel_plot)

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...