दो उत्पादों को अलग करने के लिए एक सांख्यिकीय परीक्षण विकसित करना


9

मेरे पास ग्राहक सर्वेक्षण से एक डेटा सेट है, मैं यह देखना चाहता हूं कि उत्पाद 1 और उत्पाद 2 के बीच महत्वपूर्ण अंतर है या नहीं।

यहां ग्राहकों की समीक्षाओं का डेटा सेट है।

दर बहुत बुरा, बुरा, ठीक, अच्छा से, बहुत अच्छा है।

customer    product1    product2
1           very good   very bad
2           good        bad
3           okay        bad
4           very good   okay
5           bad         very good
6           okay        good
7           bad         okay
8           very good   very bad
9           good        good
10          good        very good
11          okay        okay
12          very good   good
13          good        good
14          very good   okay
15          very good   okay

अगर इन दोनों उत्पादों में कोई अंतर है तो यह देखने के लिए मुझे किन तरीकों का उपयोग करना चाहिए?


कृपया ध्यान दें कि @ Glen_b का उत्तर आपके द्वारा स्वीकार किए गए उत्तर की तुलना में बेहतर सलाह देता है। शायद मुझे कहना चाहिए कि आप किसी भी समय एक स्वीकृत उत्तर को बदल सकते हैं (हर कोई इसके बारे में नहीं जानता है)।
अमीबा

जवाबों:


3

विभिन्न न्यायाधीशों द्वारा रैंकिंग के लिए, एक फ्राइडमैन परीक्षण का उपयोग कर सकता है। http://en.wikipedia.org/wiki/Friedman_test

आप -2, -1, 0, 1 और 2 के अंक को बहुत बुरे से बहुत अच्छे में बदल सकते हैं। फिर डेटा को लंबे रूप में रखें और ग्राहक के साथ friedman.test को अवरुद्ध कारक के रूप में लागू करें:

> mm
   customer variable value
1         1 product1     2
2         2 product1     1
3         3 product1     0
4         4 product1     2
5         5 product1    -1
6         6 product1     0
7         7 product1    -1
8         8 product1     2
9         9 product1     1
10       10 product1     1
11       11 product1     0
12       12 product1     2
13       13 product1     1
14       14 product1     2
15       15 product1     2
16        1 product2    -2
17        2 product2    -1
18        3 product2    -1
19        4 product2     0
20        5 product2     2
21        6 product2     1
22        7 product2     0
23        8 product2    -2
24        9 product2     1
25       10 product2     2
26       11 product2     0
27       12 product2     1
28       13 product2     1
29       14 product2     0
30       15 product2     0
> 
> friedman.test(value~variable|customer, data=mm)

        Friedman rank sum test

data:  value and variable and customer
Friedman chi-squared = 1.3333, df = 1, p-value = 0.2482

2 उत्पादों के बीच अंतर की रैंकिंग महत्वपूर्ण नहीं है।

संपादित करें:

निम्नलिखित प्रतिगमन का आउटपुट है:

> summary(lm(value~variable+factor(customer), data=mm))

Call:
lm(formula = value ~ variable + factor(customer), data = mm)

Residuals:
   Min     1Q Median     3Q    Max 
  -1.9   -0.6    0.0    0.6    1.9 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)
(Intercept)         4.000e-01  9.990e-01   0.400    0.695
variableproduct2   -8.000e-01  4.995e-01  -1.602    0.132
factor(customer)2   6.248e-16  1.368e+00   0.000    1.000
factor(customer)3  -5.000e-01  1.368e+00  -0.365    0.720
factor(customer)4   1.000e+00  1.368e+00   0.731    0.477
factor(customer)5   5.000e-01  1.368e+00   0.365    0.720
factor(customer)6   5.000e-01  1.368e+00   0.365    0.720
factor(customer)7  -5.000e-01  1.368e+00  -0.365    0.720
factor(customer)8   9.645e-16  1.368e+00   0.000    1.000
factor(customer)9   1.000e+00  1.368e+00   0.731    0.477
factor(customer)10  1.500e+00  1.368e+00   1.096    0.291
factor(customer)11  7.581e-16  1.368e+00   0.000    1.000
factor(customer)12  1.500e+00  1.368e+00   1.096    0.291
factor(customer)13  1.000e+00  1.368e+00   0.731    0.477
factor(customer)14  1.000e+00  1.368e+00   0.731    0.477
factor(customer)15  1.000e+00  1.368e+00   0.731    0.477

Residual standard error: 1.368 on 14 degrees of freedom
Multiple R-squared:  0.3972,    Adjusted R-squared:  -0.2486 
F-statistic: 0.6151 on 15 and 14 DF,  p-value: 0.8194

यहाँ छवि विवरण दर्ज करें


1
फ्राइडमैन के परीक्षण का उपयोग करना एक ओवरकिल है। यह केवल दो समूह होने पर एनोवा का उपयोग करने की सिफारिश करने जैसा है; तो यह बस एक टी-परीक्षण के लिए कम कर देता है।
अमीबा

यह प्रतिगमन विश्लेषण गलत है। आपने ग्राहक को एक कारक के बजाय एक सतत चर माना है। आप इसे ठीक हैं, तो एक कारक के लिए इसे बदल कर, आप एक प्राप्त पी -value .1316 की एक जोड़ी से के रूप में ही, यानी, टी -Test।
कार्ल ओवे हफथममर

मैंने महसूस किया था कि यह एक कारक होना चाहिए, लेकिन मैंने इसे नहीं बदला क्योंकि मेरा जोर फ्रीडमैन टेस्ट पर था। लेकिन चूंकि नमूना आकार छोटा है, इसलिए मुझे लगता है कि गैर-पैरामीट्रिक परीक्षण (टी-टेस्ट के बजाय) यहां अधिक उपयुक्त होगा। मैंने अपने उत्तर में प्रतिगमन भाग को ठीक कर लिया है।
रान्सो

9
  1. एक संभावना है कि आप साइन टेस्ट का उपयोग कर सकते हैं।

    यह ग्राहकों के भीतर तुलना पर निर्भर करता है कि यह देखने के लिए कि क्या product1 से product2 तक उनकी रेटिंग ऊपर, नीचे, या समान रही है (द्विपद संकेत परीक्षण के तहत धारणा यह है कि आप केवल "ऊपर" या "नीचे" परिणाम प्राप्त करते हैं, लेकिन वहाँ ग्राहक-जोड़ी के भीतर जोड़ी संबंधों को अपनाने के कई सामान्य तरीके, जैसे कि ग्राहक 9 के goodबनाम good)।

    एक आम दृष्टिकोण ग्राहक 9 जैसी बंधी हुई रेटिंग को बाहर करना है (ताकि निष्कर्ष ग्राहकों के यादृच्छिक नमूने को मानते हुए, आबादी में अप-बनाम-डाउन अंतर के सापेक्ष अनुपात के बारे में हो)।

    इस मामले में आपके पास 4 ग्राहक थे जिन्होंने दूसरे उत्पाद को उच्च रेटिंग दी, 8 जिन्होंने कम दिया, और तीन जिन्होंने समान दिया।

    उस स्थिति में, आपके डेटा के साथ, एक साइन का 4 और दूसरे का 8, दो-पूंछ वाला साइन टेस्ट किसी भी विशिष्ट महत्व के स्तर पर अस्वीकृति के करीब नहीं आएगा। यहाँ आर में विश्लेषण है:

    > binom.test(4,12)
    
            Exact binomial test
    
    data:  4 and 12
    number of successes = 4, number of trials = 12, p-value = 0.3877
    alternative hypothesis: true probability of success is not equal to 0.5
    95 percent confidence interval:
     0.09924609 0.65112449
    sample estimates:
    probability of success 
                 0.3333333 
    

    पी-मूल्य काफी अधिक है।

  2. अब यदि आप प्रत्येक जोड़ी के भीतर रेटिंग में परिवर्तन के सापेक्ष आकारों को स्कोर (या केवल रैंक करने के लिए) तैयार करने के लिए तैयार हैं - तो यह कहना है कि क्या ग्राहक 2 का "अच्छा" "बुरा" परिवर्तन बड़ा है, छोटा है या ग्राहक 4 की "बहुत अच्छी" के रूप में "ठीक है", और इसी तरह, तब आप उन रैंकों पर एक हस्ताक्षरित रैंक परीक्षण लागू कर सकते हैं या असाइन किए गए स्कोर पर एक युग्मित क्रमपरिवर्तन परीक्षण कर सकते हैं (हालांकि आपको भारी संबंधों से भी निपटना होगा, यह आसानी से रैंक या स्कोर के सेट की अनुमति देकर आसानी से किया जा सकता है)।

कुछ अन्य विकल्प हैं जिन पर आप विचार कर सकते हैं - लेकिन मुझे नहीं लगता कि विश्लेषण का विकल्प परिणाम बदल देगा; मुझे लगता है कि वे इस डेटा पर विशिष्ट महत्व के स्तर पर अस्वीकार करने में विफल रहेंगे।


1
@alesc "अवर" केवल कुछ शर्तों के तहत, दूसरों के तहत बेहतर। क्या आप जानते हैं कि वे परिस्थितियाँ क्या हैं? आपके द्वारा उल्लिखित आदेश मूल श्रेणियों का क्रम है , लेकिन हस्ताक्षरित रैंक परीक्षण के लिए जो मायने रखता है वह मतभेदों का क्रम है । उन मूल श्रेणियों के लिए 1 से 5 की संख्या बताकर आपने वास्तव में एक अंतराल पैमाने मान लिया है जहां कोई भी अस्तित्व में नहीं है। बंधे हुए रैंकों को छोड़कर डेटा के साथ छेड़छाड़ नहीं कर रहा है, यह वास्तव में जानकारी के लिए प्रासंगिक जानकारी पर कंडीशनिंग है कि क्या रेटिंग में वृद्धि या कमी की प्रवृत्ति है।
Glen_b -राइनेट मोनिका

4
हम 5-पॉइंट लिकर्ट स्केल आइटम के साथ काम कर रहे हैं । (एक वास्तविक लिकर्ट स्केल इस तरह की वस्तुओं पर एक योग है।) यह स्केल आइटम सामान्य है, आपने खुद कहा था। लेकिन स्कोर का उपयोग करके जहां श्रेणियों के बीच spacings बराबर हैं आप एक अंतराल स्केल लगा रहे हैं - आपके द्वारा लगाए गए समान spacings काफी शाब्दिक रूप से एक अंतराल स्केल है । तो आपने कहा कि यह सामान्य था, और फिर तुरंत इसे अंतराल के रूप में माना गया। तथ्य यह है कि आप यह उल्लेख करने में विफल रहे कि आपने क्या किया है इसलिए आपके उत्तर को संशोधित करने की आवश्यकता है। जैसे ही आप हस्ताक्षरित रैंक परीक्षण को लागू करते हैं, डेटा के क्रमिक जोड़े में आप अंतराल के रूप में मूल व्यवहार करते हैं।
Glen_b -Reinstate मोनिका

1
@ सामान्य तौर पर प्रारंभ में क्रमांकित श्रेणियों को समान संख्याओं में परिवर्तित करके आप एक अंतराल पैमाने पर लगाएंगे जहां एक अध्यादेश आया था ... (इसलिए फिर से, सामान्य रूप से आपको इस तरह का विकल्प स्पष्ट करना होगा) लेकिन इस मामले में - क्योंकि यह प्रत्येक समूह के भीतर केवल सापेक्ष रैंकिंग है जो मायने रखता है और केवल दो समूह हैं, जिससे कुछ भी नुकसान नहीं होता है। दो समूहों में फ्राइडमैन एक (दो पूंछ वाले) साइन टेस्ट के बराबर है। जो कहना है, तुम्हारा उत्तर वही है जो मेरा है।
Glen_b -Reinstate मोनिका

1
@rnso 'सेट अप' के संदर्भ में, आर में आप अपने क्रमिक श्रेणीगत चर को एक कारक (यहां तक ​​कि एक क्रमिक कारक) बना सकते हैं, हालांकि कुछ कार्यों के लिए आपको संख्याओं से निपटने की आवश्यकता हो सकती है। जब भी आप ऐसा करते हैं (संख्याओं का उपयोग करें मेरा मतलब है), तो आपको यह ध्यान रखना चाहिए कि उन अंकों की अंतराल संपत्ति नहीं है - आप केवल आपके द्वारा उपयोग किए गए संख्याओं के अंतर (या रकम) नहीं ले सकते। यदि आप नहीं होगा - एक प्रायोरी - का दावा है कि से एक बदलाव very badके लिए goodपूरी तरह से से एक बदलाव के समान है badकरने के लिए very good, आप इसे आप के बाद दावा नहीं कर सकते संख्या के रूप में कोड उन्हें ... (ctd)
Glen_b -Reinstate मोनिका

1
(ctd) ... (अर्थात आप केवल 3 श्रेणियों की शिफ्ट को अलग-अलग प्रारंभ बिंदुओं के साथ "d = 3" के रूप में नहीं मान सकते। इसलिए यदि आप 'बहुत खराब' कोड को 5 तक 'बहुत अच्छा' मानते हैं । , आप केवल अंतर नहीं ले सकते। आपको पहले स्पष्ट रूप से मान लेना चाहिए कि आपके पास अंतराल पैमाने है, और फिर अंतर सार्थक हैं।
Glen_b -Reinstate Monica

3

आपके पास भरोसेमंद डेटा है। आपको सभी ग्राहकों के बीच दोनों उत्पादों के बीच महत्वपूर्ण अंतर का परीक्षण करने के लिए विल्कोक्सन हस्ताक्षरित रैंक परीक्षण का उपयोग करना चाहिए ।

लेकिन ऊपर दिए गए आंकड़ों को देखते हुए, विलकॉक्सन हस्ताक्षरित-रैंक परीक्षण महत्वपूर्ण परिणाम नहीं देता है।


3
मुझे नहीं लगता कि आप अतिरिक्त अनुमान लगाए बिना हस्ताक्षरित रैंक परीक्षण का उपयोग कर सकते हैं। उदाहरण के लिए, हस्ताक्षरित रैंक परीक्षण निरपेक्ष जोड़ी-अंतरों की रैंकिंग पर निर्भर करता है, जिसका अर्थ है कि आपको यह तय करना होगा कि ग्राहक 2 का "अच्छा" "बुरा" परिवर्तन बड़ा है, छोटा है या ग्राहक 4 का "बहुत अच्छा" है "ठीक है"। जो बताता है कि आपने कुछ बिंदु पर अंतराल अंतराल लगाया है (यह वास्तव में यह बताना मुश्किल है कि आपने क्या किया, हालांकि, क्योंकि आपने वास्तव में व्याख्या नहीं की है)। यह एक विकल्प है कि ओपी इससे सहमत हो सकता है लेकिन आपको पहले पूछना होगा।
Glen_b -Reinstate मोनिका

4
स्पष्ट करने के लिए: मुझे लगता है कि यह संभावित रूप से एक उचित जवाब है, लेकिन इसकी विशेष धारणाएं अधिक स्पष्ट होनी चाहिए। मैं अगर तुम बताया कि कैसे आप की तरह (जोड़े से रवाना हुए इस उत्तर सुधार किया जा सकता लगता है good, bad) या ( very good, okay) पर हस्ताक्षर किए रैंक का एक सेट करने के लिए, के बाद से इस तरह से और अधिक स्पष्ट साथ मान्यताओं होगा।
Glen_b -Reinstate Monica

उत्तरों का क्रम दिया गया है, इसलिए से संख्यात्मक रैंक निर्दिष्ट करना 1 सेवा 5तुच्छ है। अधिक विवरण के लिए मेरे उत्तर पर मेरी अन्य टिप्पणी देखें।
एलिकेश

4
Alesc, @Glen_b सही है (और आप नहीं हैं): हस्ताक्षरित-रैंक परीक्षण में आप अलग-अलग मूल्यों को रैंक नहीं देते हैं, आप रैंक को मूल्यों के जोड़े के बीच अंतर प्रदान करते हैं । इसलिए आपको पहले मतभेदों की गणना करने में सक्षम होने की आवश्यकता है। यह ऑर्डिनल डेटा के साथ असंभव है।
अमीबा

1

युग्मित t -est का उपयोग करें

जब तक आपके पास पर्याप्त रेटिंग है (15 पर्याप्त है, और मैं कम के साथ भी खुश रहूंगा) और रेटिंग अंतर में कुछ भिन्नता है, युग्मित टी- टेस्ट का उपयोग करने में कोई समस्या नहीं है । फिर आपको ऐसे अनुमान मिलते हैं जो व्याख्या करना बहुत आसान है - औसत रेटिंग 1-5 संख्यात्मक पैमाने पर + इसका अंतर (उत्पादों के बीच)।

आर कोड

आर में करना बहुत आसान है:

> ratings = c("very bad", "bad", "okay", "good", "very good")
> d = data.frame(
      customer = 1:15,
      product1 = factor(c(5, 4, 3, 5, 2, 3, 2, 5, 4, 4, 3, 5, 4, 5, 5),
                        levels=1:5, labels=ratings),
      product2 = factor(c(1, 2, 2, 3, 5, 4, 3, 1, 4, 5, 3, 4, 4, 3, 3),
                        levels=1:5, labels=ratings))
> head(d)
  customer  product1  product2
1        1 very good  very bad
2        2      good       bad
3        3      okay       bad
4        4 very good      okay
5        5       bad very good
6        6      okay      good

पहले औसत रेटिंग की जाँच करते हैं:

> mean(as.numeric(d$product1))
    [1] 3.9333
    > mean(as.numeric(d$product2))
[1] 3.1333

और यह टी- टेस्ट हमें देता है:

> t.test(as.numeric(d$product1),
as.numeric(d$product2), paired=TRUE)
    Paired t-test

data:  as.numeric(d$product1) and as.numeric(d$product2)
t = 1.6, df = 14, p-value = 0.13
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.27137  1.87137
sample estimates:
mean of the differences 
                    0.8 

पी-वेल्यू 0.13 है, जो करता है दृढ़ता से यह सुझाव नहीं देता है कि उत्पादों को 0.8 के स्पष्ट अंतर के बावजूद अलग-अलग रेट किया गया है (लेकिन काफी आत्मविश्वास अंतराल पर ध्यान दें - हमें वास्तव में अधिक डेटा की आवश्यकता है)।

नकली डेटा?

मजे की बात है, और अप्रत्याशित रूप से, एक unpaired टी टेस्ट एक देता है कम पी -value।

> t.test(as.numeric(d$product1),
             as.numeric(d$product2), paired=FALSE)
    Welch Two Sample t-test

data:  as.numeric(d$product1) and as.numeric(d$product2)
t = 1.86, df = 27.6, p-value = 0.073
[…]

यह सुझाव देता है कि उदाहरण डेटा नकली हैं। वास्तविक डेटा के लिए, एक ही ग्राहक से रेटिंग के बीच एक (काफी अधिक) सकारात्मक सहसंबंध की उम्मीद करेगा। यहाँ सहसंबंध नकारात्मक है (हालांकि सांख्यिकीय रूप से ऐसा नहीं है):

> cor.test(as.numeric(d$product1), as.numeric(d$product2))

    Pearson's product-moment correlation

data:  as.numeric(d$product1) and as.numeric(d$product2)
t = -1.38, df = 13, p-value = 0.19
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.73537  0.18897
sample estimates:
     cor 
-0.35794

खोए आँकड़े

जब सभी ग्राहकों ने दोनों उत्पादों (यानी असंतुलित डेटा) को रेट नहीं किया है, तो एक बेहतर दृष्टिकोण मिश्रित-प्रभाव मॉडल का उपयोग कर रहा है:

आइए पहले डेटा को संख्यात्मक रूप में परिवर्तित करें:

> d2 = d
> d2[,-1] = lapply(d2[,-1], as.numeric)

और इसे 'लंबे' रूप में परिवर्तित करें:

> library(tidyr)
> d3 = gather(d2, product, value, -customer)

और अंत में एक यादृच्छिक प्रभाव के रूप में ग्राहक के साथ मिश्रित-प्रभाव मॉडल फिट करें:

> l = lme(value~product, random=~1|customer, data=d3)
> summary(l)
Linear mixed-effects model fit by REML
 Data: d3 
     AIC    BIC  logLik
  101.91 107.24 -46.957

Random effects:
 Formula: ~1 | customer
        (Intercept) Residual
StdDev:  3.7259e-05   1.1751

Fixed effects: value ~ product 
                  Value Std.Error DF t-value p-value
(Intercept)      3.9333   0.30342 14 12.9633  0.0000
productproduct2 -0.8000   0.42910 14 -1.8644  0.0834
[…]

पी-वित्त 0.0834 है। आमतौर पर संतुलित डेटा के लिए यह हो जाएगा लगभग समान करने के लिए पी एक जोड़ी से -value टी -Test। यहाँ यह के करीब है पी एक की -value unpaired टी टेस्ट नकारात्मक सहसंबंध की वजह से। ध्यान दें कि ग्राहक प्रभाव (यादृच्छिक अवरोधन) के लिए विचरण लगभग शून्य है। वास्तविक आंकड़ों के साथ ऐसा शायद ही कभी होता होगा।

सारांश

सारांश में, युग्मित टी का उपयोग करें -est का । फिर आपको ऐसे अनुमान मिलते हैं जिनकी व्याख्या करना आसान है (सरल संख्यात्मक औसत)।

यदि सभी ग्राहकों ने दोनों उत्पादों को रेट नहीं किया है, तो इसके बजाय मिश्रित प्रभाव मॉडल का उपयोग करें। (यह रूप में लगभग एक ही परिणाम देगा युग्मित टी -Test जब वे है सब दोनों उत्पादों दर्जा दिया है, तो आप के रूप में अच्छी हमेशा के लिए इसका इस्तेमाल कर सकते हैं।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.