2009-09-26 31 views
8

Mam dwa zestawy statystyk wygenerowanych z przetwarzania. Dane z przetwarzania mogą być dużą ilością wyników, więc raczej nie będę musiał przechowywać wszystkich danych, aby później obliczyć dodatkowe dane.Scalanie dwóch zestawów wyników statystycznych

Załóżmy, że mam dwa zestawy statystyk opisujących dwie różne sesje przebiegów nad procesem.

Każdy zestaw zawiera

Statistics : { mean, median, standard deviation, runs on process} 

Jak bym połączy dwa za mediana i odchylenie standardowe, aby uzyskać łączną podsumowanie dwóch opisujące zbiory danych statystycznych.

Pamiętaj, że nie mogę zachować obu zestawów danych, które opisują statystyki.

Odpowiedz

20

Można uzyskać średnią i odchylenie standardowe, ale nie medianę.

new_n = (n(0) + n(1) + ...) 
new_mean = (mean(0)*n(0) + mean(1)*n(1) + ...)/new_n 

new_var = ((var(0)+mean(0)**2)*n(0) + (var(1)+mean(1)**2)*n(1) + ...)/new_n - new_mean**2 

gdzie n(0) jest ilość tras w pierwszym zestawie danych, n(1) jest ilość tras w drugim, i tak dalej, mean jest średnią, a var jest wariancją (który jest tylko odchylenie standardowe do kwadratu). n**2 oznacza "n kwadrat".

Uzyskanie połączonej wariancji zależy od faktu, że wariancja zestawu danych jest równa średniej kwadratu zestawu danych minus kwadrat średniej z zestawu danych. W języku statystycznych

Var(X) = E(X^2) - E(X)^2 

The var(n)+mean(n)**2 kategoriach powyżej dają nam część E(X^2) które możemy następnie połączyć z innymi zbiorami danych, a następnie uzyskać pożądany rezultat.

Pod względem mediany:

przypadku łączenia dokładnie dwa zestawy danych, to można być pewnym, że łączny średni leży gdzieś pomiędzy tymi dwoma median (lub równa jednej z nich), ale niewiele więcej, co możesz powiedzieć. Średnia powinna być w porządku, chyba że chcesz uniknąć mediany, która nie jest równa punktowi danych.

Jeśli łączysz wiele zestawów danych za jednym razem, możesz przyjąć medianę median lub średnią. Jeśli mogą występować znaczące różnice systematyczne między różnymi zestawami danych, wówczas ich średnia jest prawdopodobnie lepsza, ponieważ przyjęcie mediany zmniejsza efekt wartości odstających. Ale jeśli masz systematyczne różnice między biegami, lekceważenie ich nie jest prawdopodobnie dobrą rzeczą.

3

Mediana nie jest możliwa. Powiedzmy, że masz dwie krotki (1, 1, 1, 2) i (0, 0, 2, 3, 3). Mediany to 1 i 2, ogólna mediana to 1. Nie ma mowy.

23

Artelius ma rację matematyczną, ale sposób, w jaki sugeruje obliczenie wariancji, jest liczbowo niestabilny. Aby obliczyć wariancję następująco:

new_var=(n(0)*(var(0)+(mean(0)-new_mean)**2) + n(1)*(var(1)+(mean(1)-new_mean)**2) + ...)/new_n 

edit z komentarzem
Problem z oryginalnego kodu jest, jeśli odchylenie jest niewielkie w porównaniu do średniej, to skończy się odejmując dużą liczbę od duża liczba, aby uzyskać stosunkowo niewielką liczbę, co spowoduje utratę precyzji zmiennoprzecinkowej.Nowy kod pozwala uniknąć tego problemu; zamiast konwertować na E (X^2) iz powrotem, po prostu dodaje razem wszystkie składowe do całkowitej wariancji, odpowiednio ważone według wielkości próby.

+0

Dobra uwaga, ale czy mógłbyś ją nieco rozszerzyć? – Artelius

+9

Pewnie. Problem z oryginalnym kodem polega na tym, że jeśli twoje odchylenie jest małe w porównaniu do twojego średniego, skończysz odejmowanie dużej liczby od dużej liczby, aby uzyskać względnie małą liczbę, co spowoduje utratę precyzji zmiennoprzecinkowej. Nowy kod pozwala uniknąć tego problemu; zamiast konwertować na E (X^2) iz powrotem, po prostu dodaje razem wszystkie składowe do całkowitej wariancji, odpowiednio ważone według wielkości próby. – comingstorm

+1

+1 za odpowiedź i komentarz. Oba są na miejscu i bardzo dobrze napisane. – duffymo