Pokemon has been one of the most popular games for the last 28 years. However, some players have agreed the recent games have dropped in difficulty; they needed a new challenge, a better twist on their favorite game series. Iateyourpie created a Pokemon Randomizer that randomizes Pokemon spawns, stats, items, even abilities to push players to the limit: The IronMON Challenge. One of the most famous versions of the IronMON Challenge is Kaizo IronMON—with 38 rules restricting the player on what items, Pokemon, moves and abilities one can use against harder, smarter AI. It’s no wonder the challenge has many losses and very, very few wins.
There are various analyses from the moderators and streamers that have taken on the challenge, however, using the R programming language could create a new perspective for all to see. Graphs such as the violin and dodge plots could be useful to see which are the most popular/used types for the challenge, and possibly using the package “tidyverse” for data visualization. I would also like to evaluate the relationship between abilities and Pokemon types to see how valuable typing and abilities are. I could also look at how certain stats could play into a gamer winning their challenge. I would have to webscrape the data borrowed from the IronMON community with permission.
The link to the data for Kaizo Ironmon Runs that made it to the Elite 4. Permission granted from Brdy from the Kaizo Ironmon Discord Server. https://www.brdyweb.com/kaizo/data/index.php?
First, the libraries “ggplot2”, “plyr”, and “dplyr” need to be imported and the Kaizo Ironmon data I scraped needs to be saved to a data frame.
The dataset I was allowed to use was called “FRLG_kaizo_ironmon.csv”. I had to modify the data to remove a couple of columns for R Studio to run without any issue. There are 467 as of March 2024. The columns were Rank (int-type used to list the runs 1-467 as of March 2024), the name of the Runner (String-type), the name of the Pokemon (String-type), Type1 and Type2 (String-types I converted from .jpeg icons from the Ironmon database), BST which is short for Base-Stat Total (int-type of the summation of the Pokemon’s six stats), and Win (Boolean-type; let TRUE mean the player won, and let FALSE mean the player lost). There is also a column for which version of the game they played (String-type and all of them are FireRed and LeafGreen Generation 3 Pokemon), the level of the Elite Four (Int-type), the Ability and Nature of the Pokemon (String-type which can be set to null as some players didn’t log them), the Pokemon Level, Attack, Special Attack, Defense, Special Defense, Speed, and HP stats (Int-type), Move1-4 (String-type), and finally the IV, short for Individual Value (Float-type).
Snorlax has 33 recorded games that have reached the Elite Four, but only 15 defeated them (and the champion). Blissey seems to be the leading Pokemon with the most runs that have made it to the Elite 4 with 24 runs. But Blissey only has 10 wins, with a 42% win rate. Both Snorlax and Blissey, with Normal typing making it only weak to Fighting, they are both great Pokemon for the Ironmon Challenge if players want to try their hand at the game.
Kingdra are behind them with Kingdra’s high win percentage with 19 wins out of the 31 runs. Its Water-Dragon typing gives it an edge against fire and grass. Kingdra’s high BST gives it an edge against other Pokemon if it is randomly given a great spread.
Let FALSE be known as a loss, and let TRUE be known as a win. Wins have more outliers than losses. Wins and losses have a very similar median, but losses have a larger spread and Interquartile Range.
Water leads with the most runs for Kaizo Ironmon with over 75 wins. Normal type is the next highest with over 80 runs, and less than 30 runs won the challenge.
Water types seem to have the most variety in terms of sub-types or Type 2. The most common types are single-types, labeled as “N/A”, throughout the graph.
Despite all odds, 54% of challengers have won the Kaizo Ironmon Challenge.
To determine whether or not the data fits a normal distribution (data is symmetric to the mean, showing data near the mean to be more frequent closer than farther), I used the Shapiro-Wilk test to find the p-value of the following values: IV, HP, Speed, Special Defense, Special Attack, Attack, Base Stat, Level, and Defense.
Let H0, our null hypothesis, be each value follow a Normal distribution. Let Ha, the alternative hypothesis, each of the values does not follow a Normal distribution.
##
## Shapiro-Wilk normality test
##
## data: ironmon$IV
## W = 0.99498, p-value = 0.1343
##
## Shapiro-Wilk normality test
##
## data: ironmon$Speed
## W = 0.9984, p-value = 0.9483
##
## Shapiro-Wilk normality test
##
## data: ironmon$Attack
## W = 0.93569, p-value = 2.598e-13
##
## Shapiro-Wilk normality test
##
## data: ironmon$Defense
## W = 0.98221, p-value = 1.736e-05
##
## Shapiro-Wilk normality test
##
## data: ironmon$HP
## W = 0.98678, p-value = 0.0003036
##
## Shapiro-Wilk normality test
##
## data: ironmon$SpecialDefense
## W = 0.99342, p-value = 0.03957
##
## Shapiro-Wilk normality test
##
## data: ironmon$SpecialAttack
## W = 0.9714, p-value = 6.542e-08
##
## Shapiro-Wilk normality test
##
## data: ironmon$PokemonLvl
## W = 0.97556, p-value = 4.747e-07
##
## Shapiro-Wilk normality test
##
## data: ironmon$BST
## W = 0.86338, p-value < 2.2e-16
Whenever the p-value is above 0.05, we reject H0 and accept the HA as our hypothesis. IV and Speed are rejected due to the randomness of the values from our sample, but the other values seem to follow a normal distribution.
Here is a calculation of wins and losses by types. Some type combinations have high numbers of total wins, indicating that they are effective in battles. For example, Electric only typing has 15 wins against 14 losses, showing it’s a strong performer. Similarly, Fire/Fighting has 11 wins and 5 losses, suggesting it’s also a successful combination. Other combinations have a higher loss rate such as Ground/Dragon with 3 wins and 7 losses and Bug/Rock with no wins and 7 losses.
There is variability in performance across different type combinations. While some combinations have high win percentages, others have low win percentages or are evenly matched with wins and losses. This variability could be due to various factors such as the strengths and weaknesses of the types involved, the Pokémon species within those types, and the strategies employed in battles.
Some type combinations appear more frequently in the dataset, such as Water only types, which has 29 wins and 23 losses, indicating it’s a commonly used typing for Kaizo Ironmon runs.
## `summarise()` has grouped output by 'Type1'. You can override using the
## `.groups` argument.
## # A tibble: 45 × 4
## # Groups: Type1 [16]
## Type1 Type2 TotalWins TotalLosses
## <chr> <chr> <int> <int>
## 1 BUG FIGHTING 1 0
## 2 BUG N/A 1 2
## 3 BUG POISON 1 0
## 4 BUG ROCK 0 7
## 5 BUG STEEL 4 2
## 6 DARK FIRE 4 3
## 7 DARK N/A 4 4
## 8 DRAGON FLYING 2 1
## 9 ELECTRIC N/A 15 14
## 10 ELECTRIC STEEL 0 1
## 11 FIGHTING N/A 3 1
## 12 FIRE FIGHTING 11 5
## 13 FIRE FLYING 6 4
## 14 FIRE N/A 14 12
## 15 GHOST N/A 3 0
## 16 GHOST POISON 7 1
## 17 GRASS N/A 4 4
## 18 GRASS POISON 1 2
## 19 GRASS PSYCHIC 1 1
## 20 GROUND DRAGON 3 7
## 21 GROUND FLYING 0 1
## 22 GROUND N/A 0 1
## 23 GROUND PSYCHIC 1 1
## 24 ICE WATER 4 2
## 25 NORMAL FLYING 2 2
## 26 NORMAL N/A 36 48
## 27 POISON FLYING 6 6
## 28 POISON N/A 10 1
## 29 PSYCHIC N/A 16 12
## 30 ROCK FLYING 3 0
## 31 ROCK GRASS 0 3
## 32 ROCK PSYCHIC 0 1
## 33 ROCK WATER 0 2
## 34 STEEL FLYING 6 4
## 35 STEEL ROCK 4 2
## 36 WATER DARK 0 1
## 37 WATER DRAGON 19 12
## 38 WATER ELECTRIC 2 0
## 39 WATER FIGHTING 1 1
## 40 WATER FLYING 5 2
## 41 WATER GROUND 10 2
## 42 WATER ICE 9 4
## 43 WATER N/A 29 23
## 44 WATER POISON 2 5
## 45 WATER PSYCHIC 3 7
With the percentage of wins over total runs. Pokemon like Blaziken, Kingdra, and Snorlax have high win counts, indicating they are strong performers in battles. Pokemon with a win percentage close to 100% are particularly noteworthy, as they have won most of their battles. Examples include Aerodactyl, Blastoise, Gyarados, and Muk. Pokemon with high total runs have participated in many battles, regardless of their win percentages. These Pokémon may be popular choices for battles or are commonly encountered. There is variability in win percentages across different Pokemon, ranging from 0% to 100%. This variability could be due to differences in Pokemon attributes, move sets, battle strategies, or the types of opponents faced.
## # A tibble: 102 × 5
## Pokemon TotalWins TotalLosses TotalRuns WinPercentage
## <chr> <int> <int> <int> <dbl>
## 1 Aerodactyl 3 0 3 100
## 2 Aggron 1 0 1 100
## 3 Alakazam 1 2 3 33.3
## 4 Altaria 2 0 2 100
## 5 Ampharos 3 4 7 42.9
## 6 Arcanine 3 2 5 60
## 7 Banette 1 0 1 100
## 8 Blastoise 4 2 6 66.7
## 9 Blaziken 11 5 16 68.8
## 10 Blissey 10 14 24 41.7
## 11 Castform 1 0 1 100
## 12 Charizard 6 4 10 60
## 13 Claydol 1 1 2 50
## 14 Clefable 0 1 1 0
## 15 Cloyster 1 1 2 50
## 16 Cradily 0 3 3 0
## 17 Crawdaunt 0 1 1 0
## 18 Crobat 6 6 12 50
## 19 Dewgong 1 0 1 100
## 20 Dodrio 1 0 1 100
## 21 Donphan 0 1 1 0
## 22 Dragonite 0 1 1 0
## 23 Dunsparce 1 0 1 100
## 24 Dusclops 1 0 1 100
## 25 Dustox 1 0 1 100
## 26 Electabuzz 1 3 4 25
## 27 Electrode 1 0 1 100
## 28 Espeon 10 3 13 76.9
## 29 Exeggutor 1 1 2 50
## 30 Fearow 0 2 2 0
## 31 Feraligatr 5 3 8 62.5
## 32 Flareon 2 2 4 50
## 33 Flygon 3 7 10 30
## 34 Forretress 0 1 1 0
## 35 Gardevoir 3 3 6 50
## 36 Gengar 7 1 8 87.5
## 37 Gligar 0 1 1 0
## 38 Golduck 2 0 2 100
## 39 Gorebyss 2 0 2 100
## 40 Gyarados 5 2 7 71.4
## 41 Hariyama 1 0 1 100
## 42 Heracross 1 0 1 100
## 43 Houndoom 4 3 7 57.1
## 44 Huntail 0 1 1 0
## 45 Hypno 1 2 3 33.3
## 46 Jolteon 6 5 11 54.5
## 47 Kabutops 0 1 1 0
## 48 Kangaskhan 0 2 2 0
## 49 Kecleon 0 1 1 0
## 50 Kingdra 19 12 31 61.3
## 51 Kingler 0 1 1 0
## 52 Lanturn 2 0 2 100
## 53 Lapras 7 3 10 70
## 54 Linoone 0 1 1 0
## 55 Lunatone 0 1 1 0
## 56 Machamp 2 1 3 66.7
## 57 Magmar 2 2 4 50
## 58 Magneton 0 1 1 0
## 59 Manectric 2 2 4 50
## 60 Meganium 1 2 3 33.3
## 61 Milotic 6 11 17 35.3
## 62 Misdreavus 1 0 1 100
## 63 Mr. Mime 0 2 2 0
## 64 Muk 4 0 4 100
## 65 Ninetales 1 0 1 100
## 66 Omastar 0 1 1 0
## 67 Pidgeot 1 0 1 100
## 68 Pinsir 1 2 3 33.3
## 69 Politoed 1 0 1 100
## 70 Poliwrath 1 1 2 50
## 71 Porygon2 3 4 7 42.9
## 72 Raichu 1 0 1 100
## 73 Raikou 1 0 1 100
## 74 Rapidash 0 2 2 0
## 75 Sceptile 3 2 5 60
## 76 Scizor 3 1 4 75
## 77 Scyther 1 0 1 100
## 78 Seviper 1 0 1 100
## 79 Shuckle 0 7 7 0
## 80 Skarmory 6 4 10 60
## 81 Slowbro 1 3 4 25
## 82 Slowking 0 1 1 0
## 83 Snorlax 15 19 34 44.1
## 84 Stantler 1 0 1 100
## 85 Starmie 2 3 5 40
## 86 Steelix 3 2 5 60
## 87 Swalot 2 0 2 100
## 88 Swampert 9 2 11 81.8
## 89 Tauros 3 2 5 60
## 90 Tentacruel 2 5 7 28.6
## 91 Torkoal 1 0 1 100
## 92 Typhlosion 5 4 9 55.6
## 93 Umbreon 4 4 8 50
## 94 Ursaring 2 3 5 40
## 95 Vaporeon 7 3 10 70
## 96 Venusaur 1 2 3 33.3
## 97 Wailord 2 2 4 50
## 98 Walrein 4 2 6 66.7
## 99 Weezing 3 1 4 75
## 100 Whiscash 1 0 1 100
## 101 Wobbuffet 1 0 1 100
## 102 Zangoose 0 1 1 0
Average Attack is above 180 while the median is 162. The lowest Attack value is 44 while the highest value is 443 with a standard deviation of 94.078.
## Mean_Attack Median_Attack Min_Attack Max_Attack SD_Attack
## 1 181.6231 162 44 443 94.07818
The coefficient for Speed is 0.0003154. This indicates that for each unit increase in Speed, the chance of winning increase of 0.0003154 units. However, this coefficient is not statistically significant (p-value = 0.479), meaning that the relationship between Speed and Win is not statistically supported.
##
## Call:
## lm(formula = Win ~ Speed, data = ironmon)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.5804 -0.5389 0.4335 0.4598 0.5051
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.4762801 0.0952244 5.002 8.07e-07 ***
## Speed 0.0003154 0.0004450 0.709 0.479
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4991 on 465 degrees of freedom
## Multiple R-squared: 0.001079, Adjusted R-squared: -0.001069
## F-statistic: 0.5023 on 1 and 465 DF, p-value: 0.4788
Here is a linear regression model used to predict the Pokemon’s Attack attribute based on Speed and Special Attack.
Looking at the residuals from the model (the difference between the observed values and the predicted values), the residuals range from -168.138 to 213.443 indicating variability in the model’s accuracy. A larger range of residuals suggets the model’s predictions vary widely from actual Attack values collected from users. The model appears to be less precise than previously thought.
In terms of the coefficients, the Attack intercept is 348.835 when both Speed and Special Attack are 0.
Speed’s coefficient -0.0788. This possibly suggests whenever sped increases, attack is expected to decrease by 0.0788. However, due to coefficient being larger than 0.05, this relationship isn’t statistically significant. There is not enough data to conclude the relationship has any meaning.
The coefficient of -0.67999 indicates the expected change in Attack for a one-unit increase in Special Attack. In this case, it suggests that for each unit increase in Special Attack, the Attack is expected to decrease by approximately 0.67999 units. We have enough evidence to conclude the relationship is statistically significant.
In summary, Special Attack has a large negative impact on Attack while Speed doesn’t have any correlation with Attack.
## Df Sum Sq Mean Sq F value Pr(>F)
## Type1 15 452270 30151 3.703 3.67e-06 ***
## Residuals 451 3672158 8142
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Call:
## lm(formula = Attack ~ Speed + SpecialAttack, data = ironmon)
##
## Residuals:
## Min 1Q Median 3Q Max
## -168.138 -48.103 0.539 40.142 213.443
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 348.83454 13.46809 25.901 <2e-16 ***
## Speed -0.07879 0.05796 -1.359 0.175
## SpecialAttack -0.67999 0.03014 -22.561 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 64.64 on 464 degrees of freedom
## Multiple R-squared: 0.53, Adjusted R-squared: 0.528
## F-statistic: 261.6 on 2 and 464 DF, p-value: < 2.2e-16
The values in each cell represent the correlation between the attributes on the rows and columns. Each value corresponds to the strength and linear direction of the pairs of attributes, such as HP and Attack. A correlation coefficient close to 1 indicates a strong positive linear relationship, while a coefficient close to -1 indicates a strong negative linear relationship. A coefficient close to 0 suggests little to no linear relationship.
## HP Attack Defense SpecialAttack
## HP 1.00000000 -0.017591884 -0.309009660 -0.16230446
## Attack -0.01759188 1.000000000 -0.009535787 -0.72672483
## Defense -0.30900966 -0.009535787 1.000000000 -0.15828134
## SpecialAttack -0.16230446 -0.726724834 -0.158281337 1.00000000
## SpecialDefense -0.17208146 -0.137313232 0.028057854 -0.16166536
## Speed -0.18095840 -0.120020458 -0.254919545 0.10595046
## PokemonLvl 0.09379943 0.062424654 0.055174757 0.04965594
## BST 0.17963847 0.049415574 0.099956657 0.10450403
## IV 0.08570717 0.036352615 0.065609342 0.06182446
## SpecialDefense Speed PokemonLvl BST IV
## HP -0.172081455 -0.18095840 0.09379943 0.17963847 0.085707174
## Attack -0.137313232 -0.12002046 0.06242465 0.04941557 0.036352615
## Defense 0.028057854 -0.25491955 0.05517476 0.09995666 0.065609342
## SpecialAttack -0.161665358 0.10595046 0.04965594 0.10450403 0.061824462
## SpecialDefense 1.000000000 -0.17118744 0.00911878 0.11969719 -0.008463985
## Speed -0.171187437 1.00000000 0.14706143 0.20112142 0.021384459
## PokemonLvl 0.009118780 0.14706143 1.00000000 0.02253919 -0.023725545
## BST 0.119697191 0.20112142 0.02253919 1.00000000 -0.053168113
## IV -0.008463985 0.02138446 -0.02372555 -0.05316811 1.000000000
The most popular moves in most Ironmon runs are Crunch (Dark-type) in over 35 runs, Flamethrower (Fire-type) in 60 runs, Ice Beam (Ice-type) with more than 40 runs, and Thunderbolt (Electric-type) with over 65 runs. These tend to be the most popular moves used in winning games. In order to win, the player should have either Flamethrower or Thunderbolt to win the game. In an ideal situation the player should have these four moves for power, accuracy, and coverage for all Pokemon types.
In order to win Kaizo Ironmon, it isn’t luck alone. The player has to get a great Pokemon that will lead them to victory. Water-type and Normal-type Pokemon are the best Pokemon to use in the game; Blissey, Snorlax, and Kingdra are the best options that are very popular amongst gamers and have highest win percentages. There is a trade-off between Attack and Special Attack where Attack will decrease as Special Attack will increase. If the moves the Pokemon has are Special type, the Pokemon will need a high Special Attack stat. It’s also important to note Defense and Special Defense also increase or decrease when one or the other changes. It is preferable that the player’s Pokemon has decent defensive stats. Finally, the move set of the Pokemon: moves like Flamethrower, Ice Beam, Crunch, and Thunderbolt are possibly key to becoming champion as those moves have high Power and accuracy.
So according to the data we have, Blissey, Snorlax, and Kingdra would be the best Pokemon to win the game using the moves Flamethrower, Ice Beam, Crunch, and Thunderbolt to decimate their opponents. The Pokemon should have a high Special Attack with admirable defensive stats. Speed and HP matter as well, but the player could strategize around them.
My plans are to continue working on this project and expanding the data to include all the abilities, moves, and natures of the Pokemon of Generation 3 to create what could be the best Pokemon to use for the Kaizo Ironmon Challenge. I’ve already gotten the data sets I need; I just need the time to work on data analyses.
I dedicate this project to the Kaizo Ironmon community who have created a wonderful safe space for all to enjoy this Nuzlocke challenge, to Iateyourpie for creating this challenge, and all the streamers such as Arex, SmallAnt, PointCrow, and AlphaRad and offline challengers that partook in Kaizo Ironmon. You all inspired me to learn more about the challenge and tackle the game and the data head-on. To my classmates and friends that encouraged me throughout the process, thank you so much for your support.