2016-04-24 8 views
0

Ich schrieb den folgenden Code eine flache statistische Verteilung zu demonstrieren:Histogrammfehler in der Basisgrafik?

m <- trunc(runif(100000,1,21)) 
table(m) 
hist(m) 

Die Werte aus der Tabelle (m) sind wie erwartet:

5010 5053 4951 5030 5034 5131 4895 5032 4974 5073 4947 5030 4939 5011 5069 
4910 4992 4990 4946 4983 

jedoch hist (m) zeigt doppelt so viele zählt in der erste Behälter als erwartet:

histogram with first cell too large!

ich versuchte Pausen Einstellung: hist (m, Pausen = 21) 20, 21 oder andere Werte, aber das Problem bleibt bestehen.

Ich denke, es könnte etwas mit dem "hübschen" Operator zu tun haben, aber nachdem ich eine Stunde damit verbracht habe, kann ich immer noch nicht sehen, wie man ein vernünftiges Histogramm bekommt.

+0

Ausführliche Erklärung zu geben, wie die Pausen berechnet man einen Blick auf [diesen Beitrag] hat (http: // planspace .org/20141225-how_does_r_calculate_histogram_break_points /). Der Prozess der Break-Berechnung beginnt mit "ceiling (log2 (length (x)) + 1)", das später an "pretty" übergeben wird, wie im verlinkten Artikel erklärt. – Konrad

Antwort

1

Sie können das richtige Histogramm erhalten über

hist(m, breaks=0:21) 

Wenn man sich ?hist suchen und gehen Sie auf die breaks Abschnitt werden kommen Sie zu:

--snip--

In den letzten drei Fällen ist die Nummer nur ein Vorschlag; Die Breakpoints werden auf hübsche Werte gesetzt.

dh Wenn Sie mögen genau die Pausen angeben, benötigen Sie einen Vektor

+0

Danke dafür, und danke Konrad. Ich habe mir die Haare geraubt - das ist hart, weil ich kaum welche habe! ...George... –