2014-01-19 11 views
15

Ein schneller für Sie, am liebsten R-Gurus:Calculating Perzentil der Datenmengenspalte

ich einen Auftrag tun, und ich bin gebeten worden, in dieser Übung Basisstatistiken aus dem infert-Datensatz zu erhalten (es ist eingebaut), und speziell eine seiner Spalten, infert$age.

Für alle, die nicht vertraut mit dem Datensatz:

> table_ages  # Which is just subset(infert, select=c("age")); 
    age 
1 26 
2 42 
3 39 
4 34 
5 35 
6 36 
7 23 
8 32 
9 21 
10 28 
11 29 
... 
246 35 
247 29 
248 23 

I Medianwerte der Spalte, Varianz, Schiefe, Standardabweichung, die alle in Ordnung war, bis ich das zu findet gefragt wurde, hätte zu finden Spalte "Perzentil".

Ich konnte bisher nichts finden, und vielleicht habe ich es falsch aus dem Griechischen übersetzt, der Sprache der Aufgabe. Es war "ποσοστημόρια", Google Translate wies auf den englischen Begriff "percentiles" hin.

Irgendwelche Tutorials oder Ideen zum Finden dieser "Perzentile" von infert$age?

+7

See '? Quantile' vielleicht? – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto Dies sieht grundlegend genug aus, um das Gefühl der restlichen Übungen zu erreichen. Ich denke, das war es. Sie haben mich gerade in die Lösung gestoßen, danke: p –

Antwort

22

Wenn Sie einen Vektor x bestellen und die Werte finden, die halb durch den Vektor sind, haben Sie nur einen Median oder 50. Perzentil gefunden. Die gleiche Logik gilt für jeden Prozentsatz. Hier sind zwei Beispiele.

x <- rnorm(100) 
quantile(x, probs = c(0, 0.25, 0.5, 0.75, 1)) # quartile 
quantile(x, probs = seq(0, 1, by= 0.1)) # decile 
2
table_ages <- subset(infert, select=c("age")) 
summary(table_ages) 
#   age  
# Min. :21.00 
# 1st Qu.:28.00 
# Median :31.00 
# Mean :31.50 
# 3rd Qu.:35.25 
# Max. :44.00 

Dies ist wahrscheinlich das, was sie suchen. angewendet auf einen numerischen Wert gibt die Min-, Max-, Mittelwert-, Median- und 25. und 75. Perzentile der Daten zurück.

Beachten Sie, dass

summary(infert$age) 
# Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 21.00 28.00 31.00 31.50 35.25 44.00 

Die Zahlen sind die gleichen, aber das Format ist anders. Dies liegt daran, table_ages ist ein Datenrahmen mit einer Spalte (Alter), während infert$age ist ein numerischer Vektor. Versuchen Sie, summary(infert) einzugeben.

16

Die quantile() Funktion wird viel von dem tun, was Sie wahrscheinlich wollen, aber da die Frage mehrdeutig war, werde ich eine alternative Antwort liefern, die etwas etwas anderes als quantile() tut.

ecdf(infert$age)(infert$age) 

einen Vektor mit der gleichen Länge wie infert$age gibt den Anteil des infert$age erzeugen, der unter jeder Beobachtung ist. Sie können die ecdf Dokumentation lesen, aber die Grundidee ist, dass ecdf() Ihnen eine Funktion gibt, die die kumulative Verteilung zurückgibt. So ecdf(X)(Y) der Wert der kumulativen Verteilung von X an den Punkten in Y. ist Wenn Sie nur die Wahrscheinlichkeit, unter 30 wissen wollte (also das, was 30 Perzentil in der Probe vorhanden ist), könnten Sie

ecdf(infert$age)(30) 

sagen Der Hauptunterschied zwischen diesem Ansatz und der Verwendung der quantile() Funktion ist, dass quantile() erfordert, dass Sie in die Wahrscheinlichkeiten setzen, um die Ebenen herauszuholen, und dies erfordert, dass Sie die Ebenen setzen, um die Wahrscheinlichkeiten herauszubekommen.

0

Sie können auch die hmisc Paket verwenden, die Sie folgende Perzentile geben:

0,05, 0.1, 0,25, 0,5, 0,75, 0,9, 0,95

Verwenden Sie einfach die (table_ages) beschreiben

Verwandte Themen