【问题标题】:Python: How to winsorize the Mean and Standard Deviation?Python:如何对均值和标准差进行winsorize?
【发布时间】:2020-10-31 23:16:39
【问题描述】:

我有一个代码用于多个不同的指标(例如风险价值、Omega、Sortino 等)。我用于平均值的公式是:

平均值(平均值):

e = numpy.mean(r)

return numpy.mean(diff) / vol(diff)

标准差:

return numpy.std(returns)

我想对我的计算中使用的均值(和标准差)进行微调。谁能建议怎么做?我找到了这部分,但不确定如何实现它(如果是这样的话):

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mstats.winsorize.html

谢谢

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    试试这个:

    import os
    import numpy as np
    
    from scipy.stats.mstats import winsorize
    
    file_location = input("path to file: ")
    dirname = os.path.dirname(file_location)
    filename = os.path.basename(file_location)
    
    with open(file_location, 'r') as readfile, \
            open(os.path.join(dirname, 'win_' + filename), 'w') as writefile1, \
            open(os.path.join(dirname, 'mod_' + filename), 'w') as writefile2:
        writefile1.write('adj_mean,adj_std\n')
        for idx, line in enumerate(readfile):
            print("Reading line# {}...".format(idx))
            series = np.array([float(x) for x in line.split(',')])
            print("Read {} values...".format(len(series)))
            winsorized_series = winsorize(series, limits=[0.10, 0.10])
            print("Writing modified series to file...")
            writefile2.write(','.join(map(str, winsorized_series)) + '\n')
            adj_mean = np.mean(winsorized_series)
            adj_std = np.std(winsorized_series)
            print("adj mean and std dev...")
            writefile1.write("{},{}\n".format(adj_mean, adj_std))
    

    【讨论】:

      【解决方案2】:

      要获得准确的答案,需要MCVE

      假设 'e' 是一个 nparray

      import numpy as np
      import scipy as sp
      from scipy.stats.mstats import winsorize
      
      e = np.random.rand(1,100)
      print("{}".format(e))
      winsorize(e, limits=(0.25,0.25), inplace=True)
      print("{}".format(e))
      

      【讨论】:

        猜你喜欢
        • 2020-04-15
        • 2016-05-07
        • 2021-09-06
        • 2012-03-27
        • 2015-03-29
        • 2020-12-26
        • 2021-08-17
        • 1970-01-01
        • 2020-07-22
        相关资源
        最近更新 更多