2016-09-23 16 views
1

私は数値とカテゴリ変数を持つデータセットを持っています。数値変数の分布は、カテゴリごとに異なります。私は各カテゴリ変数の "密度プロット"を、密度プロット全体よりも視覚的に小さくなるようにプロットしたいと思います。ggplot混合モデルR

これは、混合モデルを計算せずに混合モデルのコンポーネントに似ています(データを分割するカテゴリ変数をすでに知っているので)。

カテゴリ変数に基づいてグループ化するggplotをとると、4つの密度のそれぞれは実密度であり、1つに統合されます。私が欲しいもの

library(ggplot2) 
ggplot(iris, aes(x = Sepal.Width)) + geom_density() + geom_density(aes(x = Sepal.Width, group = Species, colour = 'Species')) 

enter image description here

は、サブ密度(1に統合していない)など、各カテゴリの密度を持つことです。 Y値を低減するためにIハードコードされた数以上

enter image description here

もたらす(私は3つのだけアイリス種二のために実装された)次のコード

myIris <- as.data.table(iris) 
# calculate density for entire dataset 
dens_entire <- density(myIris[, Sepal.Width], cut = 0) 
dens_e <- data.table(x = dens_entire[[1]], y = dens_entire[[2]]) 

# calculate density for dataset with setosa 
dens_setosa <- density(myIris[Species == 'setosa', Sepal.Width], cut = 0) 
dens_sa <- data.table(x = dens_setosa[[1]], y = dens_setosa[[2]]) 

# calculate density for dataset with versicolor 
dens_versicolor <- density(myIris[Species == 'versicolor', Sepal.Width], cut = 0) 
dens_v <- data.table(x = dens_versicolor[[1]], y = dens_versicolor[[2]]) 

# plot densities as mixture model 
ggplot(dens_e, aes(x=x, y=y)) + geom_line() + geom_line(data = dens_sa, aes(x = x, y = y/2.5, colour = 'setosa')) + 
    geom_line(data = dens_v, aes(x = x, y = y/1.65, colour = 'versicolor')) 

に似。 ggplotでそれを行う方法はありますか?またはそれを計算する?あなたのアイデアを

感謝。

答えて

1

これはどういう意味ですか?あなたはスケールを変更する必要があります。

ggplot(iris, aes(x = Sepal.Width)) + 
    geom_density(aes(y = ..count..)) + 
    geom_density(aes(x = Sepal.Width, y = ..count.., 
       group = Species, colour = Species)) 

別のオプションは、

ggplot(iris, aes(x = Sepal.Width)) + 
    geom_density(aes(y = ..density..)) + 
    geom_density(aes(x = Sepal.Width, y = ..density../3, 
        group = Species, colour = Species)) 
+0

こんにちは、はいそれは有望に見えるかもしれません。私が虹彩データセットのエントリの数、すなわちnrow(iris)= 150でそれをスケーリングすると、それはかなり良いように見える。だから、..カウント..それは.. ../150です。これが正しい方法だと誰も確認できますか?私の場合、各カテゴリーの数字は同じではありませんが、データの約60%を占めるカテゴリーが1つあります。 – user3702510

+0

こんにちは、私はそれについて考え、それについて議論し、それは正解です。速い返信のために@コタ・モリに感謝します。 y = ..count ../ Number_of_rows_of_entire_datasetを取るか、y = ..density ../ number_of_categoriesを取る – user3702510

関連する問題