実線の終点から予測値まで点線を延長する簡単な方法はありますか?ggplot:異なる線種で予測値に回帰直線を延長する
x = rnorm(10)
y = 5 + x + rnorm(10,0,0.4)
my_lm <- lm(y~x)
summary(my_lm)
my_intercept <- my_lm$coef[1]
my_slope <- my_lm$coef[2]
my_pred = predict(my_lm,data.frame(x = (max(x)+1)))
ggdf <- data.frame(x = c(x,max(x)+1), y = c(y,my_pred), obs_Or_Pred = c(rep("Obs",10),"Pred"))
ggplot(ggdf, aes(x = x, y = y, group = obs_Or_Pred)) +
geom_point(size = 3, aes(colour = obs_Or_Pred)) +
geom_abline(intercept = my_intercept, slope = my_slope, aes(linetype = obs_Or_Pred))
これは私が見に期待したい出力を与えるものではありません:
以下はそれで私の基本的な試みです。
ggdf2 <- data.frame(x = c(x,max(x),max(x)+12), y = c(y,my_intercept+max(x)*my_slope,my_pred), obs_Or_Pred = c(rep("Obs",8),"Pred","Pred"), show_Data_Point = c(rep(TRUE,8),FALSE,TRUE))
ggplot(ggdf2, aes(x = x, y = y, group = obs_Or_Pred)) +
geom_point(data = ggdf2[ggdf2[,"show_Data_Point"],] ,size = 3, aes(colour = obs_Or_Pred)) +
geom_smooth(method = "lm", se=F, aes(colour = obs_Or_Pred, linetype=obs_Or_Pred))
これが正しい出力が得られますが、私は余分を含めるために持っていた:私は、私が思い付くした最高のがあるように、いくつかの他の回答を見てきましたし、何もsimple.Theを見ていませんデータポイントを表示するかどうかを指定する列。予測するggplotを指示する簡単な方法があります
:私はないと、私はフィット回帰直線の最後に余分なポイントを持っているこれら二つのプロットの第二、で終わります線形モデルから単一の点を取り出し、破線を描きますか?
あなたの方法はわかりやすいようです。 – Gregor
事前に予測をしてから、どの行をポイントとして、どのラインをどのラインとして表示するかを指定する必要があるのは気になりません。それは少数の予測/時間がある場合には問題ありませんが、私が繰り返しそれをやりたいのであれば、手動で行うのは面倒です。 – AodhanOL
つまり、 'ggplot'はモデリングパッケージではなく、プロットするパッケージです。それはあなたがそれを与えるデータをプロットするのに最適です。 'geom_smooth'はシンプルなユースケースには便利ですが、非標準モデル/予測が必要なときは、プロットしたいデータを明示的に与える必要があることに驚かないでください。 – Gregor