The reported errors in the ATLAS phase-curve fits appear to be coming out way too small. I’m calculating them as the square-root of the diagonals of the resulting co-variance matrix returned by scipy’s `curve_fit`

.

```
perr = np.sqrt(np.diag(pcov))
```

Here’s what the covariance matrix looks like for Kleopatra:

```
[
[ 0.00066722 0.00066133]
[ 0.00066133 0.00073213]
]
```

Taking the sqrt of the diagonals gives the \(1\sigma\) errors in *G* and *H*:

\(G_{err} = \sqrt{0.00066722}= 0.0258\),

and

\(H_{err} = \sqrt{0.00073213}= 0.0271\)

But these values seem ridiculously small given the range of scatter in the plot:

However, if I use the errors reported for \(c_0\) and \(G\) from the phase-curve fit to determine errors in the reduced magnitude \(c(\alpha)\) it’s easy to then visualise the reported uncertainties on the plot. To do this I have to calculate the maximum and minimum values for \(c_\alpha\) at any given phase-angle on the plot:

```
# THESE ARE THE H and G VALUES AND ERRORS OUTPUT FROM CURVE_FIT
H = popt[0]
G = popt[1]
Herr = perr[0]
Gerr = perr[1]
# GIVEN THE TWO VARIABLE PARAMETERS I HAVE TO CALCULATE 2^2 = 4 ARRAYS ...
nstd = 3 # 3 sigma range
p1 = magnitude_phase_func(
phaseRange, popt[0] + nstd * perr[0], popt[1] + nstd * perr[1])
p2 = magnitude_phase_func(
phaseRange, popt[0] - nstd * perr[0], popt[1] + nstd * perr[1])
p3 = magnitude_phase_func(
phaseRange, popt[0] + nstd * perr[0], popt[1] - nstd * perr[1])
p4 = magnitude_phase_func(
phaseRange, popt[0] - nstd * perr[0], popt[1] - nstd * perr[1])
# ... AND FIND THE MAXUMUM AND MINIMUM VALUES FOR H IN THE 4 ARRAYS
vHigh = np.maximum(np.maximum(p1, p2), np.maximum(p3, p4))
vLow = np.minimum(np.minimum(p1, p2), np.minimum(p3, p4))
```

And now I can plot the \(3\sigma\) uncertainties in the reduced magnitude \(c(\alpha)\):

Now the errors look very sensible.

## Weighting the Data

If I try and now weight the data to account for the photometry errors:

```
# WEIGHTING WITH PHOTOMETRY ERRORS
popt, pcov = curve_fit(magnitude_phase_func,
phase_radians, y, sigma=yerr, absolute_sigma=True)
```

The errors reduce dramatically (by almost an order on magnitude), revealing an uncertainty that no longer looks realistic:

The reason for this is because there’s is a hidden ‘error’ in the data that hasn’t been accounted for; asteroid rotation. For this reason we can’t reasonably state that the photometry errors in our data are ‘absolute’ in the sense that `curve_fit`

, but rather they are relative. Settting `absolute_sigma=False`

and we’re back on-track:

```
# WEIGHTING WITH PHOTOMETRY ERRORS
popt, pcov = curve_fit(magnitude_phase_func,
phase_radians, y, sigma=yerr, absolute_sigma=False)
```

Because the errors in the data are dominated by the scatter in the photometry induced by rotation, including the measured photometric errors make little difference to the uncertainties.