Climate Change: Simple, Serious, Solvable › Models
A Few Degrees: Hot Days, Cold Nights and the Bell Curve
A few degrees of warming sounds small. But when every day gets a little warmer, the days that used to be rare and very hot turn up many times as often. See why with a bell curve, then try it on more than a century of real daily temperatures.
Loading the list of places…
Slide a bell curve a few degrees and count the hot days
- Before the warming
- After the warming
- The threshold
This view is pure arithmetic. It supposes that daily highs follow a bell curve, and that warming slides the whole curve along without changing its shape. Real daily temperatures only roughly follow a bell curve, and the shape can change. The next three views use measured temperatures, so you can see how far the simple picture holds.
The same place, a century apart
- The earlier period
- The recent period
- The earlier curve, moved
- The threshold
These are measurements, not a model. Each curve is drawn through the daily readings of one weather station, kept by NOAA. They haven't been corrected for a station that moved, a new kind of thermometer, a different time of day for reading it or a town growing up around it. So a change at one place can have a local cause. The About tab says how many of the places warmed.
How much the place warmed, and how much the globe did
- This place: the average temperature of each year
- The whole globe
One place is noisier than the whole planet. A single station swings a degree or more from one year to the next, because weather moves heat around. Averaged over the globe, most of that cancels, and the slow warming is what's left. Places differ, too. Of the 114 places here, 95 were warmer in their recent period than in their earlier one, and 51 warmed more than the globe did.
Add the warming still to come
- The recent period
- The same days with the added warming, for 2081–2100
- The threshold
This is an exercise, not a forecast for the place. It takes the recent days as they were measured and adds the same warming to every one. So it keeps the shape of the curve fixed, as the bell curve on the first tab does. The warming added is for the whole year's average, though summer highs and winter lows can warm by different amounts. It uses each scenario's best estimate and leaves out its range. And the station's record hasn't been corrected for local changes.
Which curve we get is a choice. The five scenarios differ in how much carbon dioxide and other greenhouse gases the world emits from now on. The warming stops when the emissions stop.
Where the places are, and where it warms most
- A place with a long daily record
- The place you've chosen
The maps are equal-area. The world is drawn in the Mollweide projection and the United States in an Albers conic projection, so a patch of color covers its true share of the surface. A map that stretches the Arctic would make the fastest-warming part of the planet look bigger than it is.
About this model
A few degrees of warming sounds small. This model shows why it isn't. When every day gets a little warmer, more days go past any high temperature you care to name. And the rarer those days used to be, the more they multiply.
The first view does the sum in the box "A few degrees can multiply rare heat" in Chapter 6, "Recent Climate Change". Suppose daily highs follow a bell curve with a mean of 89 °F (32 °C) and a standard deviation of 4 °F (about 2 °C). Add 4 °F to every day, and the days above 97 °F go from 2.3% of all days to 15.9%. That's 7 times as often.
The other views try the idea on measured temperatures, so you can see how far the simple picture holds. They use the daily highs and lows from weather stations at 114 places: 84 in the states of the United States and 30 elsewhere. Of the 114, 16 are south of the equator. Each place has two periods to compare. At most places each period is 30 years long, and at 49 of them the two periods start at least 100 years apart. The earliest starts in 1869, in New York City.
The page opens at Blue Hill, in Massachusetts. July and August highs there averaged 77.2 °F in 1885–1914 and 81.2 °F in 1996–2025. That's 4.0 °F warmer, the same shift as in the chapter's box. Days above 90 °F went from 3.5% of days to 8.1%, which is 2.3 times as often.
Two of the views look ahead. They take the warming that climate models give for each place by 2081–2100, add it to the days already measured there, and count again. How much warming that is depends on how much carbon dioxide and other greenhouse gases the world emits from now on, so you choose a scenario. Chapter 7, "Climate Scenarios", explains what the scenarios are.
How to use this page
The page has five views, and the tabs at the top move between them. Above the graphs you choose whether temperatures are shown in °F or in °C. The page opens in °F, as the chapter's box does. A warming is always given both ways.
"The idea" is the bell curve of the chapter's box. You can change four things:
- The average daily high before the warming. The page opens at 89 °F.
- The standard deviation, which says how widely the days are spread around the average. The page opens at 4 °F.
- The warming added to every day. The page opens at 4 °F.
- The threshold. The page works out the share of days above it. It opens at 97 °F, and two buttons put it two or three standard deviations above the average.
"Back to the chapter's example" puts all four back where they started.
The other four views show one place at a time. Choose it from the menu above the graph. Typing a few letters in the box beside the menu shortens the list: try part of a name, a state's two letters or a country. Or go to "Map" and click or tap the place's dot.
"Two periods" draws two smooth curves for the place. Each shows how often each temperature was measured, in the earlier period (blue) and in the recent one (orange). You can change three things:
- Which days. Hot days are the daily highs of the two warmest months. Cold nights are the daily lows of the two coldest months. North of the equator the warmest months are July and August and the coldest are January and February. South of it they swap.
- The threshold. Move the slider, type a number, or click the graph. With the graph selected, the left and right arrow keys move the threshold one degree, or five with Shift. For hot days the page counts the days above the threshold. For cold nights it counts those at or below it. The threshold starts where about one day in ten of the recent period is beyond it.
- The moved curve. Tick the box and a dashed curve shows the earlier period's days, every one of them warmed by the change in the average. That's what the bell-curve idea expects: the same shape, slid along.
"Back to the starting threshold" puts the threshold back.
"Local and global" has no controls. Its graph shows the average temperature of each year at the place as the green line, and for the whole globe as the heavier dark line. Each line is measured from its own average over the earlier period. The two periods are shaded, and a bar across each shows the average over its years.
"Later this century" adds warming to the recent period's days. You choose one of five scenarios for the world's emissions from now on, from very low to very high. You also choose which days and the threshold, as before. The graph shows the days as they were measured (orange) and the same days with the warming added (dashed). The page opens on SSP3-7.0, a high-emissions scenario that Chapter 8, "Future Climate Change", also uses.
"Map" shows a dot for every place, on the whole world or on the 48 states that touch. Click or tap a dot to choose that place. With the map selected, the left and right arrow keys step through the places from north to south. The map can also show colors: how much each part of the world warmed between the chosen place's two periods, or how much warming is still to come by 2081–2100 in the scenario you chose.
Under every graph, a few lines say in numbers what it shows.
The address in your browser changes as you move the controls, so you can bookmark a view or send it to someone. Nothing is sent anywhere as you work.
This page is part of the website for Climate Change: Simple, Serious, Solvable, an open textbook by Scott Denning. It goes with Chapter 6, "Recent Climate Change".
The equations
You don't need any of this to use the page. But the whole model is eight short equations, and you can follow every one of them with a calculator.
The question is: if every day warms by the same few degrees, how much more often does the temperature go beyond a threshold?
Here are the letters the equations use.
| Letter | What it is | Its value |
|---|---|---|
| x | The threshold | You choose it |
| m | The mean, or average, of the days' temperatures | Chosen, or step 2 |
| s | Their standard deviation: how widely they are spread around the mean | Chosen, or step 2 |
| z | How many standard deviations the threshold is above the mean | Step 1 |
| N | The number of days with a good reading | About 1,800 in 30 years |
| S | The sum of those days' temperatures | Step 2 |
| D | The sum of the squares of each day's distance from the mean | Step 2 |
| n | The number of days beyond the threshold | Step 3 |
| f | The share of the days that are beyond the threshold. f1 is the share in a first set of days and f2 the share in a second | Steps 1 and 3 |
| h | The width of the smoothing that draws the curves | Step 4 |
| A | The standard deviation of the days, or the range of the middle half of them divided by 1.34, whichever is smaller | Step 4 |
| ΔL | How much the place warmed between its two periods. Δ is the Greek capital letter delta, and it means a change | Step 5 |
| ΔG | How much the globe warmed over the same years | Step 5 |
| k | The place's warming over the globe's | Step 5 |
| W | How much warmer the globe is in 2081–2100 than in 1850–1900, in a scenario | 1.4, 1.8, 2.7, 3.6 or 4.4 °C |
| Wr | How much warmer the globe already was in the place's recent period than in 1850–1900 | 1.02 °C in 1996–2025 |
| P | How much the place warms for each 1 °C of global warming, in climate models | 0.62 to 1.98 °C |
| ΔT | The warming still to come at the place, which the page adds to every day | Step 6 |
| R | How many times as often days go beyond the threshold | Step 7 |
1. How far out is the threshold?
A bell curve is set by two numbers, its mean and its standard deviation. What matters about a threshold is how many standard deviations it lies above the mean.
The share of days above the threshold depends only on z. About 68% of days lie within one standard deviation of the mean. The rest are split evenly between the two ends, so 15.9% of days are above z = 1. Farther out the share falls fast: 2.3% of days are above z = 2, and 0.13% are above z = 3.
In the chapter's box, 97 °F starts at z = (97 − 89) ÷ 4 = 2. Warm every day by 4 °F and the mean is 93 °F, so z = (97 − 93) ÷ 4 = 1. The share of days above 97 °F goes from 2.3% to 15.9%.
No simple formula turns z into a share. It's the area under the bell curve beyond the threshold, and the page adds that area up in 2,000 thin slices.
2. What are the mean and the standard deviation of real days?
For a place, the page takes the days of one period and one season that have a good reading. There are N of them, and their temperatures add up to S. Their mean is
For the standard deviation, take each day's distance from the mean, square it, and add up the squares. Call that sum D. Then
and s is the square root. At Blue Hill, the 1,860 July and August highs of 1885–1914 have a mean of 77.2 °F and a standard deviation of 7.4 °F. The 1,856 of 1996–2025 have a mean of 81.2 °F and a standard deviation of 7.1 °F.
3. What share of the days are beyond the threshold?
From here on the page doesn't suppose a bell curve. It counts. If n of the N days are beyond the threshold, their share is
For hot days, beyond means above the threshold. For cold nights it means at or below it. At Blue Hill, 66 of the 1,860 highs of 1885–1914 were above 90 °F, so f = 66 ÷ 1,860 = 3.5%. In 1996–2025 it was 151 of 1,856, which is 8.1%.
To turn a share into days a month, the page multiplies it by the number of days in an average month of the season. July and August have 31 days each, so 8.1% of the days is 2.5 days a month.
4. How is the smooth curve drawn?
A bar chart of 1,800 days would be jagged. So the page spreads each day into a small bell curve of its own and takes the average of them all. (Statisticians call this smoothing with a Gaussian kernel.) The width of each small curve is
The more days there are, the narrower each one's curve can be. This is the width that the statistics language R uses unless it's told otherwise. For Blue Hill's highs of 1885–1914, A is 4.09 °C and 1,8600.2 is 4.51, so h = 0.9 × 4.09 ÷ 4.51 = 0.82 °C, or 1.5 °F.
The curve is for your eye. The counts in step 3 come from the days themselves, not from the curve.
5. How much did the place warm, and how much did the globe?
For each year the page has the place's average temperature: the average, over the year, of the midpoint between each day's high and low. ΔL is the average over the recent period's years less the average over the earlier period's. ΔG is the same for the average temperature of the whole globe's surface, over the same years. Their ratio is
At Blue Hill, ΔL is 1.73 °C and ΔG is 1.09 °C, so k = 1.73 ÷ 1.09 = 1.6. Blue Hill warmed 1.6 times as much as the globe.
6. How much warming is still to come at the place?
A scenario says how much warmer than 1850–1900 the globe is in 2081–2100. That's W. Part of that warming has already happened: in the place's recent period the globe was already Wr warmer than in 1850–1900. The rest, W − Wr, is still to come.
Places don't all warm alike. In climate models, land warms more than the ocean and the Arctic warms most of all. P is how many degrees the place warms for each degree of global warming. So the warming still to come at the place is
The page adds ΔT to every one of the recent period's days and counts again, as in step 3.
7. How many times as often?
The last step compares two shares.
On "The idea" the two shares are those before and after the warming. On "Two periods" they are the earlier period's and the recent period's. On "Later this century" they are the recent period's as measured and with ΔT added. An R above 1 means more often. For cold nights R is usually below 1: fewer of them.
Where the equations stop
- Real days aren't quite a bell curve. Only "The idea" supposes they are. A bell curve with the mean and standard deviation of Blue Hill's 1885–1914 highs puts 4.1% of days above 90 °F. The count is 3.5%.
- The shape can change. "Later this century" adds the same warming to every day, so it keeps the shape of the curve, as the chapter's box does. Real warming doesn't have to. At Blue Hill, warming every one of the earlier days by the 4.0 °F change in the average would put 13.1% of them above 90 °F. The recent period has 8.1%. The hot end of the curve moved less than its middle. Where the curve gets wider as it shifts, it goes the other way and extreme heat becomes more common still.
- The added warming is for the whole year. P is about the average temperature of the year. Summer highs and winter lows can warm by more or less than that.
- One number for each scenario. The page uses each scenario's best estimate. For SSP3-7.0 that's 3.6 °C, and the very likely range is 2.8 to 4.6 °C. P is the average of many climate models, and they differ too.
- Stations have histories. NOAA checks every reading, and the page leaves out the ones it flagged. But these daily records haven't been corrected for a station that moved, a new kind of thermometer, a different time of day for reading it or a town growing up around it. So a change at one place can have a local cause. Of the page's 114 places, 95 have a warmer yearly average in the recent period than in the earlier one. Winter lows are warmer at 100. Summer highs are warmer at only 66, and 38 of the other 48 are in the Midwest of the United States.
- One station is one place. It isn't a state or a country. The global average in "Local and global" is the measure of the whole planet's warming.
So "Later this century" is an exercise in what a given warming would do to the days a place has already had. It isn't a forecast for that place.
A worked example
Open "Later this century" with the page as it starts: Blue Hill, hot days, a threshold of 90 °F and SSP3-7.0. You need the place's list of days for two of these steps, and a calculator for the rest.
- The global warming still to come (step 6). SSP3-7.0 reaches W = 3.6 °C. In 1996–2025 the globe was already Wr = 1.02 °C warmer than in 1850–1900. That leaves 3.6 − 1.02 = 2.58 °C.
- The warming still to come at Blue Hill (step 6). Here P is 1.263, so ΔT = 1.263 × 2.58 = 3.26 °C. The page shows it as 3.3 °C. In Fahrenheit degrees it's 3.26 × 1.8 = 5.9 °F.
- The hot days as measured (step 3). The recent period has N = 1,730 July and August days that count here. Of them, 140 were above 90 °F, so f1 = 140 ÷ 1,730 = 8.1%. In a month of 31 days that's 0.081 × 31 = 2.5 days.
- The hot days with the warming added (step 3). Adding 3.26 °C to every day does the same as lowering the threshold by 3.26 °C. The threshold of 90 °F is 32.2 °C, so count the days that were above 32.2 − 3.26 = 28.94 °C, which is 84.1 °F. There are 571 of them, so f2 = 571 ÷ 1,730 = 33.0%. That's 0.330 × 31 = 10.2 days a month.
- How many times as often (step 7). R = 33.0 ÷ 8.1 = 4.1.
The lines under the graph say the same: 140 of 1,730 days as measured, 571 with the added warming, and 4.1 times as often.
A few details
- Good readings. A reading counts unless NOAA's checks flagged it. NOAA stores each one as a whole number of tenths of a degree Celsius.
- Two sets of days. "Two periods" uses every good high of the season, or every good low. "Local and global" and "Later this century" need a yearly average, so they use only the years that count, and only the days with both a good high and a good low. A year counts if it's over, at least 90% of its days have both readings, and so do at least 80% of the days in every month. That's why Blue Hill has 1,856 recent days in one view and 1,730 in another. The page works out the warming still to come only where each period has at least 10 years that count.
- The periods. They are the earliest and the latest run of years with nearly complete readings, as far apart as the record allows. At 12 places the record is too short or too broken for two 30-year periods, and each period is 20 years.
- A threshold in °F. The page turns it into °C and rounds it to the nearest tenth of a degree, the grain of the readings. So 100 °F is 37.8 °C, and a day whose high was 37.8 °C is not above 100 °F.
- Fahrenheit and Celsius. A temperature in °F is 1.8 times the temperature in °C, plus 32. A warming in °F is just 1.8 times the warming in °C.
- Days a month in winter. January and February together have 59 days, or 60 in a leap year, so an average month of that season has about 29.6 days.
- Places left out. The app this page came from had 127 places. The page leaves out 13 of them, most of them in Europe, because part of their record comes from a European archive that shares it for non-commercial research and education only.
See the equations at work
- Rarer heat multiplies more. On "The idea", press "Threshold three standard deviations above the average". The threshold goes to 101 °F. The share of days above it goes from 0.13% to 2.3%, which is 17 times as often. At two standard deviations it was 7 times. That's step 1: the farther out the threshold, the faster the share changes as the curve slides.
- A wider curve. Still on "The idea", press "Back to the chapter's example" and raise the standard deviation from 4 °F to 8 °F. Now 97 °F is only one standard deviation out, and the same 4 °F of warming takes the share of days above it from 15.9% to 30.9%. That's 1.9 times as often, not 7. The narrower the curve, the more a given warming multiplies the days beyond a threshold.
- A real 4 °F. Go to "Two periods" at Blue Hill. Days above 90 °F went from 3.5% to 8.1%, which is 2.3 times as often (steps 2 and 3). Tick the box to slide the earlier curve. The dashed curve has 13.1% of its days above 90 °F, so here the simple picture overshoots.
- Cold nights go the other way. At Blue Hill, choose the cold nights. Nights at or below 5 °F went from 15.1% of January and February nights to 10.8%, which is 0.71 times as often (step 7).
- Seasons swap south of the equator. Choose Sydney, in Australia. Its hot days are in January and February. Days above 90 °F went from 7.4% to 9.7% between 1940–1969 and 1996–2025.
- The scenario matters. On "Later this century" at Blue Hill, SSP3-7.0 adds 5.9 °F and gives 10.2 days a month above 90 °F. Choose the low-emissions scenario, SSP1-2.6. It adds 1.8 °F and gives 4.5 days a month (step 6). The recent period had 2.5.
- The far north warms more. Choose Fairbanks, in Alaska, the cold nights and SSP3-7.0 again. Its P is 1.69, so the scenario adds 7.9 °F there. Of 1,778 January and February nights, 153 were at or below −40 °F as measured. With the warming added, 24 are.
Where the data come from
The daily highs and lows are from the Global Historical Climatology Network Daily, version 3.34, as it stood on 7 September 2026. NOAA's National Centers for Environmental Information keep it, and they gather the records from weather services around the world.
Menne, M. J., Durre, I., Vose, R. S., Gleason, B. E., and Houston, T. G. (2012). An Overview of the Global Historical Climatology Network-Daily Database. Journal of Atmospheric and Oceanic Technology 29(7), 897–910. doi:10.1175/JTECH-D-11-00103.1
Menne, M. J., Durre, I., Korzeniewski, B., McNeill, S., Thomas, K., Yin, X., Anthony, S., Ray, R., Vose, R. S., Gleason, B. E., and Houston, T. G. (2012). Global Historical Climatology Network - Daily (GHCN-Daily), Version 3. NOAA National Centers for Environmental Information. doi:10.7289/V5D21VHZ
The global average temperature, and the map of measured warming, are from HadCRUT5 (version 5.1.0.0), made by the Met Office Hadley Centre and the Climatic Research Unit of the University of East Anglia. Contains public sector information licensed under the Open Government Licence v3.0.
Morice, C. P., Kennedy, J. J., Rayner, N. A., Winn, J. P., Hogan, E., Killick, R. E., Dunn, R. J. H., Osborn, T. J., Jones, P. D., and Simpson, I. R. (2021). An Updated Assessment of Near-Surface Temperature Change From 1850: The HadCRUT5 Data Set. Journal of Geophysical Research: Atmospheres 126(3), e2019JD032361. doi:10.1029/2019JD032361
The scenarios' warming is from the Sixth Assessment Report of the Intergovernmental Panel on Climate Change (IPCC): the best estimates and very likely ranges for 2081–2100 in Table SPM.1 of the Summary for Policymakers.
IPCC (2021). Summary for Policymakers. In Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change. Cambridge University Press, pp. 3–32. doi:10.1017/9781009157896.001
Each place's warming for each degree of global warming is from the data behind Figure SPM.5 of the same summary: the yearly average warming, simulated by climate models, in a world 1 °C warmer than 1850–1900. The data are shared under the Creative Commons Attribution 4.0 license. The page reads the value for the place off that map.
Fischer, E., and Hauser, M. (2021). Summary for Policymakers of the Working Group I Contribution to the IPCC Sixth Assessment Report - data for Figure SPM.5 (v20210809). NERC EDS Centre for Environmental Data Analysis. doi:10.5285/2787230b963942009e452255a3880609
The coastlines and borders on the maps are from Natural Earth, which is in the public domain.
How it was checked
A set of tests comes with the model, and they run every time the page changes. Here's what they hold it to.
- The page, against the app it came from. The page was rebuilt from an app written in Python. For every one of the 114 places, the page's data give the app's numbers: how many good days, their sum, their mean and standard deviation, the smoothing width, the warming of the place and of the globe, and the warming still to come. For a sample of the places, the tests also hold the counts at every threshold, each year's average and the smooth curves to the app's.
- One thing the page does differently. The app compared temperatures in °F, where the readings aren't round numbers, and a reading of exactly 37.8 °C came out a hair above 100 °F. The page compares them in tenths of a degree Celsius. The tests hold the two ways of counting to differ by exactly the days that sit on the threshold. At Sacramento, in California, 73 of the 1,860 July and August days of 1995–2024 had a high of exactly 37.8 °C. The app counted 486 days above 100 °F there, and the page counts 413.
- The code, against a second copy. The tests have the model's arithmetic written out a second time, in another programming language. For every place, both seasons and all five scenarios, the two copies give the same numbers.
- The bell curve, against the chapter. The page gives the numbers in the chapter's box: 2.3% and 15.9% of days above 97 °F, 0.13% and 2.3% above 101 °F, and 7 and 17 times as often.
- The scenarios, against the IPCC's table. The five best estimates and their very likely ranges are the ones in Table SPM.1.
- This tab, against the model. The tests work out both sides of every equation above from the model's own numbers, and the two sides have to agree. They also work out the numbers in the text and in the worked example, and check that this tab gives them.
The code
The code is small enough to read. Two files do all the work, and they use no outside software. The comments in model.js use the same step numbers and letters as the equations above.
model.js is the science: the bell curve, the counting, the smoothing and the added warming
app.js is the page: the controls, the graphs, the maps and the lines of numbers
To keep a copy, save model.js or app.js.
All of the model's code is on GitHub, at github.com/airscottdenning/climate-models. You're free to use it, change it and teach with it.
Credits
By Scott Denning, for Climate Change: Simple, Serious, Solvable.
The model is Scott Denning's. It began as a web app he wrote in R for one weather station, and he rebuilt it in Python with OpenAI Codex for stations around the world. Claude, from Anthropic, rebuilt it to run in your browser and checked it against the Python app. The rebuild changed how days on the threshold are counted, added the first view and the SSP1-2.6 scenario, and left out 13 places, as explained above.