Улучшите R2, удалив выбросы-python - PullRequest
0 голосов
/ 24 сентября 2018

Я использую следующий код для определения параметров 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 (Slope, intercept, R2, pvalue и stderror)

#

Задача для меня начинается здесь:

Мне нужно использовать Python, чтобы удалить выбросы из порядка набора данных, чтобы улучшить R2 (что приведет к соответствующему изменению наклона).После удаления выбросов мне нужно рассчитать измененные параметры линейного хода (наклон, пересечение, R2, pvalue и std error) для каждой последовательности.

Скажем, когда выброс не был удален, R2 = 0,721, но при удалениивыпадающий, результирующий R2 равен 0,852

Таблица данных выглядит следующим образом:

Dataset

У меня есть 10 точек данных на последовательность (A, B и C) и необходимо удалить выбросы, присутствующие в каждой последовательности.Выбросы выделены желтым цветом в наборе данных.Я также дал выходные данные, которые удалили выбросы.

Когда мы удаляем эти выбросы, R2, наклон, перехват и т. Д. Меняются.

Как мне поступить с помощью Python?Любая помощь по этому вопросу высоко ценится.


Я спросил в Crossvalidate, и мне предложили использовать надежный метод регрессии для этого вида анализа.

Какие библиотеки / пакеты Python я должен использовать для этого вопроса?

1 Ответ

0 голосов
/ 24 сентября 2018

Скажем, у вас есть значение, которое, как вы знаете, вы хотите назвать своим "отсечением" для выбросов.

cutoff = 100 # this is your arbitrary outlier cutoff
df = df[df[y] < cutoff] 

Это должно удалить все ваши значения выбросов из набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...