IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Test de Normalité VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2017
    Messages : 2
    Par défaut Test de Normalité VBA
    Bonjour à toutes et à tous,

    Je suis un novice de VBA, en effet, je dois faire un test de normalité, mais je n'arrive pas à faire les fonctions qu'on me demande.

    On me demande de faire des fonctions avec des signifiances level que je n'arrive pas à faire.

    1) Normaliser les rendements selon la formule suivante :

    2) Calculer les 3ème et 4ème moments (skewness et kurtosis) sans utiliser les fonctions
    accessibles sous VBA.

    Skewness
    Kurtosis
    
    3) Pour la Règle de décision:
    Noter que l'hypothèse que la distribution suive une loi normale est rejetée à un niveau
    de confiance (1- α) si JB ≥ ChiSquareDistr [2, 1 - α].
    Vous pouvez utiliser WorksheetFunction.ChiDist pour calculer la pValue.
    La fonction prend comme argument le vecteur rendement et le niveau de significativité
    Fonctions à créer :
    La cellule E2 affiche vrai ou faux selon que l’hypothèse de la loi normale soit rejetée ou
    pas. (Créer la fonction JBTEST((ReturnVector, SignificanceLevel).

    La cellule E3 donnera la valeur JB statistique=créer la fonction JBSTAT(ReturnVector,
    SignificanceLevel).
    La cellule E4 permet de donner le résultat de la valeur critique  créer la fonction
    JBCriticalValue(ReturnVector, SignificanceLevel).
    La cellule E5 affiche la valeur critique de JB créer la fonction
    JBCriticalValue(ReturnVector, SignificanceLevel).

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Private Sub Button1_Click()
    Dim mean As Double
    Dim stdev As Double
    Dim N As Double
    Dim S As Double
    Dim K As Double
    Dim Normalized As Double
    Dim pValue As Double
    Dim JB As Double
     
    N = ActiveSheet.UsedRange.Rows.Count - 1
     
    Cells(7, 5) = WorksheetFunction.Average(Range(Cells(2, 2), Cells(N, 2)))
    mean = Cells(7, 5)
    Cells(8, 5) = WorksheetFunction.stdev(Range(Cells(2, 2), Cells(N, 2)))
    stdev = Cells(7, 5)
     
    For i = 2 To N
    Cells(i, 1) = (Cells(i, 2) - mean) / stdev
    Next
     
    Cells(9, 5) = WorksheetFunction.Average(Range(Cells(2, 1), Cells(N, 1)))
    mean = Cells(9, 5)
    Cells(10, 5) = WorksheetFunction.stdev(Range(Cells(2, 1), Cells(N, 1)))
    stdev = Cells(10, 5)
     
    For i = 1 To N
    i = i + 1
    Cells(11, 5) = ((Cells(i, 1) - mean) ^ 3) / (stdev) ^ 3
     
    S = Cells(11, 5)
    Cells(12, 5) = ((Cells(i, 1) - mean) ^ 4) / (stdev) ^ 4
    K = Cells(12, 5)
    Next
    Cells(3, 5) = (N / 6) * ((S ^ 2) + (K ^ 2) / 4) ' Equation de jarqueberra '
    JB = Cells(3, 5) ' on colle la valeur de la statistique JB dans la case corresponsante '
    Cells(4, 5) = WorksheetFunction.ChiDist(JB, 2) ' equation pvalue '
    pValue = Cells(5, 5) ' on colle la de la pvalue dans la case corresponsante '
    If (pValue < 0.05) Then ' Les rendements suient-ils une loi normale ? '
    Cells(2, 5).Value = " No "
    Else: Cells(2, 5).Value = " Yes "
    End If
     
    End Sub
    Function JBTest(ReturnVector As Range, SignificanceLevel As Double) As Variant
    JBTest = (N / 6) * ((S ^ 2) + (K ^ 2) / 4)
     
    End Function
    Function JBCriticalValue(SignificanceLevel As Double) As Double
     
    JBCriticalValue = WorksheetFunction.ChiDist(JB, 2)
     
    Cells(4, 5) = JBTest
     
    End Function
    Votre aide me sera très utile, et merci par avance

  2. #2
    Invité de passage
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2017
    Messages : 1
    Par défaut
    Bonsoir,
    déjà pourquoi tu ne soustraits pas K par 3 dans ta formule de JB ? De mémoire la formule est (K -3)^2

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour,
    je ne comprends pas ça!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i = 1To N
    i = i + 1

Discussions similaires

  1. Test de Normalité
    Par bulledeneige dans le forum SAS STAT
    Réponses: 3
    Dernier message: 11/10/2010, 09h38
  2. Test de normalité dans la proc univariate
    Par enicnath dans le forum SAS STAT
    Réponses: 2
    Dernier message: 08/06/2009, 22h22
  3. Test de normalité
    Par ahmed85 dans le forum R
    Réponses: 2
    Dernier message: 17/04/2008, 22h31
  4. Test de code VBA sur différentes versions d'Excel
    Par Fala fala dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2008, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo