References:

Start with sampled points from the mfg spec sheet. Red lines indicate rough estimates of some real-world benchmarks.

Flip the axes so RsRo becomes the independent variable.

```
##
## Call:
## lm(formula = ppm ~ R0RS, data = MiCS5525_spec)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.984 -1.186 -0.260 0.854 11.124
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -56.170 0.673 -83.4 <2e-16 ***
## R0RS 38.803 0.152 255.8 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.55 on 38 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 6.54e+04 on 1 and 38 DF, p-value: <2e-16
```

The blue line is a linear model with ppm regressed on 1 / RsRo. Ken Boak pointed out that this approximates a good fit over most of the range. We've no idea whether the residuals from this model would be Gaussian, etc., but going along with it for now.

Flip the x-axis to get 1 / RsRo = RoRs. (Taking the reciprocal of a logarithmic scale amounts to the same thing as negating a linear scale: you get a mirror image.)

Using an arithmetic scale for RoRs instead of a logarithmic one. The linear relationship is now clearer. This blue line has exactly the same functional form as the blue lines in the plots above. It's just shaped differently because of the different axis scales.

Zooming in more to see concentrations closer to ambient levels (1-2 ppm CO).

Zooming in more to see concentrations closer to ambient levels (1-2 ppm CO). If Ro is defined as the resistance in CO-free synthetic air, then there should be a point in the lower left corner at (1, 0). Clearly there would have to be a sharp turn at some point for this to happen.

The linear fit starts to break down around 2 ppm CO. 1-2 ppm may be under the effective limit of detection anyway, given the other electronics, interfering gases, etc.