Como detectar opiniões polarizadas de usuários (classificações de estrelas altas e baixas)


15

Se eu tiver um sistema de classificação por estrelas em que os usuários possam expressar sua preferência por um produto ou item, como posso detectar estatisticamente se os votos estão altamente "divididos". Ou seja, mesmo que a média seja 3 de 5, para um determinado produto, como posso detectar se essa é uma divisão de 1 a 5 em relação a um consenso 3, usando apenas os dados (sem métodos gráficos)


3
O que há de errado em usar um desvio padrão?
Spork

11
Não é uma resposta, mas relevante: evanmiller.org/how-not-to-sort-by-average-rating.html
Fractional

11
Você está tentando detectar "distribuição bimodal"? Veja stats.stackexchange.com/q/5960/29552
Ben Voigt

11
Na ciência política, há uma literatura sobre a medição da polarização política que examinou várias maneiras diferentes de definir o que se entende por "polarização". Um bom artigo que discute detalhadamente quatro maneiras simples diferentes de definir a polarização é o seguinte (consulte as páginas 692-699): educ.jmu.edu/~brysonbp/pubs/PBJ.pdf
Jake Westfall

Respostas:


12

Pode-se construir um índice de polarização; exatamente como se define depende do que constitui ser mais polarizado (ou seja, o que exatamente você quer dizer, em casos específicos de borda, por mais ou menos polarizado?):

Por exemplo, se a média for '4', uma divisão de 50 a 50 entre '3' e '5' é mais ou menos polarizada que 25% '1' e 75% '5'?

De qualquer forma, na ausência desse tipo de definição específica do que você quer dizer, vou sugerir uma medida baseada na variação:

Dada uma média específica, defina a divisão mais polarizada possível como a que maximiza a variação *.

* (NB que diria que 25% '1' e 75% '5' é substancialmente mais polarizado do que 50-50, divisão dos '3 e 5'; se isso não corresponder à sua intuição, não use variação)

Portanto, esse índice de polarização é a proporção da maior variação possível ( com a média observada ) na variação observada.

Chame a classificação média m ( m=x¯ ).

A variação máxima ocorre quando uma proporção p=m14 está em5e1pestá em1; isso tem uma variação de (m1)(5m)nn1 .

Então, basta pegar a variação da amostra e dividir por (m1)(5m)nn1 ; isso fornece um número entre0(concordância perfeita) e1(completamente polarizado).

Para vários casos em que a classificação média é 4, isso daria o seguinte:

insira a descrição da imagem aqui


Você pode preferir não calculá-los em relação à maior variação possível com a mesma média, mas como uma porcentagem da maior variação possível para qualquer classificação média . Isso envolveria dividir por e, novamente, gera um valor entre 0 (concordância perfeita) e1(polarizado nos extremos na proporção de 50-50). Isso produziria as mesmas relatividades do diagrama acima, mas todos os valores seriam 3/4 maiores (ou seja, da esquerda para a direita, de cima para baixo, eles seriam 0, 16,5%, 25%, 25%, 50 % e 75%).4nn11

Qualquer uma das duas é uma opção perfeitamente válida - como qualquer outro número de maneiras alternativas de construir esse índice.


Mas então quando m = 1você começa 1 - 1 = 0e 0 / 0. Como você corrige isso?
Francesco

@Franceso Bom ponto. Quando ou m = 5, a fórmula para a primeira forma é indefinida. No entanto, sob várias suposições, o limite parece ser 1, o que provavelmente é o que eu usaria. Se alguém quisesse defini-lo como 1 ou 0 para esse caso extremo, me pareceria razoável. m=1m=5
Glen_b -Reinstar Monica

8

"Nenhum método gráfico" é uma grande desvantagem, mas ... aqui estão algumas idéias estranhas. Ambos tratam as classificações como contínuas, o que é uma fraqueza conceitual, e provavelmente não é a única ...

Kurtosis

  • A curtose de {1,1,1,5,5,5} = 1. Você não terá uma curtose mais baixa com nenhum combo de 1 a 5 classificações.
  • A curtose de {1,2,3,4,5} = 1,7. Menor significa valores mais extremos; mais alto significa mais meio.
  • Isso não funcionará se a distribuição não for aproximadamente simétrica. Vou demonstrar abaixo.

Regressão binomial negativa

Com um quadro de dados como este: Ajustar o modelo F r e q u o e n c y ~ R um t i n g +

RatingFrequency1312153749537
usando regressão binomial negativa. OFrequencyRating+Rating coeficiente R a t i n g deve ser próximo de zero se as classificações foremdistribuídas uniformemente, positivo se houver proporcionalmente mais valores de faixa intermediária (cf.distribuição binomialRating ) ou negativo com distribuições polarizadas como a acima, para as quais o coeficiente é - 11.8

FWIW, aqui está o código eu brinco :

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

Não resisto a jogar um enredo ...

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

O Rating



Editar: acabei de ver esta pergunta anunciada na barra lateral: e quando cliquei, vi-a nas perguntas da Hot Network, vinculando-se novamente, como às vezes acontece ,

então pensei que isso poderia merecer uma revisão de uma maneira mais geralmente útil. Decidi experimentar meus métodos nas avaliações de clientes da Amazon para Camiseta de manga curta The Mountain Three Wolf Moon :

Rating12345Frequency20854891982273


βRating=19.1

σFrequencyThe Mountain Three Wolf Moon Short Sleeve Tee Ratings2=1.31
x=rep(5:1,c(2273,198,89,54,208))var(x)/(4*length(x)/(length(x)-1))


É cerca de 0,77 para a primeira versão do índice de polarização (ou seja, relativa à mais polarizada, dada a classificação média), mas sim, como você diz, 0,33 para a segunda versão (em relação à distribuição mais polarizada possível).
Glen_b -Reinstar Monica

@Glen_b: E a primeira versão não é menos apropriada quando a média não é fixa em vários conjuntos de classificações que precisam ser comparadas? Ou entendi mal sua resposta?
Nick Stauner

Depende de qual é o objetivo. A julgar pelo título "como detectar opiniões polarizadas", inclino-me para a primeira ( dada a classificação média, quão polarizada é a opinião sobre isso? ). Se o objetivo era realmente comparar diferentes conjuntos de classificações, pode fazer mais sentido trabalhar com a segunda abordagem, como você sugere. É por isso que eu fiz as duas coisas. Meu comentário não teve a intenção de criticar; Estou lisonjeado por você ter mencionado isso.
Glen_b -Reinstala Monica

@Glen_b: Entendido :) TBH, estou sugerindo que a abordagem de modelagem de regressão binomial negativa é melhor, mas admito que mal a testei completamente. Sinto que a maioria dos conjuntos de classificações polarizadas reais não será uniformemente polarizada, então estou pensando que a robustez contra a assimetria será importante para futuros leitores.
Nick Stauner

5

(13)2+(33)2+(33)2+(53)24=1
(13)2+(13)2+(53)2+(53)24=2

2

I doubt that I can add something valuable to the clever answers already given. In particular, to @Glen_b's fine idea to assess how the variance observed is relatively close to the maximal variance possible under the observed mean. My own blunt and straight from the shoulder proposal is, instead, about some robust measure of dispersion based not on deviations from some centre but directly on distances between data points.

Compute pairwise distances (absolute differences) between all the data points. Drop out dii zero distances. Compute a central tendency in the distribution of the distances (the choice is yours; it may be, for example, mean, median, or Hodges-Lehmann centre).

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

As you can see, the 3 statistics may be very different as measures of "polarization" (if I were to measure "disagreement" rather than bipolar confrontation, I would probably choose HL). The choice is yours. One notion: if you compute squared distances, their mean will be directly related to usual variance in the data (and so you will arrive at @Duncan's suggestion to compute variance). Computation of distances won't be too hard even with big N here because the rating scale is descrete and with relatively few grades, so frequency-weighting algorithm to compute distances offers itself naturally.


The mean of the pairwise squared distances is related to the variance.
Glen_b -Reinstate Monica

0

How about, if the 3 star rating is smaller than the average of the 5 and 4, and also smaller than the average of the 1 and 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
}

Off the top of my head I can't think of any situation in which that wouldn't work. Using the example above: Amazon customer reviews for The Mountain Three Wolf Moon Short Sleeve Tee:

Rating12345Frequency20854891982273

In this case:

Ratingaverage(1,2)3average(4,5)Frequency131891235

This would pass the test and be considered divided opinion.


1
what if there were lots of 2s and 4s, and relatively few other ratings? It is hard to imagine this happening in reality, but would one really want to call that polarized?
Nick Stauner

Come to think of it, one could more easily find cases with lots of 1s and 5s, very few 2s and 4s, and a moderate amount of 3s. For instance,
Rating12345Frequency25515525
That's pretty polarized, no? Yet your method would produce the same result for this as for a uniform distribution of 15 of each rating.
Nick Stauner

0

I think what you are looking for is standard deviation:

σ=i=0n(xiμ)2nwhere σ is standard deviation, n is the number of data points,x represents all of the data points, andμ is the mean.

I don't know what programming language this is, but here's a java method that will give you standard deviation:

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;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.