2016-04-14 10 views
0

パッケージggplot2とirisを使用して、回帰直線をフィットさせて散布図をプロットします。1つのプロットでlm(log(y)〜)とlm(y〜x + x^2)のggplotを描画する方法

library(ggplot2) 
ggplot(data=iris, aes(x = Petal.Width, y = Petal.Length,color=Species)) + 
    geom_point(shape=1) + 
    stat_smooth(method = "lm",formula= 'Petal.Length ~ Petal.Width+I(Petal.Width^2)+SaleType+Petal.Width*Species', data=iris, 
       aes(x = Petal.Width, y = Petal.Length,color=Species)) 

**Warning message: 
Computation failed in `stat_smooth()`: 
variable lengths differ (found for '(weights)')** 

私は2つの独立変数を持っていますが、今のRはstat_smoothに色でアップspliting種を読み取ることができないというこの警告を得る理由について考えています。どのように私はplot(Petal.Width,fitted(fit))のような2つの線を描くことができます。さらに、別の回帰モデルを同じデータ群に当てはめてもlog(y)の場合、fit<-lm(log(Petal.Length)~Petal.Width+Species+Petal.Width*Species,data=iris). 2つの回帰モデルの描画を同じグラフに入れることはできますか?

答えて

1

変換された回帰と生の値を同じ縮尺で組み合わせることは適切ではないと思います。むしろこれらは異なる数字でプロットする必要があります。

ggplot(data=iris, aes(color=Species)) + 
    geom_point(aes(x = Petal.Width, y = Sepal.Width)) + 
    stat_smooth(method = "lm", aes(x = Petal.Width, y = Sepal.Width,color=Species)) 

次に別の変数にSepal.Widthを変換ログ:あなたはこのような生データをプロットすることができirisデータセットを使用して

iris$LogSepal.Width <- log(iris$Sepal.Width) 

その後、変数を変換プロットが。私はこれが役立つことを願っています

ggplot(data=iris, aes(color=Species)) + 
    geom_point(aes(x = Petal.Width, y = LogSepal.Width)) + 
    stat_smooth(method = "lm", aes(x = Petal.Width, y = LogSepal.Width,color=Species)) 
+0

ありがとうございました!私はあなたの考えをログに記録しました。しかし、どのようにして変数の二次関数と相互作用の回帰フィット線を描くことができますか? –

+0

私は参照してください。通常、ggplot2の外でモデルを実行する方がいいです(複雑な場合)。だから私はそれを正常に実行し、モデルの結果をプロットします。 – boshek

関連する問題