2016-10-25 6 views
0

Also, ich versuche, ein Histogramm über einen Datenrahmen zu zeichnen -> y für die Spalte -> ProsperRating..numeric. (Es gibt einen Punkt am Ende des Variablennamens).R Histogramm über diskrete Variable - Zwei der Bins bleiben

Also, das ist, was ich bisher habe. (Nach Überlagerung der normalen Kurve).

h <- hist(y$ProsperRating..numeric.,breaks = c(0,1,2,3,4,5,6,7)) 
xfit <- seq(min(y$ProsperRating..numeric.) , max(y$ProsperRating..numeric.) , length = nrow(y)) 
yfit <- dnorm(xfit, mean = mean(y$ProsperRating..numeric.), sd = sd(y$ProsperRating..numeric.)) 
yfit <- yfit * length(y$ProsperRating..numeric.) *diff(h$mids[1:2]) * 1.8 
lines(xfit,yfit,lwd = 2) 

Histogram plot - Notice 1 and 2 numbered bins sticking together

Gibt es eine andere Art, wie ich dies auch tun könnte? Insgesamt noob zu R.

Edit 1: Prosper Rating numerisch ist eine Spalte in meinem Datenframe. Es enthält den Wert 1-7 in Inkrementen auf 1 (x = seq(1,7,1)). Das versuche ich hier zu ergründen.

Edit 2: Hinzufügen der neuen Normalkurve. Code wurde geändert, um Unterbrechungen anzuzeigen. New Normal Curve! Keine Ahnung, ob dies richtig gemacht wird.

+0

Und was ist dein Problem? – Jimbou

+0

Ich brauche nicht die ersten zwei Fächer, um wie im Bild zu haften. Anders als das ist es in Ordnung (ich denke) –

+0

fügen Sie einige reproduzierbare Daten, z. mit 'dput (your_data)' – Jimbou

Antwort

0

Pausen ist nur ein Vorschlag.

Die einzige Möglichkeit zur expliziten Steuerung der Behältergröße unter der Annahme, dass das Diagramm korrigiert wird. Setzt Pausen auf einen Vektor von X-Achsen-Bruchstellen.

Das besagt, dass die Bins "zusammenkleben", denn genau so sollte es aussehen. Es gibt fast 1000 beobachtete Werte zwischen 1,5 und 2. Sie können sie trennen, indem Sie eine Bin hinzufügen, in der keine Daten zwischen ihnen vorhanden sind, oder das Hinzufügen einer Bin von 0 bis 1 kann das visuelle Problem breaks = c(0,1,2,3,4,5,6,7) beheben, ohne Ihre Daten zu betrachten.

Ich schlage vor, dies zu tun.

x <- c(rep(1,8000),rep(2,10000),rep(3,15000), rep(4, 20000), rep(5, 15500), rep(6, 14500), rep(7, 5000)) 
hist(x, breaks = c(0,1,2,3,4,5,6,7)) 

Wird die Räume alle zusammen los, die ich denke, ist viel besser zu sehen sowieso.

+0

Hey @Matt L. Das hat super funktioniert. Vielen Dank. Können Sie mir sagen, ob die normale Kurve korrekt aussieht? Ich habe das Gefühl, dass es für die gegebene Handlung nicht korrekt ist. Vielen Dank! –

+0

@WhatIfTheyGetMe Es sieht korrekt aus. Möglicherweise möchten Sie eine T-Verteilung anstelle einer normalen anpassen. Das t hat dickere Schwänze und ich denke es würde besser zu deinen Daten passen. Um die Grenzen des neuen Graphen zu fixieren, können Sie innerhalb der Hist-Funktion "ylim = c (0,20000)" eingeben. –

+0

Genau das, was ich wollte. Danke @Matt L. du bist toll, wenn dir das schon jemand gesagt hat! –