如何使用matplotlib在散点图中创建置信椭圆?
下面的代码一直工作到创建散点图。那么,有人熟悉在散点图上放置置信椭圆吗?
import numpy as np
import matplotlib.pyplot as plt
x = [5,7,11,15,16,17,18]
y = [8, 5, 8, 9, 17, 18, 25]
plt.scatter(x,y)
plt.show()
字符串
以下是SAS的置信椭圆参考。
http://support.sas.com/documentation/cdl/en/grstatproc/62603/HTML/default/viewer.htm#a003160800.htm
sas中的代码是这样的:
proc sgscatter data=sashelp.iris(where=(species="Versicolor"));
title "Versicolor Length and Width";
compare y=(sepalwidth petalwidth)
x=(sepallength petallength)
/ reg ellipse=(type=mean) spacing=4;
run;
型
4条答案
按热度按时间jc3wubiy1#
下面的代码绘制一个、两个和三个标准偏差大小的椭圆:
字符串
的数据
z3yyvxxp2#
在尝试了公认的答案之后,我发现它在计算theta时没有正确选择象限,因为它依赖于
np.arccos
:的数据
看看'possible duplicate'和Joe Kington's solution on github,我将他的代码简化为:
字符串
的
zaq34kh63#
一旦你有了协方差矩阵的特征分解,就不需要显式地计算Angular :旋转部分已经为您免费编码了该信息:
字符串
的数据
可以通过在平移前应用比例来扩展椭圆:
型
的
jyztefdp4#
字符串
并且对应的宽度(较大的特征值)和高度应该是:
型
因为我们需要找到最大特征值对应的特征向量。由于根据规格https://numpy.org/doc/stable/reference/generated/numpy.linalg.eig.html和
v[:,i]
的“特征值不一定是有序的”是对应于eigenvalue lambda_[i]
的特征向量;我们应该通过np.argmax(abs(lambda_))
找到特征向量的正确列。