More Yomi Data

Ok thanks for the help

1 Like

I’m not on it yet but my question is “should I have heard of more than maybe 5% of these people?”

1 Like

Haha! I think most of them would have been active about 2 to 5 years ago?

1 Like

That explains it. Anyway, wanna play?

Yeah, most of the > 1700 folks were gone when I started (about 1.5 years ago, I guess?), and we’ve had more attrition since then.

Sorry, I’ve got a standing date with friends on Fridays.

That’s fine. Another time then.

@mysticjuicer is a :turtle:.

I know it. He knows it. Through some sort of devil magic, he still convinces me to attack.

4 Likes

The Will To Keep On Blocking, by M. Juicer

3 Likes

Ok, last dump of this data for a while, I think. This is for a model weighted towards more skill players. The character charts are based on win chance against best player with their best character (assuming an even matchup).

MU Chart

Character Skill Levels
A-C

ArthurWynne-char-win-chance Attilian-char-win-chance BD_Corro-char-win-chance Bob199-char-win-chance Bomber678-char-win-chance Caralad-char-win-chance CarpeGuitarrem-char-win-chance Castanietzsche-char-win-chance CKR-char-win-chance ClanNatioy-char-win-chance CloudCuckooCountry-char-win-chance copper8642-char-win-chance Corroyeur-char-win-chance cpat-char-win-chance

D-F

deluks917-char-win-chance Desiderata-char-win-chance Dietz-char-win-chance Djister-char-win-chance drnd-char-win-chance enomus-char-win-chance EricF-char-win-chance ExSeth-char-win-chance FaceOnMars-char-win-chance FenixOfTheAshes-char-win-chance Fivec-char-win-chance flagrantangles-char-win-chance Fluffiness-char-win-chance Fusxfaranto-char-win-chance

G-I

GutterOwl-char-win-chance Hamvvar-char-win-chance hartley-char-win-chance Hobusu-char-win-chance HolyTyrant27-char-win-chance Ivan-char-win-chance

J-L

jamie-chan-char-win-chance Jengajam-char-win-chance JodySalerno-char-win-chance JonnyD-char-win-chance Journeyboy-char-win-chance Juushichi-char-win-chance Legion-char-win-chance Leontes-char-win-chance LizardLinc-char-win-chance lowtierhero-char-win-chance Luke1705-char-win-chance lum_at_1st_sight-char-win-chance

M-O

MadKing-char-win-chance Mallorean_Thug-char-win-chance mastrblastr-char-win-chance Mercyful%20Fate-char-win-chance mi-go%20hunter-char-win-chance MR-char-win-chance MysticDeadman-char-win-chance mysticjuicer-char-win-chance Niijima-San-char-win-chance NobodysHero-char-win-chance ntillerman-char-win-chance Oddus-char-win-chance

P-R

ratxt1-char-win-chance Raziek-char-win-chance Redless-char-win-chance Rinzler-char-win-chance Ryker-char-win-chance

S-U

sharpobject-char-win-chance Shax-char-win-chance SirHandsome-char-win-chance snoc-char-win-chance Southpaw%20Hare-char-win-chance Staryu-char-win-chance the-cap-char-win-chance thehug0naut-char-win-chance Thelo-char-win-chance Three%20Headed%20Monkey-char-win-chance tipzntrix-char-win-chance TokH-char-win-chance Tumbles-char-win-chance UTRALAW-char-win-chance

V-Z

variable-char-win-chance vengefulpickle-char-win-chance wampuh-char-win-chance Xiba-char-win-chance Zejety-char-win-chance Zqxx-char-win-chance zytearK-char-win-chance

Most Even MUs
Character Counterpick
:argagarg: :argagarg: :persephone: :geiger: :valerie: :degrey: :menelker:
:bbb: :jaina: :valerie: :bbb: :menelker: :gwen: :lum:
:degrey: :geiger: :degrey: :quince: :rook: :gwen: :argagarg:
:geiger: :degrey: :geiger: :argagarg: :gwen: :menelker: :rook:
:gloria: :gloria: :lum: :valerie: :menelker: :rook: :setsuki:
:grave: :grave: :troq: :valerie: :jaina: :onimaru: :menelker:
:gwen: :gwen: :geiger: :vendetta: :degrey: :jaina: :rook:
:jaina: :bbb: :jaina: :grave: :gwen: :quince: :persephone:
:lum: :lum: :gloria: :midori: :geiger: :troq: :zane:
:menelker: :menelker: :midori: :persephone: :geiger: :bbb: :grave:
:midori: :troq: :onimaru: :setsuki: :midori: :menelker: :vendetta:
:onimaru: :midori: :onimaru: :grave: :gloria: :zane: :vendetta:
:persephone: :quince: :rook: :persephone: :argagarg: :troq: :menelker:
:quince: :quince: :persephone: :setsuki: :degrey: :valerie: :jaina:
:rook: :persephone: :rook: :vendetta: :troq: :setsuki: :degrey:
:setsuki: :setsuki: :midori: :quince: :rook: :grave: :gloria:
:troq: :vendetta: :midori: :grave: :troq: :rook: :persephone:
:valerie: :valerie: :bbb: :grave: :quince: :rook: :zane:
:vendetta: :troq: :rook: :vendetta: :midori: :gwen: :persephone:
:zane: :zane: :valerie: :vendetta: :lum: :grave: :degrey:
The Model
data {
    int<lower=0> NG; // Number of games
    int<lower=0> NM; // Number of matchups
    int<lower=0> NP; // Number of players
    int<lower=0> NC; // Number of characters

    int<lower=0, upper=1> win[NG]; // Did player 1 win game
    int<lower=1, upper=NM> mup[NG]; // Matchup in game
    vector<lower=0, upper=1>[NG] non_mirror; // Is this a mirror matchup: 0 = mirror
    int<lower=1, upper=NC> char1[NG]; // Character 1 in game
    int<lower=1, upper=NC> char2[NG]; // Character 2 in game
    int<lower=1, upper=NP> player1[NG]; // Player 1 in game
    int<lower=1, upper=NP> player2[NG]; // Player 1 in game
    vector[NG] elo_logit; // Player 1 ELO-based logit win chance
    vector[NG] obs_weights;
}
parameters {
    vector[NM] mu; // Matchup value
    vector<upper=0>[NP] char_skill[NC]; // Player skill at character
    real elo_logit_scale; // elo_logit scale
}
transformed parameters {
    vector[NG] player_char_skill1;
    vector[NG] player_char_skill2;
    vector[NG] win_chance_logit;

    for (n in 1:NG) {
        player_char_skill1[n] = char_skill[char1[n], player1[n]];
        player_char_skill2[n] = char_skill[char2[n], player2[n]];
    }

    win_chance_logit = (player_char_skill1 - player_char_skill2) + non_mirror .* mu[mup] + elo_logit_scale * elo_logit;
}
model {
    for (n in 1:NC) {
        char_skill[n] ~ std_normal();
    }
    mu ~ normal(0, 0.5);
    elo_logit_scale ~ std_normal();

    for (n in 1:NG) {
        target += bernoulli_logit_lpmf(win[n] | win_chance_logit[n]) * obs_weights[n];
    }
}
generated quantities{
    vector[NG] log_lik;
    vector[NG] win_hat;

    for (n in 1:NG) {
        log_lik[n] = bernoulli_logit_lpmf(win[n] | win_chance_logit[n]) * obs_weights[n];
        win_hat[n] = bernoulli_logit_rng(win_chance_logit[n]);
    }
}
3 Likes

Thanks for the data

1 Like

Awesome work here. The latest few MU charts are :ok_hand:

I’m not clear on which charts this affects and how that is different to before? Were previous charts looking at win chance vs the average player?

It’s actually just about the scale of the y axis. The previous icicle charts had a scale with units of logits. Easy to sum up with other logit values, but hard to really understand. The last set converts those to win probabilites, but has to do that by assuming certain other conditions (because the “value” of a logit is non-linear in win-chance scale).

1 Like

I just can’t help myself, this project keeps pulling me back in.

I just published Yomi Matchup Chart

It’s in need of better legend, but you can play with it now. Try putting your handle into the Player box, and your upcoming IYL opponent into the Opponent box. The upper end of the bar chart gives the probability that each matchup has a particular win rate (and the color gives the overall expected win-rate for that MU). Hovering over the bars will break down the details.

The lower half of the bar chart gives the player-adjusted versions of those same probabilities. This factors in your skill in a character, your opponents skill in the character, and your relative Elo levels (as of the last time the model was run).

Have fun!

6 Likes

I can’t get it to work. I hit “search” and nothing happens.

1 Like

Same. I enter player and opponent name but when I click ‘graph’ nothing happens. Tried on Chrome and Internet Explorer.

And third time is not the charm, either.

Edit: Actually it was!
It worked for me, and it looks beautiful. It just takes a long time to load and gives no indication that it’s in progress. But great work, @vengefulpickle!

Oh, yeah, it definitely has some processing time. I’ll put “spinner” on the todo-list. And possibly a message display in the case that something does blow up.

Until then, if there are errors, they’ll show up in the developer console (Ctrl+Shift+K in Firefox, Ctrl+Shift+I in Chrome), and I’d love to get them (either in this thread or in PM).

2 Likes

You should totally take the Yomi arrows and use those as your spinner.

3 Likes

Done! There’s now a loading spinner, and it’s the Yomi arrows. (That took me longer to implement than I really want to admit, and most of it was just making it so that the arrows actually spun around their center…)

6 Likes