#python #pandas #statsmodels
Вопрос:
Я пытаюсь выполнить линейную регрессию, чтобы предсказать количество кадров данных на основе количества других кадров данных. Я использую модели состояния. Я попробовал следующее:
X = df1.count()
Y = df2.count()
from statsmodels.formula.api import ols
fit = ols(Y ~ X, data=kak).fit()
fit.summary()
Использование переменных X и Y в формуле OLS запрещено, и я понятия не имею, что заполнять в аргументе data=
ключевого слова. Как бы я это сделал?
Комментарии:
1. Какой-либо ответ ниже решил вашу проблему? Если это так, вы можете принять его, установив рядом с ним большой флажок.
Ответ №1:
Предположим, у вас есть 1D массивы X
и Y
:
import numpy as np
X = np.arange(100)
Y = 2*X 5
Затем вы можете запустить линейную регрессию, используя строку ниже. Есть две важные вещи:
- Первый аргумент
ols
-это astr
, содержащий формулу."Y ~ X"
и неY ~ X
(обратите внимание на двойные кавычки). - Вторым аргументом
data
может быть любой объект Python, если у него есть ключиdata["X"]
иdata["Y"]
. Я написалdict
здесь, но это также сработало бы с aDataFrame
. Это в основном позволяетstatsmodels
понять, кто естьX
иY
в формуле, которую вы ему дали.
ols("Y ~ X", {"X": X, "Y": Y}).fit().summary()
Выход:
OLS Regression Results
==============================================================================
Dep. Variable: Y R-squared: 1.000
Model: OLS Adj. R-squared: 1.000
Method: Least Squares F-statistic: 1.916e 33
Date: Fri, 21 May 2021 Prob (F-statistic): 0.00
Time: 14:01:48 Log-Likelihood: 3055.1
No. Observations: 100 AIC: -6106.
Df Residuals: 98 BIC: -6101.
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 5.0000 2.62e-15 1.91e 15 0.000 5.000 5.000
X 2.0000 4.57e-17 4.38e 16 0.000 2.000 2.000
==============================================================================
Omnibus: 220.067 Durbin-Watson: 0.015
Prob(Omnibus): 0.000 Jarque-Bera (JB): 9.816
Skew: 0.159 Prob(JB): 0.00739
Kurtosis: 1.498 Cond. No. 114.
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.