So we don't have access to our own source code. What can feel like direct introspection is an illusion. Really, we model ourselves like we model other people. Our explanations are often not even real explanations. "I did that because I wanted to". No shit?
However, we do have more to go on when modeling ourselves. We spend more time with ourselves than anyone else, for one. But more interestingly, we can simulate our own responses. Of course, we can pretend to simulate our response and then just make ourselves look good, and even believe that we believe our lie - but that would be stupid.
So treat it like any other system identification problem. Want to know why you chose that specific car? Want to know what property of input X caused the system to return Y? Make some guesses and test them.
Okay, so how do we do these tests? Imagine that you're in that situation. No, not "play pretend" and surface act, really imagine it. Imagine that you're really doing it and not just imagining it. Be comfortable with finding answers you didn't want to find - because if you're averse to them, then you'll inhibit your true response and you're bullshitting yourself. If you're doing it right, you should be able to notice this happening. Can you imagine getting back a low status answer without going "Ugh!"? If not, you're not ready. If you can't be comfortable seeing what the real answer is, then you won't let yourself really get into the simulation, and the exercise is worthless. If it starts to feel more like "then I'd do the right thing" rather than feeling like actually doing something, then you're back to bullshitting yourself.
So get comfortable with it. You don't have to be any more honest with other people than you were before. You can allow yourself to be "bad" sometimes - that way you have nothing to hide from yourself. Of course, once you find out that you were doing something stupid and why you were doing it, you'll usually be totally fine with changing it - it's just that you don't get the chance if you have reasons to hide it from yourself.
So run some tests. Is it because of the price? Imagine it was priced higher. Still feel like buying it? Yes? Okay, that's not it. Imagine if the car was green instead of red. Still feel like buying it? No? Then it was the color. Red is sexy, and you like red. Deal with it.
Or just use system 2 next time. If you decide before hand to buy the cheapest milk, you can probably be confident that you bought it because it was cheap, not because of the brand name (unless you have a history of changing your mind and using other criteria once you get to the store). Of course, the next part of the explanation is figuring out how you chose the criteria that you used.
It's also worth noting that you can't do a perfect simulation because of the effect of priming from things you dont remember to re-prime with. Usually it doesn't seem to matter.