Statistics 在模型等高线图和x,y数据之间查找卡方值

Statistics 在模型等高线图和x,y数据之间查找卡方值,statistics,curve-fitting,contour,data-fitting,chi-squared,Statistics,Curve Fitting,Contour,Data Fitting,Chi Squared,我有实验数据的x和y坐标,我正试图用一个椭圆来拟合。 我的x数据在列表xpix中,我的y数据在列表ypix中。我用椭圆np.meshgrid和np.contour拟合了旋转的方程 xpix = [.....] ypix = [.....] x = np.linspace(-80, 80, 100) y = np.linspace(-80, 80, 100) X, Y = np.meshgrid(x,y) #equation of rotated ellipse below, uses X and

我有实验数据的x和y坐标,我正试图用一个椭圆来拟合。 我的x数据在列表
xpix
中,我的y数据在列表
ypix
中。我用椭圆
np.meshgrid
np.contour
拟合了旋转的方程

xpix = [.....]
ypix = [.....]
x = np.linspace(-80, 80, 100)
y = np.linspace(-80, 80, 100)
X, Y = np.meshgrid(x,y)
#equation of rotated ellipse below, uses X and Y
F = (X*np.cos(63*np.pi/180) -Y*np.sin(63*np.pi/180))**2 /352.8676 + (X*np.sin(63*np.pi/180) + 
Y*np.cos(63*np.pi/180))**2 / 6300 - 1
plt.contour(X,Y,F,[0])
下面显示了我的情节,仅供参考:

其中我非常满意,因此我想找到轮廓数据和
xpix,ypix
数据之间的卡方值。我完全不知道该怎么做,因为轮廓数据有一个完全不同的数组结构-它用
plt.contour中的第四个参数绘制了最适合椭圆的数组值。我认为,为了手动执行此操作,我必须筛选所有
X,Y
值,以找到用于构建此椭圆的值。有没有更快的方法可以直接做到这一点?我知道要使用
stats.chisquare(ypix,y_model)
,例如,
ypix
y_model
需要具有相同的形状

一旦我了解了如何做,我的目标是运行一个函数,不断改变旋转角度、半短轴和长轴,直到卡方最大化


谢谢大家!

这不是问题的答案。仅供参考,这是拟合方法的比较

与OP使用的软件中实现的非线性回归不同,直接线性回归给出了以下结果:


注:由于问题中没有数字形式的数据,因此通过扫描问题中编辑的图片生成数据。所以上面使用的数据肯定是不正确的。更重要的是,图片上的点不是点而是圆形标记。

谢谢,老实说,您提供的数据与我使用的数据非常接近。请问你是怎么做到的?还有,有没有办法获得半长轴和半短轴,我需要它们来计算椭圆度?上面的数据是用一个软件在扫描你问题中发布的图像时生成的。计算相同颜色(本例中为蓝色)上每个像素的坐标。每个像素簇仅替换为簇中心的一个点。对于重叠的簇,这并不总是可靠的半轴的长度可通过以下公式(21)和(22)计算:。符号与上述不同:a=a;b=b/2;c=c;d=d/2;f=E/2;g=-1。计算半轴长度的另一种方法是在知道中心坐标和倾斜角度的情况下,写出轴的方程(线性)。这条直线与椭圆的交点(因为椭圆的方程式已知)给出了顶部的坐标,然后是中心和顶部之间的长度。半轴长度的公式添加在答案的末尾。此外,倾斜角度公式中的一个错误也被纠正了。这些都非常有用和有趣。在这个回归模型中,什么样的停止标准可以决定什么时候拟合“足够好”?你会用卡方检验吗?