There's a sampling bias in pedestrian / cyclist / driver discourse that I don't think gets enough attention. Assuming similar speed in each group, but grossly different speed between groups, each group will encounter far more examples of various behaviors from the other groups than from their own group.

Imagine 100 drivers, 100 cyclists, and 100 pedestrians all travel a few blocks down the same city road, spread out evenly. Each driver passes 90 cyclists and 100 pedestrians. Each cyclist is passed by 90 drivers and passes 90 pedestrians. Each pedestrian is passed by 90 cyclists and 100 drivers. So, they all see almost all of the people of the other types and whatever misbehavior they get up to.

However, the average driver only passes 10 other drivers, the average cyclist passes 10 other cyclists, and the average pedestrian passes 10 other pedestrians. So they see relatively few of their own type of person.

So, if 1/10 people misbehave across the board, then drivers will see 1 bad driver, 9 bad cyclists, and 10 bad pedestrians. But cyclists will see 1 bad cyclists, 9 bad drivers, and 9 bad pedestrians. And pedestrians will see 1 bad pedestrian, 9 bad cyclists, and 10 bad drivers.

Everyone is going to experience far more examples of misbehavior by the other groups than by their own group, but nobody seems to account for this in evaluating their own perceptions. Of course, the 1/10 remains constant, but the absolute observations of misbehavior will often have far more impact than the proportions.