Exemplos de Estatísticas e Matemáticas no VBA do Excel Esta

Propaganda
Exemplos de Estatísticas e Matemáticas no VBA do Excel
Esta página contém exemplos simples de Estatística e Matemática no VBA do Excel. Muitos dos
exemplos usados já estão disponíveis em funções que acompanham o Excel. Os usuários podem usar
estas funções como ferramentas para verificar os resultados que são obtidos nos exemplos. Estes
exemplos requerem habilidade básica de programação no VBA. Os usuários são estimulados a ler o
Simulation Based Tutorial 101 se tiverem problemas de entender os conceitos de programação e
termos usados nesta página.
Este documento contém informação sobre os seguintes tópicos.
Encontrando a Mediana
Geração de Números Aleatórios de Distribuição Uniforme
Soma de Números
Cálculo do Fatorial
Coeficiente Binomial
Distribuição Normal Padrão Acumulada
Encontrando a Mediana
Para encontrar a mediana de um array, dois passos são exigidos. Primeiro o array precisa ser
sorteado (estar em ordem), depois então uma estrutura de decisão precisa ser usada.
Passo 1. Sortear o array. Ver o exemplo de sortear.
Passo 2. Se o total de elementos no array for um número ímpar (definido por Ubound(Arr) Mod = 1),
então a mediana é o número médio (definido por Arr(Int(Ubound(Arr) / 2) + 1) ).
Se o totla de elementos no array for um número par então tome a media dos dois números
médios.
Function u_mediana(Arr() As Single)
Call Sort(Arr)
If UBound(Arr) Mod 2 = 1 Then
u_mediana = Arr(Int(UBound(Arr) / 2) + 1)
Else
u_mediana = (Arr(UBound(Arr) / 2) + Arr(Int(UBound(Arr) / 2) + 1)) / 2
End If
End Function
Esta função também é implementada no exemplo Bootstrap - A Non-Parametric Approach.
(Esta função é similar à função MED() fornecida pelo Excel.)
Retorne ao Topo da Página
Geração de Números Aleatórios de Distribuição Uniforme
Esta função fornece uma distribuição uniforme de números aleatórios num intervalo especificado.
Function NumeroAleatorioUniforme (Inferior As Single, Superior As Single)
NumeroAleatorioUniforme = Rnd * (Superior - Inferior + 1) + Inferior
End Function
Por exemplo, a função seguinte retorna um número aleatório entre 10 e 100:
NumeroAleatorioUniforme (10, 100)
(Esta função é similar à função ALEATÓRIOENTRE() fornecida pelo Excel.)
Retorne ao Topo da Página
Soma de Números
Esta função lê um array, e depois então retorna o total dos números nos elementos do array.
Function u_soma(Arr() As Single)
For i = 1 To UBound(Arr)
u_soma = u_soma + Arr(i)
Next i
End Function
Aqui está a sub routine que chama a função u_soma e retorna a soma numa caixa de mensagem.
Sub computeSoma()
Dim arr(3) As Single
arr(1) = 5
arr(2) = 4
arr(3) = 10
MsgBox u_soma (arr)
End Sub
A caixa de mensagem retornará 19.
(Esta função é semelhante a função SOMA() fornecida pelo Excel).
Return to Top of Page
Cálculo do Factorial
Para iniciar o loop, atribuímos a função u_fatorial, um valor inicial de 1. Multiplicamos o novo número
(i) com o número atual (u_fatorial ) até i = Int(número). Note que a função Int é exigida para assegurar
que o número é inteiro ou torná-lo um inteiro.
Function u_fatorial (numero As Single)
u_fatorial = 1
For i = 1 To Int(numero)
u_fatorial = u_fatorial * i
Next i
End Function
Por exemplo, a função seguinte retorna um 6:
u_fatorial (3)
(Esta função é similar à função FACT() fornecida pelo Excel.)
Retorne ao Topo da Página
Coeficiente Binomial
Function u_binoCoef(n, j)
Dim i As Integer
Dim b As Double
b=1
For i = 0 To j - 1
b = b * (n - i) / (j - i)
Next i
u_binoCoef = b
End Function
A função seguinte calcula toddas as combinações possíveis de 5 itens escolhidos de 10 itens. Esta
função retorna 252:
u_binoCoef(5, 10)
Esta função tanbém está implementada no exemplo Bootstrap – Uma Abordagem Não-Paramétrica.
(Esta função é similar à função COMBIN() fornecida pelo Excel.)
Retorne ao Topo da Página
Distribuição Normal Padrão Acumulada
Esta função calcula a area sob a curva e do lado esquerdo de um valor especificado (o valor z) de uma
curva da função densidade da distribuição normal padrão. Num português claro, ela retorna a
probabilidade de X que é menor que um valor específico.
Se você não sabe com o quê uma curva normal se parece ou já se esqueceu dela, aqui está uma
amostra:
Neste exemplo, a probabilidade de X menor que 1.64 (z) é 94.9497%.
Function u_NormalP(z)
c1 = 2.506628
c2 = 0.3193815
c3 = -0.3565638
c4 = 1.7814779
c5 = -1.821256
c6 = 1.3302744
If z > 0 Or z = 0 Then
w=1
Else: w = -1
End If
y = 1 / (1 + 0.2316419 * w * z)
u_NormalP = 0.5 + w * (0.5 - (Exp(-z * z / 2) / c1) * _
(y * (c2 + y * (c3 + y * (c4 + y * (c5 + y * c6))))))
End Function
u_NormalP (1.64) = 0.949497
Esta função também é implementada no exemplo Modelo de Precificação de Opções de Black-Scholes
- European Call and Put.
(Esta função é similar à função NORMSDIST() fornecida pelo Excel.)
Retorne ao Topo da Página
Download