2016-05-04 17 views
5

मुझे एक टी-टेस्ट करने में समस्या है जो मुझे धीरे-धीरे पागल कर रहा है। इसे हल करना आसान होना चाहिए, लेकिन कुछ भी नहीं जो मैं करता हूं और कोई समाधान नहीं है जिसे मैं व्यापक खोज के माध्यम से पा सकता हूं। मैं एनाकोंडा के नवीनतम वितरण पर स्पाइडर का उपयोग कर रहा हूं।एसएनपीई में टीएन टेस्ट NaN मानों के साथ

विशेष रूप से: मैं एक सीएसवी फ़ाइल से आयात किए गए एक पांडा डेटाफ्रेम में दो कॉलम - 'Trait_A' और 'Trait_B' के बीच तुलना करना चाहता हूं। कॉलम में से किसी एक मान 'नैन' ('संख्या नहीं') हैं। स्वतंत्र नमूनों की डिफ़ॉल्ट सेटिंग scipy टी-टेस्ट फ़ंक्शन 'NaN' मानों को समायोजित नहीं करता है। हालांकि, setting the 'nan_policy' parameter to 'omit' should deal with this। फिर भी, जब मैं करता हूं, परीक्षण आंकड़े और पी मान वापस 'NaN' के रूप में वापस आते हैं। जब मैं वास्तविक संख्याओं में शामिल मूल्यों की सीमा को प्रतिबंधित करता हूं, तो परीक्षण ठीक काम करता है। मेरा डेटा और कोड नीचे हैं; क्या कोई सुझाव दे सकता है कि मैं क्या गलत कर रहा हूं? धन्यवाद!

डाटा:

 Trait_A Trait_B 
0 1.714286 0.000000 
1 4.275862 4.000000 
2 0.500000 4.625000 
3 1.000000 0.000000 
4 1.000000 4.000000 
5 1.142857 1.000000 
6 2.000000 1.000000 
7 9.416667 1.956522 
8 2.052632 0.571429 
9 2.100000 0.166667 
10 0.666667 0.000000 
11 2.333333 1.705882 
12 2.768145  NaN 
13 0.000000  NaN 
14 6.333333  NaN 
15 0.928571  NaN 

मेरे कोड:

import pandas as pd 
import scipy.stats as sp 
data= pd.read_csv("filepath/Data2.csv") 
print (sp.stats.ttest_ind(data['Trait_A'], data['Trait_B'], nan_policy='omit'))  

मेरे परिणाम:

Ttest_indResult(statistic=nan, pvalue=nan) 

उत्तर

10

यह एक बग की तरह लगता है। आप उन्हें टी परीक्षण करने के लिए पारित करने से पहले nan रों ड्रॉप कर सकते हैं:

sp.stats.ttest_ind(data.dropna()['Trait_A'], data.dropna()['Trait_B']) 
Ttest_indResult(statistic=0.88752464718609214, pvalue=0.38439692093551037) 
+1

बहुत बहुत धन्यवाद! यह वैसे ही काम करता है जैसा मैंने आशा की थी; ऐसा लगता है कि यह निश्चित रूप से एक बग है। मैं इसे Scipy डेवलपर्स को रिपोर्ट करेंगे। – Lodore66

+1

आप किस सीसी संस्करण का उपयोग कर रहे हैं? (nan_policy संस्करण 0.17 में नया है।) यदि यह 0.17 या उससे ऊपर है, तो कृपया एक बग फ़ाइल करें –

+0

मैं संस्करण 0.17 का उपयोग कर रहा हूं - तो हाँ, बग दायर किया जाएगा। – Lodore66

1

बग फाइल में, लाइन 3885 में है scipy/scipy/आँकड़े/stats.py:

# check both a and b 
contains_nan, nan_policy = (_contains_nan(a, nan_policy) or 
          _contains_nan(b, nan_policy)) 

contains_nan    = (_contains_nan(a, nan_policy)[0] or 
          _contains_nan(b, nan_policy)[0]) 

अपने मामले में 'Trait_A' और 'Trait_B' गमागमन अपनी समस्या को हल किया जाना चाहिए।

+0

जानने के लिए उपयोगी - कामकाज के लिए धन्यवाद! – Lodore66

संबंधित मुद्दे