Featured Contents
Introduction
Since release, there have been many rumors about how to optimize your chances of catching a Pokemon. These are a few that we've seen recently:
"When using berries, Ultra Balls are worse than Great."
"While the ball is twitching, close your fists to keep the Pokemon in the ball."
"Always try a Poke Ball before using an Ultra Ball."
We hoped to settle the debates on catch mechanics by finding the equation which Niantic uses to determine catch probability of Pokemon. We believe we have found the equation, and it depends on the following 7 variables:
- Pokemon species
- Pokemon level
- Ball type (Poke, Great, or Ultra)
- Curveball
- Razz Berry use
- Throw bonus (Nice, Great, or Excellent)
- and Pokemon type medals
Because we have a lot to say about the formula and the statistical analysis is much longer than usual, the full results will be staggered over the next few days.
In this article, we will give a general overview of the unified formula and an analysis for the curveball bonus. We call it the "Grand Unified Catch Theory," or GUCT.
Grand Unified Catch Theory
The key to finding the GUCT equation was figuring out how catch bonuses stack. We were lucky to have a dataset of 58,330 Pokemon catch attempts, which we used to run mean squares regressions on a variety of test functions. In the end, we found only one function which fit the data, and it revealed that:
Applying any kind of bonus effectively gives you the chance to throw more than one Poke Ball per try.
Previously we determined the catch probability of a Poke Ball:
$$pbProbability = \frac{BaseCaptureRate}{2*CPMultiplier}$$With Base Capture Rate dependent on Pokemon species and CPMultiplier dependent on Pokemon level. You can read more about BCR here and CPM here.
Given that, the GUCT can be stated as
$$Probability= 1- \left(1-\frac{BCR}{2*CPM} \right)^{Multipliers}$$
where,
$$Multipliers=Ball*Curve*Berry*Throw*Medal $$Ball, Curve, Berry, Throw and Medal are set multipliers which are equal to 1 when not applied. A priori, the factors did not have to be multiplicative, but after our trials of various test functions, multiplying the bonuses is what matched the data.
Here is a plot of catch rate as predicted by GUCT against the entire data set. In red is the GUCT catch rate for a bin of data, plotted against the actual capture percentage of that bin, with error bars showing the 1-sigma confidence interval. In blue is the line y=x, which should fit if GUCT is correct. There is a clear fit across the whole range of catch probabilities.
Prior to this project, the Ball bonuses had already been discovered in a previous study:
Ball Type | Ball Factor |
---|---|
Poke Ball | 1 |
Great Ball | 1.5 |
Ultra Ball | 2 |
The Curveball Bonus
Our analysis strongly suggests that the Curve factor is equal to 1.7.
So without any other bonuses, curving is equivalent to using 1.7 Poke Balls each throw. Since the Ultra Ball bonus is 2, a curved Ultra Ball is equivalent to using 1.7 * 2 = 3.4 Poke Balls each throw.
Balls | Poke | Great | Ultra |
---|---|---|---|
Straight Throw | 1 | 1.5 | 2 |
Curve Ball | 1.7 | 2.55 | 3.4 |
The graph below shows much your catch rate can improve by throwing curveballs consistently:
Click here to learn more about how we generated this graph.
Analysis
Our pre-0.41 data set from GamePress Researcher CreativiTimothy was used to find out the effect of all factors other than medals. Each row of the data stated which factors were in play (Great Balls, Excellent throws, etc).
The formula for simple throws with Great and Ultra Balls was already known to be the GUCT formula, but with all factors equal to 1 except for the Ball factor. The next step was to add in curveballs, which make up the majority of our sample. The desired result was the catch probability function f(x) as a function of the inner term, 0.5*BaseCapRate/CpM, which we'll call x. This term is also the catch probability for a simple Poke Ball throw, or GO+ capture attempt without medal bonuses.
After binning the data into even intervals of dx=0.04, the catch rate within each bin was averaged to produce the bin's probability. A best fit was done to the binned data using the SciPy library in Python, and after a variety of guesses, the function which came out best and held for all ball types was
$$f(x)=1 - (1-x)^{Ball*C}$$The fit was done separately for each type of ball, and so there were different best-fit parameters C for each type. The table below shows the corresponding best-fit exponents, their standard deviations, the guess of C = 1.7 which we used in the GUCT, the experimental difference, and the sample size:
bestfit | stdev | BF*1.7 guess | Δ | N | |
---|---|---|---|---|---|
Poke | 1.688 | 0.011 | 1.7 | 0.012 | 44046 |
Great | 2.605 | 0.046 | 2.55 | 0.055 | 3455 |
Ultra | 3.45 | 0.091 | 3.4 | 0.05 | 1486 |
After keeping only first-throw attempt data where only ball and curve bonuses apply, SciPy curve fit found that the optimal number to fit all three equations was 1.6903, with a standard deviation of 0.007. Since the Ball multipliers were round numbers, we are very inclined to believe that Niantic chose a round number for the Curve multiplier, namely 1.7. This is easily within error, because our Poke Ball catch rate had been rounded to two decimal places, and the 0.007 standard deviation brings 1.6903 nearly to 1.7 anyway. Thus we consider the evidence sufficient to conclude that 1.7 is the curveball multiplier.
Here are the three fits for Poke, Great, and Ultra Balls, respectively. The x-axis is x=0.5*BaseCapRate/CpM and the y-axis is the probability of catching a Pokemon with that x value.
Confirmation Tests
In order to make sure that the binning did not cause any problems, we did several tests using the unbinned data to confirm accuracy of the multiplier. We first restricted the data to capture attempts without throw bonus and where berries were not used. Then, for each throw in our sample, we calculated the expected catch rate using the ball factors and newly established curve multiplier.
Using these catch rates, we ran a series of two tailed binomial tests to see if the actual probability of successful capture from our sample is statistically different than the calculated catch rate. Based on 904 calculated catch rates, only 11 had observed catch rates that were statistically different from the calculated rate. Since fewer than 5% of the tests rejected the hypothesis that the calculated rate is correct, we believe that our calculated curve multiplier of 1.7 is accurate.