Other The Future of Spread Reports

So the stats spread reports that are up in the moveset stats right now aren't very useful:

Code:
 +----------------------------------------+
| Spreads                                |
| Jolly:0/252/0/0/4/252 12.496%          |
| Impish:248/0/244/0/8/8  7.238%         |
| Impish:248/0/252/0/8/0  7.042%         |
| Adamant:0/252/0/0/4/252  6.483%        |
| Jolly:0/252/4/0/0/252  5.319%          |
| Adamant:0/252/4/0/0/252  3.368%        |
| Other 58.053%                          |
+----------------------------------------+
They give the most common spreads in terms of EVs, but
  1. Extremely similar spreads (where do you put the 4 spare EVs?) get counted separately
  2. It's pretty common for "Other" to be upwards of 50% (meaning it's more likely than not that your opponent's Pokémon's spread isn't listed)
  3. It doesn't account for IVs (less relevant with bottle caps, but still)
  4. You've got to plug the values into a calculator to get the stuff you REALLY want, like speed tier.
I've known these problems from the start, but I haven't had any idea how to fix it, until now!

With your feedback I'd like to design the spread reports for the next era.

Here's what I have in mind:
  • Reports by stat value, not EV spread. Easily get to speed tiers or attack value, and don't have to worry that IVs aren't being taken into account
  • Separate reports for each stat -- It's more important to know how often a Pokemon runs max attack than it is to know how often it runs max attack + max speed. The exception is Def / SpD, which get multiplied by HP to get physical / special "bulk." Not clear if there's enough demand for an HP report (fixed damage moves / wish seems pretty niche)
  • Instead of listing most common values, bin the data, e.g., "75% of Pokemon have SpA greater than or equal to 236." The bin ranges would be determined based on the usual important spread values (0 EVs hindering nature, 252 EVs neutral nature, 252 EVs boosting nature, e.g.), plus any "magic numbers," like speed tiers.
Anyway, what do people think? Would this be more useful? Any visualization folks already tackled this problem?
 
Last edited:
A few passing thoughts from someone who doesn't participate in stats gathering or programming:
Separate reports for each stat -- It's more important to know how often a Pokemon runs max attack than it is to know how often it runs max attack + max speed. The exception is Def / SpD, which get multiplied by HP to get physical / special "bulk." Not clear if there's enough demand for an HP report (fixed damage moves / wish seems pretty niche)
Not a common thing, but couldn't a mon that excels as a tank and a sweeper mess with this? A mon that invests 252 HP/252 Attack for one set and 252 Attack/252 Speed for another are pretty distinct. Not a terribly common occurrence however, I can't even think of a specific example in OU, more of a theoretical.

Would dumping EV totals under 16 from the count, considering them to be 0, and considering EVs within 16 of 252 (236 and up basically), to be 252, be an idea? That might be what you were getting at in your third bullet but I'm not 100% sure. Consider:

Jolly 4/252/0/0/0/252 25%
Jolly 0/252/4/0/0/252 20%
Jolly 8/248/0/0/0/252 10%
Jolly 0/252/0/0/4/252 10%
Jolly 0/248/8/0/0/252 5%

The above are all counted as different EV sets under the current system, but the intent is the same: max attack max speed, with a Jolly nature. Whether 4 EVs go in Def or HP or SDef is largely irrelevant. So is aiming for some kind of Toxic Orb number on Gliscor (244 HP commonly iirc). Displaying all 5 of the above, with a little playing to push the upper end and lower end numbers to 252 or 0, would present it as:

Jolly 0/252/0/0/0/252 70%

Conveying the point I mentioned above, max attack max speed, with a Jolly nature without the excessive breaking down that's happening now. Get where I'm going with that? Anything beyond that, think 252 HP / 184 Def / 72 SDef Calm Clefable, is most likely going to be ripped straight from an analysis with little to no variation, and should show up in the stats fairly consistently.
 
Celticpride, so that's a good point. I hadn't really considered the tank vs. sweeper dimensions. I'd been thinking about it from the perspective of, "What's the chance my opponent has enough attack to OHKO me?" Removing spare EVs helps in many cases, but I suspect not all. I could also do pre-set definitions, like 252 Atk / 252 Spe +/- 8 EVs, but a lot of sets rely on hitting specific speed tiers, so this wouldn't capture that.

If I really wanted to combine similar sets, I'd probably want to apply a clustering algorithm, but that's computationally expensive.
 
You probably had this in mind when you made your post, but for any who don't know it: This tool by Quite Quiet shows ev spread usage while addressing the point about very similar spreads: http://www.smogon.com/forums/threads/ev-spread-usage-statistics.3572258/

this looks over an EV spread, and if they're less than 24 EVs appart (this is an arbitrary limit for now) the usage of both those spreads will be combined into the more used one.
Speed stat could maybe be excepted from this in some way, because reaching certain benchmarks can be crucial. Small differences in other stats, however, usually just change certain rolls by a few percents in favor of other ones.

Reports by stat value, not EV spread.
This seems like a good idea, also because in some cases a different nature + ev spread will result in almost identical stats.

Separate reports for each stat -- It's more important to know how often a Pokemon runs max attack than it is to know how often it runs max attack + max speed.
Would it be possible to give both? Often times usage stats are also used to find spreads for using them, and it seems hard to re-assemble the spread from this data.
 
Last edited:
Protectator Replace. I'd probably keep offering the full all-stats-together data in the JSON (though it's probably the sole reason those files are so large), only with stats and not EV spread
 
Is there a way to link the stats with the held item ?
For example seeing if a scarf is played with a nature improving its speed or not.
 
Nailec

"Effective stats," which would take into account item, ability and moves, are possible.

Another dimension I'd forgotten about is how to report stats for Mega Evolutions and other Pokemon that change forme. I haven't yet come up with a good solution to that dimension.
 
From a programmer's point of view. I play Showdown but at a low level, so my view might be biased.

These are some good ideas that will indeed improve readability, but to me too much information is lost in some cases. The current stats might not be as user-friendly as they might be, but I think they're already pretty good. Plus they can't "hide" any information (other than the "Other" spreads). Taking your three points :

  • Reports by stat value, not EV spread. Easily get to speed tiers or attack value, and don't have to worry that IVs aren't being taken into account
I really like this one. In the end, it's the final stats values that count in a fight, not the repartition themselves. This idea seems both simple, and takes also IVs and nature into account. The only downside I see here is that it will create slightly more total spreads to report : Even if most of the time IVs will be 31/31/31/31/31/31, it will create some more spreads with HP users and people will run different natures. But I think that's ok. Maybe list more than 10 spreads ? In the end, that's to me the best solution to the current problem.

  • Separate reports for each stat -- It's more important to know how often a Pokemon runs max attack than it is to know how often it runs max attack + max speed. The exception is Def / SpD, which get multiplied by HP to get physical / special "bulk." Not clear if there's enough demand for an HP report (fixed damage moves / wish seems pretty niche)
This one seems to try to solve a problem which is way too specific for certain species. I feel like not reporting a complete set is a considerable loss of informations on some Pokémon.

  • Instead of listing most common values, bin the data, e.g., "75% of Pokemon have SpA greater than or equal to 236." The bin ranges would be determined based on the usual important spread values (0 EVs hindering nature, 252 EVs neutral nature, 252 EVs boosting nature, e.g.), plus any "magic numbers," like speed tiers.
Same as the last idea, I feel like we'll lose even more information here. Not a fan of this one.

In the end, it'll probably be a balance to find between exactitude and summirazation. I really like to have raw data because from these, it is usually possible to compute everything else we want. That's probably why I really like your first idea, and not a big fan of the two last ones. Again, this is from a programmer's point of view that mostly uses these data to compute other things and try to display them, so I don't think this point of view represents what most people want, or how people uses these stats. I'm also curous at how most people consume these stats and what do they look for.
 

Honko

he of many honks
is a Site Content Manager Alumnusis a Programmer Alumnusis a Top Contributor Alumnus
As a programmer, I would miss full spread data if you removed it from the JSON. Switching from spreads to final stats probably wouldn't be too big of a deal since I could just recreate the spreads from the stats (although I suspect this would end up being more annoying than it sounds for non-max/max spreads). Losing the context of the relationship between stats would be more of an issue. It's important to be able to tell that a Garchomp with lower Speed investment typically also has lower Attack investment, for example.
 

Users Who Are Viewing This Thread (Users: 1, Guests: 0)

Top