置信椭圆原理以及椭圆图形绘制方式

 更新时间:2023年02月01日 11:10:52   作者:qq_24591139  
这篇文章主要介绍了置信椭圆原理以及椭圆图形绘制方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

置信椭圆原理及椭圆图形绘制

置信椭圆长短轴计算

在这里插入图片描述

    def confidence_oval(self,factor, ppf_rate):
        pca1_std = np.std(factor.iloc[:, 0])
        pca2_std = np.std(factor.iloc[:, 1])
        f_value = scipy.stats.f.ppf(ppf_rate, dfn=2, dfd=factor.iloc[:, 0].shape[0] - 2)
        x_axis = np.sqrt(
            pca1_std ** 2 * f_value * 2 * ((factor.iloc[:, 0].shape[0] - 1) / (factor.iloc[:, 0].shape[0] - 2)))
        y_axis = np.sqrt(
            pca2_std ** 2 * f_value * 2 * ((factor.iloc[:, 0].shape[0] - 1) / (factor.iloc[:, 0].shape[0] - 2)))
        x_axis = '%.2f' % x_axis
        y_axis = '%.2f' % y_axis

        return x_axis, y_axis

Python图形绘制

   def elli_plot(self,full_data, ellipse, y):
        '''

        :param full_data: pls后的点
        :param ellipse: [椭圆长轴,椭圆短轴]
        :param y:
        :return:
        '''
        fig = plt.figure(figsize=(15, 5))
        ax = fig.add_subplot(111)
        elli = Ellipse(xy=(0, 0), width=float(ellipse[0]) * 2, height=float(ellipse[1]) * 2)
        ax.add_patch(elli)
        # 偏厚
        outlier_data = y.loc[y[y.columns[0]] == 3, :]
 
        # 偏薄
        outlier_data_less = y.loc[y[y.columns[0]] == 1, :] 
        inner_data = full_data['pls']['pls'].loc[full_data['pls']['pls'].index.isin(outlier_data.index.tolist()+outlier_data_less.index.tolist()) == False, :]
        ax.plot(outlier_data.iloc[:, 0], outlier_data.iloc[:, 1], 'ro')
        ax.plot(outlier_data_less.iloc[:, 0], outlier_data_less.iloc[:, 1], 'bo')
        ax.plot(inner_data.iloc[:, 0], inner_data.iloc[:, 1], 'yo')
        name = str(self.picture_id)
        plt.savefig("E:\\shhl\\1118_两次PLS\\偏厚\\图\\"+name+".png")
        self.picture_id = self.picture_id +1
        plt.show()
from matplotlib.patches import Ellipse, Circle
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ell1 = Ellipse(xy = (0.0, 0.0), width = 4, height = 8, angle = 30.0, facecolor= 'yellow', alpha=0.3)
cir1 = Circle(xy = (0.0, 0.0), radius=2, alpha=0.5)
ax.add_patch(ell1)
ax.add_patch(cir1)

x, y = 0, 0
ax.scatter([0,1], [0,1],color='red')
ax.scatter([2,1], [1,1],color='green')

plt.axis('scaled')

plt.axis('equal')   #changes limits of x or y axis so that equal increments of x and y have the same length

plt.show()

置信椭圆-python

卡方概率表:https://people.richland.edu/james/lecture/m170/tbl-chi.html

opencv画椭圆:https://docs.opencv.org/2.4.9/modules/core/doc/drawing_functions.html?highlight=ellipse#cv2.ellipse

numpy.linalg.eig() 特征向量求解矩阵:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.linalg.eig.html

cov = np.cov(x, y) #计算协方差矩阵
lambda_, v = np.linalg.eig(cov) # 计算矩阵特征向量
lambda_ = np.sqrt(lambda_)
s=4.605 #根据置信区间查卡方概率表 95% 5.991 99% 9.21 90% 4.605
ax = plt.subplot(111, aspect=‘equal')

ell = Ellipse(xy=(np.mean(x), np.mean(y)),
width=lambda_[0]*np.sqrt(s) *2, height=lambda_[1]*np.sqrt(s)*2,
angle=np.rad2deg(np.arccos(v[0, 0])),facecolor=‘yellow',alpha=0.3)

ax.add_artist(ell)
plt.scatter(x, y)
plt.axis(‘scaled')
plt.axis(‘equal')
plt.show()

在这里插入图片描述

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python图像运算之图像掩膜直方图和HS直方图详解

    Python图像运算之图像掩膜直方图和HS直方图详解

    这篇文章将为大家详细讲解图像掩膜直方图和HS直方图,并分享一个通过直方图判断白天与黑夜的案例。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08
  • Django使用Channels实现WebSocket的方法

    Django使用Channels实现WebSocket的方法

    WebSocket是一种在单个TCP连接上进行全双工通讯的协议。WebSocket允许服务端主动向客户端推送数据。这篇文章主要介绍了Django使用Channels实现WebSocket,需要的朋友可以参考下
    2019-07-07
  • python3.5 email实现发送邮件功能

    python3.5 email实现发送邮件功能

    这篇文章主要为大家详细介绍了python3.5 email实现发送邮件功能,包含txt、图片、HTML、附件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • python连接字符串的方法小结

    python连接字符串的方法小结

    这篇文章主要介绍了python连接字符串的方法,实例总结了几种常用的Python连接字符串的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python docx库删除复制paragraph及行高设置图片插入示例

    Python docx库删除复制paragraph及行高设置图片插入示例

    这篇文章主要为大家介绍了Python docx库删除复制paragraph及行高设置图片插入操作实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • python如何修改图像的分辨率

    python如何修改图像的分辨率

    这篇文章主要介绍了python如何修改图像的分辨率问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 理解Python中的With语句

    理解Python中的With语句

    这篇文章主要帮助大家理解Python中的With语句,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 如何用Python写一个简单的通讯录

    如何用Python写一个简单的通讯录

    这篇文章主要介绍了如何用Python写一个简单的通讯录,对着几串代码感兴趣的朋友一起来看看吧
    2021-08-08
  • python3+pyqt5+itchat微信定时发送消息的方法

    python3+pyqt5+itchat微信定时发送消息的方法

    今天小编就为大家分享一篇python3+pyqt5+itchat微信定时发送消息的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 设计模式中的原型模式在Python程序中的应用示例

    设计模式中的原型模式在Python程序中的应用示例

    这篇文章主要介绍了设计模式中的原型模式在Python程序中的应用示例,文中主要强调了对浅拷贝和深拷贝在对象复制时的使用,需要的朋友可以参考下
    2016-03-03

最新评论