Количество кадров данных в формуле Statsmodels OLS

#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
 

Затем вы можете запустить линейную регрессию, используя строку ниже. Есть две важные вещи:

  1. Первый аргумент ols -это a str , содержащий формулу. "Y ~ X" и не Y ~ X (обратите внимание на двойные кавычки).
  2. Вторым аргументом data может быть любой объект Python, если у него есть ключи data["X"] и data["Y"] . Я написал dict здесь, но это также сработало бы с a DataFrame . Это в основном позволяет 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.