进行统计测试以区分两种产品


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的答案给出了更好的建议。也许我应该说,您可以随时更改接受的答案(并非所有人都知道)。
变形虫

Answers:


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
使用弗里德曼的测试是过大的。就像建议只有两个组时才使用ANOVA;然后只需简化为t检验即可。
变形虫

此回归分析不正确。您已将客户视为连续变量而不是因素。如果解决此问题,则通过将其更改为一个因子,可以得到p值为0.1316,即与成对的t检验相同。
Karl Ove Hufthammer'Mar

我已经意识到这应该是一个因素,但是由于我的重点是弗里德曼测试,所以我没有改变它。但是由于样本量很小,我认为在这里非参数检验(而不是t检验)更合适。我已经纠正了答案中的回归部分。
rnso

9
  1. 一种可能性是您可以使用符号测试。

    这取决于客户之间的比较,以查看他们对产品1到产品2的评级是上升,下降还是保持不变(在二项式符号检验下,假设您只获得“上”或“下”结果,但是几种常见的方式来处理的范围内,对关系,如客户9点的goodVS good)。

    一种常见的方法是排除像客户9那样的受约束的等级(这样的结论是假设人口是随机抽样的,那么这就是总体上上下差异的相对比例)。

    在这种情况下,您有4个客户对第二个产品给予了较高的评分,8个给出了较低的评分,三个给出了相同的评分。

    在这种情况下,使用您的数据(一个符号中的4个和另一个符号中的8个),在任何典型显着性水平上,两尾符号测试都无法接近拒绝。这是R中的分析:

    > 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 
    

    p值很高。

  2. 现在,如果您准备为每对评分变化的相对大小分配分数(甚至只是排名),也就是说,客户2从“好”到“坏”的变化是否更大,更小或与客户4的“非常好”到“还好”相同,依此类推,那么您可以对这些等级应用带符号的等级测试,或者对分配的分数进行配对排列测试(尽管您还必须处理严格的关系,这可以通过排列您实际拥有的等级或分数集来轻松实现)。

您可能还会考虑其他选择-但是我不认为选择分析会改变结果。我认为他们都不会拒绝这些数据的典型显着性水平。


1
@alesc仅在某些条件下“下等”,在其他条件下“上等”。您知道这些情况是什么吗?您提到的顺序是原始类别的顺序,但是对带符号等级测试而言重要的是差异的顺序。通过将数字1到5分配给这些原始类别,您实际上已经假设了一个间隔刻度,该间隔刻度不存在。排除并列排名不会篡改数据,它实际上是取决于与评级是否存在上升或下降趋势有关的信息。
Glen_b-恢复莫妮卡2015年

4
我们正在处理5点李克特量表项目。(实际的李克特量表是这些项目的总和。)您自己这样说,这个量表项目是有序的。但是,通过使用分数,其中类别之间的间隔是相等的,你堂堂一个等距量表-那些你强加的等间距确实是名副其实的间隔尺度是什么。所以您说它是序数,然后立即将其视为间隔。您没有提及所做的事实,这就是为什么您的答案需要修改的原因。对序数对数据应用带符号秩检验后,您就将原始数据视为间隔。
Glen_b-恢复莫妮卡

1
@rnso通常,通过最初将有序类别转换为等距数字,您会在有序数的地方强加一个间隔刻度……(因此,通常,您必须明确选择这样的选项),但是在这种情况下-因为只有每个组中的相对排名很重要,而且只有两个组,所以没有任何伤害。两组的弗里德曼等效于(两尾)符号测试。也就是说,您的答案与我的答案相同。
Glen_b-恢复莫妮卡2015年

1
@rnso就“设置”而言,在R中,您可以使有序分类变量成为一个因子(甚至是有序因子),尽管对于某些函数,您可能需要处理数字。每当您执行此操作(使用我的意思是使用数字)时,都必须谨记这些数字不具有interval属性-您不能仅对所使用数字进行求和(或求和)。如果你不会- 先验 -要求从一个转变very badgood完全等同于从转变badvery good,你不能要求它后,将它们代码,号码...(CTD)
Glen_b -Reinstate莫妮卡

1
(ctd)...(即,您不能仅将3个具有不同起点的类别的偏移都视为“ d = 3”。因此,如果您 “非常差”编码为1到“非常好”编码为5 ,您不能只接受差异,您必须首先明确地假设您具有间隔刻度,然后差异才有意义
Glen_b -Reinstate Monica

3

您有相关的序数数据。您应该使用Wilcoxon符号秩检验来测试所有客户之间两种产品之间的显着差异。

但是根据上述数据,Wilcoxon符号秩检验不会产生明显的结果。


3
我认为您不能在没有其他假设的情况下使用签名秩检验。例如,带符号的等级测试依赖于对绝对差异的排名,这意味着您将不得不确定客户2的“好”到“坏”的变化是更大,更小还是与客户4的“非常好”相同改为“好”。这表明您可能已在某个时间点强加了间隔刻度(尽管很难确切说明您的操作,因为您没有真正解释它)。OP可能会同意这种选择,但是您需要首先提出问题。
Glen_b-恢复莫妮卡2015年

4
需要澄清的是:我认为这可能是一个合理的答案,但是其特定的假设应该更明确。我认为,如果你解释你是如何从对像进行(这个答案还有待改进goodbad)或(very goodokay)的一组符号秩的,因为这会在这条路上更加明显所做的假设。
Glen_b-恢复莫妮卡2015年

1个5

4
Alesc,@ Glen_b是正确的(但事实并非如此):在带符号秩测试中,您没有为各个值分配等级,而是为值对之间的差异分配了等级。因此,您需要首先能够计算差异。对于序数数据,这是不可能的。
变形虫

1

使用配对的t检验

只要您有足够的评分(15个就足够了,即使更少的评分我也会很高兴)并且评分差异有所变化,使用配对t检验完全没有问题。然后,您将获得很容易解释的估计值-1到5的数字范围的平均评级及其差额(产品之间)。

R代码

在R中很容易做到:

> 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 

p有力地表明,产品被评为不同,尽管0.8的明显差异(但千万注意相当置信区间-我们真的需要更多的数据)。

假数据?

奇怪的是,未配对的t检验给出了较低的 p值。

> 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
[…]

p

摘要

总之,使用配对的t-检验。然后,您将获得易于解释的估计值(简单的数字平均值)。

如果并非所有客户都对这两种产品都进行了评级,请改用混合效果模型。(当配对的t检验都对这两种产品都进行了评级时,这将获得与配对t检验大致相同的结果,因此您最好始终使用它。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.