作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
使用 scipy.stats.linregress 我正在对一些高度相关的 x,y 实验数据集执行简单的线性回归,并最初目视检查每个 x,y 散点图的异常值。更一般地说(即以编程方式)有没有办法识别和屏蔽异常值?
最佳答案
statsmodels
包有你需要的东西。看看这个小代码片段及其输出:
# Imports #
import statsmodels.api as smapi
import statsmodels.graphics as smgraphics
# Make data #
x = range(30)
y = [y*10 for y in x]
# Add outlier #
x.insert(6,15)
y.insert(6,220)
# Make graph #
regression = smapi.OLS(x, y).fit()
figure = smgraphics.regressionplots.plot_fit(regression, 0)
# Find outliers #
test = regression.outlier_test()
outliers = ((x[i],y[i]) for i,t in enumerate(test) if t[2] < 0.5)
print 'Outliers: ', list(outliers)
异常值:[(15, 220)]
随着 statsmodels
的更新版本,情况发生了一些变化。这是一个新的代码片段,显示了相同类型的异常值检测。
# Imports #
from random import random
import statsmodels.api as smapi
from statsmodels.formula.api import ols
import statsmodels.graphics as smgraphics
# Make data #
x = range(30)
y = [y*(10+random())+200 for y in x]
# Add outlier #
x.insert(6,15)
y.insert(6,220)
# Make fit #
regression = ols("data ~ x", data=dict(data=y, x=x)).fit()
# Find outliers #
test = regression.outlier_test()
outliers = ((x[i],y[i]) for i,t in enumerate(test.icol(2)) if t < 0.5)
print 'Outliers: ', list(outliers)
# Figure #
figure = smgraphics.regressionplots.plot_fit(regression, 1)
# Add line #
smgraphics.regressionplots.abline_plot(model_results=regression, ax=figure.axes[0])
异常值:[(15, 220)]
关于python - scipy.stats 可以识别和掩盖明显的异常值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231206/
我有一个很奇怪的问题,网页中的某些数字被随机标记为“*”。asp.net 4 webform 和 IIS Server 7 出现问题。我不知道为什么会这样。 例如:我们在文本框中的文字:45-3791
我是一名优秀的程序员,十分优秀!