Kirkhoff’s law (a zero-dimensional climate model) says the energy coming in, \[ S \pi r^2 (1-a) \] where \(S\) is the solar constant (radiation reaching earth in W/m\(^2\)) and \(a\) is the albedo, equals the energy going out, \[4 \pi r^2 \epsilon \sigma T^4 \] where \(\sigma\) is Stefan’s constant 5.67e-08 W/(K\(^4\)m\(^2\)) and \(\epsilon\) is the emissivity, which we will estimate from observed temperature.
sigma=5.67036713e-08
a=0.3 #current albedo
berkeley=read.table("~/Dropbox/Klima/Berkeley_Land_and_Ocean_summary.txt")
ber=list(mean=NULL,sd=NULL,years=NULL)
ber$mean=berkeley[,2]
ber$years=berkeley[,1]
ber$sd=berkeley[,3]
ber$mean=ber$mean+14.764+273.15 #Change from deg C anomalies to K
ghg=read.csv("~/Dropbox/Klima/Figure 1 Observed trends in the Kyoto Gases concentrations 2013.csv")
names(ghg)=c("Year","CO2","AllGHG")
tsi=read.table("~/Dropbox/Klima/TIM_TSI_Reconstruction.txt",skip=7)
names(tsi)=c("Year","TSI")
tsi$Year=floor(tsi$Year)
elements=which(is.element(ber$years,intersect(ghg[,1],ber$years)))[-(1:9)] #Removing pre-1800 observations
ghgels=which(is.element(ghg[,1],intersect(ghg[,1],ber$years)))[-(1:9)]
years_to_use=ghg[ghgels,1]
tsiels=which(is.element(tsi[,1],intersect(tsi[,1],years_to_use)))
emissivity=tsi[tsiels,2]*(1-a )/4/sigma/ber$mean[elements]^4
preind=mean(emissivity[1:10])#pre 1850
ense=4*emissivity*ber$sd[elements]/ber$mean[elements]#se computed from Taylor expansion
plot(ghg$AllGHG[ghgels],emissivity,xlab="Greenhouse gas
concentrations",ylab="Effective emissivity")
lines(ghg$AllGHG[ghgels],preind-2*ense,col="blue")
lines(ghg$AllGHG[ghgels],preind+2*ense,col="blue")
The lines are \(\pm2\) standard errors around the preindustrial emissivity (corresponding to an average temperature of 14.3607deg C). We conclude that the observed temperature is not consistent with the hypothesis of a preindustrial (natural) greenhouse gas forcing.
We can check the standard error by simulating the temperature series:
nrep=1000
emp=matrix(NA,nrow=nrep,ncol=length(elements))
for (i in 1:nrep) {temp=rnorm(length(ber$mean[elements]),ber$mean[elements],ber$sd[elements])
emp[i,]=tsi[tsiels,2]*(1-a )/4/sigma/temp^4 }
plot(apply(emp,2,sd),ense,xlab="Simulated se",ylab="Approximate se")
abline(0,1)
We see that the standard error looks fine.
There is little data suggesting more than a very minor change in albedo. These are mainly based on satellite measurements, and thus do not reach very far back in time.