2016-04-14 26 views
1

私はlatticeパッケージからを使用して、2つのオプション、男性または女性の変数に2つのヒストグラムコンディショニングをプロットします。ラティスパッケージを使用した条件付きヒストグラム、出力プロットが正しくない

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000)] | raw$Gender) 

Output of code: two histograms, minutes doing housework by gender

しかし、私は実際のデータを見ると、これらのヒストグラムが正しくありません。

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000) & (raw$Gender == "Female")] 

と::プロットすることにより

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000) & (raw$Gender == "Male")] 

I get two histograms again, but they look very different

を誰もがこれらの出力が一致しない理由について洞察力を持っていますか?私はたくさんのバイナリタイプのパネルを作図して、それを別々にしなければならないので、格子パッケージを使って作業するという目的を本当に打ち負かすのです!

これが簡単な概念の根本的な誤解に嘘をつきましたら、私はお詫び申し上げます。私はまだRの初心者です!助けてくれてありがとうございました。

+0

[どのように私は良い質問をするのですか?](http://stackoverflow.com/help/how-to-ask)を参照してください。コードを再現できるようにするには、少なくともサンプルデータを提供する必要があります。 – fdetsch

+1

注:データのサブセットをプロットするとき、** 1)** data'frameを 'data'引数にサブセットするか、** 2)**サブセット引数を使用してください。数式にサブセットを入れることは、おそらくこれについて行く方法ではないでしょう。 – BenBarnes

+0

ありがとうございました。美学以外のデータの議論を使用して、いつも自分が$ rawと入力することを避ける理由がありますか?ちょっと興味があるんだけど! – jwint

答えて

0

問題は、ブラケットを使用して適用除外に基づいてデータの不一致を中心にしたことが判明。代わりに:

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000)] | raw$Gender) 

読み込みする必要があります。除外は、現在のデータで不一致を解消、家事の時間とジェンダー変数の両方に適用されていることを

histogram(~ Housework_Tot_Min [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)] | 
     Gender [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)], data = raw, 
     main = "Time Observed Housework by Gender", 
     xlab = "Minutes spent", 
     breaks = seq(from = 0, to = 400, by = 20)) 

注意を。

正しいプロットが下に貼り付けられています。ガイダンスのすべてにもう一度感謝します。

Updated Histogram

2

この問題は、panel.args.common(つまり、すべてのパネル関数に共通の引数、?trellis.objectを参照)の値が異なることと関連しています。私のポイントを明確にするためのサンプルコードをいくつか紹介します。

library(lattice) 

## paneled plot 
hist1 <- histogram(~ Sepal.Width | Species, data = iris) 
hist1$panel.args.common 

# $breaks 
# [1] 1.904 2.228 2.552 2.876 3.200 3.524 3.848 4.172 4.496 
# 
# $type 
# [1] "percent" 
# 
# $equal.widths 
# [1] TRUE 
# 
# $nint 
# [1] 8 

## single plot  
hist2 <- histogram(~ Sepal.Width, data = iris[iris$Species == "setosa", ]) 
hist2$panel.args.common 

# $breaks 
# [1] 2.216 2.540 2.864 3.188 3.512 3.836 4.160 4.484 
# 
# $type 
# [1] "percent" 
# 
# $equal.widths 
# [1] TRUE 
# 
# $nint 
# [1] 7 

nint(ヒストグラムビンの数、?histogram参照)、breaks(ビンのブレークポイント)は、すべてのターゲットパネルにわたって計算、したがってhist1hist2間で変化しています。これらの引数を同じにして2つのプロットが似ているようにするには、2つのプロットが作成された後で次のコード行を実行するだけです。

hist2$panel.args.common <- hist1$panel.args.common 
## or vice versa, depending on the number of bins and breakpoints to use 

library(gridExtra) 
grid.arrange(hist1, hist2, ncol = 2) 

histogram

+0

助けてくれてありがとう。しかし、問題は軸とビンの幅が異なるということではありません。問題は、単一の性別プロットで、男性データの最大値がcであることです。 150分。しかし、スプリットパネルでは、分布はまったく異なります(最大値も異なります)。コードに基づいて、なぜ2つのタイプのプロットが同じ値を出力しないのですか?再度、感謝します! – jwint

+0

ああ、今私はあなたのポイントを得る。この問題は、開発者サイトからのモデレーションが必要なため、[R-helpメーリングリスト](https://www.r-project.org/mail.html)に報告してください。 – fdetsch

関連する問題