4
$\begingroup$

I have points in a plane and I want to fit a circle to these points. Is there a 'regression-type' to these points, somewhat akin to linear regression, with a corresponding $R^2$ value? Your insights please.

$\endgroup$
5
  • 4
    $\begingroup$ Dedicated monograph by Nikolai Chernov crcpress.com/… $\endgroup$
    – Nick Cox
    Commented Nov 29, 2017 at 9:37
  • $\begingroup$ See solutions at gis.stackexchange.com/questions/40660 and (to fit multiple circles simultaneously) stats.stackexchange.com/questions/8213. $\endgroup$
    – whuber
    Commented Nov 29, 2017 at 16:57
  • $\begingroup$ @Nick Very nice reference. (Grossly overpriced, though, IMHO--at half the price I might consider it and at a third the price I would buy it as a matter of course for my personal library.) $\endgroup$
    – whuber
    Commented Nov 29, 2017 at 17:00
  • 1
    $\begingroup$ I presume that the standard problem is finding a centre and a radius. If the problem was to find a radius given a known centre, I imagine you'd just use any attractive method to summarize distances to known centre. $\endgroup$
    – Nick Cox
    Commented Nov 29, 2017 at 18:24
  • $\begingroup$ I found a great solution to this problem here dtcenter.org/sites/default/files/community-code/met/docs/… It's pretty straightforward to implement, and there's a worked example to clarify the calculation. $\endgroup$
    – BobbyLaw
    Commented Apr 13, 2022 at 16:56

1 Answer 1

1
$\begingroup$

Love the question! I think I would go about it like this: If you have tuples of x- and y-coordinates in a data set as $D = \{(x_1,y_1), (x_2,y_2), \dots, (x_n,y_n) \}$ and your hypothesis would be that there exist $h,k$ and $r$ s.t. \begin{align} (x_i-h)^2 + (y_i-k)^2 = r^2 + \varepsilon_i , \end{align} with $\varepsilon_i$ being some error centered at zero and with finite variance (i.e., with conditions that make regressions feasible).

Rewriting the above gives you \begin{align} x_i^2 - 2x_ih + h^2 + y_i^2 - 2y_ik + k^2 = r^2 + \varepsilon_i, \end{align} and you want to get estimates $\hat{h}, \hat{k}, \hat{r}$. So you define $\alpha = r^2 - k^2 - h^2$ and rewrite the above as \begin{align} (x_i^2 + y_i^2) = \alpha + 2x_ih + 2y_ik + \varepsilon_i, \end{align} where the left hand side gives you the independent variable of your regression equation,and the left hand side gives you three regressors: the constant/intercept ( = $\alpha$) as well as $2\cdot x_i$ and $2\cdot y_i$ with corresponding coefficients $h$ and $k$. Now finally, note that because $r>0$ by definition of the radius, we can estimate $\hat{k}$ and $\hat{h}$ to recover $r$ from $\hat{\alpha}$ as $\hat{r} = \sqrt{\hat{\alpha} - \hat{k}^2 -\hat{h}^2}$ so long as it holds that $\hat{\alpha} > \hat{k}^2 + \hat{h}^2$.

If the requirement that $\hat{\alpha} > \hat{k}^2 + \hat{h}^2$ is violated in practice (note: If your error term $\varepsilon_i$ has mean zero and finite variance, then the estimates $\hat{\alpha}, \hat{k}$, and $\hat{h}$ are all consistent, implying that $\mathbb{P}(\hat{\alpha} > \hat{k}^2 + \hat{h}^2) \to 0$ as $n \to \infty$, suggesting that a violation of that requirement might be due to insufficient sample size or your data not being arranged in a circle), I would start looking into constrained linear regressions that are intimately linked with linear programming techniques, see for instance here: How do I fit a constrained regression in R so that coefficients total = 1?

$\endgroup$
1
  • 2
    $\begingroup$ This looks like a good general approach, but modeling the squared distance seems unnatural. Much more often, it is $(x,y)$ that is measured with some zero-mean error, not its distance to the circle's origin. This is a significant but potentially important complication, especially when the measurement error is sizable enough to be of concern. $\endgroup$
    – whuber
    Commented Nov 29, 2017 at 17:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.