Python:如何从核密度估计生成样本?

时间:2018-01-23 14:48:39

标签: python sample kde

我需要每月下载DJI股票价格并计算月度回报。 我有一个名为'data'的数据框,它是股票的月度价格。我想然后使用月度回报并使用核密度估计。然后我想从中取出随机样本并用它来生成100个路径(蒙特卡罗总结)。 问题是当我生成样本时,值在20到200之间。我给它的返回数据是百分比,所以我认为样本也是百分比?如何从KDE获取与原始数据相对应的随机样本(%return)? '数据'有月度价格,回报是月回报,我认为new_data将是原始数据的样本,并且将是%

这是代码

returns=data.pct_change(1)
returns=returns.iloc[1:]
positive_returns = returns.apply(lambda x: x[x > 0].mean())
negative_returns = returns.apply(lambda x: x[x < 0].mean())
freq = returns.apply(lambda x: float(len(x[x > 0])) / float(len(returns)))


# use kernel density estimation to estimate the monthly return distribution for each stock
params = {'bandwidth': np.logspace(-1, 1, 20)}
grid = GridSearchCV(KernelDensity(), params)
models = returns.apply(lambda x: grid.fit(x.values.reshape(-1, 1)).best_estimator_)


new_data=data.sample(60,random_state=0)
print(new_data)

1 个答案:

答案 0 :(得分:0)

您正在使用“数据”作为新样本空间的样本空间。如上所述,“数据”具有每月价格,因此不确定如何给出百分比。更好的选择是使用return数据框发出new_data。

new_data=returns.sample(60,random_state=0)