Python/ wariancja i odchylenie standardowe średniej

0

Witam! Mam problem z tym zadaniem, do wypisania liczb jest ok, ale nie mam pojęcia jak zapisać tę wariancję i odchylenia. Tu treść zadania:

Napisz program, który wczytuje wyniki pomiaru
pewnej wielkości, czyli po prostu listę liczb. Niech
użytkownik wpisuje liczby podając po jednej w każdej
linijce „standardowego wejścia”

czyli na przykład
wpisując je z klawiatury. Pusta linijka niech oznacza
koniec danych.
Po wczytaniu wszystkich liczb, wypisz je w kolejności
rosnącej, wraz z odchyleniem każdej liczby od
średniej. Następnie wypisz nieobciążoną
estymatę
wariancji i odchylenia standardowego średniej całej
sekwencji.

Tu mam do kod, który pozwala mi wypisać liczby, brakuje mi części od wypisania tego w kolejności rosnącej z odchyleniem itd.

Kod:

print 'Podaj liczby:'
import sys
moja_lista = []

inp = sys.stdin.readline() #standardowe wejście

while inp.strip() != '':
    print inp
    moja_lista.append(float(inp))
    inp = sys.stdin.readline()

moja_lista.sort()
print 'Moja lista:', moja_lista

user image

ktoś, coś?

0

No ale gdzie masz problem? Bo nie do końca widzę z treści twojego posta.

  1. Średnia to sum()/len()
  2. Kolejność załatwia sorted()
  3. Wariancje/odchylenie musisz policzyć w pętli
0

Może mi ktoś powiedzieć, co jest nie tak w kodzie? Chyba źle mi liczy, pozdrawiam!

print 'Podaj liczby:'
import sys
moja_lista=[]
suma=0
odchyl=0
inp = sys.stdin.readline()

while inp.strip() !='':
    print inp
    moja_lista.append(float(inp))
    inp = sys.stdin.readline()
print 'Moja lista to:', moja_lista

for i in moja_lista:
    suma+=i
    srednia=suma/(len(moja_lista))

print 'Średnia arytmetyczna to: ', srednia


for i in moja_lista:
    odchyl+=(i-srednia)**2
    odchyl/=len(moja_lista)
print 'Wariancja to: ', odchyl

odchyl**=0.5
odchyl = odchyl/len(moja_lista)
print 'Odchylenie standardowe to: ', odchyl
0

Nie chyba a na pewno. Czy ty spałeś na matematyce? o_O Nawet średnią liczysz źle.

for i in moja_lista:
    suma+=i
    srednia=suma/(len(moja_lista))

Czy średnią liczy się w trakcie sumowania czy już po zsumowaniu liczb? o_O Zresztą napisałem ci jak liczy się średnią a ty kombinujesz niepotrzebnie.
Analogicznie nie znasz najwyraźniej wzorów na odchylenie/wariancje. Szkoda słów.

Patrz:

import sys
import math
def main():
	input_numbers  = [float(number) for number in sys.stdin]
	avg = sum(input_numbers)/len(input_numbers)
	print("Avg =  %f" % avg)
	for number in sorted(input_numbers):
		print("number = %f, odchylenie od sredniej = %f" %(number,math.fabs(avg-number)))
main()

http://ideone.com/N1K8mG

0

Odchyleń itp. nie miałem nigdy, po drugie znalazłem to na jakiejś stronie. A sumę na początku zdefiniowałem jako 0, a więc dobrze jest policzone

1 użytkowników online, w tym zalogowanych: 0, gości: 1