Σ
SDCalc
ΜέτριοιΈννοιες·12 min

Ανθεκτική Στατιστική: MAD, IQR και Μέθοδοι Ανθεκτικές σε Ακραίες Τιμές

Πλήρης οδηγός ανθεκτικής στατιστικής που περιλαμβάνει Διάμεση Απόλυτη Απόκλιση (MAD) και Ενδοτεταρτημοριακό Εύρος (IQR). Μάθετε πότε να χρησιμοποιείτε μέτρα διασποράς ανθεκτικά σε ακραίες τιμές με παραδείγματα και κώδικα Python.

Γιατί Ανθεκτική Στατιστική;

Η τυπική απόκλιση είναι ένα ισχυρό μέτρο διασποράς, αλλά έχει μια κρίσιμη αδυναμία: εξαιρετική ευαισθησία στις ακραίες τιμές. Μια μόνο ακραία τιμή μπορεί να διογκώσει δραματικά την ΤΑ, δίνοντας παραπλανητική εικόνα της τυπικής μεταβλητότητας.

Η ανθεκτική στατιστική παρέχει μέτρα διασποράς που αντιστέκονται στην επίδραση ακραίων τιμών, καθιστώντας τα απαραίτητα για πραγματικά δεδομένα όπου σφάλματα μέτρησης, λάθη καταχώρησης ή γνήσιες ακραίες περιπτώσεις είναι συνηθισμένα.

Παράδειγμα: Η Επίδραση Ακραίας Τιμής

Δεδομένα: 10, 12, 11, 13, 12, 11, 100 (μία ακραία τιμή) Τυπική Απόκλιση: 32,4 (κυριαρχείται από την ακραία τιμή) MAD: 1,0 (αγνοεί την ακραία τιμή) IQR: 1,5 (αγνοεί την ακραία τιμή)

Σημείο Θραύσης

Το “σημείο θραύσης” ενός στατιστικού είναι η αναλογία δεδομένων που μπορεί να είναι ακραία πριν το στατιστικό γίνει ανούσιο. Η ΤΑ έχει σημείο θραύσης 0% (μία ακραία τιμή μπορεί να την καταστρέψει). Η MAD και το IQR έχουν σημεία θραύσης 50% — τα μισά δεδομένα σας μπορεί να είναι ακραίες τιμές και αυτά τα μέτρα παραμένουν αξιόπιστα.

Διάμεση Απόλυτη Απόκλιση (MAD)

Η MAD είναι το πιο ανθεκτικό μέτρο διασποράς. Υπολογίζει τη διάμεσο των απόλυτων αποκλίσεων από τη διάμεσο:

MAD Formula

MAD = median(|xᵢ - median(x)|)
1

Εύρεση Διαμέσου

Υπολογίστε τη διάμεσο του συνόλου δεδομένων σας.
2

Υπολογισμός Αποκλίσεων

Αφαιρέστε τη διάμεσο από κάθε τιμή και πάρτε τις απόλυτες τιμές.
3

Εύρεση MAD

Υπολογίστε τη διάμεσο αυτών των απόλυτων αποκλίσεων.

Κλιμάκωση MAD για εκτίμηση σ: Για κανονικά κατανεμημένα δεδομένα, MAD ≈ 0,6745 × σ. Για εκτίμηση ΤΑ από MAD, πολλαπλασιάστε με 1,4826:

SD Estimate from MAD

σ̂ = 1.4826 × MAD

Γιατί 1,4826;

Αυτός ο συντελεστής κλιμάκωσης προκύπτει από τη σχέση μεταξύ MAD και ΤΑ για κανονικές κατανομές. Εξασφαλίζει ότι η κλιμακωμένη MAD είναι αμερόληπτος εκτιμητής της πραγματικής τυπικής απόκλισης όταν τα δεδομένα είναι κανονικά.

Ενδοτεταρτημοριακό Εύρος (IQR)

Το IQR μετρά τη διασπορά του μεσαίου 50% των δεδομένων — το εύρος μεταξύ 25ου και 75ου εκατοστημορίου:

IQR Formula

IQR = Q3 - Q1 = 75th percentile - 25th percentile

Το IQR χρησιμοποιείται ευρέως επειδή είναι απλό στην κατανόηση, εύκολο στην οπτικοποίηση σε θηκογράμματα (box plots) και αποτελεί τη βάση του κοινού κανόνα “1,5×IQR” για ανίχνευση ακραίων τιμών.

Κλιμάκωση IQR για εκτίμηση σ: Για κανονικά δεδομένα, IQR ≈ 1,35 × σ. Για εκτίμηση ΤΑ από IQR:

SD Estimate from IQR

σ̂ = IQR / 1.35 ≈ 0.7413 × IQR

Σύγκριση Ανθεκτικών Μέτρων

Τυπική Απόκλιση

Χρησιμοποιεί όλα τα σημεία δεδομένων · Πιο αποτελεσματική για κανονικά δεδομένα · Πολύ ευαίσθητη σε ακραίες τιμές · Σημείο θραύσης: 0%

MAD

Πιο ανθεκτικό μέτρο · Χρησιμοποιεί διάμεσο (όχι μέσο) · Ανεπηρέαστο από ακραίες τιμές · Σημείο θραύσης: 50%

IQR

Εύκολο στην κατανόηση · Χρησιμοποιείται σε θηκογράμματα · Αγνοεί το ακραίο 50% · Σημείο θραύσης: 25%

Πότε να Χρησιμοποιείτε Ανθεκτική Στατιστική

  • Διερευνητική ανάλυση: Όταν δεν ξέρετε αν υπάρχουν ακραίες τιμές, ξεκινήστε με ανθεκτικά μέτρα
  • Θέματα ποιότητας δεδομένων: Όταν τα δεδομένα μπορεί να περιέχουν σφάλματα ή προβλήματα μέτρησης
  • Βαρυουρές κατανομές: Όταν αναμένονται ακραίες τιμές (χρηματοοικονομικές αποδόσεις, ασφαλιστικές αξιώσεις)
  • Μικρά δείγματα: Όταν οι ακραίες τιμές έχουν δυσανάλογη επίδραση λόγω λίγων παρατηρήσεων
  • Ανίχνευση ακραίων τιμών: Η χρήση ΤΑ για ανίχνευση ακραίων τιμών είναι κυκλική· χρησιμοποιήστε IQR ή MAD

Παραδείγματα Υλοποίησης

Python
import numpy as np
from scipy import stats

def mad(data):
    """Median Absolute Deviation"""
    median = np.median(data)
    return np.median(np.abs(data - median))

def scaled_mad(data):
    """MAD scaled to estimate SD (for normal data)"""
    return 1.4826 * mad(data)

def iqr(data):
    """Interquartile Range"""
    return np.percentile(data, 75) - np.percentile(data, 25)

# Compare on data with outlier
data = [10, 12, 11, 13, 12, 11, 100]
print(f"SD: {np.std(data, ddof=1):.2f}")
print(f"MAD: {mad(data):.2f}")
print(f"Scaled MAD: {scaled_mad(data):.2f}")
print(f"IQR: {iqr(data):.2f}")