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

1 Respuesta

Respuesta
1

Es importante que en el archivo que me envíes pongas los datos de los resultados esperados, para de esta forma poder comprobar los resultados de la macro.

Puedes enviarme un archivo con ejemplos y con la macro para hacer pruebas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas