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

'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 empricos frente a un distribucin de
probabilidad terica (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 distribucin de frecuencias. Quiero preguntarle si le puedo enviar el
libro para que pueda observar los clculos en la hoja, asi como tener de primera
mano el cdigo.

'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 nmero 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 desviacin estndar de los datos

Dim dC() As Variant

Dim iRaizN As Integer

Dim iTamInter As Double

Dim dFre As Variant


' procesos precios de ubicacin de la hoja y rango de trabajo

Sheets("K-S").Select Range("Datos").Select
' Conteo de datos

iScount = Range("Datos").Count 'nmero de datos

' Se expande los vectores o array

ReDim arrIgreArray(1 To iScount)

ReDim dC(1 To iScount)

ReDim dFre(1 To iScount)

'identificacin de los elementos que constituyen el vectos de datos

For i = 1 To iScount arrIgreArray(i) = Range("Datos").Item(i).Value Next i


' Datos bsicos 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) 'desviacin de los datos

Mnimo = Application.WorksheetFunction.Min(arrIgreArray) ' Mnimo de los datos

Mximo = Application.WorksheetFunction.Max(arrIgreArray) 'Mximo de los datos

IRaizN = iScount ^ 0.5 'Raz del nmero de datos. Necesario par establecer el
numero de intervalos

ITamInter = (Mximo - Mnimo) / iRaizN 'Se establece la amplitud o tamao del


intervalo
'lo siguiente solo lo pongo temporalmente para verificar las cifras

MsgBox iScount

MsgBox Media

MsgBox Sigma

MsgBox Mnimo

MsgBox Mximo

MsgBox iRaizN

MsgBox iTamInter

'A partir de este punto se inicia el trabajo para la construccin del estadstico
de prueba.

' Este es el punto 1 de la hoja de excel los limites superiores necesarios para
generar la distribucin de frecuencuas

For i = 1 To iRaizN dC(i) = Mnimo + 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

' Distribucin 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

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