散布図でのパターン検出


7

以下は、プロジェクトが受け取る平均寄付と、開いているDonors Choose Dataに表示されているすべてのプロジェクトの資金提供依頼エッセイの単語数を表す散布図(1万ドルを上限)です。

寄付金額とエッセイの長さ

目立つパターンがありますが、カーブを当てはめて特徴付けようとしました

f(x)=(axb)2

手動でのパラメーター操作。ただし、このようなデータのモデリングやパターン/関係の検索にアプローチする他の方法を知りたいのですが。


他の方法を探す動機となる格差は次のとおりです。

線形回帰の標準的な例では、散在点は曲線からの逸脱です。この例では、ポイントが特定のエリアの下に集まっているように見えるため、明らかにそうではありません。


2
データのy変数に正確なゼロが含まれていますか?x変数はどうですか?なぜキャップしたの?値はどのくらい高くなりますか?
Glen_b-2016

はい、両方とも正確にゼロです。近所の構造をよりよく視覚化するためにキャップをしました。10kを超える法外な値はプロットを歪めました。値は 100kまで高くなります
brownie_in_motion '

4
「パターン」は幻想的に見えます。どうやら、それは応答のいくつかの上部エンベロープを追跡しようとしています。それは可能ですが、そのような雑然としたプロットでは不可能であり、明らかに正しく実行されていません。左側ではトレースが非常に高いパーセンタイルに対応していますが、右側では低いパーセンタイルを示しています。ソフトウェアを使用して、選択したパーセンタイルのトレースをワードカウントの狭いバンドに描画するなど、データをさらに詳しく調査することを検討してください。
whuber

4
散布図が飽和しているのでわかりにくいですが、パターン、つまり500〜3000ワードの範囲で増加した資金調達は、その範囲のデータポイントの密度が高いためにアーティファクトであると思います。whuberの提案を試してみると、単語数の関数としての平均的な資金調達はそれほど劇的ではないように見えるかもしれません。
Rグレッグステイシー2016

1
@whuberに同意します。あなたは一変量密度推定のようなものを二変量散布図に適用しようとしているかもしれませんが、これはあまり意味がありません。より適切なツールは、2変量のヒストグラムまたは密度です。
dsaxton 2016年

回答:


15

私のコメントを詳しく説明するために、ここに、x軸に沿ったデータの分布が原因で、見かけのパターンがアーチファクトになる可能性がある例を示します。100,000データポイントを生成しました。それらは通常、x軸()に分布し、y軸()に指数分布します。μ=2500,σ=600λ=1

ここに画像の説明を入力してください

散布図の「視覚的包絡線」に続いて、明確ではありますが、図解的なパターンがあります。yは、1000 <x <4000の範囲で最大に見えます。ただし、この見かけ上のパターンは視覚的に非常に説得力があり、x値の分布によって引き起こされる単なるアーティファクトです。つまり、1000 <x <4000の範囲のデータが増えます。これは、下部のxヒストグラムで確認できます。

それを証明するために、私はxのビン(黒い線)で平均 y値を計算しました。これはすべてのxに対してほぼ一定です。データが散布図の直観に従って分布した場合、1000 <x <4000の範囲の平均は他の平均よりも高くなるはずですが、そうではありません。したがって、実際にはパターンはありません。

これがあなたのデータのすべての話だと言っているのではありません。しかし、それは部分的な説明だと思います。

実際のドナーの補遺データを選択してください。

重ね打ちマーカー付きの元の散布図:

ここに画像の説明を入力してください

不透明度を下げた同じ散布図:

ここに画像の説明を入力してください

さまざまなパターンが表示されますが、80万個のデータポイントがあるため、オーバーストライキングで失われた詳細はまだたくさんあります。

ズームし、不透明度を再度減らして、より滑らかにします。

ここに画像の説明を入力してください


1
密度を把握するためにマーカーに透明度を使用すると役立つ場合があります。
xan

2
@xan同意。私は、この多くのマーカー(または実質的に10Kよりも任意の数もはるかに大きい)で、あなたのような、点群の中心で何が起こっているかを確認するために、可能な最大の透明性を使用する必要があることを発見したcol="#00000001"の中でR。100万点近くあるため、スムージングは​​不可欠です。より小さな点群に通常使用するよりも範囲をはるかに短くして、よりローカルな詳細を取得することをお勧めします。
whuber

3

私はあなたのY軸上の変数が指数的に分布していると思います(p(y)=λeλy)、ただし、レートパラメータは λ X軸上の変数の通常の密度確率に応じて変化します。

Xの正規分布とYの指数分布を使用して、MatLabでランダムデータを生成しました。 λ=p(x) そして、私はあなたのデータで同様の結果を得ました:

ここに画像の説明を入力してください

パラメータに合うように機械学習を試して、コスト関数を変更して、「ヒストグラム」の各ビンの確率密度とレートパラメータを比較できます。その場合は、コストを最小限に抑えるために、各反復でランダムジェネレーターを数回実行することを忘れないでください。

これが私がプロットに使用したコードです:

% Normal distribution generation.
x = randn(10000,1);
x = x - min(x);                     % Shifting curve so every x is > 0.

% Histogram informations
k = 100;                            % Number of bins.
binSize = (max(x) - min(x)) / k;    % Width of bins.
y = 0:(k);
y = y .* binSize + min(x);          % Array with Intervals.

p = zeros(k,1);
data = [];

% For every bin...
for i = 1:k
    a = x(x >= y(i) & x < y(i + 1));    % All X values within condition.
    p(i) = size(a,1);                   % Number of occurences (or
                                        % Normal Density Probability).

    if ~isempty(a)
        for j = 1:p(i)

            % lambda = Rate parameter of exponential distribution
            % Rate parameter is varying with normal density probability.
            lambda = p(i);

            % Every X in normal distribution will have a Y
            % which was generated randomly by the exponential 
            % distribution function EXPRND.
            data = [data; a(j), exprnd(lambda)];

        end
    end
end

% Plotting normal distribution VS modified exponential distribution
scatter(data(:,1),data(:,2))

1

質問は、通常、条件付き期待に対処する回帰について言及しています。

E[y|x]=yp(y|x)dy,
どこ y は平均寄付です x単語数です。線形回帰は制限が多すぎる可能性があるため、Nadaraya-Watsonカーネル回帰などのローカル回帰アプローチを適用できます。結果は、帯域幅の選択に影響を受けやすい可能性があります。広い帯域幅は、興味深いローカルな変動を隠す可能性があります。

より一般的には、間の独立性の問題 x そして yは興味深い。もしx そして y そのとき独立している p(y|x)=p(y)そしてもちろん、条件付き期待も独立しています。だがy 依存するかもしれません x 条件付き期待が独立している場合でも、興味深い方法で x

非常に多くのデータがあるので、ヒストグラムを調べます y すべてがほぼ同じ価値を持つ x そして、選択した値としてヒストグラムがどのように変化するかを確認します x変更。そのような調査を経てはじめて、もっと正式に進む方法を考えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.