Ich habe einige Daten, die ich aus einem Radarsatellitenbild gesampelt habe und wollte einige statistische Tests durchführen. Vorher wollte ich einen Normalitätstest durchführen, damit ich sicher sein konnte, dass meine Daten normal verteilt waren. Meine Daten scheinen normal verteilt zu sein, aber wenn ich den Test mache, bekomme ich einen P-Wert von 0, was darauf hindeutet, dass meine Daten nicht normal verteilt sind.Normalitätstest einer Verteilung in Python
Ich habe meinen Code zusammen mit der Ausgabe und einem Histogramm der Verteilung beigefügt (Ich bin relativ neu zu Python so Entschuldigungen, wenn mein Code in irgendeiner Weise klobig ist). Kann mir jemand sagen, ob ich etwas falsch mache - ich kann es aus meinem Histogramm kaum glauben, dass meine Daten nicht normal verteilt sind?
values = 'inputfile.h5'
f = h5py.File(values,'r')
dset = f['/DATA/DATA']
array = dset[...,0]
print('normality =', scipy.stats.normaltest(array))
max = np.amax(array)
min = np.amin(array)
histo = np.histogram(array, bins=100, range=(min, max))
freqs = histo[0]
rangebins = (max - min)
numberbins = (len(histo[1])-1)
interval = (rangebins/numberbins)
newbins = np.arange((min), (max), interval)
histogram = bar(newbins, freqs, width=0.2, color='gray')
plt.show()
Dies druckt dies: (41099.095955202931, 0.0). Das erste Element ist ein Chi-Quadrat-Wert und das zweite Element ist ein p-Wert.
Ich habe eine Grafik der Daten erstellt, die ich angehängt habe. Ich dachte, dass, wenn ich mich mit negativen Werten beschäftige, es ein Problem verursachte, also normalisierte ich die Werte, aber das Problem besteht weiter.
[Diese Frage] (http://stats.stackexchange.com/questions/2492/is-normality-testing-essential-useless) erklärt, warum Sie einen so kleinen p-Wert bekommen. Im Grunde lehnen Normalitätstests fast immer die Null bei sehr großen Stichproben ab (in Ihrem Beispiel können Sie auf der linken Seite nur ein kleines bisschen Schräge sehen, was bei Ihrer enormen Stichprobengröße viel mehr als genug ist) –
@unutbu : Das ist nicht wahr: zu demonstrieren, 'normalest (np.random.normal (loc = 100, scale = 10, size = 1000))' gibt immer noch einheitliche p-Werte zurück, obwohl der Mittelwert 100 ist und die Standardabweichung 10. –
@ DavidRobinson: Oh! Danke für die Korrektur. – unutbu