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,

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