0

ため平滑加重:ローカル次のように私は確率変数を有するバイナリ値の確率変数

F(X)=確率gを有する1(X)

F(X)=確率1-G 0 (X)

G(x)は

G(X)= xを想定あります。のは、次のように私は100個のサンプルを関数gを知らなくても、この変数を観察して得られていましょう:

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.stats import binned_statistic 

list = np.ndarray(shape=(200,2)) 

g = np.random.rand(200) 
for i in range(len(g)): 
    list[i] = (g[i], np.random.choice([0, 1], p=[1-g[i], g[i]])) 

print(list) 
plt.plot(list[:,0], list[:,1], 'o') 

Plot of 0s and 1s

今、私はこれらの点から関数gを取得したいと思います。

bin_means, bin_edges, bin_number = binned_statistic(list[:,0], list[:,1], statistic='mean', bins=10) 
plt.hlines(bin_means, bin_edges[:-1], bin_edges[1:], lw=2) 

Histogram mean statistics

代わりに、私は生成機能の継続的な評価を持っているしたいと思います:私が考えることができる最高のは、ヒストグラムを描く使用し、平均の統計を使用することです。

私はそれがカーネル密度推定であると思いますが、適切なポインタが見つかりませんでした。

+0

あなたはkatsを 'Statsmodels'' sklearn'で見つけることができ、 'scipy'はkadesも持っています。プロットだけで '海軍(seaborn) 'を見たいと思ったら、' distplot'や 'kdeplot'です。しかし、なぜバイナリデータにkdeが必要ですか? –

+0

@MarvinTaschenberger kdeに関する私の発言が誤解を招く可能性があります。ロジスティック回帰問題があるようです。 https://en.wikipedia.org/wiki/Logistic_regression#Example:_Probability_of_passing_an_exam_versus_hours_of_study。しかし、私はモデルに合うようにはしていません。私は円滑な方法でそれをプロットしたい。 – user1860037

+0

これも関連性があります:http://thestatsgeek.com/2014/09/13/checking-functional-form-in-logistic-regression-using-loess/ – user1860037

答えて

0

簡単な明示的に推定フィッティングなし:x=あなたの外生変数と同様にy =従属変数に

import seaborn as sns 
g = sns.lmplot(x= , y= , y_jitter=.02 , logistic=True) 

プラグを。 y_jitterはジッタであり、データポイントが多い場合には視認性が向上します。 logistic = Trueがここにあります。それはあなたにデータのロジスティック回帰直線を与えるでしょう。

Seabornは基本的にmatplotlibの周りに作られていて、データをDataFrameに拡張したい場合にはpandasでうまくいきます。

+0

今、私が探していたものは、局所的に重み付けされている散布図スムージング。 snを指していただきありがとうございます。 df = pd.DataFrame() df ['x'] = list [:、0] df ['y'] = list [:、1] sns.lmplot(x = 'x'、y = ' y '、data = df、lowess = True) plt.show() – user1860037