2016-07-13 25 views
2

ich SciPy in Python bin mit und dem folgend für einen nan Wert zurückgeben welchen Grund auch immer:Warum gibt SciPy `nan` für einen t-Test mit Stichproben mit 0 Varianz zurück?

>>>stats.ttest_ind([1, 1], [1, 1]) 
Ttest_indResult(statistic=nan, pvalue=nan) 

>>>stats.ttest_ind([1, 1], [1, 1, 1]) 
Ttest_indResult(statistic=nan, pvalue=nan). 

Aber immer, wenn ich Samples verwenden, die unterschiedlichen Auswertungsstatistiken haben, bekomme ich tatsächlich einen angemessenen Wert:

stats.ttest_ind([1, 1], [1, 1, 1, 2]) 
Ttest_indResult(statistic=-0.66666666666666663, pvalue=0.54146973927558495). 

Ist es sinnvoll, stattdessen einen p-Wert von nan als 0 zu interpretieren? Gibt es einen Grund für die Statistik, dass es keinen Sinn macht, einen 2-Stichproben-t-Test für Stichproben mit derselben Summenstatistik durchzuführen?

+0

Ich denke, dass das Problem ist, dass ttests eine Division durch die Standardabweichung enthalten. Ich würde stattdessen überprüfen, ob die Standardabweichung 0 ist, weil es andere Fälle geben kann, in denen es Nan zurückgibt (nicht sicher, was sie sein würden) –

Antwort

3

Division durch Null löst die NaN-Ausnahme (= keine Zahl) aus oder gibt eine Fließkommadarstellung zurück, die gemäß Konvention NaN entspricht. Seien Sie besonders vorsichtig bei der Division von Division durch N gegen Division durch N-minus 1 Standardabweichungsformeln.

+2

Sollte nicht dieser Kommentar sein "Sei [...] vorsichtig von Divide-by-N versus Teilen-durch-N - ** minus ** - eins [...] "? –