前提・実現したいこと
tidyverseパッケージを使って、説明変数を3つ以上を含む回帰モデルの視覚化を試みています。
複雑になるのを避けるため、irisデータで試しています。
具体的には重回帰分析の結果を以下のように表現したいと思っています。
- 番号リスト被説明変数(Sepal.Length)は、y軸にplot、
- 番号リスト説明変数①(Sepal.Width)はx軸にplot、
- 番号リスト説明変数②(Petal.Length)は調整変数とみなして、図示しない
- 番号リスト説明変数③(Species)は
color=
で指定して表現 - 番号リスト重回帰分析の結果であるpred(
add_predictions()
で生成)を用いて直線を引く
発生している問題・エラーメッセージ
上記のイメージでコードを作成したところ、図のようになってしまいます。
この問題について原因と解決策を御存じであれば御教示いただけますと幸いです。
該当のソースコード
R
1iris_lm <- lm(Sepal.Length ~ Sepal.Width+ Petal.Length+ Species, data = iris) 2iris_pred <- 3 data_grid(data = iris, Sepal.Width, Petal.Length, Species)%>% 4 add_predictions(iris_lm) 5ggplot(iris,aes(x=Sepal.Width))+ 6 geom_point(aes(y=Sepal.Length,color=Species))+ 7 geom_line(data=iris_pred,aes(y=pred,color=Species))
試したこと
説明変数を2つ(回帰式で表現するならば、y~α+β₁x₁+β₂x₂)にした際には、
下記のコードで思い通りの作図ができました。
2つ目の変数はcolor=で指定することでグラフ内で表現しています。
R
1iris_lm1 <- lm(Sepal.Length ~ Sepal.Width + Species, data = iris) 2iris_pred1 <- 3 data_grid(iris, Sepal.Width, Species)%>% 4 add_predictions(iris_lm1) 5ggplot(iris,aes(x=Sepal.Width, y= Sepal.Length))+ 6 geom_point(aes(color=Species, shape = Species),alpha=0.8)+ 7 geom_line(data= iris_pred1, aes(y=pred,color=Species)) 8
上記コードはgeom_line()
をgeom_smooth()
にしてformulaを記載する方法でも実現可能だと思います。しかし、その際説明変数を3つにするとformula = y ~ x + z(?)
とするほかなく、ggplot
での表現ができないように思います。
補足情報(FW/ツールのバージョンなど)
Rstudioで作成しています
『社会科学のためのデータ分析入門(上)』という本をもとにRを勉強しています。
教材の中では「不均一トリートメント効果(Heterogeneous Treatment Effects)」を検証するための方法として、回帰分析の結果をpredit()関数を使って視覚化しています。
今回は、そのやり方をもとにtidyverseやmodelrパッケージを使い、data.frame()を、data_grid()に、predict()をadd_prediction()に置き換えるなどして、上記書籍の練習問題を解いていたところ、質問をしております課題に直面し行き詰ってしまいました。
具体的には第4章の練習問題メキシコにおける選挙と条件付き現金給付プログラムの問題です。
あなたの回答
tips
プレビュー