【发布时间】:2016-08-04 09:22:50
【问题描述】:
我有一些看起来像这样的数据:
生成此图的代码:
CI=4.5
data=pandas.DataFrame([3,5,1,2,3,4,5,6])
plt.figure()
plt.plot(data)
plt.plot([CI]*len(data),'--')
plt.ylabel('y data',fontsize=15)
plt.xlabel('x data',fontsize=15)
plt.title('example data',fontsize=15)
我还可以使用 scipy 插入数据:
from scipy.interpolate import interp1d
f=interp1d(x_data,y_data,kind='linear')
x_interp=numpy.linspace(min(x_data),max(x_data), num=100*len(x_data), endpoint=True)
y_interp=f(x_interp)
plt.figure()
plt.plot(x_interp,y_interp)
绿线代表置信区间。我需要以编程方式定位 y 值与内部置信度相交的 x 值。但是,复杂之处在于,由于这是一个置信区间,我需要获得在两个方向上都穿过绿线的值:
即我需要 y 数据与红色箭头交叉的 x 值,同时排除黑色箭头处的 x 值。我尝试了许多从插值数据中减去置信区间以及获取绝对值的变体,但我仍然无法隔离置信区间。
【问题讨论】:
-
置信区间是一系列值,例如,
lower_bound = CI - something; upper_bound = CI + something_else。我也不明白为什么黑色箭头是黑色的,而另一个被视为红色。 -
这不是意味着你想要所有东西都在绿线以上吗?
-
@Reti43 箭头仅用于说明 - 数据也是如此(因为在此处提供真实数据不太可行)。在真实数据中是的,CI 将是参数估计 +/- 置信区间。但由于非线性,它们是非对称的。
-
@armatita - 通常是的,但我使用的数据是平方和的结果,而不是对数似然目标函数(它会高于,而不是低于绿线)。无论哪种方式,无论是在绿线之上还是之下,手头的计算任务都是相同的。感谢回复
-
为了演示的合成数据很好。但是您的问题中不代表您的实际问题的任何方面都会分散注意力或令人困惑。非常明确,您是否想要 y 值位于特定范围内的 x 值,即某个平均值的 +/-?
标签: python numpy scipy interpolation confidence-interval