Fantasy analysis is all about trying to predict the future.

Of course, it's hard enough to predict how things are going to go when we have some level of control over them -- I'm going to overcook my steak about 20 percent of the time, even if I follow instructions. When it comes to things we have no control over -- like, say, Jean Segura's performance in road games -- Fantasy experts can be the blind leading the blind.

With this in mind, I decided to take a look back at last year's results and look for hints that might tell us what will happen this year. I took a look at the top 100 of a mock draft we did from 2016, and tried to sort the busts into categories.

In a few weeks, I will look for players heading into 2017 who might fit those categories who you might be able to avoid. Hopefully, we can use hindsight to tell us where to go.

Mistake Category 1: Paid for a career year

Examples: Bryce Harper (No. 1), Dee Gordon (No. 32), Dallas Keuchel (No. 35), Zack Greinke (No. 34), Lorenzo Cain (No. 58)

No ad available
Bryce Harper
PHI • RF • #3
View Profile

I was a proponent of drafting Harper No. 1 overall, and I actually drafted Cain in this mock, so I certainly fell for this trap. Harper was so good in 2015, that it was easy to imagine that he was just finding his new floor at the age of 22, so betting on his pedigree certainly didn't seem like a bad idea.

However, while he will end up besting his 2015 season at some point, it wouldn't be a surprise if that ended up as the best season of what could still be a Hall of Fame career in the end.

Dee Gordon
2B

Gordon was an obvious regression candidate, but nobody could have seen his PED ban coming. His stolen base pace remained around the same, but Gordon's batting average fell 65 points, which was the primary driver of his disappointing season. However, it is worth noting, his run pace was actually ahead of his 2015 number, and with that and his steal pace, Gordon could actually be a sneaky value in an improved Marlins' lineup.

No ad available

Cain may be the most obvious example here because he entered 2015 with nearly 1,400 plate appearances to his name, with a pretty established level of play. He more or less matched his 2014 production in 2016, though the drop in steals from 28 to 14 was a tough pill to swallow. Of course, you should expect any player to run less as he enters his 30's. We should have seen this one coming.

We'll talk about Keuchel and Greinke in a minute.

Mistake Category 2: Paid for pitcher with middling strikeout rates

Examples: Zack Greinke (No. 34), Dallas Keuchel (No. 35), Sonny Gray (No. 57), Michael Wacha (No. 93)

This one is going to be controversial, and might need to be fleshed out into a longer piece, but we saw a glaring example of how slim the margin for error is with these pitchers. Strikeouts can be a bit overrated to a certain extent. It's not a surprise or a coincidence that Keuchel took a big leap forward when his strikeout rate spiked.

No ad available
Zack Greinke
KC • SP • #23
View Profile

Greinke is a good example of this. It's not that he isn't a great pitcher, but he benefited from his defense turning balls into outs at an unsustainable pace in 2015, and also from a ton of called strikes. Both of those are things Greinke has always been pretty good at, but both also depend heavily on the defense behind him, and are impacted quite a bit by sheer random chance.

Strikeouts are one of the things pitchers have control of, and when you strike out fewer batters, you leave yourself open to a wider range of outcomes. It doesn't mean you can't be very good without striking a ton of batters out -- all four of these proved that in 2015 -- but it probably means you are less reliable moving forward.

Mistake Category 3: Ignored signs of decline

Examples: Troy Tulowitzki (No. 23), Yasiel Puig (No. 75), Carlos Gomez (No. 81)

No ad available
Troy Tulowitzki
NYY • SS • #12
View Profile

Tulowitzki's decline in 2015 was shielded a bit by Coors, but he still had just an .818 OPS in Colorado before flaming out with a .697 mark in Toronto following the trade. He had a decent season in 2016, clubbing 24 homers and driving in 79 runs, but with a .254 batting average, he no longer stood out at shortstop.

Yasiel Puig
CLE • RF • #66
View Profile

Puig is likely to go 150 spots later this year than last, even though he was basically the same player in both 2015 and 2016. Fool me once, shame on me, and all that. At this point, we're two full years removed from him being a truly useful Fantasy option, and though he is still just 26, nobody wants to bet on him coming back to his early-career form. That could make him a nice buy-low bounce-back candidate, when the cost comes in the mid-teen rounds rather than the sixth.

Carlos Gomez
NYM • CF • #91
View Profile

What is more indicative of where Gomez is at as a player now: the 800 mediocre (at best) plate appearances he racked up between 2015 and the first half of 2016, or the 130 elite ones he had with Texas late last season?

No ad available

Given his waning athleticism, it probably makes more sense to assume the former.

Mistake Category 4: Drafted on wrong side of the aging curve

Examples: Adrian Gonzalez (No. 54), Prince Fielder (No. 62)

Adrian Gonzalez
NYM • 1B • #23
View Profile
Prince Fielder
DH

Gonzalez and Fielder both had pretty strong track records coming into last season, but as the old cliche goes, Father Time remains undefeated. There's nothing wrong with drafting an old player -- Gonzalez was still useful, with a .285 average, 18 homers and 90 RBI -- but age is just one more factor that makes any player riskier. You need an age-based discount priced in.

Mistake Category 5: Ignored injury concerns

Examples: Adam Wainwright (No. 69), Michael Brantley (No. 77)

Adam Wainwright
STL • SP • #50
View Profile

Predicting injuries is impossible, but ignoring what's in front of our faces is just bad analysis. Wainwright actually managed to make it through the entire season healthy in his return from a ruptured Achilles, which wasn't necessarily a good thing. He led the majors in runs and hits allowed.

No ad available

Wainwright got better as the season went on, but it shouldn't be much of a surprise that a 34-year-old coming back from an injury that tends to ruin careers struggled so mightily.

Michael Brantley
HOU • LF • #23
View Profile

Brantley didn't have the age-related questions, but the fact that he wasn't even cleared to play by opening day should have been a much bigger red flag than we let it be. There's no guarantee every player who comes back from an injury will struggle the way Brantley did, as his season ultimately came to an end in May. But we probably tend to assume players will recover from injuries more smoothly than they eventually do.

¯\_(ツ)_/¯: **** happens

Andrew McCutchen (No. 14), Chris Davis (No. 19), Matt Harvey (No. 36), Gerrit Cole (No. 46)

No ad available

Sometimes guys just get hurt or stop performing to their expected levels. Sometimes you just have a ton of bad luck hit one player at all once. These are the guys you can't even feel bad about drafting, and the ones who we probably can't learn all that much about moving forward.

You might have seen McCutchen's regression coming last season, but I think it's safe to say most of us were blind to it.