So erkennen Sie polarisierte Meinungen von Benutzern (hohe und niedrige Sternebewertung)

15

Wenn ich ein Sternebewertungssystem habe, in dem Benutzer ihre Präferenz für ein Produkt oder einen Artikel ausdrücken können, wie kann ich statistisch feststellen, ob die Stimmen stark "geteilt" sind. Das heißt, selbst wenn der Durchschnitt für ein bestimmtes Produkt 3 von 5 ist, wie kann ich anhand der Daten feststellen, ob dies eine Aufteilung von 1 bis 5 im Vergleich zu einem Konsens 3 ist (keine grafischen Methoden)?

David Williams
quelle
3
Was ist falsch an der Verwendung einer Standardabweichung?
Spork
1
Keine Antwort, aber relevant: evanmiller.org/how-not-to-sort-by-average-rating.html
Fractional
1
Versuchen Sie, "bimodale Verteilung" zu erkennen? Siehe stats.stackexchange.com/q/5960/29552
Ben Voigt
1
In der Politikwissenschaft gibt es eine Literatur zur Messung der politischen Polarisation, die verschiedene Arten der Definition des Begriffs "Polarisation" untersucht hat. Ein schönes Papier, in dem 4 verschiedene einfache Arten der Polarisationsdefinition ausführlich behandelt werden, ist das Folgende (siehe S. 692-699): educ.jmu.edu/~brysonbp/pubs/PBJ.pdf
Jake Westfall

Antworten:

12

Man könnte einen Polarisationsindex konstruieren; Wie genau man es definiert, hängt davon ab, was es bedeutet, polarisierter zu sein (dh was genau meinen Sie in bestimmten Randfällen mit mehr oder weniger polarisiert?):

Wenn der Mittelwert beispielsweise "4" ist, ist eine 50-50-Aufteilung zwischen "3" und "5" mehr oder weniger polarisiert als 25% "1" und 75% "5"?

Sowieso ohne diese Art der spezifischen Definition von, was Sie bedeuten, schlage ich ein Maß vor, das von der Abweichung basiert:

Definieren Sie bei einem bestimmten Mittelwert die möglichst polarisierte Aufteilung als diejenige, die die Varianz maximiert *.

* (Hinweis: 25% '1' und 75% '5' sind wesentlich mehr Split polarisieren als 50-50 von ‚3s und‘ 5 ist, und wenn das nicht verwenden Varianz nicht Ihre Intuition entspricht)

Dieser Polarisationsindex ist also der Anteil der größtmöglichen Varianz ( mit dem beobachteten Mittelwert) ) an der beobachteten Varianz.

Nennen Sie die Durchschnittsnote ( m = ˉ xmm=x¯ ).

Die maximale Varianz tritt auf, wenn ein Anteil ist bei5und1-pist bei1; dies hat eine Varianz von (m-1)(5-m)np=m-1451-p1(m-1)(5-m)nn-1 .

Nimm einfach die Varianz der Stichprobe und dividiere durch ; Dies ergibt eine Zahl zwischen0(perfekte Übereinstimmung) und1(m-1)(5-m)nn-101 (vollständig polarisiert).

Für eine Reihe von Fällen, in denen die durchschnittliche Bewertung 4 ist, würde dies Folgendes ergeben:

Bildbeschreibung hier eingeben


Sie bevorzugen könnten stattdessen nicht sie in Bezug auf die größtmögliche Varianz mit dem gleichen Mittelwert zu berechnen, sondern als Prozentsatz der größtmöglichen Varianz für jede mittlere Bewertung . Das würde bedeuten, stattdessen durch 4 n zu teilen und ergibt wieder einen Wert zwischen 0 (perfekte Übereinstimmung) und14nn-11 (an den Extremen in einem Verhältnis von 50 zu 50 polarisiert). Dies würde die gleichen Relativitäten ergeben wie das obige Diagramm, aber alle Werte wären 3/4 so groß (dh von links nach rechts, von oben nach unten wären sie 0, 16,5%, 25%, 25%, 50) % und 75%).

Beides ist eine absolut gültige Wahl - ebenso wie jede andere alternative Möglichkeit, einen solchen Index zu erstellen.

Glen_b - Setzen Sie Monica wieder ein
quelle
Aber dann, wenn m = 1Sie 1 - 1 = 0und bekommen 0 / 0. Wie korrigieren Sie das?
Francesco
@Franceso Guter Punkt. Wenn oder m = 5 ist, ist die Formel für die erste Form undefiniert. Unter verschiedenen Annahmen scheint das Limit jedoch 1 zu sein, was wahrscheinlich das ist, was ich verwenden würde. Wenn jemand es für diesen Randfall als 1 oder 0 definieren möchte, erscheint es mir vernünftig. m=1m=5
Glen_b
8

"Keine grafischen Methoden" ist eine Art großes Handicap, aber ... hier sind ein paar seltsame Ideen. Beide behandeln die Bewertungen als fortlaufend, was eine konzeptionelle Schwäche darstellt und wahrscheinlich nicht die einzige ...

Kurtosis

  • Die Kurtosis von {1,1,1,5,5,5} = 1. Sie erhalten keine niedrigere Kurtosis mit einer Kombination von 1–5 Bewertungen.
  • Die Kurtosis von {1,2,3,4,5} = 1,7. Niedriger bedeutet extremere Werte; höher bedeutet mehr Mitte.
  • Dies funktioniert nicht, wenn die Verteilung nicht ungefähr symmetrisch ist. Ich werde unten demonstrieren.

Negative binomiale Regression

ReintichnGFrequency1312153749537
FrequencyReintichnG+ReintichnG -Koeffizient sollte nahe Null sein, wenn die Bewertungengleichmäßig verteilt sind, positiv, wenn proportional mehr Mittelbereichswerte vorliegen (sieheBinomialverteilung), oder negativ bei polarisierten Verteilungen wie der obigen, für die der Koeffizient gilt: 11.8.ReintichnG

FWIW, hier ist der Code , den ich mit dem Spielen um habe:

x=rbinom(99,4,c(.1,.9))+1;y=sample(0:4,99,replace=T)+1 #Some polarized & uniform rating data
table(x);table(y)                                                         #Frequencies
require(moments);kurtosis(x);kurtosis(y)                                  #Kurtosis

Y=data.frame(n=as.numeric(table(y)),rating=as.numeric(levels(factor(y)))) #Data frame setup
X=data.frame(n=as.numeric(table(x)),rating=as.numeric(levels(factor(x)))) #Data frame setup
require(MASS);summary(glm.nb(n~rating+sqrt(rating),X))  #Negative binomial of polarized data
summary(glm.nb(n~rating+sqrt(rating),Y))                #Negative binomial of uniform data

Kann nicht widerstehen, in einem Grundstück zu werfen ...

require(ggplot2);ggplot(X,aes(x=rating,y=n))+geom_point()+stat_smooth(formula=y~x+I(sqrt(x)),method='glm',family='poisson')

Das ReintichnG



Bearbeiten: Ich habe gerade gesehen, wie diese Frage in der Seitenleiste beworben wurde: und als ich darauf klickte, habe ich sie in den Hot Network Questions gesehen, die sich wieder auf sich selbst verlinken, wie es manchmal passiert ,

Daher dachte ich, dass dies in einer allgemeineren, nützlichen Art und Weise eine Wiederholung verdienen könnte. Ich habe mich entschlossen, meine Methoden an den Amazon-Kundenrezensionen für The Mountain Three Wolf Moon - Kurzärmliges T-Shirt zu testen :

ReintichnG12345Frequency20854891982273


βReintichnG=-19.1

σFrequencyThe Mountain Three Wolf Moon Kurzarm-T-Shirt Bewertungen2=1,31
x=rep(5:1,c(2273,198,89,54,208))var(x)/(4*length(x)/(length(x)-1))

Nick Stauner
quelle
Es ist ungefähr 0,77 für die erste Version des Polarisationsindex (dh relativ zu der am stärksten polarisierten unter Berücksichtigung der mittleren Bewertung), aber ja, wie Sie sagen, 0,33 für die zweite Version (relativ zu der am stärksten polarisierten Verteilung, die möglich ist).
Glen_b -Reinstate Monica
@ Glen_b: Und ist die erste Version nicht weniger geeignet, wenn der Mittelwert nicht über verschiedene Gruppen von Ratings hinweg festgelegt wurde, die verglichen werden müssen? Oder habe ich deine Antwort falsch verstanden?
Nick Stauner
Es kommt darauf an, was das Ziel ist. Nach dem Titel "Wie erkenne ich polarisierte Meinungen ? " Zu urteilen, neige ich zu der ersten ( bei der durchschnittlichen Bewertung, wie polarisiert ist die Meinung darüber? ). Wenn es tatsächlich darum ging, verschiedene Ratingsätze zu vergleichen, ist es möglicherweise sinnvoller, mit dem zweiten Ansatz zu arbeiten, wie Sie vorschlagen. Deshalb habe ich beides getan. Mein Kommentar war in keiner Weise als Kritik gedacht; Ich bin geschmeichelt, dass Sie es überhaupt erwähnt haben.
Glen_b
@ Glen_b: Verstanden :) TBH, ich schlage vor, dass der Ansatz der negativen binomialen Regressionsmodellierung besser ist, aber ich gebe zu, dass ich ihn kaum gründlich getestet habe. Ich habe das Gefühl, dass die meisten real polarisierten Ratingsätze nicht gleichmäßig polarisiert sind, daher denke ich, dass Robustheit gegen Asymmetrie für zukünftige Leser wichtig sein wird.
Nick Stauner
5

Ich denke, ein einfacher Weg ist, die Varianz zu berechnen. In einem einfachen System wie diesem würde eine höhere Varianz mehr 1s / 5s bedeuten. BEARBEITEN Kurzes Beispiel: Wenn Ihre Werte 1,3,3,5 sind, beträgt Ihre Varianz:

(1-3)2+(3-3)2+(3-3)2+(5-3)24=1
Wenn Ihre Zahlen 1,1,5,5 sind, wird Ihre Varianz sein:
(1-3)2+(1-3)2+(5-3)2+(5-3)24=2
Duncan
quelle
2

Ich bezweifle, dass ich den geschickten Antworten, die ich bereits gegeben habe, etwas Wertvolles hinzufügen kann. Insbesondere, um die gute Idee von @ Glen_b zu beurteilen, wie die beobachtete Varianz relativ nahe an der maximalen Varianz liegt, die unter dem beobachteten Mittelwert möglich ist. Bei meinem eigenen Vorschlag, der direkt von der Schulter ausgeht, geht es stattdessen um ein robustes Maß für die Streuung, das nicht auf Abweichungen von einem Mittelpunkt, sondern direkt auf Abständen zwischen Datenpunkten basiert.

Berechnen Sie paarweise Abstände (absolute Differenzen) zwischen allen Datenpunkten. AussteigendichichNull Entfernungen. Berechnen Sie eine zentrale Tendenz bei der Verteilung der Abstände (Sie haben die Wahl; dies kann zum Beispiel ein Mittelwert, ein Median oder ein Hodges-Lehmann-Zentrum sein ).

Rating scale                   Distances      Mean     Median    Hodges-Lehmann
1  2  3  4  5

Frequency distributions:

1     2     1                 0 2 2 2 2 4      2          2          2

2           2                 0 0 4 4 4 4      2.7        4          2

1        2  1                 0 1 1 3 3 4      2          2          2

1  1  1     1                 1 1 2 2 3 4      2.2        2          2

1  1     1  1                 1 1 2 3 3 4      2.3        2.5        2.5

1           3                 0 0 0 4 4 4      2          2          2

Wie Sie sehen, können die 3 Statistiken als Maß für "Polarisation" sehr unterschiedlich sein (wenn ich "Nichtübereinstimmung" anstelle einer bipolaren Konfrontation messen würde, würde ich wahrscheinlich HL wählen). Es ist deine Entscheidung. Eine Idee: Wenn Sie quadrierte Entfernungen berechnen , wird der Mittelwert direkt mit der üblichen Abweichung in den Daten in Beziehung gesetzt (und Sie gelangen zu @ Duncans Vorschlag, die Abweichung zu berechnen). Die Berechnung von Entfernungen wird auch mit großen nicht allzu schwierigN da hier die bewertungsskala deskret und mit relativ wenigen noten versehen ist, bietet sich natürlich ein frequenzgewichtungsalgorithmus zur entfernungsberechnung an.

ttnphns
quelle
Der Mittelwert der paarweisen quadratischen Abstände hängt mit der Varianz zusammen.
Glen_b
0

Wie wäre es, wenn die 3-Sterne-Bewertung kleiner ist als der Durchschnitt der 5 und 4 und auch kleiner als der Durchschnitt der 1 und 2:

if (number_of_ratings > 6)      // kind of meaningless unless there's enough ratings
{
    if ( ((rating(5)+rating(4))*0.5 > rating(3)) &&
         ((rating(1)+rating(2))*0.5 > rating(3))
       )    
    {
        // Opinion divided
    }
    else
    {
        // Opinion not divided
    }
}
else
{
    // Hard to tell yet if opinion is divided
}

Ich kann mir keine Situation vorstellen, in der das nicht funktionieren würde. Am Beispiel oben: Amazon-Kundenrezensionen für The Mountain Three Wolf Moon-Kurzarmshirt :

ReintichnG12345Frequency20854891982273

In diesem Fall:

ReintichnGeinvereinGe(1,2)3einvereinGe(4,5)Frequency131891235

Dies würde den Test bestehen und als geteilte Meinung angesehen werden.

Raketenmagnet
quelle
1
Was wäre, wenn es viele 2er und 4er und relativ wenige andere Bewertungen gäbe ? Es ist schwer vorstellbar, dass dies in der Realität geschieht, aber möchte man das wirklich polarisiert nennen?
Nick Stauner
Wenn man sich das überlegt, könnte man leichter Fälle mit vielen Einsen und Fünfsen, sehr wenigen Zweisen und Viersen und einer moderaten Menge von Dreisen finden. Zum Beispiel,
ReintichnG12345Frequency25515525
Das ist ziemlich polarisiert, nein? Dabei würde Ihre Methode das gleiche Ergebnis liefern wie bei einer gleichmäßigen Verteilung von 15 jeder Bewertung.
Nick Stauner
0

Ich denke, was Sie suchen, ist Standardabweichung:

σ=ich=0n(xich-μ)2nwo σ ist Standardabweichung, n ist die Anzahl der Datenpunkte,x repräsentiert alle Datenpunkte undμ ist der Mittelwert.

Ich weiß nicht, um welche Programmiersprache es sich handelt, aber hier ist eine Java-Methode, mit der Sie die Standardabweichung ermitteln können:

public static double standardDeviation(double[] data) {
            //find the mean
    double sum = 0;
    for(double x:data) {
        sum+=x;
    }
    double mean = sum/data.length;

            //find standard deviation
    Double sd;
    sd=0.0;
    for(double x:data) {
        sd+=Math.pow((x-mean),2);
    }
    sd=sd/data.length;
    sd=Math.sqrt(sd);

    return sd;
}
anonym
quelle