import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt
# Seed the random number generator.
# This ensures that the results below are reproducible.
np.random.seed(9999)
m1 = np.random.random(20)
m2 = np.random.random(20)
f, ax = plt.subplots(1, figsize = (8,5))
sm.graphics.mean_diff_plot(m1, m2, ax = ax)
plt.show()
from numpy.random import random
import matplotlib.pyplot as plt
x = random(25)
y = random(25)
plt.title("FooBar")
plt.scatter(x,y)
plt.axhline(y=0.5,linestyle='--')
plt.show()
7条答案
按热度按时间w51jfk4q1#
pyCompare具有Bland-Altman图(参见demo from Jupyter)
pyCompare模块in PyPI的详细信息
最终结果如下所示:x1c 0d1x
wvmv3b1j2#
关于本模块的说明:
将一组测量值与参考方法的一个测量值进行比较时,Bland-Altman图的常见错误是使用两个测量值的平均值作为x值。
根据Bland&Altman,如果存在参考方法,我们应将参考值绘制为x值,而不是2次测量的平均值。
遗憾的是,这种可能性存在于专用模块中(如在R中)。
hmtdttj43#
如果我正确理解了绘图背后的理论,那么这段代码应该提供了基本的绘图,而您可以根据自己的特定需要对其进行配置。
data1
和data2
中的相应元素用于计算绘制点的坐标。然后,您可以通过运行以下命令创建图:
xnifntxz4#
这现在在statmodels中实现:https://www.statsmodels.org/devel/generated/statsmodels.graphics.agreement.mean_diff_plot.html
下面是他们的例子:
它产生了这个:
iswrvxsc5#
我对@sodd的优秀代码做了一些修改,添加了一些标签和文本,这样它可能会更适合发布
hivapdat6#
我接受了sodd的回答,并巧妙地实现了它,这似乎是最好的地方来分享它。
42fyovps7#
也许我错过了什么,但这看起来很简单:
这里我创建了一些0到1之间的随机数据,然后在y=0.5处随机画一条水平线--但你可以在任何地方画任意多条线。