0

I want to fit poission distribution on my data points and want to decide based on chisquare test that should I accept or reject this proposed distribution. I only used 10 observations. Here is my code

#Fitting function:  
def Poisson_fit(x,a):
    return (a*np.exp(-x))
#Code
hist, bins= np.histogram(x, bins=10, density=True)
print("hist: ",hist)
#hist:  [5.62657158e-01, 5.14254073e-01, 2.03161280e-01, 5.84898068e-02,
1.35995217e-02,2.67094169e-03,4.39345778e-04,6.59603327e-05,1.01518320e-05, 
1.06301906e-06]
XX = np.arange(len(hist))
print("XX: ",XX)
#XX:  [0 1 2 3 4 5 6 7 8 9]
plt.scatter(XX, hist, marker='.',color='red')
popt, pcov = optimize.curve_fit(Poisson_fit, XX, hist)
plt.plot(x_data, Poisson_fit(x_data,*popt), linestyle='--',color='red', 
label='Fit')
print("hist: ",hist)
plt.xlabel('s')
plt.ylabel('P(s)')


#Chisquare test:
f_obs =hist
#f_obs:  [5.62657158e-01, 5.14254073e-01, 2.03161280e-01, 5.84898068e-02,
1.35995217e-02, 2.67094169e-03, 4.39345778e-04, 6.59603327e-05,
1.01518320e-05, 1.06301906e-06]

f_exp= Poisson_fit(XX,*popt)
f_exp:  [6.76613820e-01, 2.48912314e-01, 9.15697229e-02, 3.36866185e-02,
1.23926144e-02, 4.55898806e-03, 1.67715798e-03, 6.16991940e-04,
2.26978650e-04, 8.35007789e-05]
chi,p_value=chisquare(f_obs,f_exp)

print("chi: ",chi)
print("p_value: ",p_value)
chi:  0.4588956658201067
p_value:  0.9999789643475111`

I am using 10 observations so degree of freedom would be 9. For this degree of freedom I can't find my p-value and chi value on Chi-square distribution table. Is there anything wrong in my code?Or my input values are too small that test fails? if P-value >0.05 distribution is accepted. Although p-value is large 0.999 but for this I can't find chisquare value 0.4588 on table. I think there is something wrong in my code. How to fix this error?

Is this returned chi value is the critical value of tails? How to check proposed hypothesis?

jerry
  • 385
  • 6
  • 18
  • Is something unclear in my question? – jerry Jul 09 '19 at 03:10
  • I'd use [Fisher's exact test](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.fisher_exact.html) for such a small sample size – DrBwts Jul 10 '19 at 12:42
  • I'm dealing with one variable. – jerry Jul 10 '19 at 12:52
  • you have 2, an expected variable (n=10) and an observed variable (n=10) which for me is a small sample size (n=10) which is why I suggested Fisher' exact test which is explicitly for [small sample sizes](https://en.wikipedia.org/wiki/Fisher%27s_exact_test) – DrBwts Jul 10 '19 at 13:10

0 Answers0