Friday, 7 March 2025

Bonus: WA Electoral Maps

It's been a long while since I last did one of these, but the official maps are not very useful for those who like to fill in a cop at home.

I've made these ones for my personal use, so I figures I might as well post them here for others who may be interested. There is an anti-aliased version to print out and annotate by hand, and an aliased version for use with basic image software.

Anti-aliased:


Aliased:



Sunday, 2 March 2025

New WAs of Voting

Western Australia has changed how it elects its Legislative Council, now adopting a single, state-wide electoral district which elects 37 Councillors through proportional representation. For a Councillor to be elected, then, they need a quota of 1/38th of the votes +1 (disregarding any remainder) or ~2.63% of the vote.

There isn’t, to my knowledge, any polling on people’s voting intentions in the 2025 Legislative Council election. However, historically, voting in the Council and Assembly has been generally comparable.


Notes: This chart only plots parties running in 2025 where they ran in the Legislative Council and Legislative Assembly in the same year.

This is somewhat surprising, as I would have expected the plethora of candidates on upper-house ballots to entice more voters away from the major parties who make up the predominant options in the lower-house.

Given there is little evidence that people vary their voting preference between the Legislative Assembly and Council despite radically different electoral processes, it is fair to assume the relatively minor change in counting method will not significantly divert the average voter.

The equivalence between voting in the two houses only seems to break down significantly when polling below about 1% or 1.5% where parties can perform better in the Council elections with poorer, or virtually absent, Assembly success; this may be a symptom of having candidates in only a handful (or less) Assembly races but access to much larger voter groups in the Council, a phenomena greatly exaggerated under the new system where state-wide exposure is available to Council candidates.

It is also worth noting that polls in the leadup to elections do not tend to overestimate “Other” voters, which one might assume was the case if undecideds weren’t attracted to any major party.

Note: Other here is defined as any party other than Labor, Liberal, National or Greens.

Current polling has Labor at 42%, Liberal at 32%, Greens at 12%, One Nation at 4% and Nationals at 3% of the primary vote.


From this we can safely assume on first preferences, with a little flexibility that’ll all wash out in the preference flows: 16 Labor Councillors, one National, 12 Liberal, four Greens with a fifth well on the way, one One Nation and a good start on a second.

That alone accounts for 34 of the 37 upper house seats, and would require Labor to pick up all three remaining to secure a majority. It’s still a very workable upper-house for Labor without this, though, with the ability to secure a clean majority on left-of-center issues by working with the Greens or on core business-as-usual matters by working with the Liberal party (e.g. supporting employment opportunities and keeping the economy afloat) if the minor parties start becoming too “activist” for the government’s liking.


There are three independents currently in the Legislative Council running in 2025: Kingston, Moermond and (following a recent legal name change) Trump. I don’t see all of these holding onto their seats. A high profile in the South West likely won’t carry any of these, though Mr. Aussie Trump may secure some support from fringe voters enamoured with the state of US politics.

Similar at-the-ballot impressions may favour the Animal Justice Party, Australian Christians, Legalise Cannabis, Stop Pedophiles! and to a lesser extent Libertarian and Sustainable Australia Parties. Shooters, Fishers and Farmers may also get support in key regional areas where they’ve built up a presence.

I’d suspect one of these to cut through on luck of the preference draw (taking a wild guess, based on past successes, Legalise Cannabis), Greens to get their fifth seat with aid of Animal Justice or Sustainable Australia, and One Nation to get their second from preferences of Libertarians and Australian Christians.



WA: The (Polling) Pit and the Pendulum

Western Australia goes to the polls next weekend with what looks like an easy win for Labor. The party has consistently polled 10 points ahead on a two-party-preferred (2PP) basis since 2023 and holds 53 of the Legislative Assembly’s 59 seats.

However, some caution is required; the 2021 electoral results were obviously an aberration deriving in part from a very successful early response in WA to the COVID19 pandemic that largely kept the state open while the east coast suffered with frequent lock-downs and outbreaks. Labour not only secured about 70% of the 2PP vote in 2021, they reduced the seats held by the Liberal party to an extent that made them the minority member of the Coalition. I am not aware of any serious observer who considers this to reflect a new status quo in Western Australian politics, and it would be folly to assume that an electoral prediction could simply draw on 2021 data as a starting point.

Simply drawing on 2021 data as a starting point

We can calculate the anticipated state-wide swing to the incumbent government by subtracting the previous 2PP electoral result (69.7%) from the latest polling numbers (56%) which comes out to -13.7 percentage points.

We can then apply this uniformly to the pendulum calculated by Antony Green and get a feel for which seats are likely to flip.

DISTRICT INCUMBENT ALP MARGIN -13.7 PP
Albany ALP 11.0% -2.7%
Armadale ALP 33.8% 20.1%
Balcatta ALP 25.8% 12.1%
Baldivis ALP 35.8% 22.1%
Bassendean ALP 31.7% 18.0%
Bateman ALP 6.7% -7.0%
Belmont ALP 29.4% 15.7%
Bibra Lake ALP 28.2% 14.5%
Bicton ALP 16.2% 2.5%
Bunbury ALP 22.5% 8.8%
Butler ALP 32.6% 18.9%
Cannington ALP 30.7% 17.0%
Carine ALP 3.9% -9.8%
Central Wheatbelt NAT -9.3% -23.0%
Churchlands ALP 1.6% -12.1%
Cockburn ALP 28.1% 14.4%
Collie-Preston ALP 23.3% 9.6%
Cottesloe LIB -7.4% -21.1%
Darling Range ALP 14.1% 0.4%
Dawesville ALP 13.1% -0.6%
Forrestfield ALP 22.9% 9.2%
Fremantle ALP N/A N/A
Geraldton ALP 9.3% -4.4%
Girrawheen ALP 33.4% 19.7%
Hillarys ALP 18.7% 5.0%
Jandakot ALP 18.2% 4.5%
Joondalup ALP 25.5% 11.8%
Kalamunda ALP 14.5% 0.8%
Kalgoorlie ALP 11.2% -2.5%
Kimberley ALP 21.4% 7.7%
Kingsley ALP 16.9% 3.2%
Kwinana ALP 38.2% 24.5%
Landsdale ALP 25.6% 11.9%
Mandurah ALP 24.2% 10.5%
Maylands ALP 29.3% 15.6%
Midland ALP 26.9% 13.2%
Mid-West NAT -8.6% -22.3%
Mindarie ALP 27.9% 14.2%
Morley ALP 27.9% 14.2%
Mount Lawley ALP 21.9% 8.2%
Murray-Wellington ALP 17.3% 3.6%
Nedlands ALP 3.1% -10.6%
Oakford ALP 27.7% 14.0%
Perth ALP 29.2% 15.5%
Pilbara ALP 17.6% 3.9%
Riverton ALP 10.9% -2.8%
Rockingham ALP 37.7% 24.0%
Roe NAT -12.2% -25.9%
Scarborough ALP 9.5% -4.2%
Secret Harbour ALP 31.3% 17.6%
South Perth ALP 10.1% -3.6%
Southern River ALP 33.1% 19.4%
Swan Hills ALP 27.3% 13.6%
Thornlie ALP 30.6% 16.9%
Vasse LIB -4.3% -18.0%
Victoria Park ALP 27.7% 14.0%
Wanneroo ALP 28.5% 14.8%
Warren-Blackwood ALP 2.2% -11.5%
West Swan ALP 34.8% 21.1%

Notes:
Freemantle is marked N/A, as the 2PP result in that seat was a Labor v Greens race. 
Unsurprisingly most of the seats leaving the Labor fold were held by the Coalition before the 2021 election, and here are assigned to the Liberal or National parties based on the previous incumbent.
Geraldton is given to the Liberal parts, as they won the seat in the 2017 election, though the member defected to the Nationals in 2019.
Albany is given to the Liberals as this party came in second place in 2021 and held the seat in 2001; the Nationals last held Albany in 1956.

On these numbers the Coalition picks up 12 seats (11 Liberal seats and 1 National). This count is hardly surprising; the current 2PP polling (56:44) is quite close to the 2017 electoral results (55.5:44.5) forming the Legislative Assembly prior to the 2021 upset which cost exactly this distribution of seats.

That leaves the Labor party with 47 seats, ignoring Fremantle for the time being, and a safe enough margin to secure majority government even if they also lose the close fights in Bicton, Darling Range, Kalamunda and Kingsley. The Coalition only holds 17 (Liberal 13, Nationals 4).

Forewarning – this comfortable lead will not be substantially shaken by the analysis through the rest of this post.

Back to the Future

Perhaps, if the 2021 election was such an aberration, it is more appropriate to ignore that year entirely and compare current polling to the pendulum as it stood before that date.

As already noted, there is little movement between the 2017 results and the 2025 polling. A uniform swing of +0.5 percentage points is well within the margin of error any of the polls.

DISTRICT INCUMBENT PRE-2021 +0.5 PP
Albany ALP 5.9% 6.4%
Armadale ALP 25.2% 25.7%
Balcatta ALP 8.0% 8.5%
Baldivis ALP 16.6% 17.1%
Bassendean ALP 21.6% 22.1%
Bateman LIB -7.8% -7.3%
Belmont ALP 11.4% 11.9%
Bibra Lake
(Willagee)
ALP 17.7% 18.2%
Bicton ALP 3.6% 4.1%
Bunbury ALP 10.5% 11.0%
Butler ALP 20.5% 21.0%
Cannington ALP 17.6% 18.1%
Carine LIB -10.2% -9.7%
Central Wheatbelt NAT -22.2% -21.7%
Churchlands LIB -11.7% -11.2%
Cockburn ALP 14.3% 14.8%
Collie-Preston ALP 14.7% 15.2%
Cottesloe LIB N/A N/A
Darling Range LIB -3.5% -3.0%
Dawesville LIB -0.8% -0.3%
Forrestfield ALP 9.4% 9.9%
Fremantle ALP 23.0% 23.5%
Geraldton LIB -1.3% -0.8%
Girrawheen
(Mirrabooka)
ALP 23.3% 23.8%
Hillarys LIB -0.4% 0.1%
Jandakot ALP 1.8% 2.3%
Joondalup ALP 0.0% 0.5%
Kalamunda ALP 2.3% 2.8%
Kalgoorlie LIB -6.2% -5.7%
Kimberley ALP 13.1% 13.6%
Kingsley ALP 1.2% 1.7%
Kwinana ALP 20.7% 21.2%
Landsdale ALP 9.6% 10.1%
Mandurah ALP 18.0% 18.5%
Maylands ALP 17.9% 18.4%
Midland ALP 12.8% 13.3%
Mid-West
(NW Central + Moore)
NAT -14.8% -14.3%
Mindarie
(Burns Beach)
ALP 5.4% 5.9%
Morley ALP 12.3% 12.8%
Mount Lawley ALP 4.0% 4.5%
Murray-Wellington ALP 1.7% 2.2%
Nedlands LIB -8.0% -7.5%
Oakford N/A N/A N/A
Perth ALP 12.6% 13.1%
Pilbara ALP 2.2% 2.7%
Riverton LIB -4.2% -3.7%
Rockingham ALP 23.5% 24.0%
Roe NAT N/A N/A
Scarborough LIB -5.7% -5.2%
Secret Harbour
(Warnbro)
ALP 23.7% 24.2%
South Perth LIB -7.2% -6.7%
Southern River ALP 7.9% 8.4%
Swan Hills ALP 12.1% 12.6%
Thornlie ALP 15.8% 16.3%
Vasse LIB -14.6% -14.1%
Victoria Park ALP 16.8% 17.3%
Wanneroo ALP 8.6% 9.1%
Warren-Blackwood NAT -12.8% -12.3%
West Swan ALP 18.4% 18.9%

Notes:
Where seats were renamed, their pre-2023 names are provided in parentheses.
No data is provided for Cottesloe, as the most recent by-election gave a 2PP race between the Liberal and Greens. No data is given for Roe as this 2PP race was Nats against Libs.
Darling Range’s data is also based on a by-election.
Geraldton is shown as a Liberal seat even though, as noted above, the member joined the Nationals during this term. With that candidate no longer incumbent and not running in 2025 it is assumed the Liberals will once again be the Coalition party of choice in the seat.
Mid-West is, roughly speaking, an amalgamation of the preceding districts of North West Central and Moore. These were held by Nationals candidates with a 10.1 and 19.5 PP 2PP lead prior to 2021; this has been averaged to 14.3 PP above.
Oakford did not exist prior to 2023, and thus has no data here.

Applying a uniform 0.5 PP swing to Labor across the pre-election 2021 pendulum gives broadly consistent outcomes: Labor 41, Coalition 15 (Liberal 12, Nationals 3).

Of course, the pre-election pendulum doesn’t take into account the boundary changes in the districts (leading to a few of the issues discussed in the associated notes above). To properly calculate this pendulum in anticipation of Saturday’s election, we should actually go to the WAEC’s breakdown of results by polling place (e.g. Albany’s data at https://www.elections.wa.gov.au/elections/state/sgelection#/sg2017/electorate/ALB/results), develop a formula to resolve where these landed on a 2PP basis from the seat’s distribution of preferences data, then add up the place-by-place results within the new district boundaries. That’s an awful lot of work to moderately improve the utility of 8-year-old data which will then be force-fed into a very crude predictive model.

Instead, I’m going to look at the raw, blunt 2PP shift that resulted from Antony Green’s 2023 calculations (aberrant 2021 data and all) and add or subtract these from the pendulum above. So, for example, Albany was held with a 5.9 percentage point margin going into the 2021 election. Mr Green found the 2023 redistribution took Labor in Albany from a 13.7 PP lead post 2021 to 11.0 PP going into 2025.

That’s a drop of 2.7 PP. If we (naively) assume that is directly applicable back through time, we could say the 2023 boundary change drops the 2017 Albany margin from 5.9 PP to 3.2 PP.

This is called the ‘2023 Shift’ in the table below, and is applied to calculate a new pendulum. Where this column fades to white, it represents a shift that narrows the margin of the seat. Where the colour intensifies, it indicates the seat has become more entrenched. Finally, we apply the same 0.5 PP uniform swing based on polling to predict who wins the seat.


Note: the 2023 Shift for Mid-West is derived by averaging the respective -1.7 and -8.5 shifts of North West Central and Moore.

So Where Does That Leave Us?

We’ve applied polling to three different pendula now. In 50 of these seats, the data agrees across all three:

INCUMBENT 2025 -13.7PP 2021 +0.5PP NEW +0.5PP AGGREGATE
ALP -2.7% 6.4% 3.7%  
ALP 20.1% 25.7% 24.0% ALP
ALP 12.1% 8.5% 8.5% ALP
ALP 22.1% 17.1% 16.0% ALP
ALP 18.0% 22.1% 22.2% ALP
LIB -7.0% -7.3% -7.3% LIB
ALP 15.7% 11.9% 12.1% ALP
ALP 14.5% 18.2% 19.3% ALP
ALP 2.5% 4.1% 4.7% ALP
ALP 8.8% 11.0% 11.0% ALP
ALP 18.9% 21.0% 21.4% ALP
ALP 17.0% 18.1% 18.4% ALP
LIB -9.8% -9.7% -8.3% LIB
NAT -23.0% -21.7% -20.3% NAT
LIB -12.1% -11.2% -10.4% LIB
ALP 14.4% 14.8% 16.2% ALP
ALP 9.6% 15.2% 15.1% ALP
LIB -21.1% N/A N/A  
LIB 0.4% -3.0% -2.4%  
LIB -0.6% -0.3% -1.1% LIB
ALP 9.2% 9.9% 7.3% ALP
ALP N/A 23.5% 22.7%  
LIB -4.4% -0.8% -3.2% LIB
ALP 19.7% 23.8% 23.5% ALP
LIB 5.0% 0.1% -0.2%  
ALP 4.5% 2.3% 0.5% ALP
ALP 11.8% 0.5% -0.3%  
ALP 0.8% 2.8% 5.5% ALP
LIB -2.5% -5.7% -6.5% LIB
ALP 7.7% 13.6% 13.5% ALP
ALP 3.2% 1.7% 1.7% ALP
ALP 24.5% 21.2% 24.6% ALP
ALP 11.9% 10.1% 10.3% ALP
ALP 10.5% 18.5% 17.5% ALP
ALP 15.6% 18.4% 18.4% ALP
ALP 13.2% 13.3% 14.7% ALP
NAT -22.3% -14.3% -17.8% NAT
ALP 14.2% 5.9% 6.9% ALP
ALP 14.2% 12.8% 12.1% ALP
ALP 8.2% 4.5% 4.8% ALP
ALP 3.6% 2.2% 2.3% ALP
LIB -10.6% -7.5% -7.2% LIB
N/A 14.0% N/A N/A  
ALP 15.5% 13.1% 13.0% ALP
ALP 3.9% 2.7% -0.1%  
LIB -2.8% -3.7% -1.8% LIB
ALP 24.0% 24.0% 24.0% ALP
NAT -25.9% N/A N/A  
LIB -4.2% -5.2% -6.1% LIB
ALP 17.6% 24.2% 22.1% ALP
LIB -3.6% -6.7% -6.7% LIB
ALP 19.4% 8.4% 8.4% ALP
ALP 13.6% 12.6% 12.8% ALP
ALP 16.9% 16.3% 16.0% ALP
LIB -18.0% -14.1% -14.1% LIB
ALP 14.0% 17.3% 17.2% ALP
ALP 14.8% 9.1% 9.2% ALP
NAT -11.5% -12.3% -11.4% NAT
ALP 21.1% 18.9% 19.5% ALP

This still gives the Labor party 36 seats, enough to comfortably form a majority government.

The nine undecided seats are:

Albany, which has been a solid Labor district for over two decades. The Shire of Plantagenet is a new addition to the seat with a strong Nationals voting base, but while the Liberals have significantly recovered in the polling data, we’ve not seen similar gains for the Nationals. This’ll surely be a close race, but I’m tipping Labor to hold this one.

Cottesloe, which is a foregone conclusion for the Liberals. This is one of the two seats that the Liberal party held in the onslaught of 2021, and in a year where they make a come-back this is a no-brainer. Cottesloe only appeared as an unclear result because of ‘N/A’ data from pre-2021 – this is due to Labor preforming so poorly here that the 2PP race was between Liberals and the Greens (which the Libs won with a more than 20 PP margin), and there is no real suggestion the Greens could actually unseat the Coalition here.

Darling Range is a genuinely close race. This one really has to be decided by flipping a coin, and on no real basis at all except two of our three calculations turned blue, I’m predicting Darling Range for the Liberals.

Fremantle is under no real threat from the Coalition, and was only flagged for further consideration because on the current pendulum the Coalition doesn’t make it to the 2PP race. This pendulum has Labor’s margin over the Greens at 13.9 in a year when polling suggests the Greens vote is substantially up (more than 50% on last election and a third on 2017). If the Greens are going to win a seat, I’d put my money on Freo (where they did have success in 2009). But this was a by-election with no Coalition participation where the Greens primary vote broke 44%; I don’t see this happening in the 2025 general election and so I’m predicting Labor here.

Hillarys is close on the numbers, with only our outputs from the 2025 pendulum giving a result that’s not within a fraction of a percent of a tie. That said, that’s the pendulum with the aberrant 2021 data baked into it, and I think Hillarys is a perfect example of that behaviour. The district went from a never-red seat to Labor holding over 61% of the primary vote. The numbers say this’ll be a close one, but I think we’ll see a solid return to the Liberals here.

Joondalup is a real flip-flopper of a seat, and Labor won’t hold its 65% primary vote here. Will it turn blue again though? It’s a tossup and probably the closest race in the state this year. But two of our three analyses suggest Labor will hold it, and I backed the Libs on the coin-flip in Darling Range, so for balance let’s call this Labor.

Oakford is the one new district, so there’s not an easily accessible history to draw on. Antony Green’s pendulum gives them a very solid Labor lead, but based on data I think is very, very soft. Oakford’s localities previously sat in the districts of Armadale, Baldivis, Darling Range and Jandakot. Except for Darling Range which is a tossup on our list, these are all Labor seats, and in the first two instances very solidly so. Mr Green’s assessment also has those three districts becoming less Labor-leaning following the distribution, perhaps hinting at some very strong Labor areas being accumulated here. Looking back before the 2023 boundary changes, the Coalition has never won Armadale has (created 1983) or Baldivis (though less impressively; this was formed in 2017 and has only had one member). The Liberals do have a formidable history in Jandakot, but I still have to give the new district to Labor.

Pilbara will be a very close-run race this year. The Liberals haven’t won the seat since Brian Sodeman in 1980, but was taken by the Nationals for one term in 2013. The Nationals have out-polled the Liberals in every election here since they failed to run in 2005, and are the obvious challenger. But they’d have to rely on the swell in Liberal preferences, as the Nationals polling holds steady. Based on very little at all, I’m tipping Labor to hold this seat for now. 

And Roe, a very safe Nationals seat – the safest Coalition seat in the state, and only excluded from the table above by the fact the seat is so supportive of the Coalition that the 2PP race was National vs Liberal. Since 1950 (with a couple of periods where Roe didn’t exist) the Coalition has won every election here (normally by the Nats or their predecessors the Country Party). Which of these parties takes the seat is largely irrelevant to the rest of the state which is only looking to who will give a majority in the Legislative Assembly, but the Nationals regularly outperform Liberals by around 2:1 on primary votes so it seems pretty obvious the Nationals will win this one.

Conclusion

DISTRICT INCUMBENT PREDICTION
Albany ALP ALP
Armadale ALP ALP
Balcatta ALP ALP
Baldivis ALP ALP
Bassendean ALP ALP
Bateman LIB LIB
Belmont ALP ALP
Bibra Lake ALP ALP
Bicton ALP ALP
Bunbury ALP ALP
Butler ALP ALP
Cannington ALP ALP
Carine LIB LIB
Central Wheatbelt NAT NAT
Churchlands LIB LIB
Cockburn ALP ALP
Collie-Preston ALP ALP
Cottesloe LIB LIB
Darling Range LIB LIB
Dawesville LIB LIB
Forrestfield ALP ALP
Fremantle ALP ALP
Geraldton LIB LIB
Girrawheen ALP ALP
Hillarys LIB LIB
Jandakot ALP ALP
Joondalup ALP ALP
Kalamunda ALP ALP
Kalgoorlie LIB LIB
Kimberley ALP ALP
Kingsley ALP ALP
Kwinana ALP ALP
Landsdale ALP ALP
Mandurah ALP ALP
Maylands ALP ALP
Midland ALP ALP
Mid-West NAT NAT
Mindarie ALP ALP
Morley ALP ALP
Mount Lawley ALP ALP
Murray-Wellington ALP ALP
Nedlands LIB LIB
Oakford N/A ALP
Perth ALP ALP
Pilbara ALP ALP
Riverton LIB LIB
Rockingham ALP ALP
Roe NAT NAT
Scarborough LIB LIB
Secret Harbour ALP ALP
South Perth LIB LIB
Southern River ALP ALP
Swan Hills ALP ALP
Thornlie ALP ALP
Vasse LIB LIB
Victoria Park ALP ALP
Wanneroo ALP ALP
Warren-Blackwood NAT NAT
West Swan ALP ALP

That’s a prediction of 41 seats for Labor, 14 for the Liberals and 4 for the Nationals, giving a clear Labor majority in its third term.