1

我想创建一个多级行索引,其中级别 0 是我命名为 environ 的列表中的列表元素的名称(参见下面的代码,例如政权 1)。此行索引的第二级是参数名称(例如 alpha[1] )。列索引是适合数据的模型类型的名称(例如,model_1)。最终目标是创建一个循环,在其中我可以传递与数据系列关联的名称列表,该系列的标签成为行多级索引的第一级,第二级是参数名称,列index 是适合数据系列的模型的名称。

进口:

from arch import arch_model
from collections import OrderedDict
import numpy as np
import pandas as pd
import datetime as dt
import arch.data.sp500

如果我打印了代码循环的结果,下面是我希望输出的样子。

                   model_1   model_2
Regime 1 alpha[1]  0.102150  0.099596
         beta[1]   0.885206  0.899932
         mu        0.056353  0.066129
         nu             NaN  6.607229
         omega     0.017507  0.008664
                   model_1   model_2
Regime_2 alpha[1]  0.102150  0.099596
         beta[1]   0.885206  0.899932
         mu        0.056353  0.066129
         nu             NaN  6.607229
         omega     0.017507  0.008664

下面的代码是我最近尝试获得上面所需的输出:

environ = ['regime1','regime2']
data = arch.data.sp500.load()
market = data['Adj Close']
returns = 100 * market.pct_change().dropna()
returns2 = 100 * market.pct_change().dropna()
datasets = [returns,returns2]
for i,j in zip(environ,datasets):
    model1 = arch_model(datasets[j]).fit(disp='off')
    model2 = arch_model(datasets[j], dist='t').fit(disp='off')
    comparison = pd.DataFrame( OrderedDict((('model_1',model1.params), ('model_2', model2.params))))
    print(comparison)

我收到的当前错误:

TypeError: list indices must be integers or slices, not Series

我不相信修复上面的错误会解决我的问题。我想返回一个多级数据框,看起来类似于上面所需的输出。

4

0 回答 0