Please help me with propagation of error (see exam). How “get” covariance(a0,a1) from linear fit ? or covariance matrix ?
Or exist any other way how calculate uncertainty in f(1100) ?
Thanks, Jan
{
Int_t n = 9;
Double_t x[n] = {1001, 1012, 1024, 1036, 1041, 1055, 1069, 1077, 1088};
Double_t y[n] = { 1.1, 1.9, 3.2, 4.0, 5.1, 6.0, 7.3, 8.0, 8.9};
Double_t ex[n] = {0};
Double_t ey[n] = { 0.2, 0.4, 0.2, 0.4, 0.5, 0.1, 0.2, 0.3, 0.2};
TGraph *gr = new TGraphErrors(n,x,y,ex,ey);
gr->SetMarkerStyle(8);
gr->Draw("AP");
gr->Fit("pol1");
// f(x) = a0 + a1*x
// propagation of error
// sigma_f(x)^2 = sigma_a0^2 + (x*sigma_a1)^2
Double_t sigma_a0 = pol1->GetParError(0);
Double_t sigma_a1 = pol1->GetParError(1);
Double_t value = 1100; // => x
Double_t sigma_f = TMath::Sqrt(sigma_a0**2 + (value*sigma_a1)**2);
Printf("\npol1(%g) = %g +- %g",value,pol1->Eval(value),sigma_f);
// propagation of error (with covariance between a0 and a1)
// sigma_f(x)^2 = sigma_a0^2 + (x*sigma_a1)^2 + 2*cov*x
Double_t cov = 0; // ?????????
sigma_f = TMath::Sqrt(sigma_a0**2 + (value*sigma_a1)**2 + 2*cov*value);
Printf("\npol1(%g) = %g +- %g",value,pol1->Eval(value),sigma_f);
}