Вы находитесь на странице: 1из 2

Function ChiCuadradoTotal(Observado As Range, Estimado As Range) As Double

Se declaran las variables Observado y Estimado como rangos de celdas


al definir la funcin personalizada.
Declaracin de variable Chi y matrices de frecuencias
Est (estimadas o esperadas) y de la muestra.
Dim chi As Double
Dim FrecEst() As Double
Dim FrecMuestra() As Double
Comprobacin de seleccin correcta del rango de datos observados
Por filas
filasobservado = Observado.Rows.Count
filasestimado = Estimado.Rows.Count
If filasobservado <> filasestimado Then
MsgBox Seleccin incorrecta
End If
Por columnas
ColumObservado = Observado.Columns.Count
ColumEstimado = Estimado.Columns.Count
If ColumObservado <> ColumEstimado Then
MsgBox Seleccin incorrecta
End If
Redimensin de matrices conocida su dimensin segn seleccin de datos hecha por
usuario
ReDim FrecEst(filasobservado)
ReDim FrecMuestra(filasestimado)
Inicializacin de las variables para contar cohortes o grupos de tamao 5
Dim grupo As Integer
grupo = 0
ultima = 0
contador = 0
Declaracin de matrices de frecuencias depuradas Estimadas (esperados) y de
muestra.
Frecuencias que resultarn de reagrupar cohortes de tamao mnimo 5.
Dim FrecEstDep() As Double
Dim FrecMuestraDep() As Double
Asignacin inicial de los valores de Excel a las matrices de frecuencia
esperada (Estimada) y de la muestra (Observada). Esperados
ne = 0
For Each x In Estimado
ne = ne + 1
FrecEst(ne) = x.Value
Next x
Observados
no = 0
For Each x In Observado
no = no + 1
FrecMuestra(no) = x.Value
Next x
Agrupacin en grupos o cohortes de tamao mayor o igual a 5
Preparacin matriz de valores para posterior asignacin a la matriz
de frecuencias de grupos o cohortes de tamao vlido.
For i = 1 To filasobservado - 1
If FrecEst(i) < 5 Then
FrecEst(i + 1) = FrecEst(i) + FrecEst(i + 1)
FrecMuestra(i + 1) = FrecMuestra(i) + FrecMuestra(i + 1)
FrecEst(i) = 0
FrecMuestra(i) = 0
Else
grupo = grupo + 1
ultima = i
End If
Next i
If FrecEst(filasobservado) < 5 Then
FrecEst(ultima) = FrecEst(ultima) + FrecEst(filasobservado)
FrecMuestra(ultima) = FrecMuestra(ultima) + FrecMuestra(filasobservado)
FrecEst(filasobservado) = 0
FrecMuestra(filasobservado) = 0
Else
grupo = grupo + 1
End If
Control de tamao de la muestra inferior a 5, ningn grupo de 5.
If grupo = 0 Then
MsgBox No hay grupos de 5 o ms
GoTo final
End If
Redimensin de las matrices de frecuencias depuradas,
tras conocer el nmero de grupos/cohortes de tamao 5 o superior.
ReDim FrecEstDep(grupo)
ReDim FrecMuestraDep(grupo)
Asignacin de valores de frecuencia a las matrices de frecuencia depuradas.
For i = 1 To filasobservado
If FrecEst(i) <> 0 Then
contador = contador + 1
FrecEstDep(contador) = FrecEst(i)
FrecMuestraDep(contador) = FrecMuestra(i)
End If
Next i
Clculo del Chi-cuadrado
Control de valores nulos en la matriz de frecuencias depuradas esperadas (Est) For
j = 1 To grupo
If FrecEstDep(j) = 0 Then GoTo final
Else
Sumando del sumatorio de chi-cuadrado.
chi = chi + (FrecMuestraDep(j) - FrecEstDep(j)) ^ 2 / FrecEstDep(j)
End If
Next j
Asignacin del valor del estadstico calculado a la funcin ChiCuadradoTotal.
ChiCuadradoTotal = chi
Inicializacin de las matrices de frecuencias
Erase FrecEst()
Erase FrecMuestra()
Erase FrecEstDep()
Erase FrecMuestraDep()
final:
End Function

Вам также может понравиться