2017-08-03 1 views
2

内の値の数の逆数でstat_smoothを量る行いますenter image description hereは、どのように私はggplot2でこれを好きな箱ひげ図の例を考えるとggplot2

しかし:

ggplot(diamonds, aes(carat, price)) + 
    geom_boxplot(aes(group = cut_width(carat, 0.25)), outlier.alpha = 0.1) + 
    stat_smooth(method="lm", formula = y ~ poly(x,2), n= 40, se=TRUE, color="red", aes(group=1), size=1.5) 

私はこのような画像を取得しますstat_smooth行は、各カラットカテゴリのポイント数によって大きく影響されます。私はそれぞれのカテゴリーを同じように扱うことを好みます。これは、特定のカラット値で各ポイントに重み付けし、その値を持つポイントの総数の逆数を使用して、自分の考えに合わせることを意味します。 (したがって、5でポイントは1の重みを持ち、1でポイントは1/aBigNumberの重みを持ちます)。私はプロットに対して体重の美しさを試しましたが、ボックスプロットを破りました。私はスムーズに量る追加しようとしましたが、私はエラーを取得:

Error: ggplot2 doesn't know how to deal with data of class uneval

ので、カテゴリが平等に扱われるように、どのように私はスムージング機能を重み付けするか(つまり、の点の数とは逆のカテゴリ)、まだ出力にboxplotを保持しますか?あなたはこのような何かを行うことができ

答えて

2

...

library(dplyr) 
diamonds2 <- diamonds %>% mutate(cutcarat=cut_width(carat, 0.25)) %>% 
          group_by(cutcarat) %>% 
          summarise(carat=mean(carat), price=mean(price)) 
ggplot() + 
     geom_boxplot(data=diamonds, 
        aes(x=carat, y=price, group = cut_width(carat, 0.25)), 
        outlier.alpha = 0.1) + 
     geom_smooth(data=diamonds2, 
        aes(x=carat, y=price), method="lm", 
        formula = y ~ poly(x,2), n= 40, se=TRUE, color="red", size=1.5) 

enter image description here

+1

ただ、ここで何が起こっているかの説明として:平滑化関数は値の範囲と平均出力を持つ行列に取り付けられていますその値の範囲では、本質的には、均等に重み付けされた値に適合する曲線を与えます。なぜなら、この値はintevalの各点に1つしかないからです。 – MrSampson

関連する問題