0

你知道我如何将第一部分放入函数的其余部分以进行回归分析。

import numpy as np
import matplotlib.pyplot as plt
from numpy import *
from matplotlib.pyplot import * #for the graph

data = np.genfromtxt('bookingdata.csv', delimiter = ',')

tvst = data[1:,][:,1]
cntime = data[1:,][:,2] 
brate = data[1:,][:,3]
ppvwst = data[1:,][:,4] 



import statsmodels.api as sm


def reg_m(tvst, cntime,brate,ppvwst):
ones = np.ones(len(cntime[0])  
X = sm.add_constant(np.column_stack((x[0], ones)))
for ele in x[1:]:
X = sm.add_constant(np.column_stack((ele, X)))
results = sm.OLS(y, X).fit()
return results

并且所有变量都已加载为变量 tvst、cntime 等。所有变量都是数字。

现在的最终目标是获得多元回归,例如

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.535
Model:                            OLS   Adj. R-squared:                  0.461
Method:                 Least Squares   F-statistic:                     7.281
Date:                Tue, 19 Feb 2013   Prob (F-statistic):            0.00191
Time:                        21:51:28   Log-Likelihood:                -26.025
No. Observations:                  23   AIC:                             60.05
Df Residuals:                      19   BIC:                             64.59
Df Model:                           3            
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1             0.2424      0.139      1.739      0.098        -0.049     0.534
x2             0.2360      0.149      1.587      0.129        -0.075     0.547
x3            -0.0618      0.145     -0.427      0.674        -0.365     0.241
const          1.5704      0.633      2.481      0.023         0.245     2.895


Omnibus:                        6.904   Durbin-Watson:                   1.905
Prob(Omnibus):                  0.032   Jarque-Bera (JB):                4.708
Skew:                          -0.849   Prob(JB):                       0.0950
Kurtosis:                       4.426   Cond. No.                         38.6
4

2 回答 2

1

首先,如果 y (endog) 只是一个变量,那么这称为多元回归。多元回归通常是指我们同时有多个 y 的情况,即 y 是多元的。

add_constant与添加 的列执行相同的操作ones。任何一个都是多余的。

所以,多元回归只是

X = sm.add_constant(np.column_stack((cntime, brate, ppvwst)))
results = sm.OLS(y, X).fit()

或者假设我们已经做了一个 column_stack 来避免数据的额外副本:

X = np.column_stack((ones, cntime, brate, ppvwst)))
results = sm.OLS(y, X).fit()
于 2017-03-10T16:14:27.357 回答
0

要生成输出表,我们似乎可以这样做:

results.summary()

在您编写的函数中,您甚至可以将其包含在 return 语句中。这只是:

return results.summary()

我在滚动statsmodels 包的文档时偶然发现了这一点。尽管这个问题是不久前提出的,但希望这有助于为您和其他任何在这里找到方式的人完成这个问题。

于 2021-04-28T00:42:45.567 回答