2015-03-10 3 views
0

У меня есть базовый код ниже, который проверяет для нормального распределения:Статистика тест по словарю значения

import numpy as np 
import scipy.stats as stats 
results = stats.normaltest([various numbers manually inputted]) 
z,pval = results 
if(pval < 0.05): 
    print "Data is not normally distributed" 
if(pval > 0.05): 
    print "Data is normally distributed" 

Однако я хотел бы, чтобы добавить его в конец скрипта, который создает ценности и помещает их в словарь (названный «результат»), поэтому я не должен копировать значения вручную, но когда я использую «результат» вместо цифр для статы тестирования я получаю

34 print("%f seconds" % (time.time() - start_time)) #completes measuring time taken for script to run 
---> 35 results = stats.normaltest([result]) 
36 z,pval = results 
37 if(pval < 0.05): 

TypeError: unsupported operand type(s) for /: 'dict' and 'long' 

Любые идеи?

Вот код для значений, идущих в словарь:

new_dictionary = {} 
count = 0 
for m, n in result.items(): 
    count += 1 
    new_dictionary['month_{}'.format(count)] = result 

м является именем файла (как код извлекает из файла для каждого значения) и п вычисленного значения для этого файла

+1

Можете ли вы показать код, в котором вы пытаетесь поместить значение в словарь? – TheBlackCat

+0

Вы помещаете словарь 'result' в каждое место' new_dictionary'. Вероятно, это проблема, но без дополнительной информации нет способа сказать, как ее изменить. Вероятно, вы должны использовать либо 'm', либо' n', либо оба. –

+1

Какая строка является ошибкой? –

ответ

2

Ваша проблема в том, что вы делаете обычный тест в списке, содержащем один словарь. Вы хотите сделать normaltest по значениям словаря, например:

results = stats.normaltest(result.values()) 
+0

Вы мужчина. '<3' –

Смежные вопросы