我正在使用以下代码找出Linregress参数:
import numpy, scipy,pandas as pd
from scipy.optimize import curve_fit
from scipy.stats import linregress
import scipy.stats
import copy
df=pd.read_excel("S:/Python/Excel.xlsx")
df.head();
xyDataPairs = df[['x', 'y']].values.tolist();
df.groupby('Test Event',as_index=True)['x', 'y'].apply(linregress)
res= df.groupby('Test Event',as_index=True)['x', 'y'].apply(linregress);
print(res)
res.to_excel('result.xlsx')
由此我得到所有linregress参数(斜率,截距,R2,pvalue和stderror)
对我而言,挑战始于此:
我需要使用Python从数据集中删除离群值以改善R2(这将导致斜率发生相应的变化)。除去异常值后,我需要计算每个序列的修正的线性回归参数(斜率,截距,R2,pvalue和std误差)。
说,当不删除异常值时,R2 = 0.721,但是在删除异常值时,得出的R2为0.852
数据表如下:
我每个序列(A,B和C)有10个数据点,需要删除每个序列中存在的异常值。离群值在数据集中以“黄色”突出显示。我还提供了已删除异常值的输出数据。
当我们删除这些异常值时,R2,斜率,截距等都会发生变化。
如何使用Python执行此操作?我们对此表示任何帮助。
我在Crossvalidate中询问,建议使用鲁棒回归方法进行此类分析。
这个问题我应该使用哪个python库/软件包?
答案 0 :(得分:0)
说您有价值,您知道您想称呼异常值为“临界值”。
cutoff = 100 # this is your arbitrary outlier cutoff
df = df[df[y] < cutoff]
这应该从数据集中删除所有异常值。