基于statsmodels示例,如何筛选置信区间外的x、y数据点?
提取置信区间外的数据点方法
嘿,我来帮你搞定这个问题!你已经用statsmodels的summary_table算出了95%置信区间的上下限,现在要揪出那些落在区间外面的x和y数据点其实很简单,跟着下面的步骤来就行:
首先先回顾你给出的基础代码:
import numpy as np import statsmodels.api as sm from statsmodels.stats.outliers_influence import summary_table # measurements n = 100 x = np.linspace(0, 10, n) e = np.random.normal(size=n) y = 1 + 0.5*x + 2*e X = sm.add_constant(x) re = sm.OLS(y, X).fit() st, data, ss2 = summary_table(re, alpha=0.05) predict_ci_low, predict_ci_upp = data[:, 6:8].T
接下来只需要三步就能筛选出目标数据点:
第一步:创建筛选掩码
我们需要生成一个布尔数组,标记哪些原始y值小于置信区间下限,或者大于置信区间上限:# 生成掩码:标记y值在置信区间外的位置 outliers_mask = (y < predict_ci_low) | (y > predict_ci_upp)第二步:提取目标数据
用上面的掩码直接对x和y数组进行索引,就能得到所有落在置信区间外的数据点:# 提取置信区间外的x和y值 x_outliers = x[outliers_mask] y_outliers = y[outliers_mask]第三步:查看结果(可选)
如果你想把这些数据点以(x,y)对的形式展示,可以把它们组合成二维数组:# 组合成(x,y)对的二维数组 outliers = np.column_stack((x_outliers, y_outliers)) print("落在95%置信区间外的数据点:") print(outliers)
这样你就能精准拿到所有不在置信区间内的x和y数据啦!
内容的提问来源于stack exchange,提问作者PedroA
相关产品推荐
相关产品推荐

