2017-06-01 12 views
0

私は、ビニングされたデータのセットの各ビンの加重分散を取得しようとしています。私の試行は以下の通りですが、私は次のエラーを受け取ります。Pythonでビンビン加重分散

TypeError: <lambda>() missing 1 required positional argument: 'weight_data' 

ラムダ関数には2つの引数がありますか?

私は、どちらかのエラー、私に働く機能を与える方法、または別の方法をお勧めします。私はPythonだけを使用しています。

def wVar(values, weight_data, bias=None): 
    weighted_mean = np.average(values, weights=weight_data) 
    s2_bias = np.average((values - weighted_mean)**2, weights=weight_data) 
    s2_unbiased = s2_bias/(1.0 - (np.sum(weight_data**2)/(np.sum(weight_data))**2)) 
    if (bias == None): 
      return s2_unbiased 
    elif (bias.lower() == "biased"): 
      return s2_bias 
    elif (bias.lower() == "unbiased"): 
      return s2_unbiased 
    else: 
      return print(' "bias" must be assigned as either "unbiased" or "biased" or not at all (default = unbiased) ') 

bin_wvar0, bin_edges, binnumber = sp.stats.binned_statistic(x_data, y_data, statistic=lambda y_data, weight_data: wVar(y_data, weight_data, bias="unbiased"), bins= bin_edge_data) 
+0

curried_weight = lambda y_data: wVar(y_data, weight_data, bias="unbiased") sp.stats.binned_statistic(x_data, y_data, statistic=curried_weight, ...) 
リード[ドキュメント](https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.stats.binned_statistic.html)これは、エラーが発生し –

答えて

0

要するに、statisticは、1つの引数を持つ関数を期待しています。部分的にweight_dataを適用する関数を作成し、あなたの呼び出しでそれを使用します。

+0

「を例外TypeError :aとweightsの形が異なる場合、Axisを指定する必要があります。 " weight_dataが単一のビンのサイズになることを期待しているからだと思います。これを各ビンに適用したいと考えています。 – pqRS