2015-06-28 12 views
5

Ich versuche, die mittlere durchschnittliche Abweichung einer Stichprobe ("S") von Zahlen zu berechnen. Die Ergebnisse, die ich erhalte, wenn ich die "mad()" - Funktion verwende, und die Berechnungen der mittleren Durchschnittsabweichung um jeweils einen Schritt sind unterschiedlich. Warum?Warum unterscheiden sich die Ergebnisse von mad (x) von den erwarteten Ergebnissen?

s<- c(100,110,114,121,130,130,160) 

Mit dem "mad()" Funktion, die ich erhalten:

> mad(s) 
[1] 13.3434 

Wenn die Formel brechen und dabei die gleiche Operation einen Schritt zu einer Zeit, die ich erhalten:

> sum(abs(s-mean(s)))/length(s) 
[1] 14.08163 

Warum unterscheiden sich diese Ergebnisse?

Mache ich einen Fehler beim Eingeben meiner Formel? (Das wäre nicht überraschend - ich fange gerade an, R zu lernen). Was ist falsch an meiner Formel?

Oder ist die Formel, die R die mittlere durchschnittliche Abweichung unterscheidet sich von dem folgenden (angegeben auf Wikipedia)

MAD = (Summe aus (absolute Werte von (jeden Wert minus Mittelwert für Probe zu berechnen verwendet))) geteilt durch (die Anzahl der Werte in der Stichprobe)?

(Vielen Dank für Ihre Hilfe!)

Antwort

8

"MAD" ist leider ein Begriff mit mehreren Bedeutungen; mittlere absolute Abweichung vom Mittelwert (manchmal nur MD oder mittlere Abweichung genannt), mittlere absolute Abweichung vom Median, mittlere absolute Abweichung vom Median (der bei der Berechnung des Maßstabs in einem Laplace entsteht) usw. Wikipedia - obwohl oft nützlich - - ist nicht der Schiedsrichter der Nutzung; es kann manchmal ein wenig idiosynkratisch in seiner Verwendung von Begriffen sein (das ist nicht besonders eine Kritik von Wikipedia; es ist teilweise in der Natur der Sache inhärent). [Persönlich in Abwesenheit von weiteren Hinweisen würde ich MAD normalerweise als mediane absolute Abweichung vom Median interpretieren und erwarten, daß die mittlere absolute Abweichung vom Mittelwert, wenn nicht vollständig geschrieben, entweder als "mittlere Abweichung"/"MD" oder "MD" geschrieben wird. mittlere absolute Abweichung“]

die Frage, welche R computing durch das einfache Hilfsmittel ?mad gelöst ist.

mad {stats} R Documentation 

Median Absolute Deviation 

Description 

Compute the median absolute deviation, i.e., the (lo-/hi-) median of the 
absolute deviations from the median, and (by default) adjust by a factor 
for asymptotically normal consistency. 

nur als allgemeiner Vorschlag, wenn eine Funktion zum ersten Mal verwenden, don‘ Ich nehme an, Sie wissen, was es tut. Zum Beispiel, bevor ich die Hilfe für MAD zum ersten Mal gelesen habe, hätte ich nicht erwartet, dass es mit dieser Konstante als Standard multipliziert. (Ich denke, das ist eine schlechte Idee, denn das bedeutet standardmäßig nicht alles genannt MAD berechnet, sondern stattdessen eine robuste Schätzung von σ für eine Population, wo der nicht kontaminierte Teil Gaussian ist - aber so funktioniert es.)

Die meisten Funktionen werden tun, was Sie denken, sie tun, aber ein paar können Sie überraschen. Überprüfen Sie die Definitionen in der Hilfe, schauen Sie sich an, wie die Ein- und Ausgänge definiert sind, und probieren Sie die Beispiele aus.

Übrigens, wenn Sie die mittlere (absolute) Abweichung vom Mittelwert wollen, können Sie das durch mad(x,mean(x),1) bekommen. Aber wenn Sie Mittelwert Abweichung von der Mittelwert wollen, weiß ich nicht, ob es etwas einfacher zu schreiben ist als mean(abs(x-mean(x))); es hat zumindest den Vorteil, dass es absolut explizit ist.

+0

Vielen Dank für Ihre Antwort zu berechnen! Ich versuchte, die mittlere Abweichung vom Mittelwert zu erreichen (für eine Probe/Vektor (X <-), und erkannte nicht, dass Mad (X) –

1

Wie @Glen_b vorgeschlagen, mad tut mehr als die Anwendung einer Formel, einschließlich einer "Korrektur" für die Konsistenz mit der Normalität.

Schauen Sie ein, die Beispiele:

#with mad 
mad(s) 
mad(s,center= mean(s)) 

# using formulas 
sum(abs(s-median(s)))/length(s) 
sum(abs(s-mean(s)))/length(s) 

> mad(s) 
[1] 13.3434 
> mad(s,center= mean(s)) 
[1] 14.1906 
> 
> sum(abs(s-median(s)))/length(s) 
[1] 13.71429 
> sum(abs(s-mean(s)))/length(s) 
[1] 14.08163 
+0

Vielen Dank! Ich erkannte nicht, dass die Mad() Ich habe alles getan, was die durchschnittliche mittlere Abweichung nach der Formel verlangt. Du und glen_b haben meine Frage vollständig beantwortet. –

0

Als Extra, wenn Sie versuchen, mittlere absolute Abweichung vom Median, Typ

mad(s,constant=1) 
+0

Es tut mir leid, es zu schreiben, aber deine Antwort scheint mir mehr wie ein Kommentar als eine vollständige Antwort. –