All anchor text you might use can be dropped into one of three categories: keyword rich, generic, and brand. It's essential in this Google era of over optimization penalties that everything seem and look natural. What this means in regards to anchor text is that you get a nice healthy mix of all three.
But what do each of the three mean? Let's cover each of the three types of anchor text:
Keyword Rich – This relates to the keyword you're targeting. If you have a website on puppy training, you'd probably want to create links pointing to your site with the anchor text “puppy training” to help Google identify that your website is a solid match for search queries someone might do related to “puppy training”. It's important to not only use your keyword, but variations of that keyword, as well in anchor text pointing to your site.
If you overuse your keywords in anchor text pointing to your site, that looks suspicious to Google who only wants you to get natural links from other webmasters. This makes sense that it would look strange because other webmasters when linking to your site from their site
Generic – Generic keyword anchor text relates to using words unrelated to your site or niche. Generic anchor text is used most often when creating hyperlinks because it's easy and unnatural. A prime example of generic anchor text would be the simple call to action “click here”.
Brand – Brand related anchor text is anchor text which simply relates to your brand/company/website name. This can be using your business' name itself as the anchor text or even just using your URL as the anchor text.
I don't want to tell you there's a perfect ratio you should strike between keyword, generic, or brand related anchor texts when pointing links to your site. The only thing I'd recommend is to use common sense when approaching it. Most natural links you'd get to your site would either be generic or brand/URL related, so make sure you have plenty of those while throwing in the occasional keyword rich anchor text.