15

ここにいくつかのデータとプロットがあります:

set.seed(18)
data = data.frame(y=c(rep(0:1,3),rnorm(18,mean=0.5,sd=0.1)),colour=rep(1:2,12),x=rep(1:4,each=6))

ggplot(data,aes(x=x,y=y,colour=factor(colour)))+geom_point()+ geom_smooth(method='lm',formula=y~x,se=F)

ここに画像の説明を入力

ご覧のとおり、線形回帰は x=1 の値に大きく影響されます。x >= 2 に対して計算された線形回帰を取得できますが、x=1 (y は 0 または 1 に等しい) の値を表示できますか? 結果のグラフは、線形回帰を除いてまったく同じです。横座標 = 1 の値の影響から「苦しむ」ことはありません。

4

3 に答える 3

18

と同じくらい簡単geom_smooth(data=subset(data, x >= 2), ...)です。このプロットが自分のためだけのものであるかどうかは重要ではありませんが、回帰がどのように実行されたかについて言及しないと、このようなものが他の人に誤解を与える可能性があることに注意してください. 除外されたポイントの透明度を変更することをお勧めします。

ggplot(data,aes(x=x,y=y,colour=factor(colour)))+
geom_point(data=subset(data, x >= 2)) + geom_point(data=subset(data, x < 2), alpha=.2) +
geom_smooth(data=subset(data, x >= 2), method='lm',formula=y~x,se=F)

ここに画像の説明を入力

于 2013-06-19T15:39:39.977 に答える
8

通常のlm関数にはweights、特定の観測に重みを割り当てるために使用できる引数があります。このようにして、観察が結果に与える影響を明確にすることができます。これは、データをサブセット化する代わりに、問題に対処する一般的な方法だと思います。もちろん、アドホックに重みを割り当てることは、分析の統計的健全性にとって良い前兆ではありません。重み付けの背後にある理論的根拠を持つことが常に最善です。たとえば、重み付けの低い観測値は不確実性が高くなります。

内部では関数ggplot2を使用しているため、引数lmを渡すことができるはずです。重みがベクトルに格納されていると仮定するとweights、美的 ( ) を介して重みを追加できます。aes

ggplot(data,aes(x=x,y=y,colour=factor(colour))) + 
    geom_point()+ stat_smooth(aes(weight = runif(nrow(data))), method='lm')

データセットの列に重みを付けることもできます。

ggplot(data,aes(x=x,y=y,colour=factor(colour))) + 
    geom_point()+ stat_smooth(aes(weight = weight), method='lm')

列の名前はweightです。

于 2013-06-19T15:40:38.737 に答える