Macro para prueba de Kolmogorov-Smirnov
Estoy trabajando en construir una macro para que realice una prueba de bondad de ajuste de los datos, de unos datos empíricos frente a un distribución de probabilidad teórica (por ejemplo la normal). Esta prueba es la Kolmogorov-Smirnov. Tengo problemas para que se almacenen como datos de una matriz los datos que hacen parte de la distribución de frecuencias. Quiero preguntarle si le puedo enviar el libro para que pueda observar los cálculos en la hoja, asi como tener de primera mano el código.
La que he adelantado es lo siguiente:
Sub KS()
Dim arrIgreArray() As Variant ' Este es el vector que contiene los datos a analizar
Dim iScount As Integer ' Este es el número de elementos del vector Dim i As Integer ' Este es el contador
Dim Media As Double ' Este es la media de los datos
Dim Sigma As Double ' Este es la desviación estándar de los datos
Dim dC() As Variant
Dim iRaizN As Integer
Dim iTamInter As Double
Dim dFre As Variant
' procesos precios de ubicación de la hoja y rango de trabajo
Sheets("K-S").Select Range("Datos").Select
' Conteo de datos
iScount = Range("Datos").Count 'número de datos
' Se expande los vectores o array
ReDim arrIgreArray(1 To iScount)
ReDim dC(1 To iScount)
ReDim dFre(1 To iScount)
'identificación de los elementos que constituyen el vectos de datos
For i = 1 To iScount arrIgreArray(i) = Range("Datos").Item(i).Value Next i
' Datos básicos del vector de datos lo que corresponde al numeral cero en la hoja K-S
Media = Application.WorksheetFunction.Average(arrIgreArray) 'media de los datos
Sigma = Application.WorksheetFunction.StDev(arrIgreArray) 'desviación de los datos
Mínimo = Application.WorksheetFunction.Min(arrIgreArray) ' Mínimo de los datos
Máximo = Application.WorksheetFunction.Max(arrIgreArray) 'Máximo de los datos
IRaizN = iScount ^ 0.5 'Raíz del número de datos. Necesario par establecer el numero de intervalos
ITamInter = (Máximo - Mínimo) / iRaizN 'Se establece la amplitud o tamaño del intervalo
'lo siguiente solo lo pongo temporalmente para verificar las cifras
MsgBox iScount
MsgBox Media
MsgBox Sigma
MsgBox Mínimo
MsgBox Máximo
MsgBox iRaizN
MsgBox iTamInter
'A partir de este punto se inicia el trabajo para la construcción del estadístico de prueba.
' Este es el punto 1 de la hoja de excel los limites superiores necesarios para generar la distribución de frecuencuas
For i = 1 To iRaizN dC(i) = Mínimo + iTamInter * ((2 * i) - 1)
Next i
' pasos solo para verificar los datos mientras termino la macro
MsgBox dC(3) suma = Application.WorksheetFunction.Sum(dC)
MsgBox suma
' Distribución de frecuencias corresponde al paso 2 de la hoja de excel. No logro resolver el problema
For i = 1 To iRaizN
dFre(i) = Application.WorksheetFunction.Frequency(arrIgreArray(i), dC(i)) Next i
End Sub