Jump to content

studentized

Inactive
  • Posts

    364
  • Joined

  • Last visited

  • Days Won

    2

Reputation Activity

  1. Like
    studentized reacted to Quik in S67 Theme Week   
    Hey everyone!
     
    As has become tradition every season, this PT week (ending August 18th) is Theme Week. For those who have been here for the past few seasons, you know how it works. For those who haven't been around, it means that this week you have a chance to earn up to 8 Uncapped TPE by submitting Tasks related to the theme. As has also become tradition, since this is being posted Monday morning, it is possible that some of you may have already submitted tasks for the week. If that is the case (or you have a multi-week MS), you may still participate, and delay claiming either task by one week. However, to be eligible for Theme Week bonus TPE, your point task must be posted by August 18th. (As @Beketov always reminds when I post these, if you have a job that replaces a PT, you may automatically claim the doubles, and if you have a job that pays the full cap, you may claim all 8 Uncapped TPE, provided you still perform your duties this week).
     
    Now that that's taken care of, the theme this season is: VHL Expansion! As some of you surmised when the job posting went up earlier this season, the GM vacancy we were looking for was to fill the position for expansion. A few even bandied about the idea that, perhaps, the league would expand by two teams. Well, those in the latter group were correct, as the VHL will be expanding by two teams in Season 68, bringing our total to 12 VHL teams, more than the league has ever had before. Many great candidates applied for these jobs, and were discussed at great length. Ultimately, with only 2 openings, it was a tough decision, and we thank everyone for applying, and encourage you to continue the great jobs you all have been doing, especially the VHLM GMs who applied, as there will be openings in the future, and all who did not earn the job this time around will be considered for any future openings. That said, the GMs of these two new franchises will be: @diamond_ace and @Enorama.
     
    The team locations, names, and expansion draft rules will be announced during the off-season, which leaves this theme very open to interpretation. You can write articles on where the teams may end up, how you think the expansion draft will work, how you think the process works, GM profiles, or anything else you can think of relating to VHL Expansion. For graphics, you can create logos, mystery team sigs, etc. relating to Expansion.
     
    TPE Distribution for completing themed tasks will be as follows:
    Complete a Regular Point Task (Media Spot / Graphic/Video / Podcast), on 'Theme', and receive an extra 6 Uncapped TPE   Complete a VHL.com submission (Written / Graphic / Podcast), on 'Theme', and receive an extra 1 Uncapped TPE  Complete both 'Theme' submissions, receive an additional 1 Uncapped TPE, for a total of 8 Uncapped TPE    
    @Members
  2. Fire
    studentized got a reaction from omgitshim in Importance of TPE stats via Decision Trees   
    Motivation
     
    Relatively new to the league, but wanted to take a stab at trying to better understand how the TPE of certain stats affects the results of the sim. This type of analysis has been done before. See here, here and here. Those posts served mostly as the inspiration for me to try something new. I wanted to see if I could improve on some things by taking a different approach.
     
    Some drawbacks to the analysis above that I hoped to correct:
    Prediction should be done on rate stats, not on counting stats. Higher Minutes Played = Higher Counting stats, but doesn’t necessarily mean they are the better player. Things like Goals per 60 mins, Hits per 60 mins, etc. can be looked at instead to hopefully give a clearer picture Linear models perform poorly with highly correlated variables. In one of the above posts, EX is shown to be the third most significant predictor of goals, and it was even hypothesized that this was because the only players who actually invest in EX are already highly established in the other stats that matter. In reality EX might not actually be important
    There are lots of non-linear heuristics about TPE floating around the forum. Things like “PA will lead to less goals/total offensive output when it is within 10 points of SC” and “DI only matters up to 50 then it makes no difference” etc. etc. I wanted to pick a model that could do a decent job at picking up on these trends, if they existed
    There was no assessment of how well the model worked for prediction purposes. It was purely used to assess variable importance tool, but it could have been terrible at prediction. Bad as a predictor often means the model was overfitted and not actually capturing the true relationships between TPE and output.
     
    Decision Trees
     
    Decision trees are an efficient way to capture non-linearities in data, that also don’t do a bad job capturing linear relationships. They work by finding splits in the independent variables that lead to the biggest change in the variance of the dependent variable. For example, an SC of 70 might split a tree predicting GoalsPer60 output, where, collectively, players higher than 70 in SC average 1 gpg and those below average 0.5 gpg. The tree continues to grow by recursively selecting the next best split until at some point the tree is told to stop (by certain tuning parameters). Perhaps the most annoying drawback to using trees for prediction is figuring out how to properly select the tuning parameters. Stop the tree too early and you don’t get enough interesting relationships, but let it grow too big and you risk overfitting to your training data. There are a bunch of different strategies you can take to further improve decision trees (boosting, random forests, etc.) but the tradeoff here is more predictive power in exchange for a model that is harder to interpret. I didn’t want to go too fancy for this, so I stayed with your run of the mill regression trees.
     
    Data
     
    The data that was used was regular season VHL player data from seasons 59 to seasons 66 (these are the only complete seasons I could find on the portal to scrape). CPU players or players who played 0 minutes in a season were omitted. I used seasons 59 to 65 for my training data, and season 66 for my test data set. Like the analyses linked above, the TPE used for each player is still the end-of-season TPE. This definitely hurts the results a bit, but I do not know of a way to get the TPE of a player at each game he played. 
     
    I started out trying to actually predict the raw stat numbers. This didn’t do poorly perse, but given the amount of variability from season to season it didn’t perform amazingly. (i.e one year a player can average 3 hits per 60, and the next he’ll average < 1.5 with similar minutes, team, etc.). At a glance it looks like the sim/team strategies change enough from year to year that prediction of stats is hard. I chose to handle this variability by predicting stat ranks within each season: instead of predicting “player A will get X goals per 60”, I chose to predict “player A will be in the top X% of goals per 60 among all other players”. In my data, the higher percentile means the higher the stat (i.e 100th percentile is the league leader of that stat in the season)
     
    If anyone wants access to the raw data set, just give me a shout. 
     
    Results
     
    I looked at GoalsPer60, AssistsPer60, HitsPer60, HitsTakenPer60, PIMPer60, ShotsPer60, ShotsBlockedPer60, FaceoffWinPercentage (min 50 faceoffs taken), Fights (total), PlusMinus (total)
     
    I will walk through explaining the output of GoalsPer60, but then just quickly list of the rest of the results for the other stats.

     

     
    This is a (fairly pruned) decision tree that resulted from running GoalsPer60 on every TPE stat. At each branch there is a split in some variable that creates two more branches. The data points where that split is true go left, and where that split is false go right. Before each split there is a summary of the data (the blue bubble above). The top number is the average (mean) of the output (percentile of GoalsPer60) for all data points in that split. The bottom number is the percentage of data in that split. 
     
    For example, we start with an average rank of 0.5 (50th percentile) and 100% of the data. The first split is “SC < 84”. 52% of the training data had SC < 84, and collectively these players had an average rank in GoalsPer60 of the 31st percentile (lower percentile = less goals per 60). Alternatively, the 48% of players that had SC >= 84, had an average rank of the 70th percentile. SC > 84 is good to have if you want you want your player to score relatively more goals. 
     
    The tree can be followed down through a bunch more splits until it ends at a node. Whatever is the average value for the node is what gets used in the prediction. For this particular tree, there are only 8 possible percentiles that can be predicted for any given player (because there are only 8 nodes). This is not super realistic, but as we will see below, it does a decent job for what we need.
     
    Error
     
    TrainingError = 0.11
    TestError = 0.14
     
    These errors are the average absolute deviation of the predicted values from the actual values in each data set. In this case the training error is saying that, on the data that the tree trained on (seasons 59 to 65), the average deviation in rank was about 11 percentiles. 
     
    As an example, player #1 in the data (John Locke in season 59) was ranked in the 83rd percentile for GoalsPer60, but was predicted to be in the 86th percentile. He would have only contributed 0.03 to the error. 
     
    The biggest deviation was Mikka Pajari in season 64. Here he actually scored in the 6th percentile for GoalsPer60, but the decision tree predicted him to place in the 53nd percentile based on his TPE. It would be interesting to know why he performed so poorly; his TPE seems quite fair, so this tells me there are a lot of things other than just TPE at play in the sim. 
     

     
    In terms of test error, it is almost always the case that it will be worse than the training error because the test data has no impact on the decisions the model chose to make. Overall, this model is not amazing for prediction purposes (it would be nice to get the test error down to under 0.05), but it could be a lot worse. The fact that the test error is not too much higher than the training error suggests that it didn’t overfit too badly (if we upped our tree nodes from 8 to 40, we would likely see lower training error, but even higher test error). In terms of figuring out which stats are important, the model does decent enough.
     
    Variable Importance
     
    The importance of variables within any given decision tree can be assessed and scored pretty easily. One way to do this is to sum up the “goodness of split” for each split for each variable. See here for more info. Unlike the chart above where the tree was pruned to only show very meaningful splits, variable importance is calculated at every possible split, for all variables included in the model i.e even if the variable was not chosen as a split by the tree, there will still be some contribution made to the variable’s importance. Here is the output for GoalsPer60

     



     
    The top 3 most important stats were SC, PH, and SK, with SC being the predominant variable. Note that just because a variable is important, it does not mean that the relationship is direct/positive. A highly important variable might have a negative relationship, or it might not have a linear relationship at all. The best way to assess the nature of the relationship by looking at the tree itself, or by looking at partial plots (i.e 1-D scatterplot of dependent). 
     
    In this case, all three important TPE stats scale positively with GoalsPer60 (higher SC, PH, or SK generally lead to better GoalsPer60).

     
    Summary
     
    I will quickly summarize the results in a table below but all of the decision trees can all be found externally (linked here)
     
    Stat    Training Error    Test Error    Important 1    Important 2    Important 3    Important 4    Important 5
    GoalsPer60    0.11    0.14    SC (23)    PH (16)    SK (15)    DF (11)    EX (9)
    AssistsPer60    0.15    0.2    PH (18)    SK (12)    DF (12)    SC (9)    PA (9)
    PIMPer60    0.13    0.14    CK (28)    ST (9)    DF (6)    SK (4)    Position (4)
    HitsPer60    0.13    0.14    CK (29)    ST (9)    DF (6)    SK (4)    FG (3)
    HitsTakenPer60    0.14    0.14    FO (16)    Position (14)    DF (6)    SK (4)    SC (4)
    ShotsPer60    0.1    0.13    SC (22)    PH (15)    SK (14)    DF (14)    Position (9)
    ShotsBlockedPer60    0.12    0.13    Position (28)    SC (7)    PH (4)    DF (3)    FG (2)
    Fights    0.16    0.16    FO (9)    FG (7)    Position (7)    CK (1)    PS (0)
    PlusMinus    0.17    0.25    PH (14)    DF (8)    SK (7)    SC (6)    ST (5)
    FaceoffWinPercentage    0.1    0.11    FO (20)    Position (13)    ST (2)    EX (2)    PA (2)
     
    Overall I think the forums have it right. PH, SK, SC, DF are the top stats, some worth getting higher faster than the others depending on how you want to build.
    FO, ST, PA, CK are the top secondary stats to pump stuff into. The rest are kind of disappointing.
     
     
  3. Like
    studentized got a reaction from fonziGG in Halifax 21st Press Conference   
    1) I want to say team world. I feel like there are a bunch of good VHLM prospects from less common countries
     
    2) Absolutely. It would be cool to be a part of team Western Europe at any level. To medal, even just bronze, would be huge.
     
    3) I've done ok. Moved up the lines quickly and have been given plenty of chances to succeed. Have become the goal scorer for the line, which was my goal, but want to be a force throughout the league and still a ways away from that
     
    4) I'm liking what Moscow is doing this year the most. I pretty much like all so far though, except Toronto. Too dominant already
     
    5) I hope it bodes well for Halifax, and we really show that we can compete for the cup
     
    6) Z. Miniti on Ottawa. Its almost unfair how easily that guy scores
  4. Like
    studentized reacted to fonziGG in Halifax 21st Press Conference   
    1.) With the WJC coming up, who do you predict to win?
    2.) Would you like to participate in future international competitions?
    3.) How do you rate our performances so far?
    4.) Who is your favourite team in the VHL?
    5.) How do you anticipate the 2nd half of the season so far?
    6.) Has there been anyone who has caught your eye on a different team? Why?
  5. Like
    studentized reacted to Motzaburger in Importance of TPE stats via Decision Trees   
    @studentized  I am a big stats guy. I work with a lot of stats every day and a lot of raw data in studies I am a part of. Honestly, I've never heard of this type of analysis before. What is the difference between a Linear regression model (like I ran here and here) vs. your regression tree? lol to me this seems like a poor man's regression mixed with a poor man's SEM?
     
    You can use all the fancy stats words I do understand it lol just trying to interpret why this may be better/worse. Also what program did you use? 
     
    Just to be clear I'm not saying this is bad, this was a great read I just want to understand the test more! I am planning on doing some SEM with VHL data soon once I figure out the some kinks in my coding for the tests. Nice to see a stats bro  
  6. Like
    studentized got a reaction from Kekzkrieg in Importance of TPE stats via Decision Trees   
    Motivation
     
    Relatively new to the league, but wanted to take a stab at trying to better understand how the TPE of certain stats affects the results of the sim. This type of analysis has been done before. See here, here and here. Those posts served mostly as the inspiration for me to try something new. I wanted to see if I could improve on some things by taking a different approach.
     
    Some drawbacks to the analysis above that I hoped to correct:
    Prediction should be done on rate stats, not on counting stats. Higher Minutes Played = Higher Counting stats, but doesn’t necessarily mean they are the better player. Things like Goals per 60 mins, Hits per 60 mins, etc. can be looked at instead to hopefully give a clearer picture Linear models perform poorly with highly correlated variables. In one of the above posts, EX is shown to be the third most significant predictor of goals, and it was even hypothesized that this was because the only players who actually invest in EX are already highly established in the other stats that matter. In reality EX might not actually be important
    There are lots of non-linear heuristics about TPE floating around the forum. Things like “PA will lead to less goals/total offensive output when it is within 10 points of SC” and “DI only matters up to 50 then it makes no difference” etc. etc. I wanted to pick a model that could do a decent job at picking up on these trends, if they existed
    There was no assessment of how well the model worked for prediction purposes. It was purely used to assess variable importance tool, but it could have been terrible at prediction. Bad as a predictor often means the model was overfitted and not actually capturing the true relationships between TPE and output.
     
    Decision Trees
     
    Decision trees are an efficient way to capture non-linearities in data, that also don’t do a bad job capturing linear relationships. They work by finding splits in the independent variables that lead to the biggest change in the variance of the dependent variable. For example, an SC of 70 might split a tree predicting GoalsPer60 output, where, collectively, players higher than 70 in SC average 1 gpg and those below average 0.5 gpg. The tree continues to grow by recursively selecting the next best split until at some point the tree is told to stop (by certain tuning parameters). Perhaps the most annoying drawback to using trees for prediction is figuring out how to properly select the tuning parameters. Stop the tree too early and you don’t get enough interesting relationships, but let it grow too big and you risk overfitting to your training data. There are a bunch of different strategies you can take to further improve decision trees (boosting, random forests, etc.) but the tradeoff here is more predictive power in exchange for a model that is harder to interpret. I didn’t want to go too fancy for this, so I stayed with your run of the mill regression trees.
     
    Data
     
    The data that was used was regular season VHL player data from seasons 59 to seasons 66 (these are the only complete seasons I could find on the portal to scrape). CPU players or players who played 0 minutes in a season were omitted. I used seasons 59 to 65 for my training data, and season 66 for my test data set. Like the analyses linked above, the TPE used for each player is still the end-of-season TPE. This definitely hurts the results a bit, but I do not know of a way to get the TPE of a player at each game he played. 
     
    I started out trying to actually predict the raw stat numbers. This didn’t do poorly perse, but given the amount of variability from season to season it didn’t perform amazingly. (i.e one year a player can average 3 hits per 60, and the next he’ll average < 1.5 with similar minutes, team, etc.). At a glance it looks like the sim/team strategies change enough from year to year that prediction of stats is hard. I chose to handle this variability by predicting stat ranks within each season: instead of predicting “player A will get X goals per 60”, I chose to predict “player A will be in the top X% of goals per 60 among all other players”. In my data, the higher percentile means the higher the stat (i.e 100th percentile is the league leader of that stat in the season)
     
    If anyone wants access to the raw data set, just give me a shout. 
     
    Results
     
    I looked at GoalsPer60, AssistsPer60, HitsPer60, HitsTakenPer60, PIMPer60, ShotsPer60, ShotsBlockedPer60, FaceoffWinPercentage (min 50 faceoffs taken), Fights (total), PlusMinus (total)
     
    I will walk through explaining the output of GoalsPer60, but then just quickly list of the rest of the results for the other stats.

     

     
    This is a (fairly pruned) decision tree that resulted from running GoalsPer60 on every TPE stat. At each branch there is a split in some variable that creates two more branches. The data points where that split is true go left, and where that split is false go right. Before each split there is a summary of the data (the blue bubble above). The top number is the average (mean) of the output (percentile of GoalsPer60) for all data points in that split. The bottom number is the percentage of data in that split. 
     
    For example, we start with an average rank of 0.5 (50th percentile) and 100% of the data. The first split is “SC < 84”. 52% of the training data had SC < 84, and collectively these players had an average rank in GoalsPer60 of the 31st percentile (lower percentile = less goals per 60). Alternatively, the 48% of players that had SC >= 84, had an average rank of the 70th percentile. SC > 84 is good to have if you want you want your player to score relatively more goals. 
     
    The tree can be followed down through a bunch more splits until it ends at a node. Whatever is the average value for the node is what gets used in the prediction. For this particular tree, there are only 8 possible percentiles that can be predicted for any given player (because there are only 8 nodes). This is not super realistic, but as we will see below, it does a decent job for what we need.
     
    Error
     
    TrainingError = 0.11
    TestError = 0.14
     
    These errors are the average absolute deviation of the predicted values from the actual values in each data set. In this case the training error is saying that, on the data that the tree trained on (seasons 59 to 65), the average deviation in rank was about 11 percentiles. 
     
    As an example, player #1 in the data (John Locke in season 59) was ranked in the 83rd percentile for GoalsPer60, but was predicted to be in the 86th percentile. He would have only contributed 0.03 to the error. 
     
    The biggest deviation was Mikka Pajari in season 64. Here he actually scored in the 6th percentile for GoalsPer60, but the decision tree predicted him to place in the 53nd percentile based on his TPE. It would be interesting to know why he performed so poorly; his TPE seems quite fair, so this tells me there are a lot of things other than just TPE at play in the sim. 
     

     
    In terms of test error, it is almost always the case that it will be worse than the training error because the test data has no impact on the decisions the model chose to make. Overall, this model is not amazing for prediction purposes (it would be nice to get the test error down to under 0.05), but it could be a lot worse. The fact that the test error is not too much higher than the training error suggests that it didn’t overfit too badly (if we upped our tree nodes from 8 to 40, we would likely see lower training error, but even higher test error). In terms of figuring out which stats are important, the model does decent enough.
     
    Variable Importance
     
    The importance of variables within any given decision tree can be assessed and scored pretty easily. One way to do this is to sum up the “goodness of split” for each split for each variable. See here for more info. Unlike the chart above where the tree was pruned to only show very meaningful splits, variable importance is calculated at every possible split, for all variables included in the model i.e even if the variable was not chosen as a split by the tree, there will still be some contribution made to the variable’s importance. Here is the output for GoalsPer60

     



     
    The top 3 most important stats were SC, PH, and SK, with SC being the predominant variable. Note that just because a variable is important, it does not mean that the relationship is direct/positive. A highly important variable might have a negative relationship, or it might not have a linear relationship at all. The best way to assess the nature of the relationship by looking at the tree itself, or by looking at partial plots (i.e 1-D scatterplot of dependent). 
     
    In this case, all three important TPE stats scale positively with GoalsPer60 (higher SC, PH, or SK generally lead to better GoalsPer60).

     
    Summary
     
    I will quickly summarize the results in a table below but all of the decision trees can all be found externally (linked here)
     
    Stat    Training Error    Test Error    Important 1    Important 2    Important 3    Important 4    Important 5
    GoalsPer60    0.11    0.14    SC (23)    PH (16)    SK (15)    DF (11)    EX (9)
    AssistsPer60    0.15    0.2    PH (18)    SK (12)    DF (12)    SC (9)    PA (9)
    PIMPer60    0.13    0.14    CK (28)    ST (9)    DF (6)    SK (4)    Position (4)
    HitsPer60    0.13    0.14    CK (29)    ST (9)    DF (6)    SK (4)    FG (3)
    HitsTakenPer60    0.14    0.14    FO (16)    Position (14)    DF (6)    SK (4)    SC (4)
    ShotsPer60    0.1    0.13    SC (22)    PH (15)    SK (14)    DF (14)    Position (9)
    ShotsBlockedPer60    0.12    0.13    Position (28)    SC (7)    PH (4)    DF (3)    FG (2)
    Fights    0.16    0.16    FO (9)    FG (7)    Position (7)    CK (1)    PS (0)
    PlusMinus    0.17    0.25    PH (14)    DF (8)    SK (7)    SC (6)    ST (5)
    FaceoffWinPercentage    0.1    0.11    FO (20)    Position (13)    ST (2)    EX (2)    PA (2)
     
    Overall I think the forums have it right. PH, SK, SC, DF are the top stats, some worth getting higher faster than the others depending on how you want to build.
    FO, ST, PA, CK are the top secondary stats to pump stuff into. The rest are kind of disappointing.
     
     
  7. Like
    studentized got a reaction from DMaximus in Importance of TPE stats via Decision Trees   
    Motivation
     
    Relatively new to the league, but wanted to take a stab at trying to better understand how the TPE of certain stats affects the results of the sim. This type of analysis has been done before. See here, here and here. Those posts served mostly as the inspiration for me to try something new. I wanted to see if I could improve on some things by taking a different approach.
     
    Some drawbacks to the analysis above that I hoped to correct:
    Prediction should be done on rate stats, not on counting stats. Higher Minutes Played = Higher Counting stats, but doesn’t necessarily mean they are the better player. Things like Goals per 60 mins, Hits per 60 mins, etc. can be looked at instead to hopefully give a clearer picture Linear models perform poorly with highly correlated variables. In one of the above posts, EX is shown to be the third most significant predictor of goals, and it was even hypothesized that this was because the only players who actually invest in EX are already highly established in the other stats that matter. In reality EX might not actually be important
    There are lots of non-linear heuristics about TPE floating around the forum. Things like “PA will lead to less goals/total offensive output when it is within 10 points of SC” and “DI only matters up to 50 then it makes no difference” etc. etc. I wanted to pick a model that could do a decent job at picking up on these trends, if they existed
    There was no assessment of how well the model worked for prediction purposes. It was purely used to assess variable importance tool, but it could have been terrible at prediction. Bad as a predictor often means the model was overfitted and not actually capturing the true relationships between TPE and output.
     
    Decision Trees
     
    Decision trees are an efficient way to capture non-linearities in data, that also don’t do a bad job capturing linear relationships. They work by finding splits in the independent variables that lead to the biggest change in the variance of the dependent variable. For example, an SC of 70 might split a tree predicting GoalsPer60 output, where, collectively, players higher than 70 in SC average 1 gpg and those below average 0.5 gpg. The tree continues to grow by recursively selecting the next best split until at some point the tree is told to stop (by certain tuning parameters). Perhaps the most annoying drawback to using trees for prediction is figuring out how to properly select the tuning parameters. Stop the tree too early and you don’t get enough interesting relationships, but let it grow too big and you risk overfitting to your training data. There are a bunch of different strategies you can take to further improve decision trees (boosting, random forests, etc.) but the tradeoff here is more predictive power in exchange for a model that is harder to interpret. I didn’t want to go too fancy for this, so I stayed with your run of the mill regression trees.
     
    Data
     
    The data that was used was regular season VHL player data from seasons 59 to seasons 66 (these are the only complete seasons I could find on the portal to scrape). CPU players or players who played 0 minutes in a season were omitted. I used seasons 59 to 65 for my training data, and season 66 for my test data set. Like the analyses linked above, the TPE used for each player is still the end-of-season TPE. This definitely hurts the results a bit, but I do not know of a way to get the TPE of a player at each game he played. 
     
    I started out trying to actually predict the raw stat numbers. This didn’t do poorly perse, but given the amount of variability from season to season it didn’t perform amazingly. (i.e one year a player can average 3 hits per 60, and the next he’ll average < 1.5 with similar minutes, team, etc.). At a glance it looks like the sim/team strategies change enough from year to year that prediction of stats is hard. I chose to handle this variability by predicting stat ranks within each season: instead of predicting “player A will get X goals per 60”, I chose to predict “player A will be in the top X% of goals per 60 among all other players”. In my data, the higher percentile means the higher the stat (i.e 100th percentile is the league leader of that stat in the season)
     
    If anyone wants access to the raw data set, just give me a shout. 
     
    Results
     
    I looked at GoalsPer60, AssistsPer60, HitsPer60, HitsTakenPer60, PIMPer60, ShotsPer60, ShotsBlockedPer60, FaceoffWinPercentage (min 50 faceoffs taken), Fights (total), PlusMinus (total)
     
    I will walk through explaining the output of GoalsPer60, but then just quickly list of the rest of the results for the other stats.

     

     
    This is a (fairly pruned) decision tree that resulted from running GoalsPer60 on every TPE stat. At each branch there is a split in some variable that creates two more branches. The data points where that split is true go left, and where that split is false go right. Before each split there is a summary of the data (the blue bubble above). The top number is the average (mean) of the output (percentile of GoalsPer60) for all data points in that split. The bottom number is the percentage of data in that split. 
     
    For example, we start with an average rank of 0.5 (50th percentile) and 100% of the data. The first split is “SC < 84”. 52% of the training data had SC < 84, and collectively these players had an average rank in GoalsPer60 of the 31st percentile (lower percentile = less goals per 60). Alternatively, the 48% of players that had SC >= 84, had an average rank of the 70th percentile. SC > 84 is good to have if you want you want your player to score relatively more goals. 
     
    The tree can be followed down through a bunch more splits until it ends at a node. Whatever is the average value for the node is what gets used in the prediction. For this particular tree, there are only 8 possible percentiles that can be predicted for any given player (because there are only 8 nodes). This is not super realistic, but as we will see below, it does a decent job for what we need.
     
    Error
     
    TrainingError = 0.11
    TestError = 0.14
     
    These errors are the average absolute deviation of the predicted values from the actual values in each data set. In this case the training error is saying that, on the data that the tree trained on (seasons 59 to 65), the average deviation in rank was about 11 percentiles. 
     
    As an example, player #1 in the data (John Locke in season 59) was ranked in the 83rd percentile for GoalsPer60, but was predicted to be in the 86th percentile. He would have only contributed 0.03 to the error. 
     
    The biggest deviation was Mikka Pajari in season 64. Here he actually scored in the 6th percentile for GoalsPer60, but the decision tree predicted him to place in the 53nd percentile based on his TPE. It would be interesting to know why he performed so poorly; his TPE seems quite fair, so this tells me there are a lot of things other than just TPE at play in the sim. 
     

     
    In terms of test error, it is almost always the case that it will be worse than the training error because the test data has no impact on the decisions the model chose to make. Overall, this model is not amazing for prediction purposes (it would be nice to get the test error down to under 0.05), but it could be a lot worse. The fact that the test error is not too much higher than the training error suggests that it didn’t overfit too badly (if we upped our tree nodes from 8 to 40, we would likely see lower training error, but even higher test error). In terms of figuring out which stats are important, the model does decent enough.
     
    Variable Importance
     
    The importance of variables within any given decision tree can be assessed and scored pretty easily. One way to do this is to sum up the “goodness of split” for each split for each variable. See here for more info. Unlike the chart above where the tree was pruned to only show very meaningful splits, variable importance is calculated at every possible split, for all variables included in the model i.e even if the variable was not chosen as a split by the tree, there will still be some contribution made to the variable’s importance. Here is the output for GoalsPer60

     



     
    The top 3 most important stats were SC, PH, and SK, with SC being the predominant variable. Note that just because a variable is important, it does not mean that the relationship is direct/positive. A highly important variable might have a negative relationship, or it might not have a linear relationship at all. The best way to assess the nature of the relationship by looking at the tree itself, or by looking at partial plots (i.e 1-D scatterplot of dependent). 
     
    In this case, all three important TPE stats scale positively with GoalsPer60 (higher SC, PH, or SK generally lead to better GoalsPer60).

     
    Summary
     
    I will quickly summarize the results in a table below but all of the decision trees can all be found externally (linked here)
     
    Stat    Training Error    Test Error    Important 1    Important 2    Important 3    Important 4    Important 5
    GoalsPer60    0.11    0.14    SC (23)    PH (16)    SK (15)    DF (11)    EX (9)
    AssistsPer60    0.15    0.2    PH (18)    SK (12)    DF (12)    SC (9)    PA (9)
    PIMPer60    0.13    0.14    CK (28)    ST (9)    DF (6)    SK (4)    Position (4)
    HitsPer60    0.13    0.14    CK (29)    ST (9)    DF (6)    SK (4)    FG (3)
    HitsTakenPer60    0.14    0.14    FO (16)    Position (14)    DF (6)    SK (4)    SC (4)
    ShotsPer60    0.1    0.13    SC (22)    PH (15)    SK (14)    DF (14)    Position (9)
    ShotsBlockedPer60    0.12    0.13    Position (28)    SC (7)    PH (4)    DF (3)    FG (2)
    Fights    0.16    0.16    FO (9)    FG (7)    Position (7)    CK (1)    PS (0)
    PlusMinus    0.17    0.25    PH (14)    DF (8)    SK (7)    SC (6)    ST (5)
    FaceoffWinPercentage    0.1    0.11    FO (20)    Position (13)    ST (2)    EX (2)    PA (2)
     
    Overall I think the forums have it right. PH, SK, SC, DF are the top stats, some worth getting higher faster than the others depending on how you want to build.
    FO, ST, PA, CK are the top secondary stats to pump stuff into. The rest are kind of disappointing.
     
     
  8. Like
    studentized got a reaction from eaglesfan036 in Importance of TPE stats via Decision Trees   
    Motivation
     
    Relatively new to the league, but wanted to take a stab at trying to better understand how the TPE of certain stats affects the results of the sim. This type of analysis has been done before. See here, here and here. Those posts served mostly as the inspiration for me to try something new. I wanted to see if I could improve on some things by taking a different approach.
     
    Some drawbacks to the analysis above that I hoped to correct:
    Prediction should be done on rate stats, not on counting stats. Higher Minutes Played = Higher Counting stats, but doesn’t necessarily mean they are the better player. Things like Goals per 60 mins, Hits per 60 mins, etc. can be looked at instead to hopefully give a clearer picture Linear models perform poorly with highly correlated variables. In one of the above posts, EX is shown to be the third most significant predictor of goals, and it was even hypothesized that this was because the only players who actually invest in EX are already highly established in the other stats that matter. In reality EX might not actually be important
    There are lots of non-linear heuristics about TPE floating around the forum. Things like “PA will lead to less goals/total offensive output when it is within 10 points of SC” and “DI only matters up to 50 then it makes no difference” etc. etc. I wanted to pick a model that could do a decent job at picking up on these trends, if they existed
    There was no assessment of how well the model worked for prediction purposes. It was purely used to assess variable importance tool, but it could have been terrible at prediction. Bad as a predictor often means the model was overfitted and not actually capturing the true relationships between TPE and output.
     
    Decision Trees
     
    Decision trees are an efficient way to capture non-linearities in data, that also don’t do a bad job capturing linear relationships. They work by finding splits in the independent variables that lead to the biggest change in the variance of the dependent variable. For example, an SC of 70 might split a tree predicting GoalsPer60 output, where, collectively, players higher than 70 in SC average 1 gpg and those below average 0.5 gpg. The tree continues to grow by recursively selecting the next best split until at some point the tree is told to stop (by certain tuning parameters). Perhaps the most annoying drawback to using trees for prediction is figuring out how to properly select the tuning parameters. Stop the tree too early and you don’t get enough interesting relationships, but let it grow too big and you risk overfitting to your training data. There are a bunch of different strategies you can take to further improve decision trees (boosting, random forests, etc.) but the tradeoff here is more predictive power in exchange for a model that is harder to interpret. I didn’t want to go too fancy for this, so I stayed with your run of the mill regression trees.
     
    Data
     
    The data that was used was regular season VHL player data from seasons 59 to seasons 66 (these are the only complete seasons I could find on the portal to scrape). CPU players or players who played 0 minutes in a season were omitted. I used seasons 59 to 65 for my training data, and season 66 for my test data set. Like the analyses linked above, the TPE used for each player is still the end-of-season TPE. This definitely hurts the results a bit, but I do not know of a way to get the TPE of a player at each game he played. 
     
    I started out trying to actually predict the raw stat numbers. This didn’t do poorly perse, but given the amount of variability from season to season it didn’t perform amazingly. (i.e one year a player can average 3 hits per 60, and the next he’ll average < 1.5 with similar minutes, team, etc.). At a glance it looks like the sim/team strategies change enough from year to year that prediction of stats is hard. I chose to handle this variability by predicting stat ranks within each season: instead of predicting “player A will get X goals per 60”, I chose to predict “player A will be in the top X% of goals per 60 among all other players”. In my data, the higher percentile means the higher the stat (i.e 100th percentile is the league leader of that stat in the season)
     
    If anyone wants access to the raw data set, just give me a shout. 
     
    Results
     
    I looked at GoalsPer60, AssistsPer60, HitsPer60, HitsTakenPer60, PIMPer60, ShotsPer60, ShotsBlockedPer60, FaceoffWinPercentage (min 50 faceoffs taken), Fights (total), PlusMinus (total)
     
    I will walk through explaining the output of GoalsPer60, but then just quickly list of the rest of the results for the other stats.

     

     
    This is a (fairly pruned) decision tree that resulted from running GoalsPer60 on every TPE stat. At each branch there is a split in some variable that creates two more branches. The data points where that split is true go left, and where that split is false go right. Before each split there is a summary of the data (the blue bubble above). The top number is the average (mean) of the output (percentile of GoalsPer60) for all data points in that split. The bottom number is the percentage of data in that split. 
     
    For example, we start with an average rank of 0.5 (50th percentile) and 100% of the data. The first split is “SC < 84”. 52% of the training data had SC < 84, and collectively these players had an average rank in GoalsPer60 of the 31st percentile (lower percentile = less goals per 60). Alternatively, the 48% of players that had SC >= 84, had an average rank of the 70th percentile. SC > 84 is good to have if you want you want your player to score relatively more goals. 
     
    The tree can be followed down through a bunch more splits until it ends at a node. Whatever is the average value for the node is what gets used in the prediction. For this particular tree, there are only 8 possible percentiles that can be predicted for any given player (because there are only 8 nodes). This is not super realistic, but as we will see below, it does a decent job for what we need.
     
    Error
     
    TrainingError = 0.11
    TestError = 0.14
     
    These errors are the average absolute deviation of the predicted values from the actual values in each data set. In this case the training error is saying that, on the data that the tree trained on (seasons 59 to 65), the average deviation in rank was about 11 percentiles. 
     
    As an example, player #1 in the data (John Locke in season 59) was ranked in the 83rd percentile for GoalsPer60, but was predicted to be in the 86th percentile. He would have only contributed 0.03 to the error. 
     
    The biggest deviation was Mikka Pajari in season 64. Here he actually scored in the 6th percentile for GoalsPer60, but the decision tree predicted him to place in the 53nd percentile based on his TPE. It would be interesting to know why he performed so poorly; his TPE seems quite fair, so this tells me there are a lot of things other than just TPE at play in the sim. 
     

     
    In terms of test error, it is almost always the case that it will be worse than the training error because the test data has no impact on the decisions the model chose to make. Overall, this model is not amazing for prediction purposes (it would be nice to get the test error down to under 0.05), but it could be a lot worse. The fact that the test error is not too much higher than the training error suggests that it didn’t overfit too badly (if we upped our tree nodes from 8 to 40, we would likely see lower training error, but even higher test error). In terms of figuring out which stats are important, the model does decent enough.
     
    Variable Importance
     
    The importance of variables within any given decision tree can be assessed and scored pretty easily. One way to do this is to sum up the “goodness of split” for each split for each variable. See here for more info. Unlike the chart above where the tree was pruned to only show very meaningful splits, variable importance is calculated at every possible split, for all variables included in the model i.e even if the variable was not chosen as a split by the tree, there will still be some contribution made to the variable’s importance. Here is the output for GoalsPer60

     



     
    The top 3 most important stats were SC, PH, and SK, with SC being the predominant variable. Note that just because a variable is important, it does not mean that the relationship is direct/positive. A highly important variable might have a negative relationship, or it might not have a linear relationship at all. The best way to assess the nature of the relationship by looking at the tree itself, or by looking at partial plots (i.e 1-D scatterplot of dependent). 
     
    In this case, all three important TPE stats scale positively with GoalsPer60 (higher SC, PH, or SK generally lead to better GoalsPer60).

     
    Summary
     
    I will quickly summarize the results in a table below but all of the decision trees can all be found externally (linked here)
     
    Stat    Training Error    Test Error    Important 1    Important 2    Important 3    Important 4    Important 5
    GoalsPer60    0.11    0.14    SC (23)    PH (16)    SK (15)    DF (11)    EX (9)
    AssistsPer60    0.15    0.2    PH (18)    SK (12)    DF (12)    SC (9)    PA (9)
    PIMPer60    0.13    0.14    CK (28)    ST (9)    DF (6)    SK (4)    Position (4)
    HitsPer60    0.13    0.14    CK (29)    ST (9)    DF (6)    SK (4)    FG (3)
    HitsTakenPer60    0.14    0.14    FO (16)    Position (14)    DF (6)    SK (4)    SC (4)
    ShotsPer60    0.1    0.13    SC (22)    PH (15)    SK (14)    DF (14)    Position (9)
    ShotsBlockedPer60    0.12    0.13    Position (28)    SC (7)    PH (4)    DF (3)    FG (2)
    Fights    0.16    0.16    FO (9)    FG (7)    Position (7)    CK (1)    PS (0)
    PlusMinus    0.17    0.25    PH (14)    DF (8)    SK (7)    SC (6)    ST (5)
    FaceoffWinPercentage    0.1    0.11    FO (20)    Position (13)    ST (2)    EX (2)    PA (2)
     
    Overall I think the forums have it right. PH, SK, SC, DF are the top stats, some worth getting higher faster than the others depending on how you want to build.
    FO, ST, PA, CK are the top secondary stats to pump stuff into. The rest are kind of disappointing.
     
     
  9. Like
    studentized got a reaction from Gustav in Importance of TPE stats via Decision Trees   
    Motivation
     
    Relatively new to the league, but wanted to take a stab at trying to better understand how the TPE of certain stats affects the results of the sim. This type of analysis has been done before. See here, here and here. Those posts served mostly as the inspiration for me to try something new. I wanted to see if I could improve on some things by taking a different approach.
     
    Some drawbacks to the analysis above that I hoped to correct:
    Prediction should be done on rate stats, not on counting stats. Higher Minutes Played = Higher Counting stats, but doesn’t necessarily mean they are the better player. Things like Goals per 60 mins, Hits per 60 mins, etc. can be looked at instead to hopefully give a clearer picture Linear models perform poorly with highly correlated variables. In one of the above posts, EX is shown to be the third most significant predictor of goals, and it was even hypothesized that this was because the only players who actually invest in EX are already highly established in the other stats that matter. In reality EX might not actually be important
    There are lots of non-linear heuristics about TPE floating around the forum. Things like “PA will lead to less goals/total offensive output when it is within 10 points of SC” and “DI only matters up to 50 then it makes no difference” etc. etc. I wanted to pick a model that could do a decent job at picking up on these trends, if they existed
    There was no assessment of how well the model worked for prediction purposes. It was purely used to assess variable importance tool, but it could have been terrible at prediction. Bad as a predictor often means the model was overfitted and not actually capturing the true relationships between TPE and output.
     
    Decision Trees
     
    Decision trees are an efficient way to capture non-linearities in data, that also don’t do a bad job capturing linear relationships. They work by finding splits in the independent variables that lead to the biggest change in the variance of the dependent variable. For example, an SC of 70 might split a tree predicting GoalsPer60 output, where, collectively, players higher than 70 in SC average 1 gpg and those below average 0.5 gpg. The tree continues to grow by recursively selecting the next best split until at some point the tree is told to stop (by certain tuning parameters). Perhaps the most annoying drawback to using trees for prediction is figuring out how to properly select the tuning parameters. Stop the tree too early and you don’t get enough interesting relationships, but let it grow too big and you risk overfitting to your training data. There are a bunch of different strategies you can take to further improve decision trees (boosting, random forests, etc.) but the tradeoff here is more predictive power in exchange for a model that is harder to interpret. I didn’t want to go too fancy for this, so I stayed with your run of the mill regression trees.
     
    Data
     
    The data that was used was regular season VHL player data from seasons 59 to seasons 66 (these are the only complete seasons I could find on the portal to scrape). CPU players or players who played 0 minutes in a season were omitted. I used seasons 59 to 65 for my training data, and season 66 for my test data set. Like the analyses linked above, the TPE used for each player is still the end-of-season TPE. This definitely hurts the results a bit, but I do not know of a way to get the TPE of a player at each game he played. 
     
    I started out trying to actually predict the raw stat numbers. This didn’t do poorly perse, but given the amount of variability from season to season it didn’t perform amazingly. (i.e one year a player can average 3 hits per 60, and the next he’ll average < 1.5 with similar minutes, team, etc.). At a glance it looks like the sim/team strategies change enough from year to year that prediction of stats is hard. I chose to handle this variability by predicting stat ranks within each season: instead of predicting “player A will get X goals per 60”, I chose to predict “player A will be in the top X% of goals per 60 among all other players”. In my data, the higher percentile means the higher the stat (i.e 100th percentile is the league leader of that stat in the season)
     
    If anyone wants access to the raw data set, just give me a shout. 
     
    Results
     
    I looked at GoalsPer60, AssistsPer60, HitsPer60, HitsTakenPer60, PIMPer60, ShotsPer60, ShotsBlockedPer60, FaceoffWinPercentage (min 50 faceoffs taken), Fights (total), PlusMinus (total)
     
    I will walk through explaining the output of GoalsPer60, but then just quickly list of the rest of the results for the other stats.

     

     
    This is a (fairly pruned) decision tree that resulted from running GoalsPer60 on every TPE stat. At each branch there is a split in some variable that creates two more branches. The data points where that split is true go left, and where that split is false go right. Before each split there is a summary of the data (the blue bubble above). The top number is the average (mean) of the output (percentile of GoalsPer60) for all data points in that split. The bottom number is the percentage of data in that split. 
     
    For example, we start with an average rank of 0.5 (50th percentile) and 100% of the data. The first split is “SC < 84”. 52% of the training data had SC < 84, and collectively these players had an average rank in GoalsPer60 of the 31st percentile (lower percentile = less goals per 60). Alternatively, the 48% of players that had SC >= 84, had an average rank of the 70th percentile. SC > 84 is good to have if you want you want your player to score relatively more goals. 
     
    The tree can be followed down through a bunch more splits until it ends at a node. Whatever is the average value for the node is what gets used in the prediction. For this particular tree, there are only 8 possible percentiles that can be predicted for any given player (because there are only 8 nodes). This is not super realistic, but as we will see below, it does a decent job for what we need.
     
    Error
     
    TrainingError = 0.11
    TestError = 0.14
     
    These errors are the average absolute deviation of the predicted values from the actual values in each data set. In this case the training error is saying that, on the data that the tree trained on (seasons 59 to 65), the average deviation in rank was about 11 percentiles. 
     
    As an example, player #1 in the data (John Locke in season 59) was ranked in the 83rd percentile for GoalsPer60, but was predicted to be in the 86th percentile. He would have only contributed 0.03 to the error. 
     
    The biggest deviation was Mikka Pajari in season 64. Here he actually scored in the 6th percentile for GoalsPer60, but the decision tree predicted him to place in the 53nd percentile based on his TPE. It would be interesting to know why he performed so poorly; his TPE seems quite fair, so this tells me there are a lot of things other than just TPE at play in the sim. 
     

     
    In terms of test error, it is almost always the case that it will be worse than the training error because the test data has no impact on the decisions the model chose to make. Overall, this model is not amazing for prediction purposes (it would be nice to get the test error down to under 0.05), but it could be a lot worse. The fact that the test error is not too much higher than the training error suggests that it didn’t overfit too badly (if we upped our tree nodes from 8 to 40, we would likely see lower training error, but even higher test error). In terms of figuring out which stats are important, the model does decent enough.
     
    Variable Importance
     
    The importance of variables within any given decision tree can be assessed and scored pretty easily. One way to do this is to sum up the “goodness of split” for each split for each variable. See here for more info. Unlike the chart above where the tree was pruned to only show very meaningful splits, variable importance is calculated at every possible split, for all variables included in the model i.e even if the variable was not chosen as a split by the tree, there will still be some contribution made to the variable’s importance. Here is the output for GoalsPer60

     



     
    The top 3 most important stats were SC, PH, and SK, with SC being the predominant variable. Note that just because a variable is important, it does not mean that the relationship is direct/positive. A highly important variable might have a negative relationship, or it might not have a linear relationship at all. The best way to assess the nature of the relationship by looking at the tree itself, or by looking at partial plots (i.e 1-D scatterplot of dependent). 
     
    In this case, all three important TPE stats scale positively with GoalsPer60 (higher SC, PH, or SK generally lead to better GoalsPer60).

     
    Summary
     
    I will quickly summarize the results in a table below but all of the decision trees can all be found externally (linked here)
     
    Stat    Training Error    Test Error    Important 1    Important 2    Important 3    Important 4    Important 5
    GoalsPer60    0.11    0.14    SC (23)    PH (16)    SK (15)    DF (11)    EX (9)
    AssistsPer60    0.15    0.2    PH (18)    SK (12)    DF (12)    SC (9)    PA (9)
    PIMPer60    0.13    0.14    CK (28)    ST (9)    DF (6)    SK (4)    Position (4)
    HitsPer60    0.13    0.14    CK (29)    ST (9)    DF (6)    SK (4)    FG (3)
    HitsTakenPer60    0.14    0.14    FO (16)    Position (14)    DF (6)    SK (4)    SC (4)
    ShotsPer60    0.1    0.13    SC (22)    PH (15)    SK (14)    DF (14)    Position (9)
    ShotsBlockedPer60    0.12    0.13    Position (28)    SC (7)    PH (4)    DF (3)    FG (2)
    Fights    0.16    0.16    FO (9)    FG (7)    Position (7)    CK (1)    PS (0)
    PlusMinus    0.17    0.25    PH (14)    DF (8)    SK (7)    SC (6)    ST (5)
    FaceoffWinPercentage    0.1    0.11    FO (20)    Position (13)    ST (2)    EX (2)    PA (2)
     
    Overall I think the forums have it right. PH, SK, SC, DF are the top stats, some worth getting higher faster than the others depending on how you want to build.
    FO, ST, PA, CK are the top secondary stats to pump stuff into. The rest are kind of disappointing.
     
     
  10. Fire
    studentized reacted to Banackock in S67 WJC Commissioner - HIRED!   
    S67 WJC Commissioner - You're HIRED!
     
    Thank you to everyone who applied. Essentially, everyone who did was considered and acceptable for the role. Greatly appreciate your interest. SADLY, there can only be one...
     

     
    With that being said, @DilIsPickle and myself conversed on the topic and decided to go in the direction of @fonziGG! Congrats on the new role and good luck. Any Q's, you know where to find me. Everyone clap now.
     
    Thanks
  11. Like
    studentized got a reaction from Kekzkrieg in Owen Nolan - Rookie card   
  12. Hmmm
    studentized reacted to Elmebeck in Elmebeck calls out Halifax 21st players   
    The uncharacteristically vocal Swede, (D) Elmebeck, called out several players on Halifax 21st prior to the upcoming meeting in VHLM game #136.

    "@SparrowLTD,  @caltroit_red_flames, @Dtayl and @studentized will have no chance to get by me while I am on the ice. Also what's with eight right wingers on one team?! GM @Thranduil should probably look at adding a C or two too!"

    While obvisouly tongue in cheek the young defenceman has been stirring up emotions between the two teams, interrupting a Halifax 21st press conference last week by waving a placard that read "Halisux 21st Dumb Street".

    Halifax 21st and Houston Bulls are currently 4th and 5th respectively, with only two points separating them at this time - by game 136 they will both have played six more games.


  13. Like
    studentized reacted to fonziGG in Halifax 21st Press Conference   
    1. How did you come up with your name?
    2. Do you have any long term VHL goals, HOF, championship, well known player?
    3. Why did you pick the position you play?
    4. We recently have gone 50/50 on our games, how do you feel about this?
    5. We currently have Thorvald Gunnarsson 2nd in shutouts at 4, do you predict our defence/goalie is going to continue playing this hot?
    6. Has anybody stood out to you so far, if so who?
  14. Like
    studentized reacted to Beketov in Happy Birthday VHL!   
    Decided to pick my names in fitting fashion to the anniversary by basing them off former HoFers of the league who decided to take too much advertising money. Therefore I present to you:
     
    Skaters:
    Sterling Coors
    Matt Bentley
     
    Goalie:
    Maxim Disney
     
    Also while not required I’d like to give my yearly obligatory speech.
     
    The VHL has grown a lot since I joined exactly 12 years ago. There have been many times over the years when I expected it would close its doors; both times the forum had to be moved and prior to this huge boom in members being the most prominent ones. Every year that passes I’m more and more amazed by the ability of our members to make the league thrive, both in enjoyment and in sheer volume. This league has always been about the community for me and I’m thankful to see the community thriving once again. Here’s to one of our best years ever and I look forward to many more to come.
     
    Now enjoy your free gifts in exchange for a tiny amount of posting you greedy vultures
     
    P. S my usual addition as well, those who’s pay covers a PT can claim the doubles week as part of their regular pay, just add 6 TPE via other.
  15. Cheers
    studentized reacted to Quik in Happy Birthday VHL!   
    Happy Birthday VHL! 
     

     
    For any of you who are unaware, today, Thursday July 18th, 2019 marks the 12th anniversary of the VHL opening its doors, all the way back on the original Invisionfree forum that many sim leagues used back in the day. A lot has happened over the years, as nearly 100 of you described last year. 
     
    With our birthday comes the annual tradition of gifts for all the league’s members, in exchange for a small amount of work, of course. This year, we are asking all of you to come up with at least three creative player names* to be used in replacing the bots in the sim, including at least two skaters and one goalie. If you'd like, you can specify which league and/or team the name would go on. As a reward, you will receive 12 Uncapped TPE, as well as a Doubles Week to be used with a Point Task submission in the next month**. The ones we like the best will be used to replace the generic "TEAM C1" names currently in the sims.

    
     
    *Please remember that the league does not condone the use of slurs or foul language in the naming of its players.
    **Uncapped TPE and Doubles Week must both be claimed by the week ending August 18th 
  16. Woah
    studentized got a reaction from fonziGG in Halifax 21st Press Conference   
    1) never in doubt. We are going to compete this year
    2) nerves subsided after that first game (and first goal). It's still the same game of hockey I've been playing forever
    5) everyone in the locker room and active in the forums have been A+ mentors
    6) didn't know them well at first, but looking like they were the right choices. All great players and people
    7) getting our chemistry and special teams going will be huge. Just a matter of time
    8 ) might be nice to score against this Michael Johnson guy
  17. Like
    studentized got a reaction from Kekzkrieg in Owen Nolan - Biography [2/2]   
    Biography
     
       Owen Liam Nolan was born on July 2nd, 1998 in the small town of Bangor in Belfast, Ireland. He became the youngest of three children, joining eldest brother Patrick and middle sister Elizabeth, to be born to parents Christopher and Katherine. At the time of Nolan's birth, hockey was not even remotely on the radar of the family. The Nolan's have tended to a legacy corn field that has been in their family for generations, earning them a reputation among Belfast as the best corn in Ireland. As is the case with most farm families, every member was expected to help out any way they could, with Christopher taking on the majority of work along his own dad (Nolan's grandfather) Thomas Nolan, while Katherine primarily looked after raising the children. Everything about the Nolan's painted a very 'Nuclear Family' type picture, right up until tragedy struck and Owen took the ice for the first time.
     
    The Nolan corn field

     
     
    A dream
     
       Owen rarely had his interests captured with school, even from a young age. He prided himself on being a very hard worker and being able to lend a hand to help his brother, father, and grandfather back home on the farm. When asked about his favourite school subject he remembered growing up, Nolan answered "Geography, probably. I have always wanted to travel the world". Owen remembers textbooks depicting children his age playing unfamiliar sports like baseball and basketball and wondering why he had never been shown anything but Rugby and Football. After seeing a picture of players on an outdoor ice rink playing hockey, Owen became "obsessed", his father jokingly remarked. 
     
       The Nolan's were regulars at ice rinks in the area, because older sister Elizabeth had been involved in figure skating from the age of 7. But when Owen tried to describe the picture of hockey he saw to his parents, neither had any idea what he was talking about. They signed him up with his sister for figure skating instead, much to his dissatisfaction. Owen was a natural on the ice claims his sister. "Better skater than I was from the moment he stepped on". However it quickly became apparent that he was not going to figure skate at a high level. "Better skater, but much much worse dancer" Elizabeth joked. After a while, Owen forgot about his picture of hockey, associating it with other fairy tales he was told growing up. He prepared to get involved in rugby.
     
    The accident
     
       In April 2008, when Owen was 9 years old, Katherine was involved in a car accident that would take her life. "No one is prepared for that kind of thing" Owen says. "I remember the whole family having a hard time coping. Those following months were kind of a blur… and the farm got in pretty bad shape." Owen recounts that older brother Patrick soon after dropped out of school and never went back. Patrick would spend most of his time trying to maintain the farm and driving Elizabeth to and from figure skating practices. His father spent most of his time working, trying to hold his family together. On his 10th birthday, Owen received a gift to attend a hockey camp in Dublin, something his Mom had arranged months prior. "I just thought they wanted to get rid of me. I only found out it was Mom's idea until I was much, much older". He went on to say "it was exactly what I needed."
     
    A first taste of hockey

     
       Owen was on his own for the first time in his life, adding to an already exhausting summer. "I remember knowing nobody and feeling like I didn't measure up to the rest of the kids from the get go". "I still didn't believe that hockey was real" he went on to say.  It took some time for Owen, but stepping onto the ice, all geared up, would become a form of therapy that summer. Nolan recalls having a lot of fun throughout the camp. "I think I would have enjoyed it even if I never played. Just reading the rules of the game was amazing". On the last day of camp, parents were invited to come watch their children play in a tournament composed of teams from players at the camp. Owen played 3 games that day, winning all of them, and collecting 15 points. He was named MVP. "After that, some of the coaches talked to my dad and I've been playing competitive hockey ever since".
     
    A big move
     
       Hockey dominated the rest of Owen's childhood and he dominated hockey in Ireland. At age 15, a scout told Owen's father that if Owen was serious about hockey, playing in Canada was the best way to get noticed. Nolan and his brother packed up and moved to St. Jacobs, Ontario the following year. "St. Jacobs has got to be the most Irish looking town in all Ontario", Owen laughs. That doesn't mean the transition wasn't hard. New country, new house, new friends, new school, and new hockey talent to go up against all played a role in Owen's new life. "I was told by my Dad that I could only stay in Canada if I kept my grades up. I studied lots those years". As much studying as Nolan claimed he did, he must have worked out even more. Nolan shot up to 6'1" and approached 190lbs as a senior in high school. "A couple of the lesser known junior teams wanted me to play for them because of size alone. I think I accepted the very first offer". Owen found eventually found success in everything; grades stayed good, hockey games were won, and he established himself as one of the best hockey prospects in the game. "After graduating high school, I was hoping VHLM was a possibility right away. I didn't know it would take 2 more years".
     
    Drafted
     
       As Owen aged up, he played better and better. Unfortunately this worked against him with many scouts knocking him for being an "overager" and crediting most of his success to being older than his competition. "At some point I had to stop listening to the scouts and just do it". Nolan declares himself for the VHLM draft, fully preparing himself to not get drafted and to have to live in a future without playing professional hockey. On his 21st birthday, July 2nd 2019, the draft began. "You hope to get lucky. That someone saw you play enough times and remembered you enough to want you". In the 6th round, Nolan was selected by none other than the Halifax 21sts. "Going to the 21sts on my 21st birthday was unreal. The luck of the Irish was with me that day". Nolan is excited to start his next chapter in the VHL. There is still lots of work ahead of him.
     
      
     
  18. Thanks
    studentized reacted to Josh in S67 Regular Season Index   
    INDEX
     
    @VHLM GM 
     
    As a reminder to the GM's you'll be sending lines (the .shl file with your team name) to both rpower22@gmail.com and vhlsim@outlook.com. Please look over your rosters and let me know if there are any issues. I simmed a few preseason to make up for the delay in getting this up.
  19. Like
    studentized reacted to fonziGG in Owen Nolan - Biography [2/2]   
    Review: I think if you put the pictures in the centre, it would've been a bit more aesthetically pleasing. Grammar was pretty good, story was good. Mostly what I find wrong with your biography is the aesthetics but in all honesty, it doesn't take away much with the story. 8/10 would read again!
  20. Like
    studentized reacted to Big Mac in Owen Nolan - Biography [2/2]   
    Review: Solid biography ,some oddities though. Some of your pictures do look like they shouldn’t be centered which you didn’t do , but the cornfield picture. It’s a yikes, and in the only section that has more then one paragraph wasn’t indented. The title of the picture of the corn field probably should’ve been on top of the picture and it should’ve been italicized, or it should at least stand out from the other pictures. For a story/ biography with 6 sections I’m expecting more pictures. Overall it was solid. Your grammar was better than most who do these. I’ll give you a 6.6/10.
  21. Like
    studentized got a reaction from fonziGG in Owen Nolan - Biography [2/2]   
    Biography
     
       Owen Liam Nolan was born on July 2nd, 1998 in the small town of Bangor in Belfast, Ireland. He became the youngest of three children, joining eldest brother Patrick and middle sister Elizabeth, to be born to parents Christopher and Katherine. At the time of Nolan's birth, hockey was not even remotely on the radar of the family. The Nolan's have tended to a legacy corn field that has been in their family for generations, earning them a reputation among Belfast as the best corn in Ireland. As is the case with most farm families, every member was expected to help out any way they could, with Christopher taking on the majority of work along his own dad (Nolan's grandfather) Thomas Nolan, while Katherine primarily looked after raising the children. Everything about the Nolan's painted a very 'Nuclear Family' type picture, right up until tragedy struck and Owen took the ice for the first time.
     
    The Nolan corn field

     
     
    A dream
     
       Owen rarely had his interests captured with school, even from a young age. He prided himself on being a very hard worker and being able to lend a hand to help his brother, father, and grandfather back home on the farm. When asked about his favourite school subject he remembered growing up, Nolan answered "Geography, probably. I have always wanted to travel the world". Owen remembers textbooks depicting children his age playing unfamiliar sports like baseball and basketball and wondering why he had never been shown anything but Rugby and Football. After seeing a picture of players on an outdoor ice rink playing hockey, Owen became "obsessed", his father jokingly remarked. 
     
       The Nolan's were regulars at ice rinks in the area, because older sister Elizabeth had been involved in figure skating from the age of 7. But when Owen tried to describe the picture of hockey he saw to his parents, neither had any idea what he was talking about. They signed him up with his sister for figure skating instead, much to his dissatisfaction. Owen was a natural on the ice claims his sister. "Better skater than I was from the moment he stepped on". However it quickly became apparent that he was not going to figure skate at a high level. "Better skater, but much much worse dancer" Elizabeth joked. After a while, Owen forgot about his picture of hockey, associating it with other fairy tales he was told growing up. He prepared to get involved in rugby.
     
    The accident
     
       In April 2008, when Owen was 9 years old, Katherine was involved in a car accident that would take her life. "No one is prepared for that kind of thing" Owen says. "I remember the whole family having a hard time coping. Those following months were kind of a blur… and the farm got in pretty bad shape." Owen recounts that older brother Patrick soon after dropped out of school and never went back. Patrick would spend most of his time trying to maintain the farm and driving Elizabeth to and from figure skating practices. His father spent most of his time working, trying to hold his family together. On his 10th birthday, Owen received a gift to attend a hockey camp in Dublin, something his Mom had arranged months prior. "I just thought they wanted to get rid of me. I only found out it was Mom's idea until I was much, much older". He went on to say "it was exactly what I needed."
     
    A first taste of hockey

     
       Owen was on his own for the first time in his life, adding to an already exhausting summer. "I remember knowing nobody and feeling like I didn't measure up to the rest of the kids from the get go". "I still didn't believe that hockey was real" he went on to say.  It took some time for Owen, but stepping onto the ice, all geared up, would become a form of therapy that summer. Nolan recalls having a lot of fun throughout the camp. "I think I would have enjoyed it even if I never played. Just reading the rules of the game was amazing". On the last day of camp, parents were invited to come watch their children play in a tournament composed of teams from players at the camp. Owen played 3 games that day, winning all of them, and collecting 15 points. He was named MVP. "After that, some of the coaches talked to my dad and I've been playing competitive hockey ever since".
     
    A big move
     
       Hockey dominated the rest of Owen's childhood and he dominated hockey in Ireland. At age 15, a scout told Owen's father that if Owen was serious about hockey, playing in Canada was the best way to get noticed. Nolan and his brother packed up and moved to St. Jacobs, Ontario the following year. "St. Jacobs has got to be the most Irish looking town in all Ontario", Owen laughs. That doesn't mean the transition wasn't hard. New country, new house, new friends, new school, and new hockey talent to go up against all played a role in Owen's new life. "I was told by my Dad that I could only stay in Canada if I kept my grades up. I studied lots those years". As much studying as Nolan claimed he did, he must have worked out even more. Nolan shot up to 6'1" and approached 190lbs as a senior in high school. "A couple of the lesser known junior teams wanted me to play for them because of size alone. I think I accepted the very first offer". Owen found eventually found success in everything; grades stayed good, hockey games were won, and he established himself as one of the best hockey prospects in the game. "After graduating high school, I was hoping VHLM was a possibility right away. I didn't know it would take 2 more years".
     
    Drafted
     
       As Owen aged up, he played better and better. Unfortunately this worked against him with many scouts knocking him for being an "overager" and crediting most of his success to being older than his competition. "At some point I had to stop listening to the scouts and just do it". Nolan declares himself for the VHLM draft, fully preparing himself to not get drafted and to have to live in a future without playing professional hockey. On his 21st birthday, July 2nd 2019, the draft began. "You hope to get lucky. That someone saw you play enough times and remembered you enough to want you". In the 6th round, Nolan was selected by none other than the Halifax 21sts. "Going to the 21sts on my 21st birthday was unreal. The luck of the Irish was with me that day". Nolan is excited to start his next chapter in the VHL. There is still lots of work ahead of him.
     
      
     
  22. Like
    studentized reacted to DollarAndADream in Studentized's Review Log   
    @studentized
    1 TPE.
     
    Great start to reviewing and welcome to the league!
    Only thing I want to add is to put "Review:" before your reviewing posts, to separate them from regular posts so other reviewers know what is a review or not. I've already edited that in for you on those 4.
  23. Like
    studentized got a reaction from nethi99 in Off-Season Run-Down I - The Bottom Five [1/2]   
    Review: Just joined the league a week ago, so still wrapping my head around the VHLM, let alone the VHL. These posts are awesome. Really helpful in getting me a little more familiar with the league and how much things change year to year. Already rooting for Seattle and Moscow. Thanks for your writeup!
  24. Like
    studentized got a reaction from Beaviss in Off-Season Run-Down I - The Bottom Five [1/2]   
    Review: Just joined the league a week ago, so still wrapping my head around the VHLM, let alone the VHL. These posts are awesome. Really helpful in getting me a little more familiar with the league and how much things change year to year. Already rooting for Seattle and Moscow. Thanks for your writeup!
  25. Like
    studentized got a reaction from animal74 in OO7 Gets A Shot [1/2]   
    Review: Good write up and good luck in Minnesota. Like the pic of the rink in the small town; fits the setting of Slovakia hockey in my mind perfectly. Now go on and become that late round draft steal!
×
×
  • Create New...