4 votos

Dados los marginales de una tabla de contingencia, ¿cuál es el valor máximo observable para el $\chi^2$ ¿La estadística de Pearson?

Sé que dada una $R\times C$ tabla de contingencia observada en $N$ sujetos, el valor máximo de $\chi^2$ las estadísticas son $N\cdot [\min(R,C)-1]$ . Pero, esto es independiente de los márgenes dados (a saber, los totales de las filas y los totales de las columnas. ¿Existe una fórmula cerrada o una forma fácil de calcular ese máximo restringido? Por ejemplo: en un $2\times 2$ tabla de contingencia con márgenes $[50, 50]$ y $[10,90]$ es fácil observar que allí el cuadro $$\begin{array}{*{20}{c}} 0&{50}\\ 10&{40} \end{array}$$ es el único que tiene la mayor $\chi^2$ ( $11.11$ y no $100$ ) entre todas las mesas con los mismos márgenes. ¿Existen documentos o algoritmos para buscarla en un tiempo factible también para una $R\times C$ tabla dada sus marginales?

$R\times C$ es una tabla de contingencia rectangular donde $R$ es un número determinado de filas y $C$ un número determinado de columnas, cada una mayor que 1 y no necesariamente iguales. La pregunta es: si sólo conozco las distribuciones de frecuencias marginales (es decir, los totales de las filas y las columnas), ¿cuál es el valor máximo de la $\chi^2$ estadísticas que se pueden obtener? ¿Este valor puede obtenerse mediante la solución de un problema de optimización algebraico o existen algunos algoritmos? Ejemplo con un $3\times4$ mesa: $$\begin{array}{*{20}{c}} {{n_{11}}}&{{n_{12}}}&{{n_{13}}}&{{n_{14}}}&{20}\\ {{n_{21}}}&{{n_{22}}}&{{n_{23}}}&{{n_{24}}}&{100}\\ {{n_{31}}}&{{n_{32}}}&{{n_{33}}}&{{n_{34}}}&{380}\\ {50}&{80}&{170}&{200}&{400} \end{array}$$ ¿cuáles son los $n_{ij}$ valores que permiten la máxima $\chi^2$ ¿Estadística de Pearson?

1voto

Jim Baldwin Puntos 427

Creo que una fórmula general para cualquier cosa que no sea una tabla de 2x2 sería, en el mejor de los casos, desordenada.

Un método de fuerza bruta consistiría en generar, para un conjunto específico de marginales, un millón o más de tablas con esos marginales y utilizar el máximo de esas simulaciones como límite inferior para el valor máximo de chi-cuadrado. He aquí un R la puesta en práctica de la misma:

# Marginals
  rowTotals = c(20,100,380)
  colTotals = c(50,80,170,200)

  nsim = 1000000
  chi2max = 0
  nrows = length(rowTotals)
  ncols = length(colTotals)
  observed = matrix(rep(NA,nrows*ncols), nrow=nrows, ncol=ncols, byrow=TRUE)
  p = rep(1,ncols)/ncols
  for (i in 1:nsim) {
      for (j in 1:(nrows-1)) {
          observed[j,] = rmultinom(1,rowTotals[j],p)
      }
      observed[nrows,] = colTotals - 
        colSums(matrix(observed[c(1:(nrows-1)),], nrow=nrows-1, byrow=TRUE))
      if (min(observed[nrows,]) >= 0) {
         chi2 = chisq.test(observed,correct=FALSE)$statistic
         if (chi2 > chi2max) {
            maxCounts = observed
            chi2max = chi2
         }
      }
  }
  chi2max
  # X-squared 
  # 629.4737 

  maxCounts
  #     [,1] [,2] [,3] [,4]
  #[1,]   20    0    0    0
  #[2,]   20   80    0    0
  #[3,]   10    0  170  200

(Ten en cuenta que no uso "<-" para establecer valores, supongo que porque soy perezoso y testarudo).

Sospecho que habrá un número considerable de ceros y filas o columnas con un único número asociado al valor máximo del chisquar.

Utilizando Mathematica (porque hace el álgebra mucho mejor que yo) el valor máximo del chisquare dados los márgenes de las filas y las columnas $r_1$ , $r_2$ , $c_1$ y $c_2$ (con $n=r_1+r_2=c_1+c_2$ ) es

$$\begin{array}{cc} \{ & \begin{array}{cc} \frac{n c_1 r_1}{c_2 r_2} & c_1<n\land (r_1<n\lor n>2 r_1)\land (2 c_1>n\lor n\leq 2 r_1) \\ \frac{n c_1 r_2}{r_1 c_2} & n>2 r_1\land c_1\leq r_1 \\ \frac{n r_1 c_2}{c_1 r_2} & (2 c_1=n\lor (c_1>r_1\land 2 c_1<n))\land n>2 r_1 \\ \end{array} \\ \end{array}$$

1voto

erdogany Puntos 140

He encontrado una fórmula cerrada para $2\times 2$ mesa, $$Max(\chi^2)=n_{..}\frac{p}{(1-p)}\frac{\left[1-(p+\delta)\right]}{(p+\delta)}\leq n_{..}$$ donde $p$ y $1-p$ son las frecuencias relativas marginales de la primera variable ( $p<.5$ ) y $p+\delta$ y $1-p-\delta$ son las frecuencias relativas marginales de la segunda variable ( $0\leq\delta<0.5$ , $p+\delta\leq 0.5\leq 1-p-\delta$ ), y $n_{..}$ es la suma de las frecuencias conjuntas. La igualdad se mantiene sólo si $\delta=0$ .

Escribí un algoritmo que no requiere una búsqueda de fuerza bruta, pero probaría que el resultado del algoritmo si un máximo efectivo. El algoritmo en R es más o menos esto

    max_possible_chi_2=function(rows,cols){
    if (sum(rows)!=sum(cols)){
    stop("sum of rows must be equal to the sum of cols")
    }
      #define frechet bounds
      M1=matrix(rows,length(rows),length(cols))
      M2=matrix(cols,length(rows),length(cols), byrow = T)
      RESU=M1*0
      R1=rows
      C1=cols
      while ((sum(R1)+sum(C1))>1e-16){
        TM1=matrix(R1,length(rows),length(cols))
        TM2=matrix(C1,length(rows),length(cols), byrow = T)
        FB=pmin(TM1,TM2)
        els=FB^2/(M1*M2)
        WH=which(els == max(els), arr.ind = TRUE)[1,]
        RESU[WH[1],WH[2]]=FB[WH[1],WH[2]]
        R1[WH[1]]=R1[WH[1]]-FB[WH[1],WH[2]]
        C1[WH[2]]=C1[WH[2]]-FB[WH[1],WH[2]]        
      }
      chi=sum(rows)*(sum(RESU^2/(M1*M2))-1)
      v=sqrt(chi/(sum(rows)*(min(length(rows),length(cols))-1)))
      print(chi)
      print(v)
      return(RESU)
    }

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X