If you are trying to estimate the best fitting distribution you might also try something along these lines. I typically prefer to work with distributions through the powerful built-in framework. I've chosen a WeibullDistributionRayleighDistribution* since your data does not contain values below zero.
dist = EstimatedDistribution[WeightedData@@Transpose[data],
WeibullDistribution[a, b]]RayleighDistribution[s]]
We can get a good estimate of the amplitude by taking the least squares estimate for a constant c that best scales the PDF to fit the original data.
x = PDF[dist, data[[All, 1]]];
y = data[[All, 2]];
c = 1/x.x x.y;
Now we can plot the rescaled PDF against the data.
Show[ListPlot[data], Plot[PDF[dist, x]*c, {x, 0, 4}], PlotRange -> All]
* I had initially chosen a WeibullDistribution but @Rahul expertly identified Rayleigh which is more parsimonious.
