Як виявити поляризовані думки користувачів (високі та низькі рейтинги зірок)


15

Якщо у мене є система оцінок зірок, де користувачі можуть висловити перевагу товару чи предмету, як я можу статистично визначити, якщо голоси сильно «розділені». Тобто, навіть якщо середній показник для кожного продукту становить 3 з 5, як я можу виявити, що це розділення 1-5 проти консенсусу 3, використовуючи лише дані (без графічних методів)


3
Що не так у використанні Standard Deviation?
Spork

1
Не відповідь, але відповідна: evanmiller.org/how-not-to-sort-by-average-rating.html
Дробовий

1
Ви намагаєтесь виявити "бімодальний розподіл"? Дивіться stats.stackexchange.com/q/5960/29552
Бен

1
У політології існує література про вимірювання політичної поляризації, яка вивчала різні різні способи визначення того, що розуміється під "поляризацією". Один приємний документ, в якому детально розглядаються 4 різні прості способи визначення поляризації, є наступний (див. С. 692-699): educ.jmu.edu/~brysonbp/pubs/PBJ.pdf
Джейк

Відповіді:


12

Можна було побудувати індекс поляризації; як саме це визначається, залежить від того, що є більш поляризованим (тобто що саме ви маєте на увазі, в конкретних крайових випадках, більш або менш поляризованими?):

Наприклад, якщо середнє значення дорівнює "4", це розрив на 50-50 між "3" і "5" більше, або менш поляризований, ніж 25% '1' і 75% '5'?

У будь-якому випадку, за відсутності такого специфічного визначення того, що ви маєте на увазі, я запропоную міру, що базується на дисперсії:

З огляду на конкретну середню, визначте найбільш поляризований можливий розкол як той, що максимізує дисперсію *.

* (Зверніть увагу, що 25% "1" і 75% "5" є значно більш поляризованим, ніж 50-50 розщеплення "3" і "5"; якщо це не відповідає вашій інтуїції, не використовуйте дисперсію)

Отже цей показник поляризації є часткою найбільшої можливої ​​дисперсії ( із спостережуваним середнім ) у спостережуваній дисперсії.

Назвіть середню оцінку ( m = ˉ x ).мм=х¯

Максимальна дисперсія виникає, коли пропорція - це5,а1-p-1; це має дисперсію (m-1)(5-m)np=м-1451-p1 .(м-1)(5-м)нн-1

Тому просто візьміть дисперсію вибірки і розділіть на ; це дає число між0(ідеальна згода) і1(повністю поляризоване).(m1)(5m)nn101

Для ряду випадків, коли середній рейтинг становить 4, це означатиме наступне:

введіть тут опис зображення


Натомість ви можете віддати перевагу не обчислювати їх відносно найбільшої можливої ​​дисперсії з однаковою середньою, а натомість у відсотках від найбільшої можливої ​​дисперсії для будь-якої середньої оцінки . Це передбачало б поділ на 4nn11

Будь-який із двох варіантів є абсолютно вірним вибором - як і будь-яка інша кількість альтернативних способів побудови такого індексу.


Але тоді, коли m = 1отримаєш 1 - 1 = 0і 0 / 0. Як ви виправляєте це?
Франческо

м=1м=5

8

"Немає графічних методів" - це свого роду великий гандикап, але ... ось кілька дивних ідей. Обидва трактують рейтинги як безперервні, що є дещо концептуальною слабкістю, і, мабуть, не єдиною ...

Куртоз

  • Куртоз {1,1,1,5,5,5} = 1. Ви не отримаєте нижчого куртозу з будь-яким комбінацією 1-5 оцінок.
  • Куртоз {1,2,3,4,5} = 1,7. Нижнє означає більш екстремальні значення; вищий означає більше середнього.
  • Це не спрацює, якщо розподіл не буде приблизно симетричним. Я продемонструю нижче.

Негативна біноміальна регресія

RатiнгЖrеqуенcу1312153749537
ЖrеqуенcуRатiнг+RатiнгRатiнг

FWIW, ось код яким я грав:

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

Не втримаюсь від того, щоб кинути сюжет ...

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

Rатiнг



Редагувати: щойно побачив це питання, що рекламується на бічній панелі: і коли я натиснув, я побачив це у "Гарячих запитаннях до мережі", що посилаються на себе, як це іноді трапляється ,

тому я подумав, що це, можливо, заслуговує на перегляд у більш загальному вигляді. Я вирішив спробувати свої методи на відгуках клієнтів Amazon щодо Трійка з коротким рукавом The Mountain Three Wolf Moon :

Rатiнг12345Жrеqуенcу20854891982273 рік


βRатiнг=-19.1

σЖrеqуенcуОцінки трійників з коротким рукавом на гірському три вовки2=1,31
x=rep(5:1,c(2273,198,89,54,208))var(x)/(4*length(x)/(length(x)-1))


Це приблизно 0,77 для першої версії індексу поляризації (тобто відносно найбільш поляризованої з урахуванням середньої оцінки), але так, як ви кажете, 0,33 для другої версії (щодо найбільш можливого поляризованого розподілу).
Glen_b -Встановіть Моніку

@Glen_b: І чи не перша версія менш придатна, коли середнє значення не фіксується для різних наборів рейтингів, які потребують порівняння? Або я неправильно зрозумів вашу відповідь?
Нік Стаунер

Це залежить від того, яка мета. Судячи з назви "як виявити поляризовані думки", я схиляюся до першого (з огляду на середню оцінку, наскільки поляризована думка з цього приводу? ). Якщо метою дійсно було порівняння різних наборів рейтингів, може бути більш сенсом працювати з другим підходом, як ви пропонуєте. Тому я зробив і те, і інше. Мій коментар не розглядався в жодному сенсі як критика; Мені поласкано, що ти це взагалі згадував.
Glen_b -Встановіть Моніку

@Glen_b: Зрозумів :) TBH, я припускаю, що підхід до моделювання негативної біноміальної регресії є кращим, але я визнаю, що навряд чи я це ретельно перевірив. У мене є відчуття, що більшість реальних поляризованих рейтингових наборів не будуть рівномірно поляризовані, тому я думаю, що надійність щодо асиметрії буде важливою для майбутніх читачів.
Нік Стаунер

5

(1-3)2+(3-3)2+(3-3)2+(5-3)24=1
(1-3)2+(1-3)2+(5-3)2+(5-3)24=2

2

Сумніваюсь, що я можу додати щось цінне до вже даних розумних відповідей. Зокрема, до точної ідеї @ Glen_b оцінити, наскільки спостережувана дисперсія порівняно близька до максимальної можливої ​​дисперсії при спостережуваному середньому. Мій власний прямий і прямо з плечової пропозиції, натомість, полягає в деякій надійній мірі дисперсії, заснованої не на відхиленнях від деякого центру, а безпосередньо на відстані між точками даних.

Обчисліть попарно відстані (абсолютні різниці) між усіма точками даних. Опускатигiiнульові відстані. Обчисліть центральну тенденцію розподілу відстаней (вибір за вами; це може бути, наприклад, середній, медіанний або центр Ходжеса-Леманна ).

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

Як бачите, три статистичні дані можуть бути дуже різними як міри "поляризації" (якби я вимірював "незгоду", а не біполярну конфронтацію, я, мабуть, обрав би HL). Вибір за вами. Одне поняття: якщо обчислити відстані у квадраті , їх середня величина буде безпосередньо пов’язана із звичайною дисперсією даних (і так ви прийдете до пропозиції @ Данкана щодо обчислення дисперсії). Обчислення відстаней не буде занадто важким навіть при великихN тут, оскільки рейтингова шкала є дискретною і має відносно мало оцінок, тому алгоритм зважування частоти для обчислення відстаней пропонує себе, природно.


Середнє значення парних відстаней у квадраті пов'язане з дисперсією.
Glen_b -Встановіть Моніку

0

Як щодо того, якщо 3-зірковий рейтинг менший, ніж середній показник 5 і 4, а також менший, ніж середній показник 1 і 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
}

Я не можу придумати жодної ситуації, в якій це не вийшло б. Використовуючи приклад, наведений вище: відгуки клієнтів Amazon щодо трійника з коротким рукавом The Mountain Three Wolf Moon :

Rатiнг12345Жrеqуенcу20854891982273 рік

В цьому випадку:

Rатiнгаvеrаге(1,2)3аvеrаге(4,5)Жrеqуенcу131891235 рік

Це пройшло б тест і вважалося б розділеною думкою.


1
що , якщо там було багато з 2s і 4s, і відносно мало інших оцінок? Важко уявити, що це відбувається насправді, але чи справді хотілося б назвати це поляризованим?
Нік Стаунер

Подумайте про це, можна було б легше знайти випадки з великою кількістю 1s і 5s, дуже мало 2s і 4s і помірною кількістю 3s. Наприклад,
Rатiнг12345Жrеqуенcу25515525
Це досить поляризовано, ні? Однак ваш метод дасть такий же результат для цього, як і для рівномірного розподілу 15 рейтингів кожного.
Нік Стаунер

0

Я думаю, що ти шукаєш - це стандартне відхилення:

σ=i=0н(хi-мк)2нде σ - це стандартне відхилення, н - кількість точок даних,х являє собою всі точки даних, імк є середнім.

Я не знаю, що це мова програмування, але ось метод java, який дасть вам стандартне відхилення:

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;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.