Spline-fitting Andy’s Audiogram

without hearing aids:

power={0.0014049280000000002,0.0010000000000000002,0.0006814719999999999,0.0007289999999999999,0.0027440000000000008,0.0016430319999999998,0.004096000000000001,0.010941048,0.125,0.006229503999999999,0.006644672,0.006644672,0.006229503999999999,0.006028568,0.008998912,0.005268023999999999,0.125,0.0033749999999999995,0.0033749999999999995,0.006028568,0.013823999999999998,0.017576,0.125,0.06892099999999998,0.025934335999999995,0.026999999999999996,0.021952000000000006,0.032768000000000005,0.019683000000000003};hz={125.0,187.5,250.0,375.0,437.5,500.0,750.0,875.0,1000.0,1062.5,1250.0,1500.0,1531.25,1562.5,2000.0,2500.0,2562.5,3000.0,3250.0,3500.0,3750.0,4000.0,5000.0,5500.0,6000.0,6500.0,7000.0,7500.0,8000.0};

data1 = hz;
data2=power;
data=Transpose[{hz,power}];

ListPlot[data,Joined->True,PlotRange->All]

CubicMonotonicInterpolation: 
“The implementation of Stineman interpolation used here is a little different, in that it uses Stineman’s derivative estimates, but passes these to a piecewise cubic Hermite interpolant instead of Stineman’s original rational interpolant.”

fSte=ResourceFunction["CubicMonotonicInterpolation"][data,Method->"Steffen"];
fFC=ResourceFunction["CubicMonotonicInterpolation"][data,Method->"FritschCarlson"];
fSti=ResourceFunction["CubicMonotonicInterpolation"][data,Method->"Stineman"];

GraphicsGrid[{{
Plot[fSte[x],{x,Min[hz],Max[hz]},PlotLabel->"Steffen"],
Plot[fFC[x],{x,Min[hz],Max[hz]},PlotLabel->"Fritsch-Carlson"],
Plot[fSti[x],{x,Min[hz],Max[hz]},PlotLabel->"Stineman"]}}]

Plot[{fSte[x],fFC[x],fSti[x]},{x,Min[hz],Max[hz]},
PlotStyle->{Blue,{Dashed,Black},Red},
PlotRange->All,
PlotLegends->{"Steffen","Fritsch-Carlson","Stineman"}]

powerWithout={0.009260999999999998,0.0033749999999999995,0.0025154560000000005,0.003796416,0.008000000000000002,0.016777216,0.019683000000000003,0.017576,0.020123648000000004,0.021952000000000006,0.032157432,0.016777216,0.015625,0.012167,0.014526784,0.018821096000000002,0.045118016,0.07408799999999999,0.092345408,0.21816720799999997,0.21599999999999997,0.267089984,0.48189030400000005,1.0,0.8847359999999999};hzWithout={125.0,187.5,250.0,375.0,500.0,750.0,1000.0,1062.5,1500.0,1562.5,2000.0,2500.0,2562.5,3000.0,3250.0,3500.0,3750.0,4000.0,5000.0,5500.0,6000.0,6500.0,7000.0,7500.0,8000.0};

data1 = hzWithout;
data2=powerWithout;
data=Transpose[{hzWithout,powerWithout}];

ListPlot[data,Joined->True,PlotRange->All]

CubicMonotonicInterpolation: 
“The implementation of Stineman interpolation used here is a little different, in that it uses Stineman’s derivative estimates, but passes these to a piecewise cubic Hermite interpolant instead of Stineman’s original rational interpolant.”

fSte=ResourceFunction["CubicMonotonicInterpolation"][data,Method->"Steffen"];
fFC=ResourceFunction["CubicMonotonicInterpolation"][data,Method->"FritschCarlson"];
fSti=ResourceFunction["CubicMonotonicInterpolation"][data,Method->"Stineman"];

GraphicsGrid[{{
Plot[fSte[x],{x,Min[hz],Max[hz]},PlotLabel->"Steffen"],
Plot[fFC[x],{x,Min[hz],Max[hz]},PlotLabel->"Fritsch-Carlson"],
Plot[fSti[x],{x,Min[hz],Max[hz]},PlotLabel->"Stineman"]}}]

Plot[{fSte[x],fFC[x],fSti[x]},{x,Min[hz],Max[hz]},
PlotStyle->{Blue,{Dashed,Black},Red},
PlotRange->All,
PlotLegends->{"Steffen","Fritsch-Carlson","Stineman"}]