Summary of Methodology
The 2025 First Preference model forecasts the First Preference vote shares for each of the 1126 candidates in the Australian House of Representatives. It is structured along the following principles:
- The model’s baseline is the 2022 election results
- It incorporates changes that have happened since the 2022 election in each electorate: changes to the boundaries between electorates, changes in Incumbency, changes in the sets of parties that are running in each electorate. It uses historical data to model how these changes are applied.
- Further, changes in voter sentiment since last election are applied using National and State polling data.
- This shapes the model’s best guess of the average First Preference vote for each party in all 150 electorates.
- Random variability is then added to incorporate all the errors inherent to election modelling – polling errors, election-to-election swing variability, individual electorate variability, time-dependent errors. These are measured by how large similar errors have been historically.
- The process of adding random variability is repeated 1000 times, producing 1000 simulations of the election.
This is how the First Preference model works. To obtain the probabilities of each party winning any given seat from the First Preference vote shares, the preferences of smaller parties are distributed to the Top 2 candidates, and whoever has the higher vote share in each simulation is crowned the winner. Win probabilities for each seat are calculated by dividing the numbers of times each party won by 1000 (the number of simulated elections).
Finally, for each simulation, the winning parties in each seat are aggregated to produce seat totals per party. The proportions of the 1000 simulations in which Labor or the Coalition get at least 76 seats informs the probabilities of each party to form Majority Government.
Data sources
The model incorporates a wide range of current and historical data, which is sourced from the following places:
Historical Election Results: these are sourced from the Australian Electoral Commission, which publishes detailed breakdowns of electoral results for each year since 2004. Data for elections between 1993 and 2001 is not online, but is downloadable on the AEC website. See 2022 election results here.
Redistributions/Boundary Changes: data on redistributions is sourced from the AEC, published after each state’s redistribution is complete. This includes historical redistribution data dating back to 1999, broken down to the level of the SA1 (or CCD prior to 2011). Data on correspondences between old and new electorates and changes to SA1 and CCD namings are sourced from the ABS.
Polling: Current and recent historical polling data is sourced from a combination of the Pollbludger’s Bludgertrack database, as well as Wikipedia (when it comes to reported vote shares for minor parties). National polling data prior to 2016 is sourced from a combination of Wikipedia, where available, and historical polling databases that were kindly shared with me my William Bowe (The Poll Bludger). State polling since 2019 is similarly sourced from Bludgertrack, while for 2016 the Poll Bludger’s Bludgertrack estimates are used directly in the absence of accessible state polling data. State election polling is sourced from Wikipedia’s ‘Opinion Polling’ section of any given election, where such data exists. Where possible, the Poll Bludger’s archived posts are used to fill any of Wikipedia’s gaps. Individual electorate or seat polling, as well as seat-my-seat MRP breakdowns, are not incorporated in the model.
Polling data used by the model for the 2025 election can be downloaded here (final): National, State; final Yougov poll was excluded because they released too late! Note: where polls report undecided voters, slight differences with the poll sources may be noticed: half the undecided vote share is given to ‘OTH’ and the remainder allocated proportionally to the polled parties.
Demographic data: while playing a minor role in the model, demographic data for States and Electorates since 2001 is sourced from the ABS’s census data via TableBuilder.
I intend to make the model code publicly available via GitHub in the near future. A link will be published shortly, and it will be updated as more and more sections are neatened up!
Modelling Redistribution changes
The modelling of boundary changes relies on two core principles:
- Getting an accurate estimate of local voting behaviour in the areas being transferred between electorates
- Extrapolating how these areas would have voted had their choice of candidates been different
To get the most local vote estimates, the finest level at which election results are reported are at the polling place level. For each election since 2013, the AEC provides further breakdowns by Statistical Area 1 (these small blocks that partition the country’s population – around 400 people each), which tells us which polling places voters in any given SA1 voted at. SA1s can be loosely thought of as building blocks for electorates, and so if we know how each SA1 voted, we can move these votes from one electorate to another whenever there is a boundary change.
The sets up a neat mathematical problem – we know where voters voted, and also what the vote totals were at each polling place. The goal is to reverse-engineer the local vote totals of each SA1.
Simple approximation
The standard way to do this is, for each SA1, to take a simple average of the votes at the corresponding electorate’s polling booths, scaled by the number of that SA1’s voters that voted there. If 50 of the 400 voters in an SA1 voted at Booth 1 and the remaining 350 – at Booth 2, then the vote estimate for the SA1 is 1/8 x Vote shares at Booth 1 + 7/8 x Vote shares at Booth 2.
Distance-based Weighting
The Votes-by-SA1 average technique gives a good approximation to how each SA1 voted, however the model uses a further modification of weighting the Votes-by-SA1 data according to the distance from each SA1 to every Polling Place. The thesis here is that voting behaviour is best considered ‘uniform’ at the level of the SA1 (at the local level), rather than at the level of a Polling place. The intuition behind this is that if someone happens to vote on election day at a polling booth on the other side of their electorate, it’s still more likely that they exhibit the voting behaviour of their home SA1 than they do of the locality where their distant polling booth happens to be. Hence directly using the un-weighted SA1 vote data may dilute the vote estimates for an SA1 that is particularly partisan. Unfortunately, the specific choice of ‘distance’ function to do the distance weighting from SA1 to each polling place is arbitrary (I have defaulted to using inverse distance), but it goes some way to escaping a reversion-to-the-mean bias that comes with just taking averages of each polling booth’s votes for the SA1 estimates.
Weighting Specifics
The weighting process proceeds in 3 stages.
- The votes at every individual Election-day Polling booth are allocated to each SA1 based on two quantities: the number of each SA1’s voters voting at that Polling booth, and the distance from the Polling booth to the SA1.
- This is repeated for the Pre-poll voting centres, which are fewer in number and so provide more coarse, but still plausibly local, information.
- Now, what remain are the ‘Other’ votes: Provisionals, Postal votes, Absentees, and any other vote types that don’t come with a fixed location (i.e. Remote Mobile teams in rural Australia, or the COVID phone voting in 2022). So far, the combined estimates of the vote shares in each SA1 (from Election day (1) + Pre-poll (2)) contain all the available local information. From this, we can infer how ‘partisan’ each SA1 is relative to all the others, and hence from which party’s ‘Other’ vote totals each SA1’s votes are more or less likely to have come from. For example, more conservative SA1s will take on a larger than average share of the ‘Other’ vote for conservative parties and vice versa. To account for the reality that the overall ‘Other’ votes for each party typically differs by a few percentage points from the Election-day + Pre-poll votes, the initial Election-day/Pre-poll baseline weights/estimates are linearly adjusted to ensure the total weights sum to 1.
Adjusting to New Canidates
The model treats the factor of Incumbency by comparing how well an incumbent candidate did in the House relative to how their party did in the Senate. This is essence measures how much personal vote an incumbent candidate has, on top of support for their party. This comparison is only possible when parties contesting the House are also on the state’s Senate ballot paper. To minimise the number of instances where this is the case, the House vote is reduced to the Top 5 candidates via last election’s Distribution of Preferences (in years where there are a minimum of 4 candidates running, a Top 4 is used instead). For all electorates where the same Top 5 parties contested the House and the Senate, these votes are compared, and an Incumbency advantage is computed, the results of which are summarised in the table below.
This comparison is performed by what I call ‘Formal Preference Allocation’, where data of the entire preferences of all formal Senate votes is used to determine how Senate preferences would flow to any party set of one’s choosing. This data is available on the AEC website under ‘Formal Preferences’. Some fun can be had with this – it can be used to test how accurately your vote preferences are tallied if you are keen to preference every candidate (see ‘Informal Experiment’ on page 7 of this paper: Random errors are not necessarily politically neutral (Blom et al, 2020)).
| Incumbency Advantage By Party (Baseline: an Inner Metropolitan First-Time Incumbent) | ||||
|---|---|---|---|---|
| ALP | LP | LNP | NAT/KAP/XEN | Weighted Average |
| 3.06 | 1.19 | 2.64 | 4.66 | 1.93 |
| Demographic Effects and Interactions with Elections won as Incumbent | ||||
| Inner Metropolitan | Outer Metropolitan | Provincial | Rural | Elections Won |
| +0 | +2.06 | +1.37 | +1.10 | +0.65 per election |
| + 0 | -0.12 | +0.22 | + 0.27 | Bonus per election |
The following algorithm gives one the power to transform votes for any set of Senate-contesting-parties to any other set of Senate-contesting-parties, under the single assumption that voter’s Preferences are consistent across the House and the Senate.
Suppose we have a candidate set c = (ALP, LP, GRN, ON, UAPP, AJP, KAP) in the House and we want to reduce the Senate vote to set c (i.e. find each voter’s c-Preference)
- Group all Senate votes by their First Preference vote
- For any party in set c, allocate First Preferences
- For any Senate party not in c, look at Preferences 2,3,4,…, for the minimum value corresponding to a party in set c.
- If there are no listed preferences for any party in set c, impute their c-Preference based on the average c-Preference of votes with the same First Preference
More generally, if transforming from party set c1 to party set c2 (where the set of parties in common is m), one can proceed in the following way:
- Obtain the electorate’s c1-Preferences, m-Preferences and c2-Preferences
- Reduce to set m: Use the % changes between c1-Preferences and m-Preferences
- Expand to set c2: Use the % changes between m-Preferences and c2-Preferences
Often some candidates can be dealt with using information from the House’s Distribution of Preferences (i.e. if c1 has candidates not in c2 that were eliminated last in the Distribution of Preferences – hence we know the other parties’ vote shares in their absence).
Where Independents (or parties that did not contest the Senate) are involved, combining the Preference Allocation technique and an Incumbency Advantage adjustment (when Independents are involved) spits out an estimate for the Independent vote! This is done by comparing these 2 sets of votes:
- The full House votes for all c parties, adjusted for Incumbency (i.e. in Wentworth, 2022 – votes for LP, ALP, GRN, UAP, ON, LDP & IND)
- The Senate votes reduced to the same party set c, excluding all Independents and parties that did not contest the senate
By subtracting each party’s House votes (1) from the Senate votes (2), adjusting to ensure this difference is positive, and dividing by each respective party’s House votes, we get an estimate for the proportion of each party’s voters whose First Preference defected to an Independent!
| Wentworth 2022 | LP | IND | ALP | GRN | ON | UAPP | LDP |
|---|---|---|---|---|---|---|---|
| House | 39% | 36% | 10% | 9% | 1.1% | 2.2% | 1.5% |
| Senate | 44% | 24% | 25% | 1.7% | 2.3% | 2.8% | |
| Defection % | 11% | 58% | 61% | 38% | 6% | 45% |
Table: Incumbency-adjusted House vs Senate comparisons for 2022 election in Wentworth
This comparison is performed for every Polling place, and the Defection % are taken from each Senate-contesting party to calculate the latent IND votes for the neighbouring electorates where there was no IND running.
Obtaining Post-Redistribution Estimates
To get the final estimates of the Post-Redistribution Margins, both of the key concepts above are put to work. For each electorate donating territory to another:
- The votes at each of the electorate’s Polling places are transformed to the candidate set of the new electorate
- Votes of all the old electorate’s SA1s are estimated
- The AEC’s data regarding the redistributional fate of each SA1 is used to transfer votes from one electorate to another.
And that is Redistribution complete! The estimated 2-Candidate-Preferred (2CP) vote percentages can be found here.
Fundamentals model
The Fundementals model – essentially comprising all non-polling modelling components – is largely based on the techniques outlined in the Redistribution section. This fundamentals model takes last year’s election result and incorporates incumbency changes, redistribution changes and changes in the candidates/parties contesting the new election to produce a ‘best guess’ as to the outcome under the assumption that national voter sentiment has stayed frozen since last election.
First of all, changes in Incumbency since last election – Resignations, Party Defections, Newly-elected incumbents (harbouring the so-called ‘Sophomore Effect’) – are adjusted for, in a similar way to how Incumbency Advantage was dealt with in the Redistribution section. One of only 2 differences here is that if there is a continuing Incumbent, their vote share increases by the corresponding coefficient of Elections Won. The other is that for electorates that are to have their boundaries changed, Incumbency Advantage is removed in the old seat, but none is added to the new seat’s incumbent’s vote share.
Allocating a preceding election’s vote to a new set of candidates largely mirrors the process described in the Formal Preference Allocation section – Senate preferences are used to distribute votes to the new set of parties in each electorate. There are 3 separate dynamics at play, in a process replicated for each electorate:
- First of all, votes are allocated only for parties that contested a given state’s Senate in the previous election (in essence ignoring any newly formed parties).
- The electorate’s independent vote, if there was any last election, is distributed via the Senate – House comparison described earlier and stored as a latent IND vote. This latent vote is run through the same procedure as (1), after which it is subtracted from the other parties’ vote and becomes the Independent vote.
- The vote allocation in (1) is distributed to any new parties that were ignored in (1), as detailed in the ‘New Parties’ tab. If there were previously no Independents, but one is running for the current year, their vote is also imputed in a similar way.
Parties that did not contest last election (particularly not in the senate) are allocated votes based on their Ideology, with the 5 categories shown in the table:
| Left | ALP | Centre | COAL | Right |
|---|---|---|---|---|
| GRN, Animal Just., Leg Cann., FUSION,Vic Soc., Soc All.,Indig-Aborig. | ALP | IND, Democrats, Centre Alliance | LP, NP, LNP, CLP | ON, T.O.P., Libertarian, Citizens, HEART, Ppl First, Christians, GAP, KAP, SFF. |
Table: Ideology categories for parties contesting the 2025 House Elections.
These categories are at times subjective judgements, largely gathered from the ‘Political positions’ section on parties’ Wikipedia pages. For historical calculations, Independents are treated as ‘Centre’, although for current predictions, the model deals with them separately.
Once all the non-new parties have been allocated to, the New parties ‘steal’ vote from them according to historical examples of how those with of the same Ideology category (‘Left’, ‘Centre’ or ‘Right’) have eaten into the larger parties’ vote. Higher weights are given to examples in the same electorate, similar total number of candidates, same state, and particularly for examples from the previous election. Currently the weights are rather arbitrarily set as () – fitting a model to these is something I would like to explore in future.
Furthermore, the model currently does not allow a party to survive a heavy rebranding – if a party’s AEC abbreviation has changed (i.e. de- and re-registered, merged, split) it will only be associated with its previous incarnations as long as the AEC abbreviation is shared. For example, Rebekha Sharkie of the Centre Alliance still keeps the abbreviation XEN from the Nick Xenophon Team. On the contrary, the model sees no association between the new Trumpet of Patriots (TOP) and its merged parties CYA and TOP, outside of the fact that they share the same Ideology Category.
For newly-running Independents that are associated with those that have run previously (such as those supported by Climate 200), their vote share can be partially inferred from the range of vote shares of associated Independents in previous years. For example, in the 2022 election, we have results for 20 Independents associated with Climate 200, which can be used to inform the Fundamentals estimate for associated Independents running in 2025.
For the new Independents, the model estimates the Defection to Independent percentages via a similarity weighting of the previous election’s electorates where associated Independents were running. To balance local effects with the national performance of the associated Independents, this is mixed with the original ‘Generic Independent’ estimate to produce the final prediction. A mixing ratio of 0.5 is chosen.
| Party | ALP | COAL | GRN | ON | UAPP | Other |
|---|---|---|---|---|---|---|
| Boothby | 0.04 | 0.00 | 0.16 | 0.18 | 0.10 | 0.33 |
| Bradfield | 0.30 | 0.10 | 0.41 | 0.13 | 0.00 | |
| Calare | 0.33 | 0.07 | 0.53 | 0.28 | 0.26 | |
| Casey | 0.06 | 0.00 | 0.14 | 0.17 | 0.09 | 0.31 |
| Clark | 0.44 | 0.38 | 0.56 | 0.28 | 0.26 | 0.51 |
| Cowper | 0.36 | 0.16 | 0.56 | 0.17 | 0.35 | 0.00 |
| Curtin | 0.45 | 0.11 | 0.51 | 0.34 | 0.00 | 0.37 |
| Flinders | 0.10 | 0.00 | 0.19 | 0.09 | 0.00 | 0.21 |
| Goldstein | 0.59 | 0.11 | 0.57 | 0.10 | 0.22 | 0.46 |
| Grey | 0.24 | 0.02 | 0.05 | 0.16 | 0.00 | 0.44 |
| Hughes | 0.12 | 0.03 | 0.37 | 0.43 | 0.26 | |
| Indi | 0.65 | 0.17 | 0.69 | 0.32 | 0.32 | 0.54 |
| Kooyong | 0.74 | 0.08 | 0.68 | 0.19 | 0.19 | 0.63 |
| Mackellar | 0.64 | 0.18 | 0.68 | 0.23 | 0.16 | 0.40 |
| North Sydney | 0.29 | 0.11 | 0.53 | 0.13 | 0.00 | 0.34 |
| Page | 0.12 | 0.02 | 0.33 | 0.30 | 0.36 | 0.23 |
| Wannon | 0.27 | 0.05 | 0.40 | 0.42 | 0.26 | 0.31 |
| Warringah | 0.68 | 0.23 | 0.66 | 0.10 | 0.21 | 0.50 |
| Wentworth | 0.56 | 0.11 | 0.64 | 0.39 | 0.07 | 0.45 |
Table: 2022 Defection Percentages to Climate-200-backed Independents
In 2025, circumstances have created 3 thriller contests – in Calare, Monash and Moore – where Coalition-incumbents-turned-Independent-crossbenchers are contesting their seats as Independents. Complicating matters further, each seat has another Independent backed by Climate 200, creating 3 or perhaps 4-way contests between Independents, the Coalition and Labor. To handle these, we turn to historical cases where a party incumbent moved to the crossbench, of which there are all of 2 recent cases:
- Kennedy 2001 – Bob Katter switched from National to Independent, being re-elected resoundingly at the expense of the Nationals.
- Flinders 2019 – Julia Banks, the Liberal-turned-Independent incumbent of Chisholm, contested the electorate of Flinders against a Liberal incumbent.
The 3 Complex contests in 2025 are handled by allocating votes to all parties except the Incumbent independent, and then using a weighted average of how much of the Coalition, Labor, Greens and Other vote Katter and Banks ate into in their attempts, based on how similar the division is to Kennedy and Flinders, recency and former party. This is a highly rudimentary application, but one must reckon with the fact that there is very little historical precedent for such contests.
(Note: There is also the case of Craig Thompson in Dobell, 2013, however his scandalous circumstances aren’t even close to parallel to any of the current incumbents so that data point is left aside).
Fundamentals Error
Once the procedure above is complete, the party’s vote shares from each polling booth are put through the Distance-based weighting described in the Redistribution section, which produces the Fundamentals model’s estimates – call it the overall model’s prior mean! What is left is to describe the variation of next year’s election results around this prior mean:
- National swing: the changes in national vote shares for each main party from election to election
- State deviation relative to the Nation: how much relative state partisanship changes from election to election
- Residual Electorate error: After adding a state’s observed uniform swing at an election to each electorate’s prior mean vote shares, how much individual variability is left between this adjusted prior and the electorate’s results.
The magnitude of these swings (call them Fundamentals errors) , and dependence structure across parties, are estimated from historical changes from election to election. For years prior to 2019, this is done for the party categories of the Coalition, Labor, Greens and ‘Other’, whereas since 2019, One Nation and the United Austrlalia Party/Trumpet of Patriots are added as well. National swing estimation uses data from elections back to 1987, State swings use AEC data starting from 2004, while the residual Electorate variability is estimated only for the 2016-2022 elections, for which sufficient data is available for a prior to be calculated using the methodology so far. The details of how these variabilities are estimated are saved for a similar discussion about polling.
Polling model
Polling at its core deals in swings – changes from one election to the next. National polling is only useful in assessing outcomes of seat winners in the context of applying some swing from the previous election’s result to each electorate. A common approach is to apply a uniform swing (what the Mackerras pendulum is designed for) : if Labor has gained 1% in national polls since last election, add 1% to the Labor vote in each seat. However this has the obvious drawback that if a small party loses ground in national polling (i.e. a 3% national swing against the UAP), there may be several seats where applying a -3% shift will result in a negative vote share!
The model avoids this by applying swings in a more multiplicative way; if you multiply or divide positive vote shares by a positive swing ratio, they will never fall below 0. This is done rigorously via a transformation technique from Compositional data analysis called the Additive Log-Ratio Transform (ALR). If you start with the vote shares of the major parties and lump the rest into an ‘OTH’ category, these have a constraint that they must sum to 1 (referred to as compositional data)! Hence, the last category is fully dependent on the other 3. Using the votes shares directly would be totally unsuited for simulating Normally-distributed polling errors. However, if you remove one category, the dependence is no longer absolute, which is where the ALR transform comes in.
National polling averages are modelled using a Gaussian Random Walk (GRW) for each of the nationally-polled parties – a now-popular method first applied to Australian polling in 2005 by Simon Jackman that is also used by aeforcasts in their election models. Due to concerns about theoretical polling margins of error (which live in a wonderful world of representative samples) underestimating the true error of individual polls, polls’ theoretical standard deviation is doubled when running the GRW. The model only extracts the means (‘polling averages’) of the GRW, hence this rather arbitrary scaling should not be too concerning.
For elections with few or irregular polls (state polling, national polling for older Federal elections, polling for state elections), a weighted average is used instead, weighted by polls’ sample size, as well as time until the election. This incorporates an estimate of daily average polling drift of 0.003 per party, estimated from running Gaussian Random Walks for the Federal elections from 2007 to 2022.
ALR Transformation
Given a vector:
$$\mathbf{x} = (x_1, x_2, x_3, x_4)$$
The ALR transform (using \(x_1\) as the reference) is:
$$\text{ALR}(\mathbf{x}) = \left( \log\left(\frac{x_1}{x_4}\right),\; \log\left(\frac{x_2}{x_4}\right),\; \log\left(\frac{x_3}{x_4}\right) \right)$$
Hence, a polling swing in ALR space is the difference between last election’s ALR-transformed vote share, and the polling average’s ALR-transformed vote share. This can be called an ALR-uniform swing. The logarithm ensures that these swings apply multiplicatively, and the removal of the reference category ensures the dependence between the parties can be modelled with a normal distribution.
It is worth noting that ALR is not entirely without costs. Given that it is nonlinear, the operations of transforming vote shares to ALR space, applying a swing, and transforming it back to a vote share has a minor bias effect on the mean, and the variance – smaller vote shares are slightly elevated at the expense of larger vote shares, and the variance of the reference category drops just so slightly relative to the rest.
House Effects
The model does not incorporate House Effects due to the substantial resources it would take to keep repositories of historical polling/transparency/methodological changes. Due to the relatively small number of organisation conducting polling in Australia, usually on behalf of newspapers, partisan pollsters are less common at the state/national level than, for example, in the United States, hence omitting house effects is considered an acceptable compromise.
For national polls, an ARL-uniform swing from the Fundamentals model to the polling average is applied to each electorate. On top of this, a national polling error needs to be applied across the whole country. Historical data on polls’ performance is used to describe the distribution of polling errors. Two things need to be estimated: how the errors are correlated between parties, and the magnitude of these errors for each party.
Historical Polling Data
Historical polling errors are calculated for the following elections with at least a reasonable amount of polling data:
- 6 recent Federal elections where there has been a variety of pollsters (2007 – 2022)
- 7 older Federal Elections dating back to 1987, for which polling data is exclusively from Newspoll (kindly provided by William Bowe of the Pollbludger)
- 14 State Elections for which there has been at least 4 polls done in the 6 months prior to the election.
Correlation Between Parties
The Correlation structure of Polling errors between the 4 ‘parties’ COAL, ALP, GRN, OTH is estimated from the 23 elections since 1996 when the Greens became a substantial 3rd party. Recent Federal polling errors get full weight, whereas older elections and state election polling errors get half weight due to a drop in the quantity of polling. For years where One Nation and United Australia Party / TOP ran, their correlation structure is imputed from the correlation structure of ‘OTH’, with some penalties applied to the correlation with ALP and GRN to match ideological differences.
Reminder: this correlation structure is of ALR-transformed polling errors i.e. we are looking at correlations between log(ALP/COAL) vs log(OTH/COAL).
Magnitude of Polling Error
The magnitude of Polling error is calculated separately per party, from all of the above elections when they were contesting. Due to the small number of data we have for ON and UAPP, these are separately calculated from historical polling errors of minor Right parties (also including Katter’s Australian and Family First, as well as One Nation’s Original incarnation from 1998-2004).
Simulating Variability
Beyond the estimation in ALR space of a polling error covariance matrix (combining Magnitude and Correlation), the choice of distribution is equally important. Typically, polling errors for a single party (or for a Two-Party-Preferred result) would have a fatter tailed distribution than normal; large misses happen rarely, but when they do, the miss may be very large. However, the logic to using a correlated multivariate normal distribution for each ALR-transformed party gives even a normal distribution the ability to describe large misses, given they are correlated across parties. If GRN’s ALR-transformed vote ratio rises, often OTH’s will as well, leading to a larger aggregated effect than if each party was treated individually. For both polling error and election-to-election swing, the historical data was tested for normality, and consistently did not return negative results (the p-value for the Henze-Zirkler test was reasonably high in each case).
The following table shows the estimated standard deviations of National polling error and election-to-election swing (the latter emanating from the Fundamentals model). The model uses corresponding versions in ALR, however these have been transformed back to the space of vote shares (proportion space) by simulating 1,000,000 normally-distributed polling/swing errors in ALR, and returning in the reference category. The typical reduced variance for the reference category is only observed for the polling case – something I do not yet have a good explanation for.
While a cautious modeller may choose to adopt ‘ALP’ as their reference category to better balance the variability of the major parties, there are practical benefits to choosing ‘COAL’ which ultimitely override such caution. Primarily, the Coalition’s vote shares have tended to be more stable (particularly in recent elections) – they have generally borne the bront of Independent challengers that has often led to Labor’s vote collapsing in favour of the Independent. An unstable reference category can lead to wilder fluctuations through the ALR transformation and back-transformation. This favours COAL as a more stable reference category, which I believe best handles sharp voting rearrangements that have been increasingly observed in recent years.
| Polling standard deviation | Election-swing standard deviation | |||
|---|---|---|---|---|
| Party | COAL Reference | ALP Reference | COAL Reference | ALP Reference |
| COAL | 0.0186 | 0.0196 | 0.0550 | 0.0535 |
| ALP | 0.0254 | 0.0251 | 0.0532 | 0.0549 |
| GRN | 0.0133 | 0.0145 | 0.0196 | 0.0185 |
| OTH | 0.0236 | 0.0235 | 0.0513 | 0.0530 |
State polling is incorporated through a measure of 'deviation' from National Polling i.e. \(\mu_{State}^{poll} - \mu_{Nat}^{poll}\), with \(\mu^{poll}\) referring to the polling average, and \(\mu\) referring to the prior mean. In order to take information both from National polling swings, as well as state trends, the following formula is used to obtain a weighted average of state polling deviation and election-to-election state deviation. Measures of state polling deviations, being lower in sample space and suspected to be less reliable that national polls, get a weight \(s \in [0,1]\). The state polling average, weighted by trust in state polls, is: \begin{align*} &\mu_{s}^{weighted} = \mu_{n}^{poll} + (1-s)*(\mu_{s} - \mu_{n}) + s*(\mu_{State}^{poll} - \mu_{Nat}^{poll}) \end{align*} Thus, \begin{align*} &\mu_{State}^{weighted} - \mu_{State} = (1-s)*(\mu_{Nat}^{poll} - \mu_{Nat}) + s*(\mu_{State}^{poll} - \mu_{Nat}^{poll}) \end{align*} The polling-adjusted means for each electorate are then: \begin{align*} \mu_{Elec}^{poll} = \mu_{Elec} + &(\mu_{State}^{weighted} - \mu_{State}) \\ \end{align*} So, if \(s = 0\) (no weight given to State poll deviations), we get: \begin{align*} \mu_{Elec}^{poll} = \mu_{Elec} + &((\mu_{n}^{poll} + \mu_{s} - \mu_{n}) - \mu_{s}) \\ = \mu_{Elec} + &(\mu_{n}^{poll} - \mu_{n}) \\ \end{align*} So the model sees only national polling. If \(s = 1\), then the opposite happens - state polling gets absolute trust.
Small State Imputation
For small states that do not have public polling in the last 6 months prior to an election (Tasmania, ACT and Northern Territory), their change in deviation from National polling since last election is imputed from the deviations changes of other states. This imputation is done by weighting an imputed state’s similarities to the polled-states (the calculation of State and Electorate Similarity matrices will be added to the methodology section at a later time). This offers an estimate of the state’s polling change relative to the nation, although it will be treated with extreme caution due to this estimate having large variability.
Estimating State Polling Deviation Errors
The errors of these State Polling deviations from the National polling are estimated from the small sample of state polling data I have access to from 2016-2022. These observated polling deviations are weighted based on their relative precision (i.e. how reliable each state’s polling estimate is, largely based on Sample sizes, and whether or not results have been imputed (whose weight is assigned as half of the smallest non-imputed precision), to produce a covariance matrix for the party categories COAL, ALP, GRN and ‘OTH’. For 2019 onwards, this covariance matrix is extended to include ON and UAPP/TOP via the same procedure as for the National Polls.
The Electorate/Seat Polling component is not currently active in the model – the polling data that the model uses consists of National and State polls.
First Preference Model
Now all the tools are set to create the final First Preference model. The following outlines how all the components are brought together:
- Reduce the prior mean estimates (for every party in each electorate, obtained from the Fundamentals model’s mean) to the specific election’s polled parties (COAL, ALP, GRN, OTH prior to the 2019 election, and ON and UAPP/TOP added for 2019 onwards). Note: for seats where ON and UAPP/TOP are not running, an extended prior is used which pretends they are candidates.
- Simulate 1000 of the following 5 types of error from their calculated covariance matrices: National polling, National election-to-election swing, State Polling deviation from national, State election-to-election deviation from national and Residual Electorate Error.
- Separately for the Fundamentals and the Polling model, add the corresponding simulated National and State errors to the ALR-transformed prior votes shares of each electorate.
- On top of this, add the simulated Residual Electorate Error to both the Fundamentals results and the Polling results.
- Transform all results back to vote shares between 0 and 1, giving away all extra ON/UAPP/TOP votes from the seats where they are not running to the remaining parties.
- Now we have the simulated First Preference votes in each electorate for the 4 or 6 polled parties, across all 1000 simulations. The OTH votes are distributed amongst all the non-polled parties via a Dirichlet distribution with means proportional to the relative prior vote shares of each of the non-polled parties.
- A similar process is done to split the Coalition vote in electorates where both Liberals and Nationals are running, as well as to split votes of multiple Independents.
And that produces a set of First Preference vote shares for every party in each electorate, one set for each of the 1000 simulation. These votes shares are what you see when you click or hover around on the Violin plots.
Distribution of Preference Model
As this model is primarily a First Preference model, the mapping of the First Preference vote to determine the winner by distributing smaller parties’ preferences gets a less rigorous treatment.
Theoretical Model
Having a full theoretical model of the Distribution of Preferences would require knowing, for every possible combination of candidate eliminations, how the preference of the eliminated party would flow to all the other remaining parties. If we have n parties, there are n!/2 such orders to reach any given Top 2 (for n = 16, there would be 10,461,394,944,000 different elimination orders). Even if you could use Formal Preference Allocation to inform the preferences flows, this would take prohibitively long.
Simplified Model
The Distribution of Preferences model used dramatically simplifies this process by only distributing votes to the Top 2 candidates on First Preferences. It seldom happens that a candidate wins from 3rd position on First Preferences, but this is sufficiently low to be acceptably ignored, and in these situations there would still be a significant number of simulations where the party is 2nd on First Preferences and hence ‘make’ the final 2-Candidate-Preferred (2CP) count.
The model looks at all possible Top 2 Party Categories, and organises them into combinations of size 2 of ALP, COAL, Left, Right, IND (Centre parties are combined with IND). Then it estimates the 2CP preference Flow (%) from every other party to the selected Top 2. This uses the 2CP Preference Flow data from the previous election, imputing results for unavailable Top 2 combinations from other divisions which finished with that 2CP combination. For example, in 2022, Only 1 contest finished as COAL vs Right (Kennedy), so the preference flows from that contest are applied to each electorate for the COAL vs Right combination. For 2CP combinations with no data, it is imputed from similar parties i.e. Left vs Right imputed from Left vs COAL. Same-category combinations of Left vs Left or Right vs Right or IND vs IND are assigned 50/50 average Preference flows.
Specification of Randomness
Finally, two sets of random variation to the preference flows are modelled:
National variability – for each 2CP combination, a correlated national shift
Individual party variability – random changes of Preference flow for every party in every 2CP combination
There two sources of error are used as hyperparameters in a final validation of how faithfully the model’s predicted winner probabilities align with true election results.
Final Chapter: Parameter Tuning and Model Calibration
The model so far has been intuitively built: anchored to the previous election, receptive to polling swings, with historical data guiding estimates for each input. The final chapter is about tuning some of the model’s broader behaviours such that it performs well on the closest thing we have to the upcoming election – past elections!
How many elections does the model have to test on? Well, I only have access to polling data since 1987, leaving 13 elections. But then, it’s only since 1993 that the AEC’s substantial election data files have been recorded online (via disks), which would leave 11, but there are a substantial number of files missing in the older records that it’s pushed to the first website records in 2004. Down to 7. But then, the AEC only began releasing Senate Preferences (BTL only) in 2007, which is the basis of the Fundamentals and Redistributions models, leaving 6. Speaking of Redistributions, though, the unfortunate fact is that the AEC only released the Votes By SA1 data the model relies on to make its redistribution estimates starting 2013. So the model has to satisfy itself with 3 elections with which to be validated: 2016, 2019 and 2022.
While it would be unwise to boast about training a model of this complexity off 3 data points, I remain confident that data from elections past – used in various stages so far – has seeped into the structure of the model. This final stage of validation, though it should be treated with some caution, is more like rotating the model to be facing the right direction, rather than flattening out each rough patch that doesn’t fit with the last 3 cycles. The structure of the model is set, what’s left is to specify some general directions.
The First Preference model engages with 5 parameters in the validation stage, as summarised in the table at the bottom of this tab. These include the natural weighting parameters of Polls vs Fundamentals, and National vs State, as well as the concentration parameter for the Dirichlet distributions used to split the ‘Others’/’Coalition’/’Independent’ vote into its constituent parties/candidates.
The latter two added to adapt to features that are becoming increasingly significant in Australian elections. With an ever-growing number of seats with Independents as serious contenders, it is reasonable to expect a greater variability in their vote shares compared to another, perhaps unrelated, Independent the previous year. Hence, a volatility weight is proposed, which increases the ALR variance of the ‘OTH’ category for electorates where ‘OTH’ got a substantial vote last election, or have the potential to get a strong vote in the next one.
With occasional instances of high ‘OTH’ vote in individual electorates, the ALR transformation brings with it some dangers: if the OTH vote increases from 10% to 15% between elections, this large ‘multiplicative swing’ would dramatically boost candidates who already had a high projected ‘OTH’ vote (i.e. 30% to 40%), even though the mechanisms behind the swing may be entirely unrelated to the electorate’s local circumstances. Hence, the uniform swing ceases to be. Instead, for electorates where the Fundamentals prior gives a single ‘OTH’ candidate 20+% of the vote, a down-weight is applied on the polling swings, at the expense of all other electorates, who get a constant increase in the proportion of the polling swing they take on.
| Parameter | Description | Value used in 2025 Model |
|---|---|---|
| w | Mixing proportions of simulations taken from Polling (vs Fundamentals) | 0.9 (10 days before election) |
| α | Concentration parameter for Dirichlet-distributed splitting | 22 |
| s | Maximum state-poll weighting compare to national | 0.75 |
| v | weight for increasing 'OTH' volatility in electorates with prominent OTH candidates | 0.15 |
| β | Non-unifortmity parameter for downweighting swings in high OTH vote electorates | 0.5 |
As specified previously, the simplicity of the Distribution of Preferences Model means we only need to assess the variability of 2CP preference flows.
| Parameter | Description | Value used in 2025 Model |
|---|---|---|
| σind | Standard deviation for individual party - 2CP party variability | 0.5 |
| σjoint | Standard deviation for collective 2CP combination variability | 4.2 |
Calibration
In order to validate the model on historical election results (from 2016, 2019, 2022), Leave-one-out Cross-validation is used. That is, for each election, the other two are used to train the model and select the optimal parameters, which are then tested on the left-out election to see how well it performs! This ensures no data from the election being tested on is used to train the version of the model that is being tested! While all efforts are taken to prevent leakage of future election information to past elections, the reality of some data being constrained to 3 elections means that pure back-testing is not possible. However, I believe that this is sufficiently minimal, and that information from future elections is not so transformative to make this an issue.
First Preferences
The objective function (the function to minimise) is chosen to balance accuracy and calibration, the latter of which is my particular focus. It ideally should make good estimates of average First Preference votes, as well as not being overconfident about how likely outcomes are. To optimise for accuracy, model versions whose predictions have a small Mean Absolute Error (MAE) when compared to the actual results, score well. Each party’s vote share is compared without scaling (the natural scaling; there is a nice balance to it): the parties with vote shares high enough to be winning seats – the more important parties – are more capable of exhibiting punishable deviations from their average vote share, while the smaller errors possible among smaller parties are still relevant to the structure of the model. To ensure proper calibration, the function compares the true First Preference vote to the inner 95% interval of each candidate’s simulated First Preferences. Model versions that are overconfident are punished – that is, if the interval covers the true results in fewer than 95% of cases, a penalty is added to that model’s score. The full objective function being minimised is MAE + weight * max(0, 0.95 – coverage), with weight = 5.
For the optimal model with polling data 10 days out from an election, the MAE of the model’s means to the test election’s results across all 1000+ House candidates in that election is 3.48%, 3.23% and 3.04% when leaving out 2016, 2019, 2022, respectively. That is, on average the model gets the average vote share of a candidate wrong by 3-3.5%. This is quite satisfactory, considering that a miss is likely to be correlated across parties – if the model’s mean underestimates the Liberals by 5% in an electorate, it is likely it has also severely overestimates Labor and the Greens, and possibly some minor parties as well! The non-zero error mean is also another reason why it is not worth paying too much attention to where the mean line is for each party, and more to the general distribution of their First Preference vote!
Distribution of Preferences
The two sigma parameters are chosen by optimising over a grid of sigma_ind and sigma_joint values ranging from 0 to 10, with an objective function (function that is being minimised) defined by the average difference between predicted probabilities and actual occurrences. So, the procedure is selecting for a model whose predictions of a candidate having a 60% likelihood of winning a seat, come true ~60% of the time! Due to the small sample sizes involved (only 452 electorates across the 3 elections), prediction confidence for the favourite is split into 7 bins, and the average difference between the middle of the bin and the observed win counts for each bin is minimised.
The following table gives a comparison of the prediction midpoint for each confidence bin, and the observed average outcomes for those contests in the associated confidence bin. Note: these are aggregated over the 3 heldout election years, each with their own optimal parameters
| Bin | Prediction Midpoint | Observed Average | Model Behavior |
|---|---|---|---|
| (40, 60) | 50% | 51% | Very well calibrated |
| (60, 70) | 65% | 77% | Underconfident |
| (70, 80) | 75% | 72% | Well calibrated |
| (80, 90) | 85% | 82% | Well calibrated |
| (90, 95) | 92.5% | 95% | Well calibrated |
| (95, 99) | 97% | 97.3% | Very well calibrated |
| (99, 100) | 99.5% | 99.2% | Very well calibrated |
Bringing back the right degree of caution, with most bins consisting of a relatively small sample size (total outcomes = 150+151+151 = 452), this is a fairly balanced final calibration! In other words, assuming that the 3 elections from 2016 to 2022 were ‘typical’, the model’s probabilistic projections are pretty well calibrated – it tends to tell the truth.
Limitations
First and foremost, the model cannot predict who is going to win each seat, or the election as a whole. We must content ourselves with, at best, an assessment of the probabilities of outcomes. That said, there are some limitations of the model’s design that are worth discussing. These may explain some of the model’s peculiarities in a handful of seats, as well as provide a basis upon which to enhance the model for future elections.
- The implementation of the Fundamentals model is based entirely on averaging different effects (and equivalent variability around this average), without regard for the individual variabilities of each of its components. For example, the extra variability coming from a seat undergoing a heavy redistribution (e.g. Hasluck in 2024) is not currently recognised by the model, treating it the same as a seat like Fowler, which saw no boundary changes. Adding variabilities to the Fundamentals model was not considered due to the computational constraint of running the Formal Preference Allocation model (which currently takes 3 seconds to run for any given pair of party sets). Running this with requisite variability for each run of the model would take prohibitatively long. Resolving this would allow for a more specific read on individual electorate variability, as well as helping to address the following limitation.
- The use of the ALR transform to apply swings and random errors comes at some rather significant costs. Since swings in ALR space are largely multiplicative (being sums of log-ratios), even a large swing ratio (i.e. 2 or 3) has minimal effect on an initial Fundamentals mean vote share that is close to 1%. This presents a problem for modelling wildcard candidates (i.e. well-known or well-resourced Independents or minor party candidates) that may have a genuine shot of significantly performing expectations of a generic candidate. For example, I am not confident that the 2025 model will accurately project the vote share for the Independent in McMahon, who is running a well-resourced campaign. The primary issue is that the prior mean for such a candidate starts too low for the multiplicative swings to have any hope of lifting them substantially. I see the proposal in (1) as an opportunity to better model these sorts of cases. By allowing for this ‘prior mean’ to vary in each simulation (in particular adding greater variability to the Fundamentals vote share of each independent), there may be sufficient numbers of simulations in which the candidate’s vote share is high enough for them to be given a plausible shot at winning.
- The candidate factors taken into account encompass only incumbency, party and whether an Independent candidate is associated with others (in addition to adjustments for the quirky contests of Moore, Monash and Calare). There is scope to extend this set of factors for more specificity. For example, in Bullwinkel, the prominence of former state Nationals leader Mia Davies should be expected to give the Nationals a boost, as should Victoria Greens leader Samantha Ratnam running in Wills. Former incumbents choosing to run again for their electorates, including Tim Wilson in Goldstein and Katie Allen in Chisholm, would likely get a boost (though data is scarce to come by).
- The Formal Preference Allocation system using the full preference data from the senate is a marvellous tool, but comparisons between a party’s House votes and Senate votes are not exact. The model assumes that after removing the factor of Incumbency in the House, the House votes and Senate votes are comparable for any two sets of parties contesting both. This is often a decent approximation, but the current implementation can provide some messy results, such as 0% of Coalition senate voters switching to an Independent in the House. There is future work to be done in better tuning the House and Senate comparison, including incorporating ‘donkey-vote’ adjustments for the votes for both chambers based on parties’ ballot order.
- While the model makes us of data across dozens of elections, it is only tuned on the 3 federal elections since 2016. While I believe that the ratio of a small number of parameters and a large dataset should guard against overfitting to these 3 elections, there is always that risk. The timing of the 2025 election prevented the extension of the testing to include the elections of 2010 and 2013 (for which sufficient data is available to fully implement the model’s methodology) – something that will no longer be the case in future.
- The model does not incorporate individual electorate polling, nor MRP projections. The former is a reasonable extension; electorate polling is on average only marginally inferior to a uniform-ALR swing of state/national polls, hence putting seat polling data into the mix could improve the model’s handling of local effects. MRPs, however, are trickier. They are a recent entity, having been conducted on so few Australian elections that it may be hard to give a probabilistic assessment on their accuracy. These too may be useful in capturing local effects, but I am less concerned about their omission.
With the exception of the potential poor performance for projecting vote shares from some wildcard non-Climate-200 independents, the 2025 First Preference model should nonetheless produce an accurate probabilistic reading of the election outcome. Many of the improvements above would likely improve the model’s estimate of the average First Preference vote for each candidate, and in doing so, reduce the variability around this improved average. In other words, it might produce a better specified model. Nonetheless, I am confident that the existing model will sufficiently capture the relevant effects that the probabilities it assigns to different outcomes are broadly accurate.
Evaluating the Model's Performance
The best way of evaluating the model’s ‘correctness’ may be contrary to the intuitive method of “did the number of seats won by each party win end up close to the model’s average seat counts”? The reason is a consequence of the model being probabilistic – its average is not meant as a prediction, but rather the mean of a whole distribution of possible outcomes, outliers included. Hence even an unlikely result such as the Coalition winning a majority with 78 seats does not necessarily mean that the model is wrong. Afterall, this number appeared in 3 of the final 1000 simulations, one of which being COAL – 78, ALP – 59, GRN – 3, IND – 8, OTH – 2. Simply comparing the seat counts with the model’s average count would mean doing analysis with a sample size of 1 – something that isn’t useful from a statistical perspective. This may be unsatisfying, making it seem like I am claiming that the model is unfalsifiable. This is not so. There are certainty other, more appropriate, measures of how well the First Preference model modelled the 2025 election. Below, I describe 3 (the same 3 that were used to calibrate the model):
- How accurate the Win Probabilities were in each electorate. Here, we have a sample size of 150, and the goal is to evaluate whether the model’s prediction of a favourite having a, for example, 65% probability of winning an electorate should be trusted. Each electorate will be assigned a bin based on the probability the model gave for the favourite winning: 30-60%, 60-70%, 70-80%, 80-90%, 90-95%, 95-99%, 99%+. For the electorates in each bin, it will be seen how many of the favourites in those seats end up winning. The evaluation metric used for each bin will be how similar the average probability (e.g. 85% for the 80-90% bin) is to the proportion of electorates in the bin for which the favourite won. One shouldn’t expect these to match up perfectly for each bin (there are still only 150 data points with as few as 10 in some bins), however this will give a general sense regarding whether the model was balanced, or systematically under/overconfident.
- How often the First Preference projection for each candidate/party fell inside the model’s 95% credible interval (the interval between the party’s 25th lowest and 975th highest simulated vote share in each seat in the 1000 simulations). This measures how well the model’s distribution of outcomes fit the actual election results. Similar analysis can be done for 50%, 80%, 99% etc. credible intervals as well (95% is prioritised due to it being the focus in training the model).
- What I consider of less importance, but certainly relevant: the mean absolute error (MAE) between the First Preference result and the model’s average estimate for each candidate in each seat. For each election year 2016,2019,2022, when removing that year’s data and training the model on the other 2, the MAE has ranged from 3-3.5% per candidate per electorate. Since the 2025 model is built on all 3 elections’ worth of data (compared to 2 for each of the training elections), it may be reasonable to expect it to be on the lower end. On the other hand, this may be cancelled out my the greater volatility caused by a growing number of Independents running in 2025.
For completeness, I will make this the home of the final simulated seat counts across all 1000 simulations, which can be downloaded here. Now the data available on this website is sufficient for evaluating the model’s performance. Such an evaluation will be published on this website shortly after the final election results are certified, in early June.
Data Explainers
Violin Plots
Violin Plots are the primary visualisation tool used across the site, due to their ability to visually describe a distribution of outcomes relative to each other.
Some notes on interpreting them:
- Each dot on the Violin plot represents one of 1000 simulations of the election outcome – the number of seats won per party, or for the individual electorate plots, the share of the First Preference votes that party received in the simulation. The Violin plot smooths these out to make it easier to see denser areas (wider/denser = more dots = more likely that this outcome is observed in simulations).
- The purple dotted lines through the middle of each violin shows the average size of that party’s vote share (or seat count). This makes it easy to compare parties’ relative prospects
- The violin shape which is fatter around the middle and thinning out as you go out from the center, shows how strongly the outcomes are concentrated around their average
- It is useful to think of them as rotated bar chart (instead of taller things being more likely, wider sections are likelier)
- Use the hover or touch-screen features to explore the simulated vote percentages in different regions of the violin plot
Simulations
The model calculates the probabilities of outcomes by simulating 1000 election scenarios from its probabilistic structure. These simulations produces 1000 different sets of First Preference votes for each candidate, accompanied by winners in each seat.
Winners are determined after distributing preferences to the Top 2 parties/candidates in each electorate. This is why sometimes even when the Top 2 parties have similarly-distributed First Preference votes, one party is given a much greater chance of winning – the preferences of the smaller parties may favour one party more strongly! In most Labor-Liberal/National contests, minor party preferences favour Labor due to the dominance of the Greens among minor parties, and so Liberals/Nationals typically need a much higher First Preference Vote to be favoured against Labor!
The First Preference Violin plots visualise the shape of these 1000 simulated vote shares per candidate, offering a good sense of how likely different outcomes are. When percentages are shown as 0% or 100%, it does not mean that they are impossible – just that their probability is on a range that is less than 1/1000 (at least according to the model)!