【问题标题】:plot gaussian between points在点之间绘制高斯曲线
【发布时间】:2015-07-07 14:24:37
【问题描述】:

您好,我实际上有一个点列表,我想在这些点之间绘制一条高斯曲线以生成某种时间序列。

例如,这里我使用日期范围

import pandas as pd
a=pd.date_range(start="2015-06-16 ",end="2015-06-23 ", freq='H')

我想要“2015-06-16”和“2015-06-17”之间的高斯密度曲线(即正态分布)。另一个介于“2015-06-17”和“2015-06-18”等之间。

我不知道该怎么做。

谢谢

【问题讨论】:

  • “在 2015-06-16 和 2015-06-17 之间添加一些高斯”是什么意思?您是否只想为每个时间戳提供一些正态分布的随机变量?
  • @JianxunLi 我编辑了fp,希望现在清楚
  • 高斯曲线是指高斯密度曲线吗?高斯随机过程?还是机器学习中的高斯过程回归曲线?
  • @JianxunLi 高斯密度曲线是我的坏

标签: python pandas matplotlib


【解决方案1】:
import pandas as pd
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

a = pd.date_range(start="2015-06-16 ",end="2015-06-23 ", freq='H')

x = np.linspace(-3, 3, 24)
norm_pdf = stats.norm.pdf(x, 0, 1)
density = np.tile(norm_pdf, (len(a)-1)/24)

fig, ax = plt.subplots(figsize=(8,6))
ax.plot(a[1:], density)
ax.set_ylim([0, 1])

【讨论】:

    【解决方案2】:

    假设 vol 恒定且没有漂移(鉴于您的时间范围很短),以下应该可行:

    import pandas as pd
    import numpy as np
    
    annualized_vol = 0.30  # i.e. 30%
    delta_t = 1 / 252. / 24.  # Assuming 252 days in a trading year and 24 hours in a trading day.
    initial_price = 100
    
    idx = pd.date_range(start="2015-06-16 ", end="2015-06-23 ", freq='H')
    dx = pd.DataFrame(np.random.randn(len(idx)), index=idx) * annualized_vol * delta_t ** .5
    (initial_price * dx.cumsum()).plot()
    

    【讨论】:

    • 嗨,谢谢,但这不是我想要的。我只想让python在两点之间绘制简单的高斯曲线。我不想像您那样生成高斯随机过程。如果我不清楚,我很抱歉
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2019-08-15
    • 1970-01-01
    • 2012-03-02
    • 2014-06-29
    • 1970-01-01
    • 2019-08-14
    • 2013-12-19
    相关资源
    最近更新 更多