My data looks like this:
Or if displayed in log chart:
I want to create an interpolation of the data that would remove most of the noise.
What are some good ways to plot a smooth curve through this data?
My data looks like this:
Or if displayed in log chart:
I want to create an interpolation of the data that would remove most of the noise.
What are some good ways to plot a smooth curve through this data?
Using Quantile regression might produce results you want -- you have to experiment with the number of knots or the knots locations.
Get data:
Get["https://pastebin.com/raw/n59CTB3L"];
data = plota1;
Dimensions[data]
Get the package QuantileRegression.m:
Import["https://raw.githubusercontent.com/antononcube/MathematicaForPrediction/master/QuantileRegression.m"]
Quantile regression application:
knots = 400;
qFunc = First@
QuantileRegression[data, knots, {0.5},
Method -> {LinearProgramming, Tolerance -> 10^(-7)}];
Plot data and regression quantile in Log-Log scales:
Show[{
ListLogLogPlot[data, PlotRange -> All, PlotTheme -> "Detailed",
PlotStyle -> GrayLevel[0.8]],
ListLogLogPlot[{#, qFunc[#]} & /@ data[[All, 1]], Joined -> True]},
ImageSize -> 800,
PlotLabel -> Row[{"QuantileRegression with ", knots, " knots"}]]
If I look at the data I would expect a constant value for increasing x-values. So the approximation could be something with Exp[-...t],for example
NonlinearModelFit[plota1,a0 - a1 Exp[-\[Alpha]1 t] - a2 t Exp[-\[Alpha]2 t] , {a0, a1,a2 , \[Alpha]1, \[Alpha]2 }, t]
Show[{ListPlot[plota1],Plot[Normal[%], {t, Min[plota1[[All, 1]]], Max[plota1[[All,1]]]},PlotRange -> All]}]
ListConvolve[ConstantArray[1, 23]/23, plota1[[All, 2]]]
. $\endgroup$