使用配对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检验给了我们:
> 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 的明显差异(但请注意相当置信区间——我们确实需要更多数据)。p
假数据?
奇怪的是,出乎意料的是,未配对的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-值为 0.0834。通常对于平衡数据,它几乎与配对t检验的p值相同。由于负相关,这里它更接近未配对t检验的p值。请注意,客户效应(随机截距)的方差几乎为零。真实数据很少会发生这种情况。
概括
总之,使用配对t检验。然后你会得到易于解释的估计值(简单的数值平均值)。
如果并非所有客户都对这两种产品进行了评级,请改用混合效果模型。(当他们都对这两种产品进行评级时,这将给出与配对t检验大致相同的结果,因此您不妨始终使用它。)