微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

寻找模型等高线图和 x,y 数据之间的卡方值

如何解决寻找模型等高线图和 x,y 数据之间的卡方值

我有实验数据的 x 和 y 坐标,我正在尝试将椭圆拟合到其中。 我的 x 数据在列表 xpix 中,而我的 y 数据在列表 ypix 中。我已经使用椭圆 np.meshgridnp.contour 拟合了旋转方程。

xpix = [.....]
ypix = [.....]
x = np.linspace(-80,80,100)
y = np.linspace(-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])

仅就上下文而言,以下显示了我的情节:

model ellipse (purple solid line) and experimental data (blue dots)

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

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

谢谢!

解决方法

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

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

enter image description here

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。