【问题标题】:Power law test using XY scatter plot使用 XY 散点图的幂律测试
【发布时间】:2022-01-05 05:09:04
【问题描述】:

我从 FRED 下载了每日原油价格,大约 10k 观察值,一些值是空白的(代码清除它们)。我相信我不能在这里分享excel表格,所以我只是给你一张数据的截图:

我计算差异和回报并清理数据,但我有点卡住了。

下面是帮助您入门的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 


data = pd.read_csv("DCOILWTICO.csv")

nan_value = float("NaN")

data.replace("", nan_value, inplace=True)
data.replace(".", nan_value, inplace=True)

data['Previous'] = data['DCOILWTICO'].shift(1)

data.dropna(subset=['Previous'],inplace=True)

data.replace("", nan_value, inplace=True)
data.replace(".", nan_value, inplace=True)

data['DCOILWTICO'] = data['DCOILWTICO'].astype(float)

data['Previous'] = data['Previous'].astype(float)

data['Diff'] = data['DCOILWTICO'] - data['Previous']

data['Return'] = (data['DCOILWTICO'] - data['Previous'])/data['Previous']

问题来了:我正在尝试复制下面的图表。(我相信它是使用 Mathematica 生成的)困难的部分是能够以正确的方式创建 bin。查看图表,看起来大约有 200 个垃圾箱。 x 轴是回报,y 轴是频率(已被分箱)。

【问题讨论】:

    标签: python pandas plot probability finance


    【解决方案1】:

    我想你是在问如何在日志空间中创建等距的 bin。如果是这样,请使用np.geomspace 函数(几何空间),而不是np.linspace(线性空间)。

    plt.figure()
    bins = np.geomspace(data['returns'].min(), data['returns'].max(), 200)
    plt.hist(data['returns'], bins = bins)
    

    【讨论】:

    • 好用的功能!但仍然不是 100% 清楚从这个到情节的过程。
    • 编辑后的代码,返回一个数组,其中第一个值为最小值,最后一个值为最大值,其余198个条目为NAN。
    • 即:这一行,bins = np.geomspace(data['Return'].min(), data['Return'].max(), 200)
    • 抱歉,我没有数据。您可以为最小值和最大值设置任何您想要的值。所以尝试最小为 0.02,最大为 0.2
    • max 和 min 函数似乎确实有效。他们分别返回:0.5308641975308642 和 -3.019661387220098
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多