I was about to try and write this all myself but then tought someone else can do a better a job so looked on Google
All vehicles have an optimum operating temperature, and the colder it is, the longer it takes to get there. While modern engines make very efficient use of the fuel mixture entering the engine, they rely upon the oxygen sensor to monitor the O2 content of the exhaust, as well as sensors for manifold pressure, mass air flow, throttle position, and coolant temperature, among others. All of this information is communicated to the vehicle’s computer that continually adjusts ignition and valve timing as well as fuel injector pulse width, to fine tune the amount of fuel delivered to each cylinder. This is done many times per second. But here’s the caveat—this engine-management system is only at tip-top efficiency when the engine is at full operating temperature. And when the mercury’s showing low, all vehicles require longer periods of time to reach that full operating temperature—and it’s in that warm-up period that efficiency is lost.
Add to that the common practice of making short trips (to minimize running to and fro in sub-zero temps and wind chills), and each time your vehicle cools down it has to come back up to optimal operating temperature. It all takes its toll.
There are also loads of little things like using the heater, the windscreen electric heater, the heated seats and the colder temperature also lowers your tyre PSI, all the little things then add up to take away that extra MPG.