YとXの相関関係のおかげで、説明された分散でゲインをどのように提示するのですか?


11

単純な線形相関を1年生に(視覚的に)説明する方法を探しています。

視覚化する古典的な方法は、Y〜X散布図に直線回帰直線を与えることです。

最近、プロットに3つの画像を追加してこのタイプのグラフィックスを拡張するというアイデアに思いつきました:y〜1の散布図、次にy〜xの散布図、resid(y〜x)〜x、そして最後に残差の(y〜x)〜1(平均値の中心)

このような視覚化の例を次に示します。 代替テキスト

そしてそれを生成するRコード:

set.seed(345)
x <- runif(50) * 10
y <- x +rnorm(50)


layout(matrix(c(1,2,2,2,2,3 ,3,3,3,4), 1,10))
plot(y~rep(1, length(y)), axes = F, xlab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)
plot(y~x, ylab = "", )
abline(lm(y~x), col = 2, lwd = 2)

plot(c(residuals(lm(y~x)) + mean(y))~x, ylab = "", ylim = range(y))
abline(h =mean(y), col = 2, lwd = 2)

plot(c(residuals(lm(y~x)) + mean(y))~rep(1, length(y)), axes = F, xlab = "", ylab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)

これが私の質問につながります:このグラフを拡張する方法(テキスト、マーク、または他の種類の関連する視覚化のいずれか)についての提案をいただければ幸いです。関連するRコードを追加するのも良いでしょう。

1つの方向は、R ^ 2のいくつかの情報を追加することです(テキストまたは何らかの方法でxの導入前後の分散の大きさを表す線を追加することにより)。別のオプションは、1つの点を強調表示して、それがどのように「より良い」かを示すことです説明された」回帰直線のおかげで。任意の入力をいただければ幸いです。


1
:あなたは、線形回帰がいかに良い見せていると同時に、また、それは関係がうまく直線で記述されていない状況で失敗したか、あなたの聴衆を表示してくださいrequire(mlbench) ; cor( mlbench.smiley()$x ); plot(mlbench.smiley()$x)
DWIN

Dwinを行います... :-)
Tal Galili '15年

回答:


4

ここにいくつかの提案があります(あなたのプロットについてではなく、相関/回帰分析をどのように説明するかについてではありません)。

  • 右マージンと左マージンに表示する2つの一変量プロットは、を呼び出すことで簡略化できますrug()
  • と密度プロットまたは箱ひげ図を表示すると、このコンテキストでは意味をなさない双正規性の仮定のアイデアを喚起するリスクがあるため、より有益です。XY
  • 回帰直線に加えて、黄土のような傾向のノンパラメトリックな推定値を示すことは価値があります(これは良い実践であり、考えられる局所的な非線形性について非常に有益です)。
  • ポイントは、レバレッジ効果またはクック距離、つまり推定された回帰直線上で影響力のある個々の値がどのように影響するかを示すメジャーに従って強調表示される場合があります(色またはサイズが異なります)。@DWinのコメントの2番目にして、個々のポイントがどのように適合度を「低下」させるか、または線形性の仮定からのある種の逸脱を誘発するかを強調する方が良いと思います。

注目すべきことに、このグラフはXとYが対になっていないデータであると想定しています。それ以外の場合は、散布図に加えて、に対するBland-Altmanプロット(します。(XY)(X+Y)/2


1

正確な質問には答えませんが、stackoveflowからの回答に基づいて線形相関の1つの潜在的な落とし穴を視覚化することにより、次のことが興味深い場合があります。

par(mfrow=c(2,1))

set.seed(1)
x <- rnorm(1000)
y <- rnorm(1000)
plot(y~x, ylab = "", main=paste('1000 random values (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

x <- c(x, 500)
y <- c(y, 500)
cor(x,y)
plot(y~x, ylab = "", main=paste('1000 random values and (500, 500) (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

代替テキスト

@Gavin Simpsonの回答@ bill_080の回答には、同じトピックの相関関係の優れたプロットも含まれています。


1

2つの2パネルプロットがあり、どちらも左側にxyプロットがあり、右側にヒストグラムがあります。最初のプロットでは、水平線がyの平均に配置され、線はこの点から各点まで伸び、平均からのy値の残差を表します。これを使用したヒストグラムは、これらの残差を単にプロットします。次に、次のペアのxyプロットには、線形フィットを表す線と、残差を表す垂直線が含まれます。これらは、右側のヒストグラムで表されます。ヒストグラムのx軸を一定に保ち、平均「フィット」に対する線形フィットの低い値へのシフトを強調表示します。


1

あなたの提案は良いと思いますが、3つの異なる例でそれを行います

1)XとYは完全に無関係です。yを生成するrコードから「x」を削除するだけです(y1 <-rnorm(50))

2)投稿した例(y2 <-x + rnorm(50))

3)XとYは同じ変数です。yを生成するrコードから「rnorm(50)」を削除するだけ(y3 <-x)

これは、相関関係の増加が残差の変動性をどのように減少させるかをより明確に示します。縦軸が各プロットで変化しないことを確認する必要があるだけです。これは、デフォルトのスケーリングを使用している場合に発生することがあります。

したがって、3つのプロットr1対x、r2対xおよびr3対xを比較できます。「r」を使用して、それぞれy1、y2、およびy3を使用した近似からの残差を示しています。

プロットでの私のRスキルはまったく絶望的です。そのため、ここではあまり手助けできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.