2016-04-14 11 views
1

Ich verwende histogram aus dem Gitter Paket, um zwei Histogramme aufzuzeichnen, die auf einer Variablen mit zwei Optionen konditioniert sind: männlich oder weiblich.Bedingte Histogramme mit Gitterpaket, falsche Ausgabeplots

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

Aber, wenn ich mir die Daten tatsächlich aussehen, sind diese Histogramme nicht korrekt. Durch Auftragen:

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

und:

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

Hat jemand einen Einblick darüber, warum diese Ausgaben nicht übereinstimmen? Ich habe ein paar mehr binäre Panel zu plotten, und sie separat zu tun, vereitelt wirklich den Zweck der Arbeit mit der Gitter Paket!

Ich entschuldige mich, wenn dies ein grundlegendes Missverständnis eines einfachen Konzepts widerlegt, ich bin immer noch sehr viel Anfänger bei R! Vielen Dank für die Hilfe.

+0

Bitte beachten Sie [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask). Sie sollten zumindest einige Beispieldaten bereitstellen, um den Code reproduzierbar zu machen. – fdetsch

+1

Hinweis: Wenn Sie eine Teilmenge Ihrer Daten aufzeichnen, ** **) ** ** Unterteilen Sie die Datei data.frame im Argument 'data' oder ** 2) ** verwenden Sie das Argument' subset'. Subsetting in der Formel ist wahrscheinlich nicht der Weg, dies zu tun. – BenBarnes

+0

Danke Ben; Gibt es einen Grund, das Datenargument außer der Ästhetik zu verwenden und sich dabei ständig $ row zu sparen? Nur neugierig! – jwint

Antwort

0

Es stellte sich heraus, dass das Problem um eine Nichtübereinstimmung der Daten wurde auf die Ausschlüsse basierend angewendet, um die Klammern. Statt:

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

Es sollte lauten:

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)) 

Beachten Sie, dass die Ausschlüsse jetzt sowohl auf die Hausarbeitszeit und Geschlecht Variablen angewendet werden, um die Diskrepanzen in den Daten zu beseitigen.

Die richtige Grafik wurde unten eingefügt. Danke nochmal an alle für die Anleitung.

Updated Histogram

2

Das Problem hängt mit unterschiedlichen Werten in panel.args.common zusammen (d. H. Die Argumente, die allen Panelfunktionen gemeinsam sind, siehe ?trellis.object). Hier ist ein Beispielcode, um meinen Standpunkt zu verdeutlichen.

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 (Anzahl von Histogramm-Bins, siehe ?histogram) und breaks (Haltepunkte des Bins) werden über alle Zieltafeln berechnet, und daher variieren zwischen hist1 und hist2. Wenn Sie möchten, dass diese Argumente identisch sind, damit die beiden Diagramme ähnlich aussehen, müssen Sie nur die folgende Codezeile ausführen, nachdem die beiden Diagramme erstellt wurden.

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

Danke für die Hilfe. Das Problem besteht jedoch nicht darin, dass Achsen und Fachbreiten unterschiedlich sind. Das Problem besteht darin, dass der Wert für die männlichen Daten bei den Sex-Plots c ist. 150 Minuten. Im Split-Panel ist die Verteilung jedoch völlig unterschiedlich (auch der maximale Wert). Warum geben die beiden Diagrammtypen, basierend auf dem Code, nicht die gleichen Werte aus? Danke noch einmal! – jwint

+0

Ah, jetzt verstehe ich Ihren Standpunkt. Sie sollten dieses Problem an die [R-Hilfe-Mailingliste] (https://www.r-project.org/mail.html) melden, da es wahrscheinlich eine Moderation von der Entwicklerseite erfordert. – fdetsch