Mustererkennung im Streudiagramm

7

Unten sehen Sie ein Streudiagramm (maximal 10.000 US-Dollar), das die durchschnittliche Spende darstellt, die ein Projekt erhält, und die Wortzahl des Aufsatzes über die Finanzierungsanfrage für alle Projekte, die in den offenen Spenderauswahldaten dargestellt sind .

Spendenbetrag gegen Aufsatzlänge

Es gibt ein auffälliges Muster, das ich durch Anpassen der Kurve zu charakterisieren versuchte

f(x)=(axb)2

durch manuelle Parametermanipulation. Ich würde jedoch gerne andere Möglichkeiten kennen, wie Sie sich der Modellierung nähern oder Muster / Beziehungen in Daten finden können, die so aussehen.


Hier ist die Ungleichheit, die meine Suche nach anderen Methoden motiviert:

Im kanonischen Beispiel für die lineare Regression sind die Streupunkte Abweichungen von einer Kurve. In diesem Beispiel ist dies eindeutig nicht der Fall, da die Punkte anscheinend in einem bestimmten Bereich zusammengefasst sind.

brownie_in_motion
quelle
2
Enthalten Ihre Daten exakte Nullen in der y-Variablen? Was ist mit der x-Variablen? Warum hast du es verschlossen? Wie viel höher gehen die Werte?
Glen_b -Reinstate Monica
Ja, genaue Nullen in beiden. Ich habe gekappt, um die Struktur in der dargestellten Nachbarschaft besser sichtbar zu machen. Exorbitante Werte über 10k verzerrten die Handlung. Die Werte gehen so hoch wie 100k
brownie_in_motion
4
Das "Muster" erscheint illusorisch. Anscheinend wird versucht, einen oberen Umschlag der Antwort aufzuspüren. Obwohl dies möglich wäre, ist dies mit einem derart überfüllten Diagramm nicht möglich, und es wurde eindeutig nicht korrekt ausgeführt, da die Spur links extrem hohen Perzentilen entspricht, rechts jedoch immer niedrigere Perzentile markiert. Erwägen Sie eine aufschlussreichere Untersuchung der Daten, z. B. die Verwendung Ihrer Software zum Zeichnen von Spuren ausgewählter Perzentile für schmale Bänder von Wortzahlen.
whuber
4
Es ist schwer zu sagen, da das Streudiagramm gesättigt ist, aber ich würde vermuten, dass das Muster, dh eine erhöhte Finanzierung im Bereich von 500 bis 3000 Wörtern, ein Artefakt aufgrund einer höheren Dichte von Datenpunkten in diesem Bereich ist. Wenn Sie den Vorschlag von whuber versuchen, sieht die durchschnittliche Finanzierung in Abhängigkeit von der Wortzahl möglicherweise viel weniger dramatisch aus.
R Greg Stacey
1
Stimmen Sie mit @whuber überein. Ich denke, Sie versuchen vielleicht, so etwas wie eine univariate Dichteschätzung auf ein bivariates Streudiagramm anzuwenden, aber das macht nicht viel Sinn. Ein geeigneteres Werkzeug wäre ein bivariates Histogramm oder eine bivariate Dichte.
Dsaxton

Antworten:

15

Um meinen Kommentar näher zu erläutern, hier ein Beispiel dafür, wie Ihr scheinbares Muster ein Artefakt sein kann, das durch die Verteilung von Daten entlang der x-Achse verursacht wird. Ich habe 100.000 Datenpunkte generiert. Sie sind normalerweise auf der x-Achse verteilt ( ) und exponentiell auf der y-Achse verteilt ( ).μ=2500,σ=600λ=1

Geben Sie hier die Bildbeschreibung ein

Nach der "visuellen Hüllkurve" des Streudiagramms gibt es ein klares, wenn auch illusorisches Muster: y sieht im Bereich 1000 <x <4000 maximal aus. Dieses visuell sehr überzeugende Muster ist jedoch nur ein Artefakt, das durch die Verteilung der x-Werte verursacht wird. Das heißt, es gibt nur mehr Daten im Bereich 1000 <x <4000. Sie können dies im x-Histogramm unten sehen.

Um dies zu beweisen, habe ich den durchschnittlichen y-Wert in Bins von x (schwarze Linie) berechnet . Dies ist für alle x ungefähr konstant. Wenn die Daten gemäß unserer Intuition aus dem Streudiagramm verteilt wurden, sollte der Durchschnitt im Bereich 1000 <x <4000 höher sein als der Rest - aber das ist nicht der Fall. Es gibt also wirklich kein Muster.

Ich sage nicht, dass dies die ganze Geschichte mit Ihren Daten ist. Aber ich würde wetten, dass es eine teilweise Erklärung ist.

Nachtrag mit tatsächlichen Spendern Daten auswählen.

Original-Streudiagramm mit markanten Markierungen:

Geben Sie hier die Bildbeschreibung ein

Gleiches Streudiagramm mit reduzierter Opazität:

Geben Sie hier die Bildbeschreibung ein

Es erscheinen verschiedene Muster, aber mit 800K-Datenpunkten gehen immer noch viele Details durch Überstrichen verloren.

Zoomen, Deckkraft wieder reduzieren und glatter hinzufügen:

Geben Sie hier die Bildbeschreibung ein

R Greg Stacey
quelle
1
Manchmal hilft es, Transparenz auf den Markierungen zu verwenden, um eine Vorstellung von der Dichte zu bekommen.
Xan
2
@ Xan Einverstanden. Ich habe mit so vielen Markierungen (oder praktisch jede beliebige Anzahl viel größer als 10K) müssen Sie die maximal mögliche Transparenz verwenden , um zu sehen , was passiert, in der Mitte einer Punktwolke, wie festgestellt , dass col="#00000001"in R. Bei fast einer Million Punkten ist eine Glättung unerlässlich. Es ist eine gute Idee, die Reichweite viel kürzer zu machen, als sie normalerweise für kleinere Punktwolken verwendet wird, damit mehr lokale Details erfasst werden.
whuber
3

Ich würde vermuten, dass Ihre Variable auf der Y-Achse exponentiell verteilt ist ( ), aber es scheint, dass der Ratenparameter entsprechend der normalen Dichtewahrscheinlichkeit Ihrer Variablen auf variiert X-Achse.p(y)=λeλyλ

Ich habe mit MatLab zufällige Daten unter Verwendung der Normalverteilung für X und der Exponentialverteilung für Y mit generiert und mit Ihren Daten ein ähnliches Ergebnis erzielt:λ=p(x)

Geben Sie hier die Bildbeschreibung ein

Sie können maschinelles Lernen versuchen, um die Parameter anzupassen, und Ihre Kostenfunktion ändern, um die Wahrscheinlichkeitsdichte und den Ratenparameter für jeden Behälter in Ihrem 'Histogramm' zu vergleichen. Wenn ja, vergessen Sie nicht, den Zufallsgenerator bei jeder Iteration einige Male auszuführen, um die Kosten zu minimieren.

Hier ist der Code, den ich für die Handlung verwendet habe:

% 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))
Mauricio Ramalho Custodio
quelle
1

Die Frage erwähnt die Regression, die typischerweise die bedingte Erwartung anspricht: wobei die durchschnittliche Spende und die Anzahl der Wörter ist. Die lineare Regression kann zu restriktiv sein, sodass ein lokaler Regressionsansatz wie die Nadaraya-Watson-Kernel-Regression angewendet werden kann. Die Ergebnisse könnten von der Wahl der Bandbreite abhängen: Eine große Bandbreite könnte interessante lokale Variationen maskieren.

E[y|x]=yp(y|x)dy,
yx

Generell ist die Frage der Unabhängigkeit zwischen und interessant. Wenn und unabhängig sind, dann ist und natürlich ist auch die bedingte Erwartung unabhängig. Aber könnte in interessanter Weise von abhängen, selbst wenn die bedingte Erwartung unabhängig von .xyxyp(y|x)=p(y)yxx

Bei so vielen Daten würde ich Histogramme von , die alle fast den gleichen Wert von und sehen, wie sich das Histogramm ändert, wenn sich der gewählte Wert von ändert. Erst nach einer solchen Untersuchung würde ich darüber nachdenken, wie ich formeller vorgehen soll.yxx

mef
quelle