I have a daughter similar age to yours and I've personally found that shouting is completely counter productive.
I use timeouts as a way to let her have breathing space and a think about what she has done, in a calm way. I never shout at her to go for a timeout, I always crouch down to her level and say in a calm but firm voice "can you go for a timeout, please." She'll sit there for around a minute and then she knows she'll get a cuddle straight after and a quick chat about the reason she had to go for a timeout.
I am always reasonable and consistent. If I see her doing something she shouldn't be doing, I go over to her, again crouch down to her level, and ask her not to and explain the reason why.
I honestly think that we underestimate children of this age and their ability to be rational.
Another thing which is massively important in terms of discipline, is always praising good behaviour. "Aren't you sitting nicely at the table tonight, well done, you're such a good girl", "that was lovely of you to say bye to the lady in the shop" always remembering to praise as much as possible. that way, if she does something she shouldn't do and you ask her not to, she'll be more likely to take on board what you're saying. I think children need to be told they are well behaved in order to believe that they can be well behaved, if that makes sense. I would also agree that you should ban the word "naughty" for that very reason. Tell them they're naughty, tell them they're bad enough times, and they'll believe it.
Staying calm really is key, I think. I only have 2 children, but these methods have really worked for me. Every child is different though but hopefully some of this may be of use to you.