Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多OLS估计误差_Python_Finance_Estimation_Quantitative Finance_Economics - Fatal编程技术网

Python 多OLS估计误差

Python 多OLS估计误差,python,finance,estimation,quantitative-finance,economics,Python,Finance,Estimation,Quantitative Finance,Economics,我正在尝试对我的数据使用statsmodels执行一些Newey West OLS来估计我的参数,下面是我的代码: from __future__ import print_function, division import xlrd as xl import numpy as np import scipy as sp import pandas as pd import statsmodels.formula.api as smf import statsmodels.api as sm

我正在尝试对我的数据使用statsmodels执行一些Newey West OLS来估计我的参数,下面是我的代码:

from __future__ import print_function, division 
import xlrd as xl
import numpy as np
import scipy as sp
import pandas as pd
import statsmodels.formula.api as smf
import statsmodels.api as sm

file_loc = "/Python/dataset_3.xlsx"
workbook = xl.open_workbook(file_loc)
sheet = workbook.sheet_by_index(0)
tot = sheet.nrows
data = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in 

range(sheet.nrows)]

rv1 = []
rv5 = []
rv22 = []
rv1fcast = []
T = []
price = []
time = []
retnor = []

for i in range(1, tot):        
    t = data[i][0]
    ret = data[i][1]
    ret5 = data[i][2]
    ret22 = data[i][3]
    ret1_1 = data[i][4]
    retn = data[i][5]
    t = xl.xldate_as_tuple(t, 0)
    rv1.append(ret)
    rv5.append(ret5)
    rv22.append(ret22)
    rv1fcast.append(ret1_1)
    retnor.append(retn)
    T.append(t)

df = pd.DataFrame({'RVFCAST':rv1fcast, 'RV1':rv1, 'RV5':rv5, 'RV22':rv22,})
df = df[df.RV1.notnull()]
model = smf.OLS(formula = 'df.RVFCAST ~ df.RV1 + df.RV5 + df.RV22', data = df)
当我查看数组或数据帧时,一切看起来都很好,但它只返回:TypeError:init()至少接受2个参数(给定1个)

我尝试了很多不同的方法,但我看不出我遗漏了什么

当我运行它时,以下错误消息显示:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/Python/harrv.py in <module>()
     41 df = df[df.RV1.notnull()]
     42 
---> 43 model = smf.OLS(formula = 'df.RVFCAST ~ df.RV1 + df.RV5 + df.RV22', data = df)
     44 
     45 #mdl = model.get_robustcov_results(cov_type='HAC',maxlags=1)

TypeError: __init__() takes at least 2 arguments (1 given) 

另一个rv给出了类似的浮点数。df只是以pd.dataframe的方式组装它们,根据文档支持()。

问题在于statsmodels.formula.api中的公式函数是小写的。大写OLS与主statsmodels.api中的相同。将来将从formula.api命名空间中删除大写模型,以避免这种混淆

这意味着,您需要使用小写ols,如

model=smf.ols(公式='df.RVFCAST~df.RV1+df.RV5+df.RV22',data=df)

请注意,小写公式函数只是模型的
from_formula
方法的别名


smf.ols
sm.ols的快捷方式。从_formula

可以编写包含堆栈跟踪的实际错误消息。从您当前的描述来看,不清楚什么呼叫崩溃。就是这样。但我看不出还需要什么样的论证,因为我从另一个例子中得到了这个方法,这个例子对那个人有效。我在想,这可能是因为列表中存在单引号吗?使用
df.
作为公式参数显然是错误的。(与之相比)。但是我承认我没有看到错误信息和你的论点之间的关联。如果你能让这个例子自足,那会有帮助的。例如,添加
import
语句和示例数据。已修复。我希望rv1的例子足够了,因为另一个是以同样的方式组装的,也是浮动的。公式的一部分仍然显示相同的错误消息。这起作用了!但当我试图打印拟合模型的摘要时,它返回一个关于轴的错误,当a的形状和权重不同时,需要指定该轴。你知道吗?如果没有回溯或完整的例子,我无法猜测。你可以问一个新问题,也可以向pystatsmodels谷歌集团提问。有一件事:将
df.
放在公式字符串中。我们(statsmodels开发人员)从未考虑过这种模式,我也不确定它是否正常工作。很可能是它弄乱了patsy设计矩阵的创建或后期评估处理。我在这里发布了第二个问题,其中有更多细节:
Out[318]: 
[0.015538008996147568,
 0.008881670570720125,
 0.010421778063375802,    
.....    
 0.003151044550868834,
 0.0029676428110974166,
 0.005236329928710288,
 0.004838460533164701,
 '']