2017-12-14 30 views
0

ggplotに私の(複数の)線形回帰直線を追加しようとしています。 私は朝のために2つのダミー(朝夕)を持っています。ダミー。 プロットは正しいですが、回帰直線を追加するときにエラーが表示されます。ここ はコードです:ggplotに複数の線形回帰直線を追加する際のエラー

regression_1 <- lm(weight ~ morning.dummy + dayNumber + (morning.dummy*dayNumber) + 
        I(dayNumber^2) + (I(dayNumber^2)*morning.dummy), 
        data=weight_data) 
summary(regression_1) 
#plot 
plot2 <- ggplot(data=weight_data,aes(x=dayNumber, y=weight, color=morning.dummy)) + 
      geom_point()+ 
      stat_smooth(method = "lm", formula = weight ~ morning.dummy + dayNumber + (morning.dummy*dayNumber) +I(dayNumber^2) + (I(dayNumber^2)*morning.dummy), size = 1) + 
      labs(y = "Weight in kg", x = "Day Number of weight measurment", subtitle = "Day 0 = 3 October 2010") 
plot2 

これはエラーです:

Error in grid.Call.graphics(C_setviewport, vp, TRUE) : 
    non-finite location and/or size for viewport 
In addition: Warning message: 
Computation failed in `stat_smooth()`: 
object 'dayNumber' not found 

誰かが私が間違って何かをするという考えを持っていますか?

+1

あなたはggplot2内の1つのDVでのみプロット回帰モデルをすることができます。しかし、 'stat_smooth(method =" lm "、formula = weight〜poly(daynumber、degree = 2)、size = 1)'はあなたのモデルと同じ予測を与えるべきです。 – Roland

+0

ありがとう、私はそれがまだ 'dayNumberが見つかりませんエラーを取得してみました。しかし、それは私のデータセットの変数の名前の1つです。ここで何が問題になるのでしょうか? –

+1

はい、忘れました。 'stat_smooth(method =" lm "、数式= y〜poly(x、degree = 2)、size = 1)'でなければなりません。ここで参照してください:https://stackoverflow.com/a/25031125/1412059 – Roland

答えて

0

私は、これはまだあなたを助け願っています:

library('ggplot2') 

# create test data 
weight <- runif(40) * 10 
morning <- weight * runif(length(weight)) 
weight_data <- data.frame(weight, morning) 

# test data 
ression_1 <- lm(weight ~ poly(morning, degree = 2)) 
plot(morning, weight) 
points(x=morning, y=regression_1$fitted.values, col='red') 

#plot in ggplot2 
plot2 <- ggplot(data=weight_data, aes(y=weight, x=morning))+ 
    geom_point()+ 
    stat_smooth(method = "lm", formula = y ~ poly(x, degree = 2), size = 1)+ 
    labs(y = "Weight in kg", x = "Day Number of weight measurment", subtitle = "Day 0 = 3 October 2010") 

plot2