What Global Warming?

Berkeley Earth is a popular resource among climate alarmists. Today I will examine their most popular data, available here. This data is the basis of a very popular meme, the global warming color stripes. But how valid is it? Could it be a misinterpretation?

First, we will need three tools:

> sudo apt install gnuplot ncview nco

Then download & plot:

> (echo 'set term png size 740,370;set grid;unset key;plot "-" u 1:2 w lines lw 2 lc rgb "red"'; wget -qO- http://berkeleyearth.lbl.gov/auto/Global/Land_and_Ocean_summary.txt | awk 'length($1)==4{print $1" "$2}') | gnuplot > t.png
http://berkeleyearth.lbl.gov/auto/Global/Land_and_Ocean_summary.txt (1st and 2nd Column)

Looks like legit global warming! OK, we’re done!

We must demand extremely costly legislation!

No wait …

Let’s download their whole dataset from here. (Warning: File is 400MB+, Don’t Click!)

> wget -c -O temps.nc http://berkeleyearth.lbl.gov/auto/Global/Gridded/Land_and_Ocean_LatLong1.nc

Open up the file with ncview:

> ncview temps.nc

Here is coverage for January of years: 1850, 1875, 1900, 1925, 1950, and 2019

White = Missing Data

As you can see, we obviously did not have global coverage for most of the interested period. Could it possibly be that the “global” warming reported by Berkeley Earth and similar outfits is actually a statistical artifact due to increased coverage and incompatible comparison? In other words, is it the whole globe that’s warming or is it just the shifting and increasing subset of the globe that’s warming?

Good question! Let’s investigate …

We need elevation data so that we can see if that’s a factor. We get that from here. Download using:

> wget -c http://research.jisao.washington.edu/data_sets/elevation/elev.1-deg.nc

The Berkeley Earth data file has information about the baseline temperatures for Jan 1950 through Dec 1980. We examine this first. Create a new file called base.sh, and paste in the following text:

#!/usr/bin/bash
# Zoe Phin, 2019/12/29

ncks --trd -HC elev.1-deg.nc -v data | sed \$d | awk -F[=\ ] '$8>=0{print $8} $8<0{print 0}' > .elev

onemonth() {
	for l in `seq 0 179`; do
		ncks -v climatology -d month_number,$1,$1 -d latitude,$l,$l temps.nc |\
		sed -n '/climatology =/,/;/p' | sed 1d | tr -d ' ;' | tr ',' '\n' |\
		awk -v l=$l 'function rad(x) { return x*atan2(0,-1)/180 } {
			lat = l - 89.5; lon = n - 179.5; n += 1

			a = 6378137.678; b = 6356752.964; E = 1-b^2/a^2;
			x = rad(lat)
			A = (a*rad(1))^2*(1-E)*cos(x)/(1-E*sin(x)^2)^2

			printf "%5.1f %6.1f %10.6f %20.18f\n", lat, lon, $1, A/510072261022077
		}'    
	done > .t$1
	paste .t$1 .elev
}

allmonths() {
	for t in `seq 0 11`; do
		printf "%2d " $(($t+1)); onemonth $t |\
			awk '$3!="nan"{T+=$3*$4;L+=$1*$4;A+=$4;E+=$5*$4}END{
				printf "%10.6f %5.3f %6.3f %7.2f\n",T,A,L/A,E/A}'
	done | awk '{print;S+=$2}END{print "AVG: "S/12}'
}

allmonths

Make this file executable and run it:

> chmod +x temps.sh
> ./base.sh

 1  12.243634 1.000  0.000  232.86
 2  12.429942 1.000  0.000  232.86
 3  13.030878 1.000  0.000  232.86
 4  13.999172 1.000  0.000  232.86
 5  14.955463 1.000  0.000  232.86
 6  15.675272 1.000  0.000  232.86
 7  15.915606 1.000  0.000  232.86
 8  15.757542 1.000  0.000  232.86
 9  15.143898 1.000  0.000  232.86
10  14.242063 1.000  0.000  232.86
11  13.198164 1.000  0.000  232.86
12  12.521963 1.000  0.000  232.86
AVG: 14.0928

Here we see the month number, the average area-weighted temperature, coverage (100%), average latitude (equator), and average elevation. Average elevation will come in handy later. At the end is an annual average temperature. So far so good. Now we do latitude analysis. Create a new file latitudes.sh, and paste in the following:

#!/usr/bin/bash
# Zoe Phin, 2019/12/29

paste .t0 .t1 .t2 .t3 .t4 .t5 .t6 .t7 .t8 .t9 .t10 .t11 | awk '{
	$1 += 0.5; if ($1 < 0) $1 = 0 - $1
	printf "%5.1f %6.1f %10.6f\n", $1, $2, 
		($3+$7+$11+$15+$19+$23+$27+$31+$35+$39+$43+$47+$51+$55+$59+$63)/12
}' | awk '{
	L[$1]+=$3 } END {
	for (l in L) {
		L[l]/=720
		if (l == "0.0") { L[l]*=2 }
		printf "%5.1f %10.6f\n", l, L[l]
	}
}'  | sort -n | awk '{print $1" "$2-L;L=$2}'\
	| sed 1d | sed -n 1,24p | awk '{S+=$2}END{print S/NR}'

Now run it:

> bash latitudes.sh

-0.133022

This tells us that in the tropics, for every degree latitude away from the equator, the temperature drops 0.133 °C, according to 1950-1980 baseline data. This fact will come in handy later.

Now we are ready to analyze the temporal data. Create a new file called temps.sh and paste the following text into it:

#!/usr/bin/bash
# Zoe Phin, 2019/12/29

ncks -v data -lat,0,0 elev.1-deg.nc |\                                                                              
    sed -n '/data =/,/;/p' | sed 1d |\                                            
    tr -d ' ;' | tr ',' '\n' | sed '/^$/d' |\
    awk '$1>=0{print $1}$1<0{print 0}' > .elev

onetime() {
    for l in `seq 0 179`; do
        ncks -v temperature -d time,$1,$1 -d latitude,$l,$l temps.nc |\
        sed -n '/temperature =/,/;/p' | sed 1d | tr -d ' ;' | tr ',' '\n' |\
        awk -v l=$l 'function rad(x) { return x*atan2(0,-1)/180 } {  
            lat = l - 89.5; lon = n - 179.5; n += 1
            a = 6378137.678; b = 6356752.964; E = 1-b^2/a^2;
            x = rad(lat)
            A = (a*rad(1))^2*(1-E)*cos(x)/(1-E*sin(x)^2)^2
            printf "%5.1f %6.1f %10.6f %20.18f\n", lat, lon, $1, A/510072261022077
        }'    
    done > .tmp                                                                                                       
    paste .tmp .elev 
}   

alltimes() {
    for t in `seq 0 2027`; do
        printf "%4d " $t 
        onetime $t | awk '
            $3!="nan"{T+=$3*$4;L+=$1*$4;A+=$4;E+=$5*$4}END{printf "%10.6f %5.3f %6.3f %7.2f\n",T,A,L/A,E/A}'
    done
}   

alltimes

Make new file executable, and run it. Then wait hours. lol

> chmod +x temps.sh
> ./temps.sh | tee temps.csv

While you’re waiting for temps.csv to be completely filled, create a new program that will analyze and adjust the results. Call it analyze.sh

#!/usr/bin/bash
# Zoe Phin, 2019/12/29

monthly() {
    awk '{printf "%4d %02d %10.6f %5.3f %6.3f %6.2f\n",$1/12+1850,$1%12+1,$2,$3,$4,$5}'
}

yearly() {
    awk '{T[$1]+=$3; C[$1]+=$4; L[$1]+=$5; E[$1]+=$6} END {
        for (y in T) { 
            printf "%4d %10.6f %5.3f %6.3f %6.2f\n",y,T[y]/12,C[y]/12,L[y]/12,E[y]/12 
        }
    }' | sort -n
}

adjust() {
    awk '{
        if ($4 < 0) $4 = 0 - $4
        printf "%s  %8.6f  %7.4f\n", $0, $4*0.133022, -0.0057*(232.86-$5)
    }' |\
    awk '{
        printf "%s  = %10.6f\n", $0, $2 + $6 + $7
    }'
}

monthly | yearly | adjust

Notice that I’m using two parameters we discovered earlier: 0.133022 and 232.86 (mean elevation). A third parameter is 0.0057, which is just the average lapse rate in °C/meter.

Make the file executable and run it after temps.csv is completely generated.

> ./chmod +x analyze.sh
> cat temps.csv | ./analyze.sh | tee final.csv

1850  -0.357290 0.770  9.075 230.12  1.207175  -0.0156 =   0.834285
1851  -0.283336 0.782  7.687 226.25  1.022540  -0.0377 =   0.701504
1852  -0.258400 0.780  7.954 217.99  1.058057  -0.0848 =   0.714857
1853  -0.306750 0.832  5.019 224.64  0.667637  -0.0469 =   0.313987
1854  -0.274175 0.842  3.801 219.65  0.505617  -0.0753 =   0.156142
1855  -0.241830 0.833  3.595 224.71  0.478214  -0.0465 =   0.189884
1856  -0.355853 0.843  3.705 225.26  0.492847  -0.0433 =   0.093694
1857  -0.461720 0.849  3.100 219.24  0.412368  -0.0776 =  -0.126952
1858  -0.354328 0.834  3.874 222.37  0.515327  -0.0598 =   0.101199
1859  -0.313976 0.829  2.207 230.06  0.293580  -0.0160 =  -0.036396
1860  -0.337673 0.747  3.282 224.38  0.436578  -0.0483 =   0.050605
1861  -0.372894 0.664  5.272 187.82  0.701292  -0.2567 =   0.071698
1862  -0.424297 0.689  4.241 216.75  0.564146  -0.0918 =   0.048049
1863  -0.245435 0.604  6.774 167.69  0.901091  -0.3715 =   0.284156
1864  -0.295420 0.690  5.608 193.15  0.745987  -0.2263 =   0.224267
1865  -0.209959 0.606  5.634 190.14  0.749446  -0.2435 =   0.295987
1866  -0.170314 0.587  7.426 210.01  0.987821  -0.1302 =   0.687307
1867  -0.167626 0.605  4.531 208.39  0.602723  -0.1395 =   0.295597
1868  -0.164820 0.693  1.542 221.86  0.205120  -0.0627 =  -0.022400
1869  -0.212144 0.811  3.939 239.15  0.523974   0.0359 =   0.347730
1870  -0.273406 0.841  3.148 237.14  0.418753   0.0244 =   0.169747
1871  -0.281568 0.826  2.503 239.02  0.332954   0.0351 =   0.086486
1872  -0.260434 0.851  2.382 229.30  0.316858  -0.0203 =   0.036124
1873  -0.245535 0.870  3.264 236.25  0.434184   0.0193 =   0.207949
1874  -0.316410 0.858  2.290 236.99  0.304620   0.0235 =   0.011710
1875  -0.343630 0.902  3.548 227.12  0.471962  -0.0327 =   0.095632
1876  -0.351453 0.880  3.113 229.60  0.414097  -0.0186 =   0.044044
1877  -0.010802 0.891  3.061 227.45  0.407180  -0.0308 =   0.365578
1878   0.070294 0.920  3.761 220.60  0.500296  -0.0699 =   0.500690
1879  -0.219576 0.905  3.533 222.53  0.469967  -0.0589 =   0.191491
1880  -0.283391 0.903  2.997 219.83  0.398667  -0.0743 =   0.040976
1881  -0.199763 0.920  3.777 219.21  0.502424  -0.0778 =   0.224861
1882  -0.246604 0.933  3.889 227.58  0.517323  -0.0301 =   0.240619
1883  -0.295346 0.935  3.978 228.95  0.529162  -0.0223 =   0.211516
1884  -0.445828 0.939  3.970 229.57  0.528097  -0.0188 =   0.063469
1885  -0.421912 0.934  4.251 232.04  0.565477  -0.0047 =   0.138865
1886  -0.458854 0.939  4.209 229.30  0.559890  -0.0203 =   0.080736
1887  -0.481525 0.941  4.258 231.56  0.566408  -0.0074 =   0.077483
1888  -0.299911 0.937  4.022 232.11  0.535014  -0.0043 =   0.230803
1889  -0.173886 0.928  3.699 234.59  0.492048   0.0099 =   0.328062
1890  -0.434682 0.914  3.849 232.06  0.512002  -0.0046 =   0.072720
1891  -0.335364 0.905  3.290 240.85  0.437642   0.0455 =   0.147778
1892  -0.382409 0.926  3.818 234.61  0.507878   0.0100 =   0.135469
1893  -0.373769 0.930  3.979 233.86  0.529295   0.0057 =   0.161226
1894  -0.362064 0.913  4.107 233.84  0.546321   0.0056 =   0.189857
1895  -0.301138 0.905  3.449 237.65  0.458793   0.0273 =   0.184955
1896  -0.209349 0.914  3.530 239.58  0.469568   0.0383 =   0.298519
1897  -0.200136 0.919  3.538 238.05  0.470632   0.0296 =   0.300096
1898  -0.395082 0.942  4.022 232.84  0.535014  -0.0001 =   0.139832
1899  -0.239184 0.945  4.072 231.99  0.541666  -0.0050 =   0.297482
1900  -0.134154 0.943  4.175 231.34  0.555367  -0.0087 =   0.412513
1901  -0.205338 0.944  4.127 231.32  0.548982  -0.0088 =   0.334844
1902  -0.334302 0.945  4.046 231.59  0.538207  -0.0072 =   0.196705
1903  -0.435556 0.952  3.585 232.03  0.476884  -0.0047 =   0.036628
1904  -0.472943 0.953  3.521 231.87  0.468370  -0.0056 =  -0.010173
1905  -0.323819 0.952  3.588 232.04  0.477283  -0.0047 =   0.148764
1906  -0.256762 0.952  3.605 232.17  0.479544  -0.0039 =   0.218882
1907  -0.413088 0.952  3.583 232.06  0.476618  -0.0046 =   0.058930
1908  -0.439984 0.953  3.575 231.93  0.475554  -0.0053 =   0.030270
1909  -0.500328 0.953  3.578 231.99  0.475953  -0.0050 =  -0.029375
1910  -0.474652 0.951  3.589 231.81  0.477416  -0.0060 =  -0.003236
1911  -0.487573 0.951  3.567 231.32  0.474489  -0.0088 =  -0.021884
1912  -0.414555 0.954  3.496 231.90  0.465045  -0.0055 =   0.044990
1913  -0.382771 0.953  3.555 231.92  0.472893  -0.0054 =   0.084722
1914  -0.223899 0.951  3.667 232.11  0.487792  -0.0043 =   0.259593
1915  -0.157645 0.949  3.819 232.08  0.508011  -0.0044 =   0.345966
1916  -0.380000 0.941  4.299 232.10  0.571862  -0.0043 =   0.187562
1917  -0.480852 0.931  4.939 229.73  0.656996  -0.0178 =   0.158344
1918  -0.323954 0.908  6.281 225.14  0.835511  -0.0440 =   0.467557
1919  -0.258707 0.918  5.622 226.10  0.747850  -0.0385 =   0.450643
1920  -0.241853 0.943  4.200 232.26  0.558692  -0.0034 =   0.313439
1921  -0.182841 0.948  3.915 232.11  0.520781  -0.0043 =   0.333640
1922  -0.272134 0.953  3.580 232.01  0.476219  -0.0048 =   0.199285
1923  -0.251429 0.950  3.737 232.01  0.497103  -0.0048 =   0.240874
1924  -0.247327 0.951  3.701 231.85  0.492314  -0.0058 =   0.239187
1925  -0.205461 0.950  3.764 231.94  0.500695  -0.0052 =   0.290034
1926  -0.069547 0.952  3.631 232.06  0.483003  -0.0046 =   0.408856
1927  -0.176755 0.952  3.640 232.03  0.484200  -0.0047 =   0.302745
1928  -0.155696 0.950  3.732 232.09  0.496438  -0.0044 =   0.336342
1929  -0.333335 0.951  3.666 231.75  0.487659  -0.0063 =   0.148024
1930  -0.120497 0.950  3.776 232.05  0.502291  -0.0046 =   0.377194
1931  -0.070735 0.952  3.594 231.95  0.478081  -0.0052 =   0.402146
1932  -0.103892 0.953  3.550 231.85  0.472228  -0.0058 =   0.362536
1933  -0.278755 0.954  3.498 232.04  0.465311  -0.0047 =   0.181856
1934  -0.149201 0.953  3.517 232.06  0.467838  -0.0046 =   0.314037
1935  -0.186067 0.953  3.549 232.07  0.472095  -0.0045 =   0.281528
1936  -0.138241 0.955  3.426 231.90  0.455733  -0.0055 =   0.311992
1937   0.023886 0.954  3.484 231.98  0.463449  -0.0050 =   0.482335
1938   0.028060 0.955  3.431 231.90  0.456398  -0.0055 =   0.478958
1939   0.003556 0.950  3.683 230.77  0.489920  -0.0119 =   0.481576
1940   0.099252 0.936  4.594 228.66  0.611103  -0.0239 =   0.686455
1941   0.074650 0.925  5.307 228.02  0.705948  -0.0276 =   0.752998
1942   0.035199 0.925  5.355 227.44  0.712333  -0.0309 =   0.716632
1943   0.070681 0.916  5.850 227.37  0.778179  -0.0313 =   0.817560
1944   0.156531 0.890  7.065 200.57  0.939800  -0.1841 =   0.912231
1945   0.032824 0.877  7.844 205.34  1.043425  -0.1569 =   0.919349
1946  -0.042840 0.950  3.540 229.52  0.470898  -0.0190 =   0.409058
1947   0.050743 0.960  3.004 231.05  0.399598  -0.0103 =   0.440041
1948  -0.064158 0.963  2.719 230.03  0.361687  -0.0161 =   0.281429
1949  -0.084292 0.964  2.721 231.53  0.361953  -0.0076 =   0.270061
1950  -0.161060 0.977  1.753 236.13  0.233188   0.0186 =   0.090728
1951   0.001301 0.985  1.177 235.44  0.156567   0.0147 =   0.172568
1952   0.076559 0.963  2.836 232.62  0.377250  -0.0014 =   0.452409
1953   0.131789 0.960  2.998 232.61  0.398800  -0.0014 =   0.529189
1954  -0.055526 0.975  1.926 231.30  0.256200  -0.0089 =   0.191774
1955  -0.111239 0.981  1.329 229.13  0.176786  -0.0213 =   0.044247
1956  -0.180457 0.997  0.183 232.94  0.024343   0.0005 =  -0.155614
1957   0.051807 0.999  0.078 232.86  0.010376  -0.0000 =   0.062183
1958   0.061004 0.999  0.082 232.72  0.010908  -0.0008 =   0.071112
1959   0.035838 0.997  0.196 232.82  0.026072  -0.0002 =   0.061710
1960  -0.012004 0.998  0.104 232.77  0.013834  -0.0005 =   0.001330
1961   0.073172 0.999  0.078 232.80  0.010376  -0.0003 =   0.083248
1962   0.025351 0.998  0.128 232.91  0.017027   0.0003 =   0.042678
1963   0.065958 0.997  0.165 232.75  0.021949  -0.0006 =   0.087307
1964  -0.204562 0.999  0.051 232.78  0.006784  -0.0005 =  -0.198278
1965  -0.103658 0.999  0.027 232.74  0.003592  -0.0007 =  -0.100766
1966  -0.035893 0.999  0.030 232.84  0.003991  -0.0001 =  -0.032002
1967   0.007587 1.000  0.014 232.89  0.001862   0.0002 =   0.009649
1968  -0.056209 1.000  0.018 232.88  0.002394   0.0001 =  -0.053715
1969   0.086212 1.000  0.009 232.85  0.001197  -0.0001 =   0.087309
1970   0.022673 0.999  0.044 232.89  0.005853   0.0002 =   0.028726
1971  -0.098918 0.999  0.060 232.96  0.007981   0.0006 =  -0.090337
1972  -0.009380 0.999  0.076 233.00  0.010110   0.0008 =   0.001530
1973   0.107283 0.999  0.050 232.97  0.006651   0.0006 =   0.114534
1974  -0.109770 0.999  0.082 232.98  0.010908   0.0007 =  -0.098162
1975  -0.053170 0.999  0.065 232.98  0.008646   0.0007 =  -0.043824
1976  -0.161628 0.998  0.155 233.01  0.020618   0.0009 =  -0.140110
1977   0.136867 0.999  0.041 232.94  0.005454   0.0005 =   0.142821
1978   0.009959 1.000  0.017 232.90  0.002261   0.0002 =   0.012420
1979   0.096247 1.000  0.005 232.87  0.000665   0.0001 =   0.097012
1980   0.215677 1.000  0.000 232.86  0.000000  -0.0000 =   0.215677
1981   0.264261 1.000  0.000 232.86  0.000000  -0.0000 =   0.264261
1982   0.044925 1.000  0.000 232.86  0.000000  -0.0000 =   0.044925
1983   0.237702 1.000  0.000 232.86  0.000000  -0.0000 =   0.237702
1984   0.072032 1.000  0.000 232.86  0.000000  -0.0000 =   0.072032
1985   0.059067 1.000  0.000 232.86  0.000000  -0.0000 =   0.059067
1986   0.113913 1.000  0.000 232.86  0.000000  -0.0000 =   0.113913
1987   0.246261 1.000  0.000 232.86  0.000000  -0.0000 =   0.246261
1988   0.292035 1.000  0.000 232.86  0.000000  -0.0000 =   0.292035
1989   0.175688 1.000  0.000 232.86  0.000000  -0.0000 =   0.175688
1990   0.367576 1.000  0.000 232.86  0.000000  -0.0000 =   0.367576
1991   0.350261 1.000  0.000 232.86  0.000000  -0.0000 =   0.350261
1992   0.163420 1.000  0.000 232.86  0.000000  -0.0000 =   0.163420
1993   0.195115 1.000  0.000 232.86  0.000000  -0.0000 =   0.195115
1994   0.246145 1.000  0.000 232.86  0.000000  -0.0000 =   0.246145
1995   0.390852 1.000  0.000 232.86  0.000000  -0.0000 =   0.390852
1996   0.293093 1.000  0.000 232.86  0.000000  -0.0000 =   0.293093
1997   0.436165 1.000  0.000 232.86  0.000000  -0.0000 =   0.436165
1998   0.587775 1.000  0.000 232.86  0.000000  -0.0000 =   0.587775
1999   0.353628 1.000  0.000 232.86  0.000000  -0.0000 =   0.353628
2000   0.366550 1.000  0.000 232.86  0.000000  -0.0000 =   0.366550
2001   0.508265 1.000  0.000 232.86  0.000000  -0.0000 =   0.508265
2002   0.586163 1.000  0.000 232.86  0.000000  -0.0000 =   0.586163
2003   0.570285 1.000  0.000 232.86  0.000000  -0.0000 =   0.570285
2004   0.473007 1.000  0.000 232.86  0.000000  -0.0000 =   0.473007
2005   0.655408 1.000  0.000 232.86  0.000000  -0.0000 =   0.655408
2006   0.607471 1.000  0.000 232.86  0.000000  -0.0000 =   0.607471
2007   0.616768 1.000  0.000 232.86  0.000000  -0.0000 =   0.616768
2008   0.482518 1.000  0.000 232.86  0.000000  -0.0000 =   0.482518
2009   0.615649 1.000  0.000 232.86  0.000000  -0.0000 =   0.615649
2010   0.688333 1.000  0.000 232.86  0.000000  -0.0000 =   0.688333
2011   0.573430 1.000  0.000 232.86  0.000000  -0.0000 =   0.573430
2012   0.585135 1.000  0.000 232.86  0.000000  -0.0000 =   0.585135
2013   0.611063 1.000  0.000 232.86  0.000000  -0.0000 =   0.611063
2014   0.675435 1.000  0.000 232.86  0.000000  -0.0000 =   0.675435
2015   0.813036 1.000  0.000 232.86  0.000000  -0.0000 =   0.813036
2016   0.951589 1.000  0.000 232.86  0.000000  -0.0000 =   0.951589
2017   0.836485 1.000  0.000 232.86  0.000000  -0.0000 =   0.836485
2018   0.770258 1.000  0.000 232.86  0.000000  -0.0000 =   0.770258

Columns:

1Year
2Original Temperature Anomaly
3Global Coverage (1 = 100%)
4Average Latitude
5Average Elevation
6Latitude Adjustment Needed
7Elevation Adjustment Needed
8=
9Final Temperature Anomaly = Column 2 + Column 6 + Column 7

Now we plot final.csv

> echo 'set term png size 740,370;set grid;unset key;plot "final.csv" u 1:9 w lines lw 2 lc rgb "red"' | gnuplot > final.png
Latitude and Elevation Adjusted Temperature Anomaly

Reality sure looks a lot different once we properly adjust for shifting average latitude and elevation.

What are the 10 hottest years?

> cat final.csv | awk '{print $9" "$1}' | sort -rn | head

0.951589 2016
0.919349 1945
0.912231 1944
0.836485 2017
0.834285 1850
0.817560 1943
0.813036 2015
0.770258 2018
0.752998 1941
0.716632 1942

What’s the trend?

> sudo apt install gmt
> cat final.csv | awk '{print $1" "$9}' | gmt gmtregress -Fp -o5

0.0013332235319

From 1850 to 2019, we’ve been warming up by 0.0013 °C/year.

We’ve warmed up by 0.22 °C since 1850. I wouldn’t worry about it! A linear regression is inappropriate anyway. The data is obviously cyclical.

Summary: After adjusting Berkeley Earth’s data for latitude and elevation, we found no serious global warming.

Latitude and Elevation Adjusted Temperature Anomaly. Trend Slope = 0.00133°C/year.

Enjoy 🙂 -Zoe


Addendum:

Average Latitude Drift; Slope = -0.0327°/year

In case it wasn’t obvious: The so-called “global warming” is primarily due to incompleteness of data, and the average latitude drifting south towards equator in the data we do have.

Data Coverage, 0 to 1 = 0 to 100%
Mean Elevation, meters

We should rename Climate Change to Historic Mean Latitude Change.

Who’s with me?


Update 2020/01/03

A youtube channel operator claims that Berkeley already performed a latitude and elevation adjustment. This is absolutely bogus. He has since censored our discussion thread from the public. Let’s address this anyway…

In the Berkeley grid data , there are 16635 cells (out of 64800) that have complete data from 1850 to 2018. I compare these 16635 cells to Berkeley’s global summary (first chart on this post). Result:

There ought to have been a huge difference between 1850 and ~1980, if they really accounted for latitude. There is hardly a difference. It’s also painfully obvious that Berkeley stuffs the missing data with neighboring data and model interpolations – and the result is hardly different than just taking a plain area-weighted average of time-persistent locations, which have a VERY Northern bias.

Update 2020/01/04

Below is a very long term weather station in the Netherlands; one of the oldest continuous stations that exist.

What do you see? Uhuh

Before you accuse me of cherrypicking, consider that this cherry has been getting wrapped in more CO2 and it didn’t make a lick of difference. Why is that? Uhuh

Update 2020/01/17

More confirmation that what I’ve done here is correct, available here.

Published by Zoe Phin

https://phzoe.com

67 thoughts on “What Global Warming?

      1. Your results are interesting, but how come the temperature is rising dramatically in periods without observations? According to my sources the data is already compensated for both latitude and altitude. Look at these links: For NASA/GISS, look at «Background of the GISS Analysis» and further down: https://data.giss.nasa.gov/gistemp/
        For Hadley look at https://www.metoffice.gov.uk/hadobs/hadcrut4/index.html
        and in particular https://www.metoffice.gov.uk/hadobs/hadcrut4/HadCRUT4_accepted.pdf
        For Cowtan & Way, look at https://www-users.york.ac.uk/~kdc3/papers/coverage2013/series.html
        For Berkeley, look at http://berkeleyearth.org/methodology/
        For NOAA, look at https://journals.ametsoc.org/doi/full/10.1175/BAMS-D-11-00241.1
        For Japan met org, look at https://ds.data.jma.go.jp/tcc/tcc/products/gwp/temp/explanation.html
        A more general view: https://energiogklima.no/to-grader/global-oppvarming-slik-beregnes-temperaturokningen/ .

        Please comment!

        Like

        1. The data within each grid cell is adjusted, but there is NO adjustment outside it. You have 64800 grid cells for each time period (2028 months) which you are free to combine in any way you want – ergo there can’t be any outside-the-cell adjustments.

          There are 16635 grid cells with full data from the beginning. What they do is find the anomaly in those 16635 cells then stuff that assumption into the other 48165 cells. This is why their “global” assembly is essentially no different from the 16635 assembly.

          Like

  1. Zoe, the most amazing part of your analysis is that it is completely written in Bash commands. I don’t know many people who would have thought of that let alone attempted it. 🙂 How long did that take?
    I have a 10 minute python analysis of BEST data at https://thatsenoughofthat.com/2019/09/13/python-analysis-berkley-earth-surface-temperature-data-set-bubble-gum-data/
    Mosher seems to do a good job of collecting historical data but I’m not convinced that an average temperature can be deduced from data from 1850!

    Liked by 1 person

    1. Cool code 🙂
      Python is way over my head. It’s too structured for me. I prefer streams, terseness, and rapid prototyping.

      I’m not a programmer. I’m a financial analyst that can program. Really I just transform data.

      My ability to program the command line was the biggest contributor to my success. I could quickly test out ideas while others were toying with Excel for hours and days … over and over again.

      I have written over 600 scripts in my 10-year career. It took about a year to get proficient, and 2-3 years to fully master it.

      I don’t recall how long it took me. Time just flew by. I don’t have to think about using Bash, Awk, Sed, etc … it’s all I know 🙂

      Thank you for your comment and code. Have a happy new year!

      Like

  2. Hi Zoe, AllAboutClimate here. I would like to apologize for hiding our comment stream on youtube. When you commented that I had hidden the stream from the public I was confused as I did no such thing. I checked in the comment settings and thought I may have accidentally hidden you from the comments section. I hadn’t but in trying to see why your comments did not show up (they did if you changed the comments preferences to most recent btw) I clicked hide user. I promptly unhid you but now our comment thread seems to have gone completely and I am unable to respond.

    Clearly you are very competent with data analysis but you don’t appear to have the scientific literacy to understand what the data actually represents. What exactly is your scientific background? The anomalies are calculated on a station by station basis as anomalies for that particular location against the 1950-80 average for that location. The station data is then compiled into grid squares and thus the anomaly values are anomalies for the average of that square (again 1950-80) not anomalies for the whole grid. In other words an anomaly of 1 degree for a grid square at 60 degrees North means that it is 1 degree warmer than the average for that grid square over the period 1950-80 not 1 degree warmer than the average for the whole planet (1950-80). if a grid square at the equator also has an anomaly value of 1 degree then both locations are 1 degree above their normal average for the period 1950-1980 and NOT 1 degree above the global average for this period.Indeed they could have the same anomaly value yet have vastly different actual temperatures, The fact that the equator is warmer is therefore irrelevant because the anomaly data shows temperature change relative to the location not relative to the planet. So the fact that “in the tropics, for every degree latitude away from the equator, the temperature drops 0.133 °C” is irrelevant and trying to correct for it is unnecessary.

    Like

    1. Your comment makes no sense. I’m measuring global average anomaly. There is no getting around the fact that most grid cells are missing. The missing data is biased. It doesn’t matter if you use an anomaly or an absolute temperature.

      I can compare each grid cell to its 1950-1980 baseline cell value and then take a global average. Or I can average the baseline first and compare each grid cell to that, then average globally.

      Let A and B be two sets.
      AVG(A)-AVG(B) = AVG(A – B)

      The latitude bias comes from trying to compute a global average. There is no problem with each individual cell discussed here.

      Here, what is the total average of this 15 cell area? X is missing

      [ 3 X X 2 X]
      [ 6 3 8 1 6]
      [ 9 5 4 X 2]

      Like

  3. “A temperature anomaly of +1 in the arctic will have a totally different absolute temperature value than a temperature anomaly of +1 in the Sahara. same anomaly value, different absolute temp value”

    Great!
    Now what if your data has an early bias towards one zone?

    Think.

    Like

  4. Right, that would depend on the zone and the time period. The difference in temp anomalies by latitude varies temporally and by far more factors than simply latitude and elevation. Nonetheless according to the World Meteorological Agency, the Northern Hemisphere has warmed faster than the Southern over recent decades (partly by virtue of having more land which warms faster than oceans). https://skepticalscience.com/NH-warming-rates.html

    Polar latitudes of both hemispheres are also warming faster than equatorial regions due to cryosphere feedbacks. In simple terms they have higher than average temperature anomalies. https://www.nasa.gov/topics/earth/features/warmingpoles.html

    Assuming that these differences were the same for the early period as today (which is a big ‘if’) this would mean that you would expect northern hemisphere, high latitude data to have higher than average temperature anomalies (despite lower than average temperatures). This means that if there is a bias towards these regions, the true global temperature anomalies during this period should be lower than those presented. That is of course assuming that temperature anomaly variation by latitude is the same as present. Frankly there is no reason to believe this because local climate systems will respond differently depending on whether temperatures are rising or falling and local feedback effects. E.g. temp anomalies have been above average for polar and northern hemisphere locations during the recent period of warming however there is no reason to suppose they would also be above average during a period of cooling. This is why applying a blanket adjustment is problematic. It assumes the relationship between temp anomalies and latitude is fixed.

    Obviously the record is incomplete and the early data represents trends biased towards Europe and North America. However applying blanket corrections to the whole dataset in this way is unjustified and lacks a nuanced understanding of local climate variations. It’s like using a sledgehammer to iron a shirt. This is nonetheless an area of ongoing research as can be seen here: https://academic.oup.com/climatesystem/article/3/1/dzy003/5056434
    here:
    https://journals.ametsoc.org/doi/full/10.1175/1520-0442%282001%29014%3C0853%3AAOICDE%3E2.0.CO%3B2

    And are discussed and incorporated into the uncertainty estimates as seen here: https://pubs.giss.nasa.gov/abs/le05800h.html

    Like

    1. “this would mean that you would expect northern hemisphere, high latitude data to have higher than average temperature anomalies”

      No you would not expect that. Did you forget that there’s missing data in the northern hemisphere as well? We reached the North Pole in 1956. It’s amazing that you think you know long term anomalies in the north.

      Did you compare Land anomalies in the Northern and Southern hemisphere? Why would CO2 work more in the north land?

      Like

  5. Hi Zoe. I was looking over your code ( with the tutorialspoint website pointed to awk! ) when I noticed that the comments have changed the Gaelic Happy New Year to ‘And lots of math’. Strangely, it was kind of apt. It should have read “bliadhna Mhath Ùr”.
    I also liked your ripostes to the sanctimonious “scientific literacy” jibes. Clearly your interlocutor does not have the literacy in data science and coding to compete.
    I’m sure you may have already read it but:
    https://wattsupwiththat.com/2020/01/07/greenland-ice-core-co2-concentrations-deserve-reconsideration/
    is interesting regards N Hemisphere and S Hemisphere CO2 levels.
    One thing which has always bothered me is using a mean temperature between 1950 and 1980 as a base line for measuring “anomalies”?
    I am always amazed by the paucity and veracity of recorded temperatures of the planet and comparing them to the mean of a 30 year period which by no means encapsulated a normal distribution of data.
    Keep on posting, please.

    Liked by 1 person

  6. This is great stuff, because it actually captures the observed phenomenon in the 19th and 20th centuries. The Berkeley plot shows a flat trend from 1940 to 1980 and hides the record warmth experienced in the 30s that contributed to drought, Dust Bowl, etc. Your plot shows a clear and significant trend downwards from the 40s to the 70s and that lines up with the “ice age scare” that drove documentaries like this one “In Search of…The Coming Ice Age”, narrated by Leonard Nimoy (Spock from Star Trek):

    “…sea coasts long free of summer ice, are now blocked year round…”
    “…the data shows temperatures in the arctic have fallen dramatically over the last 30 years…”
    “…in most locations the drop has been about 2 degrees Centigrade…”


    Something tells me they wouldn’t have bothered making observations like this or documentaries like this if the Berkeley plot represented historical reality.

    Liked by 2 people

  7. Interestingly the outcome resembles the plot here when you just track the same (non-urban) temperature stations here: https://www.ceres-science.com/content/Evaluating_human-caused_and_natural_contributions_recent_global_warming.html with no extra parameters or adjustments. It is the only scientific way to get a real temporal picture. This clearly shows we are back at 1930’s temps per your outcome. In my mind this is an unambiguous result… vs adding new parameters and “adjusting” to get/keep whatever outcome you want, caveated by opaque assumptions.

    Like

  8. Interesting analysis, but what I see in the sample Netherlands data is an inhomogeneity, a sudden step down in temperature in 1900, probably the result of a station move or an equipment change. No station data can be trusted without a comparison with near neighbours, I’m pretty confident that such a comparison would confirm the 1900 step change as being non-climatic.

    Liked by 1 person

    1. Even if I assume you’re correct, there is still a completely natural local climate change from ~1800 to ~1900 that is BIGGER than the one post 1960. Whatever caused it to change then could be causing it to naturally change now.

      Liked by 1 person

      1. Looking again I would say that there is also a non-climatic step change around 1849. A comparison with the Central England Temperature series would probably reveal the truth, but you might as well just look at that data to establish the temperature history of that region. I have “validated” the CET data using my own regional average reconstruction, there is little sign of sudden step changes in the 19th century:

        Like

        1. I examine ALL the available data in a region, in a similar fashion to BEST, and do a “democratic” average, but only of segments that are deemed (by me) to be not distorted by time-varying non-climatic influences, such as those arising from moves and UHI. Averaging across stations is done of year-to-year temperature changes, followed by simple integration, much simpler than the averaging method used in BEST.

          Like

        2. “that are deemed (by me) to be not distorted”

          Sounds like circular reasoning.

          How do you know the emissivities of all the matter surrounding the thermometer’s box?

          You don’t adjust for elevation. You don’t adjust for latitude. You don’t adjust for the wind. You just know the answer you want.

          Liked by 1 person

        3. You are going wrong with this adjustment business. Consider 3 thermometers in a region, one on top of a hill, one in a city, and one in a shoe-box in the middle of a road. There is no need for any adjustments, as long as nothing about those thermometers changes. If it gets 1C hotter in the region it will get 1C hotter in all 3 thermometers. the objective is to estimate the CHANGE in temperature from the data, and all thermometers are equally valid, even defective ones, as long as the defect remains steady.

          Like

        4. “If it gets 1C hotter in the region it will get 1C hotter in all 3 thermometers.”

          There’s your circular reasoning again. You don’t know the regional change, you only know the 3 thermometers, and you’re trying to find “regional” change from them. You got it backwards.

          The region can only experience forces: more/less sun, more/less cloud, wind direction changes, etc.

          Why would you think these changes effect all 3 thermometers equally?

          You think a cloud appears and disappears above all 3 thermometers at once?

          Sounds nutty to me.

          Again, the main thrust of this article is not what happens inside each grid cell, but how they are combined into a composite average.

          Liked by 1 person

  9. Wow… so impressed with your thoughts here and obvious hard work, I will have to read it a few times over before I fully get it.. but keep up the good fight, I will spread this as much as I can… loved your banter with that other guy too!!

    Liked by 1 person

  10. How do you explain these insane spikes?
    -1.1 (~1850)
    +0.6 and 1.0 and all of them happen over ~10-20 years (or 20 – whatever).

    Like

      1. It has to be a huge coincidence if they happen right when you make big adjustments, though? I think the spikes are simply caused by the adjustments, they are not in the real world.

        I think you can test this claim by “simulating the 1940s spike situation” by using a time span where we have full data and you can “delete” station data:
        Use 1985 data with ONLY 1935 stations and then do the appropriate adjustments
        Use 1986 data with ONLY 1936 stations and then do the appropriate adjustments
        Use 1987 data with ONLY 1937 stations and then do the appropriate adjustments
        etc. up until 2005
        I predict you will get a huge spike again.

        Like

        1. Well, let’s assume your adjustment method works.
          You describe the result as a “cycle”. How would you describe this cycle? What is the trend for each “long upwards trend” in between the crazyness that occasionally happens (end of 30s to end of 50s for example). I would identify those as 1880-1930, 1970-2000 – or 2020 depending on your take on the “pause” and the meaning of the warming in the last few years. Do you agree?
          Use C/decade or something similar.

          Like

  11. Your approach is uplifting. It ensures, as far as possible, that we are comparing apples with apples. Whereas the AGW scientists use data selectively, misrepresent data or alter it. In amongst this is a large question mark about how they adjust for the heat island effect of city based measurement stations.
    Great work. Reg

    Liked by 2 people

      1. Weird! ncks temps.nc | less
        Search for “climatology”.

        Who knows? Maybe they sabotaged it after this blog post got 1000 hits. lol

        I got more hits today than the first 6 weeks of this blog.

        Like

      2. The output you’re showing me is their “traditional” view. I don’t get that without special parameters (–trd, i think). I’m just going to assume the NCO version is the problem. I’m using 4.7.9-1 on a Debian 10 based system. Sorry, you may be out of luck.

        Like

  12. If your adjustments make sense, then you should be able to remove random latitudes from the complete data from the recent decades and get to the “real” data by applying your adjustment, right? Can you try that?

    Like

    1. I don’t know what you mean by random latitudes. Data is data.

      In my post you will that I generate a chart from the 16635 cells that are present throughout all time. The result I get is essentially the same Berkeley’s “global” summary.

      Like

      1. I’m sorry, Patrick, but your description of what I’m doing is waaay off, and I don’t have the time to describe the code, and the original data format. Way too much work. I assure you the 18 hours I spent writing the code, testing the code, running the code, and writing this article is correct.

        Like

  13. Just arrived on tis site after seeing a link on WUWT. Wish I had found this a long time ago. I have spent a lot of time working with data and carrying out audits. I can i no way do the work that you have done just appreciate the masive amount of work you have done and also know that you are so accurate.

    Liked by 1 person

  14. Hi, trying to recreate this analysis. The following command results in a zero-byte file:

    ncks -v data -lat,0,0 elev.1-deg.nc |\
    sed -n ‘/data =/,/;/p’ | sed 1d |\
    tr -d ‘ ;’ | tr ‘,’ ‘\n’ | sed ‘/^$/d’ |\
    awk ‘$1>=0{print $1}$1 .elev

    It appears that the command, sed -n ‘/data =/,/;/p’ returns an empty string. The elev.1-deg.nc file I am using is dated Jul 21, 2008 and is 132,528 bytes.

    Liked by 1 person

  15. This is wrong.

    the method used already accounts for changes in latitude and elevation.
    the effects of drift are regressed out in the first step

    read the paper

    Like

    1. I see you’re defaming me behind my back. That is very rude. Please respond here.

      “regressing latitude against temperature for the entire time series. This will Alias Arctic amplification into your model parameters. In short you have to pick a period where AA is minimal. otherwise, AA will infect your model coefficients”

      This sounds like gibberish. But if I understand what you’re implying: I’m not taking into account the massive polar data brought in in the middle of 20th century?

      That’s not true. Here is what your area-weighted average of available grids looks like as the grids come in through time:

      I make the proper adjustments for the massive load of incoming polar data, to get this:

      This is correct. Your accusation is just self-serving and inappropriate.

      “Checking Zoe’s work. the biggest error she made was ignoring the actual station elevation data. Stations are moving UP 500 meters.. about 3C.”

      I’m using your grid data. Is your grid data no good?

      I already answered this in my reply to Zach on this blog. Read it before responding.

      Thank you. Looking forward to your response.

      Like

    2. Steven,
      As for your claim that average station elevation has increased …

      You do realize that those stations are covering a growing surface area over time?

      Why would you just average the stations? You need to average the area they represent!

      Are you trying to figure out global warming or station warming?

      My elevation average covers an AREA.

      You keep making accusations to fool people, but they don’t have merit.

      Nice try

      Like

  16. Hey Zoe!

    Zach here. Remember me?

    Just wanted to let you know that you are being discussed on twitter.

    I didn’t like that your work was being dragged through the mud.
    I hope I gave an accurate description of what you’re trying to say.

    Stay cool, girl

    Best,
    Zach

    Liked by 1 person

    1. OK, I looked through some of it.
      I think you completely understand me. That’s nice.

      I see that Steven tries every trick to dismiss and distract and not admit the obvious.

      No doubt he will trick the foolish, but I think the wise will see through him.

      I really liked this comment of yours:

      “Completely disingenuous. You show distribution for all? time BUT not THROUGH time. This chart has no time element. Zoe’s analysis is about changes over time. ”

      He has no response because he knows exactly what he did: trick. Your comment is spot on!

      This comment of his speaks volumes:

      “and instead of using the actual station elevation, she uses the grid elevation. jesus”

      Each grid cell is supposed to have its internal stations NORMALIZED for latitude and elevation.

      That is part of the claimed methodology, and he knows it. He says so, repeatedly!

      The grid cell temperature is supposed to be for an average elevation in that grid cell. If that is not the case, then they didn’t normalize it. They could’ve overloaded their cells with lower elevation stations. I don’t know, because I trust they did what they claim they did.

      If they did things correctly than I can just use an average elevation for that grid – which I do. So how dare he suggest I undo their normalization with individual station elevations?

      I would love for him to come here and explain himself. I’m not going to signup for twitter. It’s a waste of time. He can trash me behind my back all he wants. It’s pretty much the only thing he can do since he’s so seriously wrong.

      Thanks for the laugh, Zach.
      I appreciate my fans fighting on my behalf. You did a very good job I think.

      Take care, -Zoe

      Like

  17. Admittedly, I am too ignorant to understand how you parsed the data and I trust that you did it competently and honestly; please clarify how it is that while the “10 Hottest Years” are evenly split between the first half of the 1940s and the 20-teens, the Netherlands chart appears to show that the hottest years at that site (post-1900) all occurred after ~1990? (also, how should the y-axis on the Dutch chart be labeled — averaged daily temp in C, or .. ?)

    Like

      1. Earth’s highest air temperatures are not getting hotter.
        Nor are duration length of heatwave “weather” getting longer in duration.
        Nor the frequency of heatwave weather, increasing.
        In terms of global conditions.
        Urban heat islands effect {relatively tiny areas on Earth- though they have large percentage of human population
        dwelling in such areas} do cause higher night time temperatures and can prolong heatwaves days and I guess have
        more frequent conditions that we call loosely, “heatwaves”.
        And in some situations Urban heat island effects can be “beneficial”- in terms of requiring less energy used.

        Like

  18. No drift in average latitude after the collapse of the Soviet Union when hundreds of stations in Siberia was allegedly put out of service?

    Like

    1. Berkeley makes latitude adjustments within each grid cell. For this study, I presume they do this correctly. My issue is how they assemble these cells over time. My article shows they only cover 25% of Earth over ~170 years, and call it “global”.

      You’re probably right, but my study doesn’t address quantity or quality of stations within each grid cell.

      Like

Leave a comment

Design a site like this with WordPress.com
Get started