Obviously, the Liberals did much better than expected, with a "ballot box bonus" of 4-5%. Some commentators have said that this usually happens in Québec elections. While this may have been true historically, it wasn't in 2007, when the ADQ got the bounce, and in 2008, when the PQ got the bounce. So I don't think that this bounce could have been predicted based on past experience alone. Rather, it is more likely that many Quebecers intending to vote Liberals felt somewhat ashamed, and didn't want to admit it to pollsters: they felt that they had to vote for a party perceived as corrupt because the other options were so unappetizing.
The Liberals' bounce was across the board and allowed them to beat expectations by winning most tight races rather than by coming "out of the blue" in many seats. To see this, here's a region-by-region breakdown of the results:
Far Away Regions: 16 PQ, 1 LIB
3 PQ in Abitibi-Témiscamingue
1 PQ in Northern Québec
2 PQ in Côte-Nord
5 PQ in Saguenay--Lac-St-Jean
3 PQ in Gaspésie--Îles-de-la-Madeleine
2 PQ, 1 LIB in Bas-St-Laurent
I had predicted that the PQ would come close to sweeping this region, which is what happened.
Capitale-Nationale: 6 CAQ, 3 LIB, 2 PQ
Chaudière-Appalaches: 4 LIB, 3 CAQ
7 CAQ, 3 LIB, 1 PQ in Quebec City Census Metropolitan Area
The Liberals did better than expected here, at the expense of the CAQ. I had thought that the CAQ would win at least 12 seats in this area, but it only got 9.
Mauricie: 3 LIB, 2 PQ
Central Québec: 3 CAQ
Estrie: 3 LIB, 2 PQ
Outaouais: 5 LIB
No big surprises in these regions: the Mauricie and the Estrie were predicted to be tight, Central Québec was predicted to go for the CAQ, and the Liberals were expected to win a majority of the Outaouais seats, with a good chance of a sweep. Still, the Liberals came in at the higher end of the expected range, as it beat the PQ in the Mauricie and the Estrie, and swept the Outaouais.
Laurentides-Lanaudière: 11 PQ, 4 CAQ
Laval: 4 LIB, 2 PQ
Montérégie: 13 PQ, 7 LIB, 3 CAQ
Montréal: 20 LIB, 6 PQ, 2 QS
29 LIB, 20 PQ, 6 CAQ, 2 QS in Montréal Census Metropolitan Area
Again, no big surprises, but the Liberals performed at the higher end of expectations everywhere (except Laurentides-Lanaudière, where their only shot was Argenteuil): they kept all their Montréal seats, retained a majority in hard-fought Laval, and saved as many Montérégie seats at they could. The CAQ, on the other hand, performed at the low end of expectations, losing most races to the PQ.
The Liberals won almost every seat where they were in contention, particularly in races against the PQ. Indeed, the Liberals lost only one race to the PQ by less than 3.5% (Saint-François), but won in six ridings with less than 3.5% over the PQ (Richmond, Verdun, Trois-Rivières, Papineau, Maskinongé, Jean-Lesage).
This also means that even though the Liberals had to flip only two PQ seats to hang on to government, they weren't actually that close. Indeed, if the Liberals had gotten 2% extra in every riding, 1.5% from the CAQ and 0.5% from the PQ, they would still have lost the election 53-54 despite winning the popular vote by almost 2%. (In this scenario, the Liberals would have taken Saint-François from the PQ, as well as Vanier and Charlesbourg from the CAQ, but the PQ would have taken La Prairie from the CAQ.)
The four projection models available online all had similar calls, and no single prediction was obviously better than the others. Fortunately, three of these websites published what their projections would have been given the right popular vote. This allows us to assess which vote-to-seat model was most accurate:
Too Close To Call: PQ 51, LIB 48, CAQ 24, QS 2
ThreeHundredEight: PQ 53, LIB 42, CAQ 28, QS 2
RidingByRiding: PQ 48, LIB 44, CAQ 31, QS 2
The clear winner is Too Close To Call, while 308 fares a little better than RxR. All three models overestimate the CAQ. This is probably because they use the ADQ as the CAQ's baseline, but in reality, the CAQ's support isn't as efficiently distributed as the ADQ's was.
We can also wonder about the value added of these models. Anyone could have applied a simple uniform swing to the 2007 or 2008 results: for each party, adding/subtracting the same percentage in every riding, and not take into account the boundary changes. Doing so would have given:
Based on 2007: PQ 52, LIB 43, CAQ 30
Based on 2008: PQ 58, LIB 47, CAQ 19, QS 1
A crude way to transform these into a single sensible projection would be to average them, and bring QS up to 2 seats to the detriment of the PQ. This would have given: PQ 53.5, LIB 45, CAQ 24.5, QS 2.
TCTC fares a little better, so it provides some real value added. On the other hand, unfortunately, 308 and RxR fare worse, so at least for this election, those models weren't very useful, although those websites remain excellent resources for maps (RxR), graphics (308) and analysis (both).