Короткая версия: я использовал scikit LinearRegression на некоторых данных, но я привык к p-значениям, поэтому помещаю данные в OLS statsmodels, и хотя R ^ 2 примерно одинаков, переменные коэффициенты все различаются в больших количествах, Это касается меня, поскольку наиболее вероятная проблема заключается в том, что я где-то допустил ошибку, и теперь я не чувствую уверенности ни в одном из результатов (поскольку, вероятно, я сделал одну модель неправильно, но не знаю, какая).
Более длинная версия: потому что я не знаю, где проблема, я не знаю точно, какие детали включать, и включение всего, вероятно, слишком много. Я также не уверен относительно включения кода или данных.
У меня сложилось впечатление, что scikit LR и statsmodels OLS должны выполнять OLS, и, насколько я знаю, OLS - это OLS, поэтому результаты должны быть одинаковыми.
Для scikit LR результаты (статистически) одинаковы независимо от того, установлен ли я normalize = True или = False, что я нахожу несколько странным.
Для statsmodels OLS я нормализую данные, используя StandardScaler из sklearn. Я добавляю столбец единиц, чтобы он включал перехват (поскольку вывод scikit включает в себя перехват). Подробнее об этом здесь: http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html (Добавление этого столбца не изменило переменные коэффициенты в какой-либо заметной степени, а перехват был очень близок к нулю.) StandardScaler не понравилось, что мои целые числа не были плавающими, поэтому я попробовал это: https://github.com/scikit-learn/scikit-learn/issues/1709 Это убирает предупреждение, но результаты точно такие же.
Конечно, я использую 5-кратное cv для подхода sklearn (R ^ 2 согласуются как для тестовых, так и для тренировочных данных каждый раз), а для statsmodels я просто выкидываю все эти данные.
R ^ 2 составляет около 0,41 для sklearn и statsmodels (это хорошо для социальных наук). Это может быть хорошим знаком или просто совпадением.
Данные - это наблюдения аватаров в WoW (из http://mmnet.iis.sinica.edu.tw/dl/wowah/), которые я собирался сделать еженедельными с некоторыми другими функциями. Первоначально это был классный проект для класса данных науки.
Независимые переменные включают количество наблюдений за неделю (int), уровень персонажа (int), если в гильдии (Boolean), когда они видны (Booleans в день недели, канун дня недели, поздний день недели и те же три для выходных), фиктивный для класса символов (на момент сбора данных в WoW было только 8 классов, поэтому есть 7 фиктивных переменных, а исходная строковая категориальная переменная отброшена) и другие.
Зависимая переменная - это количество уровней, которое каждый персонаж получил за эту неделю (int).
Интересно, что некоторый относительный порядок внутри одинаковых переменных поддерживается в statsmodels и sklearn. Таким образом, порядок ранжирования "когда видно" одинаков, хотя нагрузки очень разные, и порядок рангов для манекенов класса персонажей одинаков, хотя опять же нагрузки очень разные.
Я думаю, что этот вопрос похож на этот: Различия в Python statsmodels OLS и R & # 39; s lm
Я достаточно хорош в Python и его статистике, но не настолько хорош, чтобы понять что-то подобное. Я пытался читать документы sklearn и statsmodels, но если ответ был там, глядя мне в лицо, я не понимал этого.
Я хотел бы знать:
- Какой вывод может быть точным? (Конечно, они оба могут быть, если я пропустил kwarg.)
- Если я допустил ошибку, что это такое и как это исправить?
- Мог ли я понять это, не спрашивая здесь, и если да, то как?
Я знаю, что в этом вопросе есть довольно неопределенные моменты (без кода, без данных, без вывода), но я думаю, что это больше касается общих процессов двух пакетов. Конечно, у кого-то больше статистики, у кого-то больше машинного обучения, но они оба OLS, поэтому я не понимаю, почему результаты не совпадают.
(Я даже попробовал некоторые другие вызовы OLS для триангуляции, один дал намного более низкое R ^ 2, один зациклился на пять минут, и я убил его, а один потерпел крах.)
Спасибо!