Prueba de rachas

/* Obtener Var(R) con Maxima */
n : nA+nB $
EYi : (2*nA*nB)/(n*(n-1)) $
VYi : factor(EYi*(1-EYi)) $
Svar : (n-1)*VYi $
EYiYi1 : (nA*nB)/(n*(n-1)) $ /* E(Y[i]Y[i+1]) */
EYiYj : 4*nA*nB*(nA-1)*(nB-1)/(n*(n-1)*(n-2)*(n-3)) $ /* |i-j| > 1 */
nScov : binomial(n-1,2) $ /* número de sumandos con covarianzas */
Smedprod : (n-2)*EYiYi1 + (nScov-(n-2))*EYiYj $
Sprodmed : nScov * EYi * EYi $
Scov : 2 * (Smedprod - Sprodmed) $
VR : Svar + Scov $
factor(VR) ;
/* EJECUCIÓN: */
Maxima 5.43.2 http://maxima.sourceforge.net
using Lisp GNU Common Lisp (GCL) GCL 2.6.12
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.

                          2 nA nB (2 nA nB - nB - nA)
(%o12)                    ---------------------------
                                                  2
                           (nB + nA - 1) (nB + nA)
## Ejemplo en R
install.packages("snpar")
set.seed(13) # para p-valor polémico
n <- 10
(X <- sample (c("A","B"), n, TRUE)) # bajo H0
(rachas <- rle(X))
(R <- length(rachas$values)) # número de rachas
(Xn <- +(X=="A")) # runs.test exige vector numérico
snpar::runs.test(Xn)
snpar::runs.test(Xn, exact=TRUE) # p-valor cambia
## EJECUCIÓN:
R version 4.1.1 (2021-08-10) -- "Kick Things"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R es un software libre y viene sin GARANTIA ALGUNA.
Usted puede redistribuirlo bajo ciertas circunstancias.
Escriba 'license()' o 'licence()' para detalles de distribucion.

R es un proyecto colaborativo con muchos contribuyentes.
Escriba 'contributors()' para obtener más información y
'citation()' para saber cómo citar R o paquetes de R en publicaciones.

Escriba 'demo()' para demostraciones, 'help()' para el sistema on-line de ayuda,
o 'help.start()' para abrir el sistema de ayuda HTML con su navegador.
Escriba 'q()' para salir de R.

>   set.seed(13) # para p-valor polémico
>   n <- 10
>   (X <- sample (c("A","B"), n, TRUE)) # bajo H0

 [1] "B" "A" "B" "A" "B" "A" "B" "B" "B" "B"
>   (rachas <- rle(X))

Run Length Encoding
  lengths: int [1:7] 1 1 1 1 1 1 4
  values : chr [1:7] "B" "A" "B" "A" "B" "A" "B"
>   (R <- length(rachas$values)) # número de rachas

[1] 7
>   (Xn <- +(X=="A")) # runs.test exige vector numérico

 [1] 0 1 0 1 0 1 0 0 0 0
>   snpar::runs.test(Xn)

        Approximate runs rest

data:  Xn
Runs = 7, p-value = 0.1408
alternative hypothesis: two.sided

>   snpar::runs.test(Xn, exact=TRUE) # p-valor cambia

        Exact runs test

data:  Xn
Runs = 7, p-value < 2.2e-16
alternative hypothesis: two.sided

Autor: López, Corral, Carleos

Created: 2022-04-18 lun 16:02

Validate