R:ggplot2のグループ化されたヒストグラムに通常の近似を追加します

トム・ウェンセリアーズ

のグループ化されたヒストグラムに正規分布の適合を重ね合わせるための最もエレガントな方法を探していggplot2ます。私はこの質問をする前に何度も頼まれていますが、のような提案の選択肢のどれも、知っているこのいずれかまたはこの1つはない限り、非常にエレガントとして私を打たない、少なくともないstat_functionデータの各特定のサブセクション上で動作するように作ることができます。

私が遭遇したグループ化されていないヒストグラムに正規分布の適合を重ね合わせるための比較的洗練された方法の1つは、geom_smoothandを使用method="nls"することでした(それは自己開始関数ではなく、開始値を指定する必要があるという事実は別として):

library(ggplot2)
myhist = data.frame(size = 10:27, counts = c(1L, 3L, 5L, 6L, 9L, 14L, 13L, 23L, 31L, 40L, 42L, 22L, 14L, 7L, 4L, 2L, 2L, 1L) )
ggplot(data=myhist, aes(x=size, y=counts)) + geom_point() + 
     geom_smooth(method="nls", formula = y ~ N * dnorm(x, m, s), se=F, 
                 start=list(m=20, s=5, N=300)) 

ここに画像の説明を入力してください

このアプローチを使用して、グループ化されたヒストグラムに正規分布の近似を追加することもできるかどうか疑問に思いました。

library(devtools)
install_github("tomwenseleers/easyGgplot2",type="source")
library("easyGgplot2") # load weight data
ggplot(weight,aes(x = weight)) + 
+     geom_histogram(aes(y = ..count.., colour=sex, fill=sex),alpha=0.5,position="identity")

ここに画像の説明を入力してください

私はまた、万が一(グループ化の可能性がある)のために+ stat_distrfit()または+ stat_normfit()を定義する可能性のあるパッケージがあるかどうか疑問に思っていましたかggplot2(私は実際には何も見つけることができませんでしたが、これは十分に一般的なタスクのように思われるので、私はただ疑問に思っていました)

コードをできるだけ短くしたい理由は、これがコース用であり、物事をできるだけ簡単に保ちたいからです...

PS geom_density does not suit my goal and I would also like to plot the counts/frequencies as opposed to the density. I would also like to have them in the same panel, and avoid using facet_wrap

jlhoward

Like this?

## simulate your dataset - could not get easyGplot2 to load....
set.seed(1)     # for reproducible example
weight <- data.frame(sex=c("Female","Male"), weight=rnorm(1000,mean=c(65,67),sd=1))

library(ggplot2)
library(MASS)       # for fitdistr(...)
get.params <- function(z) with(fitdistr(z,"normal"),estimate[1:2])
df <- aggregate(weight~sex, weight, get.params)
df <- data.frame(sex=df[,1],df[,2])
x  <- with(weight, seq(min(weight),max(weight),len=100))
gg <- data.frame(weight=rep(x,nrow(df)),df)
gg$y <- with(gg,dnorm(x,mean,sd))
gg$y <- gg$y * aggregate(weight~sex, weight,length)$weight * diff(range(weight$weight))/30

ggplot(weight,aes(x = weight, colour=sex)) + 
  geom_histogram(aes(y = ..count.., fill=sex), alpha=0.5,position="identity") +
  geom_line(data=gg, aes(y=y))  

I suppose "elegant" is in the eye of the beholder. The problem with using stat_function(...) is that the args=... list cannot be mapped using aes(...), as the post in the comments explains. So you have to create an auxiliary data.frame (gg in this example) that has the x- and y-values for the fitted distributions, and use geom_line(...).

上記のコードfitdistr(...)は、MASSパッケージで使用して、正規性の仮定に基づいて、性別ごとにグループ化されたデータの平均とsdの最尤推定値を計算します(意味がある場合は、別の分布を使用できます)。次に、範囲weightを100の増分に分割して、x軸を作成dnorm(x,...)し、適切な平均とsdを計算します。結果は密度であるため、次を使用して調整する必要があります。

gg$y <- gg$y * aggregate(weight~sex, weight,length)$weight * diff(range(weight$weight))/30

これをカウントデータに対してマッピングしたいからです。これは、geom_histogramのデフォルトのビニング(xの範囲を30の等しい増分に分割する)を使用することを前提としていることに注意してください。最後に、レイヤー固有のデータセットとしてgeom_line(...)usingへの呼び出しを追加しますgg

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

R:ggplot2を使用したグループミラーリングされたヒストグラム

分類Dev

ggplot2の凡例に単純なヒストグラムを追加します

分類Dev

レーダー座標を使用してggplot2のヒストグラムに線分を追加します

分類Dev

ggplot2のグループ化された棒グラフに手動のp値を追加する

分類Dev

ビンと同じ高さのggplot2ヒストグラムで選択した観測値のラベルを追加します

分類Dev

ggplot2ヒストグラムバーのグループ化

分類Dev

Rのグループ化された列から単一のヒストグラムを作成する方法

分類Dev

Rでggplot2を使用したさまざまなカテゴリのヒストグラム

分類Dev

ggplot2 を使用した R のグループ化されたボックスプロット上のグループ化された散布図

分類Dev

ggplot2のカウントデータを使用してヒストグラムに密度線を追加する

分類Dev

r-ggplot2-グループ化された棒グラフに違いを追加します

分類Dev

ggplot2を使用したヒストグラム上の密度

分類Dev

ggplot2を使用したRのグループ化された棒グラフ

分類Dev

グループ化された棒グラフ、Rのggplot2は、一度に1つの観測値を表示する必要があります

分類Dev

クラスター化された棒グラフggplot2にカウントラベルを追加します

分類Dev

ggplot2のグループ化された棒グラフ列にラベルを配置する方法

分類Dev

ggplot2にヒストグラムをプロットします

分類Dev

R-グループ化されたヒストグラム

分類Dev

R-グループ化されたヒストグラム

分類Dev

ggplot2のヒストグラムに正規曲線をオーバーレイします

分類Dev

Rグループ化されたggplot2に全体の平均を含める

分類Dev

ggplot2は、グループ化されたデータフレームから最後の変数のみをプロットします

分類Dev

ggplot2のグループ化された棒グラフ

分類Dev

ggplotを使用して正規分布でグループ化されたヒストグラムを作成するにはどうすればよいですか?

分類Dev

ggplot2の複数の変数を使用してヒストグラムに密度線を追加する

分類Dev

ggplot2を使用して、複数のstat_binレイヤーを持つヒストグラムプロットに凡例を追加する

分類Dev

purrr :: mapとggplot2を使用して複数のヒストグラムをプロットします

分類Dev

グループ化された値の棒グラフまたはヒストグラム

分類Dev

ggplot2を使用した生の値[2つのデータフレーム]のグループ化されたドットプロットを含むグループ化された棒グラフ

Related 関連記事

  1. 1

    R:ggplot2を使用したグループミラーリングされたヒストグラム

  2. 2

    ggplot2の凡例に単純なヒストグラムを追加します

  3. 3

    レーダー座標を使用してggplot2のヒストグラムに線分を追加します

  4. 4

    ggplot2のグループ化された棒グラフに手動のp値を追加する

  5. 5

    ビンと同じ高さのggplot2ヒストグラムで選択した観測値のラベルを追加します

  6. 6

    ggplot2ヒストグラムバーのグループ化

  7. 7

    Rのグループ化された列から単一のヒストグラムを作成する方法

  8. 8

    Rでggplot2を使用したさまざまなカテゴリのヒストグラム

  9. 9

    ggplot2 を使用した R のグループ化されたボックスプロット上のグループ化された散布図

  10. 10

    ggplot2のカウントデータを使用してヒストグラムに密度線を追加する

  11. 11

    r-ggplot2-グループ化された棒グラフに違いを追加します

  12. 12

    ggplot2を使用したヒストグラム上の密度

  13. 13

    ggplot2を使用したRのグループ化された棒グラフ

  14. 14

    グループ化された棒グラフ、Rのggplot2は、一度に1つの観測値を表示する必要があります

  15. 15

    クラスター化された棒グラフggplot2にカウントラベルを追加します

  16. 16

    ggplot2のグループ化された棒グラフ列にラベルを配置する方法

  17. 17

    ggplot2にヒストグラムをプロットします

  18. 18

    R-グループ化されたヒストグラム

  19. 19

    R-グループ化されたヒストグラム

  20. 20

    ggplot2のヒストグラムに正規曲線をオーバーレイします

  21. 21

    Rグループ化されたggplot2に全体の平均を含める

  22. 22

    ggplot2は、グループ化されたデータフレームから最後の変数のみをプロットします

  23. 23

    ggplot2のグループ化された棒グラフ

  24. 24

    ggplotを使用して正規分布でグループ化されたヒストグラムを作成するにはどうすればよいですか?

  25. 25

    ggplot2の複数の変数を使用してヒストグラムに密度線を追加する

  26. 26

    ggplot2を使用して、複数のstat_binレイヤーを持つヒストグラムプロットに凡例を追加する

  27. 27

    purrr :: mapとggplot2を使用して複数のヒストグラムをプロットします

  28. 28

    グループ化された値の棒グラフまたはヒストグラム

  29. 29

    ggplot2を使用した生の値[2つのデータフレーム]のグループ化されたドットプロットを含むグループ化された棒グラフ

ホットタグ

アーカイブ