Wie finde ich die Medianspalte in einer Datenbank?

8

Ich habe Daten zur Bauzeit von Wohnungen in Verbreitungsgebieten. Ich habe diese Daten auf meine Untersuchungsgebiete übertragen und möchte für jedes Untersuchungsgebiet die mittlere Bauzeit ermitteln. Das einzige Problem ist, dass die Informationen der Spalten die Anzahl der Wohnungen sind und ich nicht möchte, dass der Median dieser Spalten, sondern der Titel der Spalte die Zeile in ein neues Feld einfügt (oder etwas anderes, das dies anzeigt, vorzugsweise den Punkt im Text) Format, aber es ist nicht das Ende der Welt, wenn es nur eine Zahl ist, die den Zeitraum angibt.

Ich füge ein Bild der Attributtabelle mit den entsprechenden hervorgehobenen Feldern hinzu. Es gibt ein MEDIAN-Feld, aber die von mir verwendeten Daten wurden von einer anderen Person erstellt und schlecht dokumentiert. Daher bin ich mir nicht sicher, ob die Berechnung bereits durchgeführt wurde oder nicht.

(Die sieben Spalten stellen sieben nicht überlappende Zeiträume dar, die chronologisch geordnet sind. Das Feld [Median] scheint den Zeitraum zu indizieren, in dem die gesamte Konstruktion zur Hälfte abgeschlossen war, dh es zeichnet die Medianzeit auf. )

Screenshot des Tisches

Emily
quelle
1
Fragen Sie nach dem Namen (oder Index) des Feldes , in dem der mittlere Wert auftritt? (Dies ist eindeutig nicht der aktuelle [Median] -Wert.) Oder fragen Sie vielleicht nach dem Namen (oder Index) des Zeitraums, in dem die erste Hälfte aller Konstruktionen angetroffen wurde? In Zeile 1 betrug die Gesamtkonstruktion am Ende der Zeiträume beispielsweise 45, 180, 485, 1495, 1995, 2130, 2130. Der Median von 2130/2 = 1065 trat während der vierten Periode auf (und natürlich [Median ] = 4). Das würde normalerweise nicht als "Median" bezeichnet, sieht aber mit den aktuellen Daten konsistent aus.
whuber
@whuber, ich bin nur paranoid, dass es falsch ist, weil der Mann, der das zusammengestellt hat, in Vancouver ist und ich ihn nicht direkt fragen kann und er nichts in den Metadaten dokumentiert hat.
Emily
Ich habe immer noch keine Ahnung, was "Medianspalte" bedeutet - kann jemand den Titel und die Frage umformulieren?
blah238
1
@blah Die Terminologie ist in der Tat korrekt, wie zu Beginn meiner Antwort erläutert und in einem Kommentar zur Antwort von Nathanus näher erläutert. Um auf Ihre Anfrage zu antworten, habe ich der Frage einen Absatz hinzugefügt.
whuber

Antworten:

8

Angenommen, die Spalten werden in zeitlicher Reihenfolge angezeigt, zeigt die erste Zeile (zum Beispiel) an, dass die gesamte Konstruktion in jedem Zeitraum ausgeführt wurde

0, 0+45 = 45, 45+135 = 180, 180+405 = 585, 585+1010 = 1595, ..., 2230+0 = 2230.

Der Bau war zur Hälfte um 2230/2 = 1115 abgeschlossen. Dies geschah während der Periode 4, da am Ende der Periode 3 die Summe 585 betrug, am Ende der Periode 4 die Summe 1595 und 585 <= 1115 <1595.

Dies scheint das Ergebnis der Spalte [Median] zu sein, die den Index der Periode angibt (beginnend mit 1 links).

Sie können dies in Ihrer Lieblingssprache codieren . Die Tabelle ist jedoch so klein (100 Zeilen), dass eine Tabelle praktisch ist, wenn Sie nur überprüfen möchten, was Sie in Python formeller tun oder was auch immer. So könnte es aussehen:

Kalkulationstabelle

Die ersten drei Datenzeilen haben dieselben Werte wie Ihre. Die nächsten beiden Datenzeilen (umgeben von Leerzeilen) werden weiter unten in Ihrer Tabelle ausgewählt. Die letzten fünf Datenzeilen üben den Algorithmus ein wenig aus.

(Beachten Sie, wie in den letzten beiden Zeilen der Tabelle gezeigt, wie Excel den späteren Zeitraum auswählt, wenn die Mitte genau zwischen zwei Zeiträumen liegt. Dies ist nicht unbedingt die "richtige" Antwort, aber eine gültige.)

Hier sind die Formeln in den Spalten H: R:

Formeln

Sie müssen nicht alle eingeben. Die einzige Eingabe ist:

  • =H2+A2in I2. Ziehen Sie dies durch O2. Dies berechnet die kumulierten Summen. Es erfordert, dass die Spalten A: G in chronologischer Reihenfolge sind.

  • =O2/2in P2. Dies ergibt die Hälfte der Gesamtsumme.

  • =Match(P2,H2:O2,1)in Q2. Dies indiziert die Spalte, in der die Konstruktion zur Hälfte abgeschlossen war.

  • =Offset($A$1:$G$1,0 0, Q2-1, 1, 1)in R2. Dadurch wird die Spaltenüberschrift erhalten, die dem Index entspricht.

Fügen Sie dann die 0gesamte Spalte H ein und ziehen Sie I2: R2 nach unten auf so viele Zeilen wie nötig.

Dies dient effektiv als Pseudocode für den Algorithmus. Der schwierigste Teil ist die Suche nach der Implementierung der Excel- MATCHFunktion. Dies erfordert jedoch kein Handwerk: Es ist nicht ineffizient, jedes Array kumulativer Summen nacheinander zu durchsuchen (und nicht mit dem bevorzugten binären Suchalgorithmus), da diese Arrays so kurz sind.

whuber
quelle
Vielen Dank whuber! Das habe ich gesucht. :)
Emily
1

Wenn Sie die Median-Spalte zurückgeben möchten, würde ich wahrscheinlich einen Python-Cursor verwenden, um durch Zeilen zu iterieren. Verwenden Sie die Felder, um eine Liste auszufüllen, und geben Sie dann das mittlere Element zurück (wird für 7 Elemente bei [3] indiziert), nachdem Sie die Funktion sortiert () in der von Ihnen erstellten Liste aufgerufen haben. Ich werde dir ein bisschen Code schreiben, wenn ich vom Mittagessen zurück bin.

Nathanus
quelle
Warten Sie mit dem Codieren, bis Sie sicher sind, dass dies erforderlich ist!
whuber
Ob es das Jahr oder der Betrag ist, ist nur der Unterschied zwischen einem Wörterbuch und einer Liste, sollte ich denken.
Nathanus
Ich habe den Kommentar von a la @ whuber zu meiner Frage manuell durchgesehen und vielleicht ist die Spalte korrekt, obwohl es schön wäre zu wissen, wie dies für zukünftige Studienregionen (die diese Spalten nicht haben) zu tun ist
Emily
Ich denke, es ist eine ganz andere Berechnung, @Nathanus. Einer betrachtet die Daten als eine ungeordnete Menge von Zählungen {x1, x2, ..., x7}, während der andere sie als Unterschiede in einer Sequenz betrachtet (0, x1, x1 + x2, x1 + x2 + x3, ..., x7) eine kumulative Verteilung über die Zeit darstellt. Der Median der Zählungen ist ein Wert, der von drei überschritten wird und größer oder gleich den anderen drei ist. Der Median der kumulativen Verteilung ist eine Zeit, keine Zählung und wird mit den in meiner Antwort beschriebenen Methoden ermittelt.
whuber
1
Sie haben Recht: Die Unterscheidung ist in der Frage nicht klar. Es kam nur in den Kommentaren heraus. Ich habe einen kurzen erläuternden Absatz in die Frage eingefügt.
whuber