【问题标题】:Python function for multivariate regression using data from csv使用 csv 数据进行多元回归的 Python 函数
【发布时间】:2017-03-10 02:58:45
【问题描述】:

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

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

【问题讨论】:

  • 什么似乎不起作用?
  • 我将我的 csv 文件加载到 python 中,作为变量 tvst(dependent) 和 centime,brate,ppvwst(independent)。现在我想对模型进行多元回归测试,输出如上图所示。我完全不知道如何才能实现这一目标。
  • add_constant 的作用与添加一列相同。任何一个都是多余的。

标签: python csv regression multivariate-testing


【解决方案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()

【讨论】:

    【解决方案2】:

    要生成输出表,看来我们可以这样做:

    results.summary()
    

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

    return results.summary()
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-20
      • 2013-07-14
      • 2016-04-28
      • 2014-06-07
      • 1970-01-01
      • 2015-07-21
      • 2015-10-03
      • 2022-07-27
      相关资源
      最近更新 更多