Пример #1
0
    def findNLLParams(self, dataFileName):
        function = Function()
        NLLExp = NLL(function.expPDF, dataFileName)
        optimiser = Optimise()

        #finds minimum tau for our NLL
        paramsGuess = [2.]
        paramsJump = [0.01]
        paramsAccuracy = [0.00001]
        params = optimiser.min(NLLExp.evalNLL, paramsGuess, paramsJump,
                               paramsAccuracy, [])

        tauMin = params[0]
        minNll = NLLExp.evalNLL(params)

        #finding err of tau in params by finding where the chiSquare
        #increases by 0.5 either side of the minimum
        tauRootGuess = [tauMin]
        tauRootJump = [0.001]
        tauRootAccuracy = [0.00001]
        tauErrPos = abs(
            optimiser.equalTo((minNll + 0.5), NLLExp.evalNLL, tauRootGuess,
                              tauRootJump, tauRootAccuracy, [])[0] - tauMin)
        tauErrNeg = abs(
            optimiser.equalTo((minNll +
                               0.5), NLLExp.evalNLL, [tauMin - tauErrPos],
                              tauRootJump, tauRootAccuracy, [])[0] - tauMin)
        tauErrMean = (tauErrPos + tauErrNeg) / 2.

        print("")
        print("tau:\t" + str(np.round(tauMin, 6)) + "\n")
        print("tauErr:\t+" + str(np.round(tauErrPos, 6)) + "\t-" +
              str(np.round(tauErrNeg, 6)))
        print("mean:\t" + str(np.round(tauErrMean, 6)))
        print("")

        #self.plotNLLAroundMin(NLLExp.evalNLL, params, [tauErrPos], [tauErrNeg])
        plotter = Plot()
        plotter.plotNLLAroundMin(NLLExp.evalNLL, params, [tauErrPos],
                                 [tauErrNeg])