It's mostly about looking at the original ratings and noting the ranges and specific ratings that result in the desired on-court performance and simulated statistics, e.g. if a player shoots around this percentage from three then they should have a three-point rating within this range, if they're averaging a block per game then this should be the rating (higher or lower averages branch out from there), etc. With NBA Live 06, there are also the
qualifying ratings for Freestyle Superstars movesets, which may sometimes require ratings to be slightly fudged.
It's also advisable to look at Per 36 stats, especially for players who aren't playing a lot of minutes (i.e. a player averaging 4.5 assists in 22 minutes per game isn't the same as a player averaging that many dimes in 38 minutes per game). At the same time, stats won't necessarily increase in proportion to minutes, so if a player who managed to get some decent stats in limited minutes and appearances (mostly in garbage time) has Per 36 stats that would give them legendary ratings, it's worth adjusting for that and preferably looking for a bigger sample size.
Basically, volume matters. A big man who shot 3/9 from three-point range in a season should probably have a three-point rating high enough to hit a few in simulation and allow the user to knock down the occasional trey with them as well, but they shouldn't have the same rating as a player who made 120 threes on the year at the same 33% clip. Overreliance on formulas and spreadsheets lead to equating these situations; indeed, we've seen that happen in official rosters, too. It's why hand-crafted ratings turn out much better than strictly formula-driven "spreadsheet" ratings in my opinion.