E. VISUAL BASIC APPLICATION :
LOI DE VALEURS EXTRÊMES
'Indicateur de Hill (Pour Fréchet uniquement)
Function Hill(rank As Double, Nb As Double) As Double
medianrank = (1 / (1 - ((rank - 0.44) / (Nb + 0.12))))
Hill = WorksheetFunction.Ln(WorksheetFunction.Ln(medianrank))
End Function
'Gumbel
Function Gumbel(x As Double, a As Double, b As Double) As
Double
If b <= 0 Then
Call MsgBox("b doit être strictement positif",
vbExclamation, "Paramètre incorrect")
Exit Function
End If
Gumbel = Exp(-(x - a) / b) * Exp(-Exp(-(x - a) / b)) / b
End Function
'Fréchet
Function Fréchet(x As Double, a As Double, b As Double) As
Double
If x <= 0 Then
FrÉchet = 0
Exit Function
End If
If b <= 0 Then
Call MsgBox("b doit être strictement positif",
vbExclamation, "Parametre incorrect")
Exit Function
End If
Fréchet = a / b * (b / x) ^ (a + 1) * Exp(-(b / x) ^ a)
End Function
'Weibull
Function Weibull(x As Double, a As Double, b As Double) As
Double
If x <= 0 Then
Weibull = 0
Exit Function
End If
Weibull = a / b ^ a * x ^ (a - 1) * Exp(-(x / b) ^ a)
End Function
F. VISUAL BASIC APPLICATION :
LOI DE PROBABILITÉ
Option Explicit
'ETAPE 1: COPIER ET TRIER
'Dans cette section, nous allons copier le nombre de série
pour les trier, dans le but de dessiner la fonction de distribution
cumulée
' La variable "Total" nous donne le nombre de donnÉe
existante
Public Sub Copy_and_Sort()
Dim Total As Integer
Let Total = Range("Total").Value
' Copier dans un tableau reconfiguré de Total lignes et de
1 colonne
Let Range("Y1").Resize(Total, 1) =
Range("Selection").Resize(Total, 1).Value
' Trier les données copiées
Call Range("Y1").Resize(Total,
1).Sort(Key1:=Range("Y1").Resize(Total, 1), Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortTextAsNumbers)
End Sub
'ETAPE 2: DEFINIR L'INTERVAL DE DISTRIBUTION
'Dans cette section, l'intervalle est défini afin que
celui-ci soit le plus large possible en aberrant les cases vides
'La variable "Interval" est donnée 10 quand la borne
inférieure "borneinf" est Égale 0
'La fenêtre "step" est Égale à 0,1
'La variable "case_vide" est ici exprimée "as boolean",
c'est à dire soit "Vrai" Il n'y a pas de case vide, soit "Faux" il y a
des cases vides
Public Sub Intervallecorrespondant()
Const Interval = 10
Const borne_inf = 0
Const Step = 0.1
Dim intervalleconfiance As Double
Let intervalleconfiance = Interval
Dim case_vide As Boolean
' Montre la dimension de l'intervalle du plus grand au plus
petit
' S'arrête lorsque l'ensemble des cases de sont pas vides,
ou, par sécurité, lorsque la taille de l'intervalle est
Égale à 0
Do
Let Range("Intervalleconfiance").Value = intervalleconfiance
Call Application.Calculate
Dim minimum As Integer
Let minimum =
Application.WorksheetFunction.Min(Range("Distributions"))
Let case_vide = (minimum > 0) ' Vrai si le
minimum >= 1
Let intervalleconfiance = intervalleconfiance - Step '
Boucle
Loop Until case_vide Or intervalleconfiance <= borne_inf
End Sub
'ETAPE 3: FONCTION DE DISTRIBUTION
'Dans cette section, nous allons créer une fonction afin
de faciliter les calculs de fonction de distribution
' Somme des returns (Ln(t) / Ln(t-1))
' Les champs doivent être vertical avec le meme nombre de
ligne
Public Function SumAbsLn(ByRef valeurscourrantes As Range, ByRef
DJIA As Range) As Double
Dim size As Integer
Let size = valeurscourrantes.Rows.Count
If size <> DJIA.Rows.Count Then
Call MsgBox("La taille des séries ne corresponde pas
!")
End If
Dim resultat As Double
Let resultat = 0
Const petitesvaleurs = 0.01
Dim i As Integer
For i = 1 To size
Dim Borne As Double
' Si les données sont égales à 0, prendre la
plus petite value
Let Borne =
Application.WorksheetFunction.Max(valeurscourrantes(i, 1).Value,
petitesvaleurs)
' increment result with the absolute value of the log of the
ratio between actual and model data
Let resultat = resultat + Abs(Log(Borne / DJIA(i, 1).Value))
Next i
Let SumAbsLn = resultat
End Function
|