Este artigo baseia-se nas ideias e estende os métodos descritos na publicação anterior Análise de dados estatisticamente robusta: o teste de Wilcoxon para duas amostras. Este é um modelo simples, mas amplamente utilizado, pois mesmo em situações mais complexas, os alvos são frequentemente comparados em dois níveis.
A análise do modelo sobre a mudança dos parâmetros da posição de duas populações gerais começa com uma descrição do procedimento de classificação de Mann-Whitney-Wilcoxon (MWW) livre de distribuição, aqui as estimativas de ponto e intervalo para a magnitude da mudança são construído. Além disso, o método de análise baseado no uso de funções de pontuação é descrito resumidamente e, com seu auxílio, a hipótese nula sobre a magnitude do parâmetro de deslocamento também é testada. Em conclusão, o modelo para o parâmetro de posição é formulado como um problema de regressão, cuja solução também permite construir estimativas de ponto e intervalo para o parâmetro de deslocamento.
Todos os métodos descritos no artigo são ilustrados com um exemplo ponta a ponta implementado na forma de algoritmos na linguagem R.
1. Sejam e
duas variáveis aleatórias contínuas:
e
denotam a função (cdf) e a densidade (pdf) da distribuição da variável aleatória
, e
e
denotam a função (cdf) e a densidade (pdf) da variável aleatória, respectivamente
. Dizemos isso
e
seguimos o modelo do parâmetro de posição (modelo de localização), se para algum parâmetro
,
temos
Um parâmetro é uma mudança no parâmetro de posição de variáveis aleatórias
e
, por exemplo, pode ser a diferença entre medianas ou médias (se houver médias). Observe que o modelo proposto pressupõe igualdade dos parâmetros da escala de variáveis aleatórias
e
.
2. , . –
( cdf pdf
),
–
( cdf pdf
).
–
.
.
( ) , : .
3. , . – . , , .
. .
> z <- c(12, 18, 11, 5, 11, 5, 11, 11)
> rank(z)
[1] 7.0 8.0 4.5 1.5 4.5 1.5 4.5 4.5
,
.
-- (Mann-Whitney-Wilcoxon, MWW).
– ,
,
,
.
, (, ,
). ,
() p-value
( ).
4. -- ,
( - (Hodges-Lehmann))
.
–
,
,
.
.
5. -- t- c
.
> x <- round(rt(11, 5) * 10 + 42, 1)
> y <- round(rt(9, 5) * 10 + 50, 1)
> x
[1] 76.6 41.0 59.3 34.9 29.1 45.0 42.6 31.1 32.4 52.5 47.9
> y
[1] 58.3 47.2 40.1 45.8 62.0 58.7 64.8 48.1 49.5
> wilcox.test(y, x, exact = TRUE, conf.int = TRUE, conf.level = 0.95)
Wilcoxon rank sum exact test
data: y and x
W = 72, p-value = 0.09518
alternative hypothesis: true location shift is not equal to 0
95 percent confidence interval:
-1.0 18.4
sample estimates:
difference in location
10.4
: p-value
,
,
. p-value
«».
exact = FALSE
correct = FALSE
( ) , . p-value .
> wilcox.test(y, x, exact = FALSE, correct = FALSE)
Wilcoxon rank sum test
data: y and x
W = 72, p-value = 0.08738
alternative hypothesis: true location shift is not equal to 0
6. ,
(score )
,,
– , cdf
.
(Normal score function) , , . , normal score rankit, standard score z-score. normal score, score ,
score .
:
– score ,
–
. ,
:
,
, ,
() .
, .
, :
,
,
–
. .
7. R p-value score (
Rfit
).
> x <- c(76.6, 41.0, 59.3, 34.9, 29.1, 45.0, 42.6, 31.1, 32.4, 52.5, 47.9)
> y <- c(58.3, 47.2, 40.1, 45.8, 62.0, 58.7, 64.8, 48.1, 49.5)
> # x y
> z = c(x, y)
> n1 = length(x)
> n2 = length(y)
> n = n1 + n2
> # score
> scores = Rfit::wscores
> # score z
> rs = rank(z)/(n + 1)
> asg = Rfit::getScores(scores, rs)
> # Sphi
> Sphi = sum(asg[(n1 + 1):n])
> # Sphi
> asc = Rfit::getScores(scores, 1:n/(n + 1))
> varphi = ((n1 * n2)/(n * (n - 1))) * sum(asc^2)
> # zphi p-value
> zphi = Sphi/sqrt(varphi)
> alternative = "two.sided"
> pvalue <-
+ switch(
+ alternative,
+ two.sided = 2 * (1 - pnorm(abs(zphi))),
+ less = pnorm(zphi),
+ greater = 1 - pnorm(zphi)
+ )
> #
> res <- list(Sphi = Sphi, statistic = zphi, p.value = pvalue)
> with(res, cat("statistic = ", statistic, ", p-value = ", p.value, "\n"))
statistic = 1.709409 , p-value = 0.08737528
, p-value
p-value
:
.
8. C . ,
–
-
.
– ,
. ,
. -
. , score ,
- – .
R .
> z = c(x, y)
> ci <- c(rep(0, n1), rep(1, n2))
> fit <- Rfit::rfit(z ~ ci, scores = Rfit::wscores)
> coef(summary(fit))
Estimate Std. Error t.value p.value
(Intercept) 41.8 4.400895 9.498068 1.960951e-08
ci 10.4 5.720594 1.817993 8.574801e-02
,
. , , ,
,
t-
:
> conf.level <- 0.95
> estse <- coef(summary(fit))[2, 1:2]
> alpha <- 1 - conf.level
> alternative = "two.sided"
> tcvs <- switch(
+ alternative,
+ two.sided = qt(1 - alpha / 2, n - 2) * c(-1, 1),
+ less = c(-Inf, qt(1 - alpha, n - 2)),
+ greater = c(qt(alpha, n - 2), Inf)
+ )
> conf.int <- estse[1] + tcvs * estse[2]
> cat(100 * conf.level, " percent confidence interval:\n", conf.int)
95 percent confidence interval:
-1.618522 22.41852
, .
( -- score ) . .