【发布时间】:2021-11-09 18:33:00
【问题描述】:
我测量了 100 个点并计算了 x 和 y 方向的标准偏差。然后,我在图表中绘制了 100 个点中的每一个,现在我想圈出其中 95% 的点。
我的想法是我可以使用标准偏差来计算半径,但是使用具有相似标准偏差的随机数据进行的测试证明这不起作用。
我已经使用 Protagoras 定理以及 numpy 中的标准差函数进行了测试。
cal_x_mean = 0
cal_x_std = 0.5286
cal_z_mean = 0
cal_z_std = 0.4158
cal_x_values = stats.truncnorm(-1, 1, loc=cal_x_mean, scale=cal_x_std)
cal_z_values = stats.truncnorm(-1, 1, loc=cal_z_mean, scale=cal_z_std)
cal_x = cal_x_values.rvs(100)
cal_y = cal_z_values.rvs(100)
# cal_r = 2*np.std([cal_x, cal_y]) # numpy
cal_r = math.hypot(cal_x_std, cal_z_std) # Protagoras
print(f'Radius for calibrated {cal_r}')
fig, ax = plt.subplots(1)
plt.plot(0, 0, 'o', color='red')
plt.plot(cal_x, cal_y, 'o', color='black')
Drawing_uncolored_circle = plt.Circle((0, 0), cal_r, fill=False)
ax.set_aspect(1)
ax.add_artist(Drawing_uncolored_circle)
plt.xlim(-1, 1)
plt.ylim(-1, 1)
plt.title(str("Calibrated"))
plt.grid()
plt.ylabel('Z (mm)')
plt.xlabel('X (mm)')
stackoverflow 中的大神们对如何解决这个问题有什么建议吗?
乌龟
【问题讨论】:
-
请注意,您应该提供minimal reproducible example,其中包括提供一段我们可以复制、粘贴和运行的代码。无论如何,只是获得包含 95% 值的无穷大圆之一的一般想法:选择 (x_mean, y_mean) 或 (0, 0),它们应该是接近的,作为中心,计算每个点到中心,对它们进行排序,从 100 中取第 95 位,就得到了你的半径。
标签: python geometry probability scipy.stats