Кажется, я не могу найти библиотеки Python, которые выполняют множественную регрессию. Единственное, что я нахожу, - это простая регрессия. Мне нужно регрессировать мою зависимую переменную (y) по нескольким независимым переменным (x1, x2, x3 и т. Д.).
Например, с этими данными:
print 'y x1 x2 x3 x4 x5 x6 x7'
for t in texts:
print "{:>7.1f}{:>10.2f}{:>9.2f}{:>9.2f}{:>10.2f}{:>7.2f}{:>7.2f}{:>9.2f}" /
.format(t.y,t.x1,t.x2,t.x3,t.x4,t.x5,t.x6,t.x7)
(вывод для выше :)
y x1 x2 x3 x4 x5 x6 x7
-6.0 -4.95 -5.87 -0.76 14.73 4.02 0.20 0.45
-5.0 -4.55 -4.52 -0.71 13.74 4.47 0.16 0.50
-10.0 -10.96 -11.64 -0.98 15.49 4.18 0.19 0.53
-5.0 -1.08 -3.36 0.75 24.72 4.96 0.16 0.60
-8.0 -6.52 -7.45 -0.86 16.59 4.29 0.10 0.48
-3.0 -0.81 -2.36 -0.50 22.44 4.81 0.15 0.53
-6.0 -7.01 -7.33 -0.33 13.93 4.32 0.21 0.50
-8.0 -4.46 -7.65 -0.94 11.40 4.43 0.16 0.49
-8.0 -11.54 -10.03 -1.03 18.18 4.28 0.21 0.55
Как бы я регрессировал их в python, чтобы получить формулу линейной регрессии:
Y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + + a7x7 + c
Y
могут быть коррелированы друг с другом, но предположение о независимости не позволяет точно моделировать набор данных.Ответы:
sklearn.linear_model.LinearRegression
сделаю это:Тогда
clf.coef_
будут коэффициенты регрессии.sklearn.linear_model
также имеет аналогичные интерфейсы для выполнения различных видов регуляризации регрессии.источник
score
метод сделает это;sklearn.metrics
есть другие критерии оценки модели. Если вам нужен материал, подобный ответу Акавалла, у statsmodels есть еще несколько R-подобных диагностик.Вот небольшая работа, которую я создал. Я проверил это с помощью R, и он работает правильно.
Результат:
Вывод:
pandas
предоставляет удобный способ запуска OLS, как указано в этом ответе:Запустите регрессию OLS с фреймом данных Pandas
источник
reg_m
Функция излишне сложная.x = np.array(x).T
,x = sm.add_constant(x)
и этогоresults = sm.OLS(endog=y, exog=x).fit()
достаточно.x = x[::-1]
в определение функции, чтобы упорядочить егоcoef +- 2 * std err
(фактически распределение Стьюдента-t, параметризованное степенями свободы в остатках). т.е. большие абсолютные значения t предполагают, что КИ находятся дальше от нуля, но их не следует сравнивать напрямую. разъяснение немного запоздало, но надеюсь, что оно кому-то будет полезноЧтобы уточнить, приведенный вами пример - это множественная линейная регрессия, а не ссылка на многомерную линейную регрессию. Разница :
Коротко:
(Другой источник .)
источник
Вы можете использовать numpy.linalg.lstsq :
Результат:
Вы можете увидеть приблизительный результат с помощью:
Результат:
источник
Используйте
scipy.optimize.curve_fit
. И не только для линейной посадки.источник
Как только вы конвертируете свои данные в pandas dataframe (
df
),Срок перехвата включен по умолчанию.
См. Этот блокнот для получения дополнительных примеров.
источник
Я думаю, что это самый простой способ завершить эту работу:
источник
Множественную линейную регрессию можно обрабатывать с помощью библиотеки sklearn, как указано выше. Я использую установку Python 3.6 от Anaconda.
Создайте свою модель следующим образом:
источник
Вы можете использовать numpy.linalg.lstsq
источник
Вы можете использовать приведенную ниже функцию и передать ей DataFrame:
источник
Scikit-learn - это библиотека машинного обучения для Python, которая может сделать эту работу за вас. Просто импортируйте модуль sklearn.linear_model в свой скрипт.
Найдите шаблон кода для множественной линейной регрессии с помощью sklearn в Python:
Вот и все. Вы можете использовать этот код в качестве шаблона для реализации множественной линейной регрессии в любом наборе данных. Для лучшего понимания с примером посетите: Линейная регрессия с примером.
источник
Вот альтернативный и основной метод:
Вместо
sm.OLS
вы также можете использоватьsm.Logit
илиsm.Probit
и т. Д.источник