Краткая версия: Я использовал scikit LinearRegression для некоторых данных, но я привык к значениям p, поэтому помещаю данные в statsmodels OLS, и хотя R^2 примерно одинаковый, переменные коэффициенты все разные на большие суммы. Это касается меня, поскольку наиболее вероятная проблема заключается в том, что я где-то ошибся, и теперь я не чувствую уверенности в выходе (поскольку, вероятно, я сделал одну модель неправильно, но не знаю, какой).Регрессия OLS: Scikit против Statsmodels?
Более длинная версия: Поскольку я не знаю, где проблема, я не знаю, какие именно детали включать, и в том числе все, вероятно, слишком много. Я также не уверен, что нужно включать код или данные.
У меня создается впечатление, что LR и statsmodels от Scikit должны делать OLS, и насколько я знаю, OLS - это OLS, поэтому результаты должны быть одинаковыми.
Для LR scikit результаты (статистически) одинаковы независимо от того, устанавливаю ли я нормализую = True или = False, что я нахожу несколько странным.
Для statsmodels OLS, я нормализую данные, используя StandardScaler из sklearn. Я добавляю столбец из них, поэтому он включает в себя перехват (так как вывод scikit включает в себя перехват). Подробнее об этом здесь: http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html (добавление этого столбца не изменило переменные коэффициенты на любую заметную степень, и перехват был очень близок к нулю.) СтандартScaler не понравился, что мой ints не был плавающим, поэтому я пробовал это: 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 фиктивных vars и исходная категориальная переменная строки отбрасывается) и другие.
Зависимая переменная - это количество уровней, набранных каждым персонажем за эту неделю (int).
Интересно, что некоторые относительные порядки в пределах одинаковых переменных поддерживаются через statsmodels и sklearn. Таким образом, порядок ранжирования «когда увиден» одинаковый, хотя нагрузки очень разные, а порядок ранжирования для манекенов класса символов одинаковый, хотя снова нагрузки очень разные.
Я думаю, что этот вопрос похож на этот: Difference in Python statsmodels OLS and R's lm
Я достаточно хорошо Python и статистику, чтобы преуспевать, но не достаточно хорошо, чтобы понять что-то вроде это. Я пробовал читать документы sklearn и документы statsmodels, но если бы ответ был там, глядя мне в лицо, я этого не понимал.
Я хотел бы знать:
- Какой вывод может быть точным? (Конечно, оба они могут быть, если я пропустил kwarg.)
- Если я допустил ошибку, что это такое и как ее исправить?
- Мог ли я понять это, не спрашивая здесь, и если да, то как?
Я знаю, что у этого вопроса есть некоторые довольно расплывчатые биты (без кода, без данных, без вывода), но я думаю, что речь идет об общих процессах двух пакетов. Конечно, кажется, что больше статистики, и кажется, что это больше машинное обучение, но они оба являются OLS, поэтому я не понимаю, почему выходы не совпадают.
(я даже попробовал некоторые другие МНК вызовы триангуляции, один дал гораздо более низкий R^2, один петельные в течение пяти минут, и я убил его, и один разбился.)
Спасибо!
Можете ли вы воспроизвести свою проблему на небольшом входе? Если да, можете ли вы разместить ввод и код здесь? – Akavall
только одна возможность: вы проверили ранг вашей матрицы объясняющих переменных? Может ли оно быть сингулярным? Но трудно сказать, что может вызвать различия без более явного примера. – user333700
Ah ok - Я посмотрю, смогу ли я улучшить q с некоторыми из этих вещей завтра (восточное время США). Я был обеспокоен тем, что не смог бы задать вопрос с правильной спецификой для этого дела. –