def setBinomialDistrbutionScore(self): sizeOfDataSeries = self.genData.modelTargetData.size freqDataSeries, binDataSeries = np.histogram( self.genData.modelTargetData, bins=2) probabilityOfTest_01, probabilityOfTest_02 = freqDataSeries / sizeOfDataSeries expectedBinomialDistributionData_01 = stats.binom( sizeOfDataSeries, probabilityOfTest_01, ) expectedBinomialDistributionData_02 = stats.binom( sizeOfDataSeries, probabilityOfTest_02) statistic_01, p_valueBinomial_01 = cvm_test( self.genData.modelTargetData, expectedBinomialDistributionData_01) statistic_01, p_valueBinomial_02 = cvm_test( self.genData.modelTargetData, expectedBinomialDistributionData_02) if p_valueBinomial_01 < 0.05 or p_valueBinomial_02 < 0.05: self.DistributionScoreBinomial = { 'Binomial': (False, max(p_valueBinomial_01, p_valueBinomial_02)) } else: self.DistributionScoreBinomial = { 'Binomial': (True, min(p_valueBinomial_01, p_valueBinomial_02)) }
def setPoissonDistributionScore(self): mu = self.genData.modelTargetData.mean() expectedPoissonDistributionData = stats.poisson(mu) statistic, p_value = cvm_test(self.genData.modelTargetData, expectedPoissonDistributionData) if p_value < 0.05: self.DistributionScorePoisson = {'Poisson': (False, p_value)} else: self.DistributionScorePoisson = {'Poisson': (True, p_value)}
def NZCVM(self): """ Compute the CramervonMises statistic and p-value for the two distributions of sumpz and true_z vector of spec-z's Parameters: ----------- using: string which parameterization to evaluate Returns: -------- CvM statistic and pvalue """ #copy the form of Rongpu's use of skgof functions #will have to use QPPDFCDF class, as those expect objects #that have a .cdf method for a vector of values tmpnzfunc = QPPDFCDF(self.stackpz) nzCvM = skgof.cvm_test(self.truth,tmpnzfunc) return nzCvM.statistic, nzCvM.pvalue
def CvM(self, using, dx=0.0001): """ Compute the Cramer-von Mises statistic and p-value for the PIT values by comparing with a uniform distribution between 0 and 1. Parameters: ----------- using: string which parameterization to evaluate dx: float step size for integral Returns: -------- CvM statistic and pvalue """ if self.pitarray is not None: pits = np.array(self.pitarray) else: pits = np.array(self.PIT(using=using,dx=dx)) self.pitarray = pits cvm_result = skgof.cvm_test(pits, stats.uniform()) return cvm_result.statistic, cvm_result.pvalue