(* Starting from Willem's NOAA table *)

cnstable = {{1600,45*60,456,150*60,180},{1550,83*60,456,165*60,180},{1500,120*60,444,180*60,180},{1450,135*60,180,180*60,00},{1400,150*60,180,180*60,00},{1350,165*60,180,195*60,180},{1300,180*60,180,210*60,180},{1250,195*60,180,225*60,180},{1200,210*60,180,240*60,180},{1100,240*60,180,270*60,180},{1000,300*60,360,300*60,180},{900,360*60,360,360*60,360},{800,450*60,540,450*60,540},{700,570*60,720,570*60,720},{600,720*60,900,720*60,900},{500,870*60,900,870*60,900}}

(* Pick up the pO2 and log of exposure time *)

data = Table[{cnstable[[n]][[1]],Log[cnstable[[n]][[2]]]},{n,1,Length[cnstable]}]

(* Split data into low and high pO2 parts, each are more or less linear *)

lowdata = Take[data, -(Length[data]-2)]

highdata = Take[data,3]

(* The point at 1500 mbar is shared between the two sets *)

ListPlot[{highdata, lowdata}]

(* Fit data points with a fourth order polynomial and two lines *)

Show[ListPlot[data],Plot[Evaluate[{Fit[lowdata,{1,x},x],Fit[highdata,{1,x},x],Fit[data,{1,x,x^2,x^3,x^4},x]}],{x,500,1600}]]

Fit[lowdata,{1,x},x]

(* Compute the squared deviations from a fit function ("Goodness of Fit") *)

gof[f_] := Sum[(data[[n,2]]-f[data[[n,1]]])^2,{n,1,Length[data]}]

(* Linear regression over all points is pretty bad: *)

gof[Function[x,Evaluate[Fit[data,{1,x},x]]]]

(* Fourth order polynomial is much better *)

gof[Function[x,Evaluate[Fit[data,{1,x,x^2,x^3,x^4},x]]]]

(* Use two lines to fit data *)

twolines[x_]:= If[x<1500, Evaluate[Fit[lowdata,{1,x},x]],Evaluate[Fit[highdata,{1,x},x]]]

twolines[y]

(* This looks quite good *)

Exp[twolines[y] /. y-> 0]

131308.82892943107`
Exp[Fit[highdata,{1,x},x] /. x->0]

1/0.0019387317813336395`

1/0.009808292530117176`

Show[ListPlot[data],Plot[Evaluate[twolines[x]],{x,500,1600}]]

(* ...and is twice as good as fourth order polynomial while having one less fit parameter (four vs. five) *)

gof[Evaluate[Function[x,Evaluate[twolines[x]]]]]