"favorite position" is actually more a "suggested position". How a player performs in games, and how he trains is based entirely on his individual skills and what position you use him at in your games.
The "favorite position" is actually calculated, and can change based on training. It appears that the calculation is primarily based on comparing various skills.
For example, a PG will tend to have better passing, handling, and driving skills than his shooting skills. If he is a good shooter, then he will have very good passing skills. But he might have abysmal shooting skills, and ordinary passing skills. He will be classified as a "PG" but you might not want him to be your PG. You could probably do better using a player classified as a SG, who actually can pass the ball.
What tends to differentiate between C and PF, is that PF will have a reasonable JS. You might be able to pick up a player who is classified as a PF, but he might have less IS, ID, rebounding and SB skills which will make him perform worse as PF in your games, than a player classified a C who has a so-so JS.