3

私の質問は、私が数時間前に尋ねたこの質問の次の質問です。この投稿を見ると、次の質問を理解するのに大いに役立ちます。

1 つの応答変数と 2 つの説明変数を使用してモデルを作成し、そのうちの 1 つが因子です。

私のモデルでは、応答変数が変換されます。変数をグラフに表示したいのですが、説明変数は変換されないようにしたいです。さらに、この目的のために逆変換する必要がある、モデルによって与えられた予測ラインを追加したいと思います! もう1つ少し難しいことを追加するには、ggplotでやりたいと思います。

私の質問は、 @Roland のソリューションを ggplot といくつかの説明変数に拡張するにはどうすればよいですか?

次に例を示します。

set.seed(12)

resp = (rnorm(120)+20)^3.79
expl1 = rep(c(1,2,3,4),30)
expl2 = rep(1:3,40)
df = data.frame(resp=resp,expl1=expl1,expl2=expl2)

m=lm(resp~expl1*factor(expl2), data=df)
ggplot(data=df,aes(y=resp,x=expl1,shape=factor(expl2)))+geom_point() + geom_smooth(se=F)

表示される行の代わりに、逆変換後のモデルの予測値が必要です。追加することはできmethod='lm', formula =resp~expl1*factor(expl2)ますが、geom_smooth変換するかどうかに関係なくresp、同じ問題になります。変形して線が入らないか、自分の機種に合わないかのどちらかです。

私の質問が理にかなっていることを願っています!ご協力いただきありがとうございます!

4

2 に答える 2

2

predict前の質問への回答で使用された方法と同じように、複数の説明変数で使用できます。次に、予測を元のスケールに逆変換するだけです。予測は別の data.frame にあるため、使用する場合ggplotは通常、プロットを元の data.frame にマップしてポイントを追加し、予測の data.frame を使用して線を描画します。

# A transformed response
df$resp2 = df$resp^(1/3.79)

m2 = lm(resp2 ~ expl1 * expl2, data=df)

plotexpl = seq(1, 4, by = .1)
# Use expand grid to make dataset for predictions
newdat = expand.grid(expl1 = plotexpl, expl2 = c("1", "2", "3"))
newdat$pred = predict(m2, newdata = newdat)

# Back-transform predictions
newdat$back = newdat$pred^3.79

require(ggplot2)
ggplot(df, aes(x = expl1, y = resp, color = expl2)) +
    geom_point() + geom_line(data = newdat, aes(y = back) )
于 2013-08-29T18:47:54.890 に答える
0

ggplot2 の代わりにベース グラフィックス ソリューションを使用する場合Predict.Plot、TeachingDemos パッケージの関数は、予測子の 1 つと他の予測子の値での応答との間の予測関係をプロットし、これらのプロットを組み合わせて複数の条件付けを表示します。応答の適切な変換/逆変換を取得するにglmは、lm.

ggplot2 ソリューションが必要な場合でもPredict.Plot、出発点として使用して ggplot2 に適応させることができます。

于 2013-08-29T15:36:37.543 に答える