There's so much calculus that goes into answering this question it makes my brain hurt. This is generally a good flow chart to follow, but the last bit is where it gets iffy. That's the diffusion of responsibility problem. If you're in public, the answer is always going to be "no". I think something most people forget is that you don't have to "say something" to fix a situation. Often times you can diffuse a situation or prevent harm merely by creating a distraction. You don't have to jump into something with judgment or harshness. Giving people a graceful off-ramp from a bad situation usually fixes the problem. This is particularly important in public situations where escalation chances tend to run high. In private people tend to be more reasonable and so you can be more direct, but of course approach those situations with caution because you never know what lunatic you might be dealing with. It's always a good idea to follow the 'duty to retreat' mantra first. If you can simply leave a dangerous or bad situation, you should.