title: How to interpret `scipy.stats.kstest` and `ks_2samp` to evaluate `fit` of data to a distribution?
body: <p><strong>I'm trying to evaluate/test how well my data fits a particular distribution.</strong>  </p>
  
  <p>There are several questions about it and I was told to use either the <code>scipy.stats.kstest</code> or <code>scipy.stats.ks_2samp</code>.  It seems straightforward, give it: (A) the data; (2) the distribution; and (3) the fit parameters.  The only problem is my results don't make any sense?  I want to test the "goodness" of my data and it's fit to different distributions but from the output of <code>kstest</code>, I don't know if I can do this? </p>
  
  <p><a href="https://stackoverflow.com/questions/11268632/goodness-of-fit-tests-in-scipy">Goodness of fit tests in SciPy</a></p>
  
  <blockquote>
    <p>"[SciPy] contains K-S"</p>
  </blockquote>
  
  <p><a href="https://stackoverflow.com/questions/17901112/using-scipys-stats-kstest-module-for-goodness-of-fit-testing">Using Scipy&#39;s stats.kstest module for goodness-of-fit testing</a> says </p>
  
  <blockquote>
    <p>"first value is the test statistics, and second value is the p-value. if the p-value is less than 95 (for a level of significance of 5%), this means that you cannot reject the Null-Hypothese that the two sample distributions are identical."</p>
  </blockquote>
  
  <p>This is just showing how to fit:
  <a href="https://stackoverflow.com/questions/6615489/fitting-distributions-goodness-of-fit-p-value-is-it-possible-to-do-this-with">Fitting distributions, goodness of fit, p-value. Is it possible to do this with Scipy (Python)?</a></p>
  
  <pre><code>np.random.seed(2)
  # Sample from a normal distribution w/ mu: -50 and sigma=1
  x = np.random.normal(loc=-50, scale=1, size=100)
  x
  #array([-50.41675785, -50.05626683, -52.1361961 , -48.35972919,
  #        -51.79343559, -50.84174737, -49.49711858, -51.24528809,
  #        -51.05795222, -50.90900761, -49.44854596, -47.70779199,
  
  # ...
  #        -50.46200535, -49.64911151, -49.61813377, -49.43372456,
  #        -49.79579202, -48.59330376, -51.7379595 , -48.95917605,
  #        -49.61952803, -50.21713527, -48.8264685 , -52.34360319])
  
  # Try against a Gamma Distribution
  distribution = "gamma"
  distr = getattr(stats, distribution)
  params = distr.fit(x)
  
  stats.kstest(x,distribution,args=params)
  KstestResult(statistic=0.078494356486987549, pvalue=0.55408436218441004)
  </code></pre>
  
  <p><strong>A p_value of <code>pvalue=0.55408436218441004</code> is saying that the <code>normal</code> and <code>gamma</code> sampling are from the same distirbutions?</strong> </p>
  
  <p>I thought gamma distributions have to contain positive values?<a href="https://en.wikipedia.org/wiki/Gamma_distribution" rel="noreferrer">https://en.wikipedia.org/wiki/Gamma_distribution</a> </p>
  
  <p>Now against a normal distribution:</p>
  
  <pre><code># Try against a Normal Distribution
  distribution = "norm"
  distr = getattr(stats, distribution)
  params = distr.fit(x)
  
  stats.kstest(x,distribution,args=params)
  KstestResult(statistic=0.070447707170256002, pvalue=0.70801104133244541)
  </code></pre>
  
  <p>According to this, if I took the lowest p_value, then <strong>I would conclude my data came from a <code>gamma</code> distribution even though they are all negative values?</strong> </p>
  
  <pre><code>np.random.seed(0)
  
  distr = getattr(stats, "norm")
  x = distr.rvs(loc=0, scale=1, size=50)
  params = distr.fit(x)
  stats.kstest(x,"norm",args=params, N=1000)
  
  KstestResult(statistic=0.058435890774587329, pvalue=0.99558592119926814)
  </code></pre>
  
  <p><strong>This means at a 5% level of significance, I can reject the null hypothesis that distributions are identical.  So I conclude they are different but they clearly aren't?</strong>  Am I interpreting this incorrectly? If I make it one-tailed, would that make it so the larger the value the more likely they are from the same distribution? </p>