Well, let's take a look. I ran 100,000 trials of Varlamov's career to date, assuming a .915 talent total and .920 at even strength (approximately NHL average).
Varlamov thus far has been .930 at ES and .918 total (he had a brutal PK sv% last season, about 80%, only better than Vesa Toskala).
Results:
0.904 0.909 0.914 0.919 0.924 0.929 0.934 0.939 0.944 1.000
ES 2472 6380 14007 22662 24754 17897 8691 2629 451 57
Total 1969 5982 16916 24357 25097 18152 5889 1485 143 10
The numbers denote the number of times I got a save percentage less than or equal to the one heading the column, but greater than the one heading the previous column (so first column is save percentage under .904, second is .904 to .909, etc).
So there's still roughly a 11% chance Varlamov is simply average and overperforming at even strength. That's not all that big. It's tougher to say where Varlamov lies overall.
Looks to me like George McPhee has a 22-year old stud on his hands.
Code is after the jump. I think it's fairly straightforward should you ever want to edit it. If you aren't familiar with Java and want standard deviation and mean coded in, shoot me an email and I'll send you a revised program.
public class VarlamovSim
{
//At ES Varlamov is career 1122 on 1207 shots for .930
//Total Varlamov is career 1366 on 1488 shots for .918
private static final int TRIALS=100000;
private static final int ESSHOTS=1207;
private static final int SHOTS=1488;
private static int[][] freqdist=new int[2][10];
/*intervals: .000 to .904, .905 to .909, .910 to .914, .915 to .919, .920 to .924
.925 to .929, .930 to .934, .935 to .939, .940 to .944, .945 to 1.000
first row is ES, second row is total */
public static void main(String[] args)
{
//If Varlamov is a .920 talent goalie at ES, what are the chances he posts .930?
//If Varlamov is a .915 talent goalie, what are the chances he posts a .918?
int essaves;
int saves;
double essvpct;
double svpct;
for(int n=1; n<=TRIALS; n++)
{
essaves=0;
saves=0;
for(int shots=1; shots<=ESSHOTS; shots++)
if(Math.random()<.920)
essaves++;
saves = essaves;
//special teams shots = SHOTS - ESSHOTS
for(int spshots=1; spshots<=SHOTS-ESSHOTS; spshots++)
if(Math.random()<.915)
saves++;
essvpct=essaves/(double)ESSHOTS;
svpct=saves/(double)SHOTS;
if(essvpct<=.904)
freqdist[0][0]++;
else if(essvpct<=.909)
freqdist[0][1]++;
else if(essvpct<=.914)
freqdist[0][2]++;
else if(essvpct<=.919)
freqdist[0][3]++;
else if(essvpct<=.924)
freqdist[0][4]++;
else if(essvpct<=.929)
freqdist[0][5]++;
else if(essvpct<=.934)
freqdist[0][6]++;
else if(essvpct<=.939)
freqdist[0][7]++;
else if(essvpct<=.944)
freqdist[0][8]++;
else
freqdist[0][9]++;
if(svpct<=.904)
freqdist[1][0]++;
else if(svpct<=.909)
freqdist[1][1]++;
else if(svpct<=.914)
freqdist[1][2]++;
else if(svpct<=.919)
freqdist[1][3]++;
else if(svpct<=.924)
freqdist[1][4]++;
else if(svpct<=.929)
freqdist[1][5]++;
else if(svpct<=.934)
freqdist[1][6]++;
else if(svpct<=.939)
freqdist[1][7]++;
else if(svpct<=.944)
freqdist[1][8]++;
else
freqdist[1][9]++;
}
for(int r=0; r
{
for(int c=0; c
System.out.print(freqdist[r][c]+"\t");
System.out.println();
}
}
}
Varlamov thus far has been .930 at ES and .918 total (he had a brutal PK sv% last season, about 80%, only better than Vesa Toskala).
Results:
0.904 0.909 0.914 0.919 0.924 0.929 0.934 0.939 0.944 1.000
ES 2472 6380 14007 22662 24754 17897 8691 2629 451 57
Total 1969 5982 16916 24357 25097 18152 5889 1485 143 10
The numbers denote the number of times I got a save percentage less than or equal to the one heading the column, but greater than the one heading the previous column (so first column is save percentage under .904, second is .904 to .909, etc).
So there's still roughly a 11% chance Varlamov is simply average and overperforming at even strength. That's not all that big. It's tougher to say where Varlamov lies overall.
Looks to me like George McPhee has a 22-year old stud on his hands.
Code is after the jump. I think it's fairly straightforward should you ever want to edit it. If you aren't familiar with Java and want standard deviation and mean coded in, shoot me an email and I'll send you a revised program.
public class VarlamovSim
{
//At ES Varlamov is career 1122 on 1207 shots for .930
//Total Varlamov is career 1366 on 1488 shots for .918
private static final int TRIALS=100000;
private static final int ESSHOTS=1207;
private static final int SHOTS=1488;
private static int[][] freqdist=new int[2][10];
/*intervals: .000 to .904, .905 to .909, .910 to .914, .915 to .919, .920 to .924
.925 to .929, .930 to .934, .935 to .939, .940 to .944, .945 to 1.000
first row is ES, second row is total */
public static void main(String[] args)
{
//If Varlamov is a .920 talent goalie at ES, what are the chances he posts .930?
//If Varlamov is a .915 talent goalie, what are the chances he posts a .918?
int essaves;
int saves;
double essvpct;
double svpct;
for(int n=1; n<=TRIALS; n++)
{
essaves=0;
saves=0;
for(int shots=1; shots<=ESSHOTS; shots++)
if(Math.random()<.920)
essaves++;
saves = essaves;
//special teams shots = SHOTS - ESSHOTS
for(int spshots=1; spshots<=SHOTS-ESSHOTS; spshots++)
if(Math.random()<.915)
saves++;
essvpct=essaves/(double)ESSHOTS;
svpct=saves/(double)SHOTS;
if(essvpct<=.904)
freqdist[0][0]++;
else if(essvpct<=.909)
freqdist[0][1]++;
else if(essvpct<=.914)
freqdist[0][2]++;
else if(essvpct<=.919)
freqdist[0][3]++;
else if(essvpct<=.924)
freqdist[0][4]++;
else if(essvpct<=.929)
freqdist[0][5]++;
else if(essvpct<=.934)
freqdist[0][6]++;
else if(essvpct<=.939)
freqdist[0][7]++;
else if(essvpct<=.944)
freqdist[0][8]++;
else
freqdist[0][9]++;
if(svpct<=.904)
freqdist[1][0]++;
else if(svpct<=.909)
freqdist[1][1]++;
else if(svpct<=.914)
freqdist[1][2]++;
else if(svpct<=.919)
freqdist[1][3]++;
else if(svpct<=.924)
freqdist[1][4]++;
else if(svpct<=.929)
freqdist[1][5]++;
else if(svpct<=.934)
freqdist[1][6]++;
else if(svpct<=.939)
freqdist[1][7]++;
else if(svpct<=.944)
freqdist[1][8]++;
else
freqdist[1][9]++;
}
for(int r=0; r
{
for(int c=0; c
System.out.print(freqdist[r][c]+"\t");
System.out.println();
}
}
}
No comments:
Post a Comment