У меня проблемы с подгонкой пуассоновского распределения к моему набору данных. Я использовал этот процесс, чтобы уместить все мои другие наборы данных, и все оказалось хорошо, но по какой-то причине есть один набор, который не работает. Мой код выглядит следующим образом:
E3_comb1=n.array([835., 822., 880., 876., 855., 866., 827., 903., 881., 850., 885.,
811., 873., 887., 921., 948., 808., 938., 881., 845.])
plt.hist(E3_comb1, bins=140, edgecolor='black')
plt.xlabel('Number of counts per bin')
plt.ylabel('Number of repetition')
plt.title('Amount of repetition of each number of counts per bin for Experiment 3, combined vertically')
Какой вывод этот сюжет; что я и ожидал. Теперь, чтобы вычислить мою подгонку по Пуассону, у меня есть:
entries, bin_edges, patches = plt.hist(E3_comb1, bins=140, range=[0, 950])
bin_middles = 0.5*(bin_edges[1:] + bin_edges[:-1])
parameters, cov_matrix = curve_fit(poisson, bin_middles, entries)
Где моя функция Пуассона определяется как:
def poisson(k, lamb):
return (lamb**k/factorial(k)) * n.exp(-lamb)
Теперь мои значения для записей, ребер бина и середин бина: именно то, что я ожидал от них. Но по какой-то причине он выдает значение параметра 0,19; ie, в среднем 0,19, когда я ожидаю, что оно будет около 880. Действительно, если я построю свою подгонку Пуассона, используя:
plt.hist(E3_comb1, bins=140, edgecolor='black')
plt.plot(x, poisson(x, *parameters), '--r', label='poissonian fit')
plt.xlabel('Number of counts per bin')
plt.ylabel('Number of repetition')
plt.title('Amount of repetition of each number of counts per bin for Experiment 3, combined vertically')
plt.legend()
Это выдает this , что это не то, что я хотел, и ясно указывает, что что-то идет не так. Я попытался восстановить ошибку (и), но я не могу этого сделать. Я надеюсь, что вы сможете рассказать мне, как это исправить.
Поскольку я еще раз новичок в этом, я также надеюсь, что вы можете быть настолько ясны, насколько это возможно.
Спасибо всем очень много.