使用python statsmodel进行多元线性回归 - python

在R中,可以执行多元线性回归,例如

temp = lm(log(volume_1[11:62])~log(price_1[11:62])+log(volume_1[10:61]))

在Python中,可以使用
R样式公式,所以我认为下面的代码应该也能正常工作,

import statsmodels.formula.api as smf
import pandas as pd
import numpy as np

rando = lambda x: np.random.randint(low=1, high=100, size=x)

df = pd.DataFrame(data={'volume_1': rando(62), 'price_1': rando(62)})

temp = smf.ols(formula='np.log(volume_1)[11:62] ~ np.log(price_1)[11:62] + np.log(volume_1)[10:61]', 
               data=df) 
# np.log(volume_1)[10:61] express the lagged volume

但是我得到了错误

PatsyError: Number of rows mismatch between data argument and volume_1[11:62] (62 versus 51)
volume_1[11:62] ~ price_1[11:62] + volume_1[10:61]

我想不可能只对列中的部分行进行回归,因为data = df有62行,其他变量有51行。

有没有像R这样方便的回归方法?

df类型为pandas Dataframe,列名称为volume_1,price_1

参考方案

使用patsy存储库中github question中的示例,这将是使滞后列正常工作的方法。

import statsmodels.formula.api as smf
import pandas as pd
import numpy as np

rando = lambda x: np.random.randint(low=1, high=100, size=x)

df = pd.DataFrame(data={'volume_1': rando(62), 'price_1': rando(62)})

def lag(x, n):
    if n == 0:
        return x
    if isinstance(x,pd.Series):
        return x.shift(n)

    x = x.astype('float')
    x[n:] = x[0:-n]
    x[:n] = np.nan
    return x

temp = smf.ols(formula='np.log(volume_1) ~ np.log(price_1) + np.log(lag(volume_1,1))', 
               data=df[11:62]) 

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

使用python 3.3.4和RotatingFileHandler时的PermissionError - python

我正在尝试获取使用python 3.3.4和PyQt4编写的GUI应用程序的旋转日志文件。我的主脚本中有以下代码片段:import logging import resources logger = logging.getLogger('main.test') def main(): logger.setLevel(logging.DEB…

使用python boto将大型文件作为并行多部分上传到S3 / D42 - python

我正在尝试将MySql DB计算机的400 GB .ibd文件上传到D42 / S3中。我正在使用Python boto的set_contents_from_file函数。但这需要花费很多时间,我看不到进度(关于上传/剩余的数量)。有没有人有任何Python脚本来使用线程或并行分段上传?对于最终用户来说,这是一个非常简单的用例,但是boto的document…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…