問題タブ [kernel-density]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 2D カーネル密度 e. in python - x軸が混雑して縮小
x,y
KDEを取得するためのポイントの分布がありますscipy.stats.gaussian_kde.
kms
とはどちらもmins
、キロメートルを移動するのに必要な時間を表す float 値のリストです。
値は次の範囲に分散されます。
mins
: [3.48996296296 - 317.678638298]kms
: [0.180707205317 - 8086.94362983]
その結果、高い線と狭い線が表示されます。y の値は正常に表示されますが、x 軸は非常に狭く縮んでいます (目盛りが重なり合っています)。誰かが x 軸をさらに伸ばす方法を指摘できますか?
プロットを生成するための私のコードは次のとおりです。
そして、ここにプロット自体があります:
r - geom_density/stat_density から AUC の値を表示する方法
ggplot2 と stat_density を使用していくつかの密度プロットを作成しました。私の同僚は、各曲線の下の面積の合計が 1 になるとは確信していないと言いました。それで、私は曲線の下の面積を計算することに着手しました。
これが私がしたことの例です:
結果:
まともに機能しているように見えますが、これを行うより良い方法があるかどうか疑問に思います。特に、間隔の計算 (つまり、dx だと思います) は、特に異なる密度曲線が異なる間隔を使用する場合、問題になる可能性があるようです。
r - Rで異なるサイズの間隔を参照してデータを再編成する
私は次のデータセットを持っています。数値は(異なるサイズの)間隔を参照しています:
次のように(近似)データセットを取得したいと思います。
この目的のために、次のことを試しました。最初にsample(6000:7500, 704790, replace=TRUE)
、各行に使用し、結果を連結して、生成されたrpop
観測のベクトルを作成しました。次に、関数を適用しました(分布を滑らかにするためdensity
に、パラメーターのさまざまな値を試しました)bw
d$x
必要な収入レベルを与えますが、数値はに比例しますd$y
ただし、同じ結果を得るためのより良い (より直接的またはエレガントな) 方法があるのではないかと思います。
r - R での 2D カーネル密度推定のための別のカーネルの実装
データが表面上にあるため、典型的な距離を使用する代わりに、等方性分散と二変量正規カーネルを使用して、2 次元カーネル密度法を実装する方法を理解するための助けを探しています。地球、大円距離を使用する必要があります。
これをRで複製したいのですが、組み込みの推定器に対して単純なユークリッド距離以外の距離メトリックを使用する方法がわかりません。また、畳み込みを伴う複雑な方法を使用してカーネルを追加するためです. 任意のカーネルをプログラムする方法を持っている人はいますか?
python - sklearn の 2D KDE 帯域幅と scipy の帯域幅の関係
2 次元配列のsklearn.neighbors.KernelDensityとscipy.stats.gaussian_kdeのパフォーマンスを比較しようとしています。
この記事から、帯域幅 (bw) が関数ごとに異なる方法で処理されていることがわかります。この記事では、正しい bw を に設定するためのレシピを提供しているscipy
ため、 で使用されているものと同等になりますsklearn
。基本的に、bw をサンプルの標準偏差で割ります。結果は次のとおりです。
x
KDE を取得するために使用しているサンプル配列はどこにありますか。これは 1D では問題なく機能しますが、2D では機能しません。
これが私が得たMWE
ものの一部です:
(ログ値を返すためiso2
、指数として表示されます)sklearn
私が得た結果は異なりiso1
、iso2
帯域幅を(どちらの関数でも)どのように影響させて(必要に応じて)等しくする必要があるのか わかりません。
追加
で同等の結果を得るには、 でカーネルを計算する前にsklearn
値をスケーリングする必要があることを (ep から) チャットでアドバイスされました。(x,y)
scipy
sklearn
だからこれは私がやったことです:
scipy
つまり、カーネルを取得する前に、カーネルを取得する行をそのままにして、両方の次元をスケーリングしましたsklearn
。
これにより、より良い結果が得られましたが、取得されたカーネルにはまだ違いがあります。
赤い点は(x1,y1)
コード内のポイントです。ご覧のとおり、非常に小さいものではありますが、密度推定の形状にはまだ違いがあります。おそらくこれが達成できる最高のものでしょうか?
python - Pythonのmatplotlibのseabornによるカーネル密度推定の下限
私は測定された木の直径のコレクションを持っており、カーネル密度の推定値を python の上に重ねてヒストグラムをプロットしようとしています。seaborn モジュールを使用すると、これを非常に簡単に行うことができますが、負の数に対して kde をゼロにするように指定する方法が見つかりません (ツリーは負のツリー直径を持つことができないため)。
私が現在持っているのはこれです:
distplot が呼び出す関数である seaborn.kdeplot を見てきましたが、有用なものが見つかりません。これが seaborn で実行できるかどうか、そうでない場合は matplotlib でより一般的に実行できるかどうかを知っている人はいますか?
kde pyplot.plot() を pyplot.hist() でオーバーレイする方法がわからなかったので、seaborn を使い始めただけです。