쌍 사용 t -test
등급이 충분하고 (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는 우리에게 다음을 제공합니다.
> 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의 명백한 차이에도 불구하고 제품의 등급이 다르게 제시 될 것을 강력하게 제안 하지는 않습니다 (그러나 신뢰 구간은 유의해야합니다. 더 많은 데이터가 필요합니다).
가짜 데이터?
흥미롭고 예기치 않게 짝이없는 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)
그리고 'long'형태로 변환하십시오.
> 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입니다. 일반적으로 균형 데이터의 경우 쌍을 이루는 t- 검정 의 p 값 과 거의 동일 합니다 . 여기 에서 음의 상관 관계로 인해 쌍을 이루지 않은 t- 검정 의 p- 값에 더 가깝습니다 . 고객 효과에 대한 분산 (임의 차단)은 거의 0입니다. 실제 데이터에서는 거의 발생하지 않습니다.
요약
요약하면, 쌍으로 된 t -test를 사용하십시오 . 그런 다음 해석하기 쉬운 추정치 (간단한 숫자 평균)를 얻습니다.
모든 고객이 두 제품을 모두 평가하지 않은 경우 혼합 효과 모델을 대신 사용하십시오. ( 모두 두 제품 을 모두 평가 했을 때 쌍으로 된 t- 검정 과 거의 같은 결과를 제공 하므로 항상 사용할 수도 있습니다.)