ST-TEST.TXT

(6 KB) Pobierz
======================= T DE STUDENT =========================

    'st-test.bas

    'Traduit par www.FreeNRG.info d'un programme PASCAL (ttest: Student's t-test)
    'de chez:
    'http://www.lecb.ncifcrf.gov/~toms/delila/delilaprograms.html

    DECLARE FUNCTION zip! (q AS SINGLE, i AS SINGLE, j AS SINGLE, b AS SINGLE)
    DECLARE FUNCTION buzz! (t AS SINGLE, n AS SINGLE)
    DECLARE FUNCTION ttestproba! (t AS SINGLE, ddl AS SINGLE)
    DECLARE SUB try (t AS SINGLE, ddl AS SINGLE)

    CONST ecran = 5, imprimante = 6
    
    DIM sortie AS INTEGER
    DIM SHARED e AS SINGLE
    DIM SHARED pi AS SINGLE
    DIM SHARED pj2 AS SINGLE
    DIM SHARED pj4 AS SINGLE
    DIM SHARED pi2 AS SINGLE
    DIM SHARED dgr AS SINGLE

    e = EXP(1!)
    pi = 4! * ATN(1!)
    pj2 = pi / 2!
    pj4 = pi / 4!
    pi2 = pi * 2!
    dgr = 180! / pi

    CLS
       OPEN "scrn:" FOR RANDOM AS #ecran
       OPEN "lpt1:" FOR OUTPUT AS #imprimante
       sortie = ecran
       '''sortie = imprimante
       PRINT #sortie, "les valeurs devraient approcher 0.90:"
       try 3.078, 1
       try 1.886, 2
       try 1.638, 3
       try 1.345, 14
       try 1.3128, 28
       try 1.3103, 30
       PRINT #sortie, ""
       IF (sortie = ecran) THEN a$ = INPUT$(1)

       PRINT #sortie, "les valeurs devraient approcher 0.95:"
       try 6.314, 1
       try 2.92, 2
       try 2.353, 3
       try 1.761, 14
       try 1.701, 28
       try 1.697, 30
       PRINT #sortie, ""
       IF (sortie = ecran) THEN a$ = INPUT$(1)

       PRINT #sortie, "les valeurs devraient approcher 0.975:"
       try 12.706, 1
       try 4.303, 2
       try 3.182, 3
       try 2.145, 14
       try 2.048, 28
       try 2.042, 30
       PRINT #sortie, ""
       IF (sortie = ecran) THEN a$ = INPUT$(1)

       PRINT #sortie, "les valeurs devraient approcher 0.99:"
       try 31.821, 1
       try 6.965, 2
       try 4.541, 3
       try 2.624, 14
       try 2.467, 28
       try 2.457, 30
       PRINT #sortie, ""
       IF (sortie = ecran) THEN a$ = INPUT$(1)

       PRINT #sortie, "les valeurs devraient approcher 0.995:"
       try 63.7, 1
       try 9.93, 2
       try 5.84, 3
       try 2.98, 14
       try 2.76, 28
       try 2.75, 30
       PRINT #sortie, ""
       IF (sortie = ecran) THEN a$ = INPUT$(1)

       PRINT #sortie, "les valeurs devraient approcher 0.9995:"
       try 636.619, 1
       try 31.598, 2
       try 12.924, 3
       try 4.14, 14
       try 3.694, 28
       try 3.646, 30
       PRINT #sortie, ""
    END

'
'
'
'
'
'
      FUNCTION buzz! (t AS SINGLE, n AS SINGLE) 'var
         DIM rt AS SINGLE, fk AS SINGLE, ek AS SINGLE, dk AS SINGLE
           t = ABS(t)
           rt = t / SQR(n)
           fk = ATN(rt)
           IF (n = 1) THEN
               buzz! = 1 - fk / pj2
             ELSE
              ek = SIN(fk)
              dk = COS(fk)
              ''IF ((round(n) MOD 2) = 1) THEN
              IF ((INT(n) MOD 2) = 1) THEN
                 buzz! = 1 - (fk + ek * dk * zip!(dk * dk, 2, n - 3, -1)) / pj2
               ELSE
                 buzz! = 1 - ek * zip!(dk * dk, 1, n - 3, -1)
              END IF
          END IF
      END FUNCTION

'
'
'
'
'
'
      SUB try (t AS SINGLE, ddl AS SINGLE)
        DIM prob AS SINGLE
        SHARED sortie AS INTEGER
          prob = ttestproba!(t, ddl)
          PRINT #sortie, USING " t  = ###.###   "; t;
          PRINT #sortie, USING " ddl = ###   "; ddl;
          PRINT #sortie, USING " P  = #.####   (#.####) "; prob; 1! - prob
      END SUB

'
'
'
'
'
'
      FUNCTION ttestproba! (t AS SINGLE, ddl AS SINGLE)
          ttestproba! = 1! - (buzz(t, ddl) / 2!)
      END FUNCTION

'
'
'
'
'
'
      FUNCTION zip! (q AS SINGLE, i AS SINGLE, j AS SINGLE, b AS SINGLE)
        DIM k  AS SINGLE, zz AS SINGLE, z AS SINGLE
         zz = 1
         z = zz
         k = i
         WHILE (k <= j)'do
           zz = zz * q * k / (k - b)
           z = z + zz
          k = k + 2
         WEND
         zip! = z
      END FUNCTION


======================= SORTIES DU PROGRAMME =========================

les valeurs devraient approcher 0.90:
 t  =   3.078    ddl =   1    P  = 0.9000   (0.1000) 
 t  =   1.886    ddl =   2    P  = 0.9000   (0.1000) 
 t  =   1.638    ddl =   3    P  = 0.9000   (0.1000) 
 t  =   1.345    ddl =  14    P  = 0.9000   (0.1000) 
 t  =   1.313    ddl =  28    P  = 0.9000   (0.1000) 
 t  =   1.310    ddl =  30    P  = 0.9000   (0.1000) 

les valeurs devraient approcher 0.95:
 t  =   6.314    ddl =   1    P  = 0.9500   (0.0500) 
 t  =   2.920    ddl =   2    P  = 0.9500   (0.0500) 
 t  =   2.353    ddl =   3    P  = 0.9500   (0.0500) 
 t  =   1.761    ddl =  14    P  = 0.9500   (0.0500) 
 t  =   1.701    ddl =  28    P  = 0.9500   (0.0500) 
 t  =   1.697    ddl =  30    P  = 0.9500   (0.0500) 

les valeurs devraient approcher 0.975:
 t  =  12.706    ddl =   1    P  = 0.9750   (0.0250) 
 t  =   4.303    ddl =   2    P  = 0.9750   (0.0250) 
 t  =   3.182    ddl =   3    P  = 0.9750   (0.0250) 
 t  =   2.145    ddl =  14    P  = 0.9750   (0.0250) 
 t  =   2.048    ddl =  28    P  = 0.9750   (0.0250) 
 t  =   2.042    ddl =  30    P  = 0.9750   (0.0250) 

les valeurs devraient approcher 0.99:
 t  =  31.821    ddl =   1    P  = 0.9900   (0.0100) 
 t  =   6.965    ddl =   2    P  = 0.9900   (0.0100) 
 t  =   4.541    ddl =   3    P  = 0.9900   (0.0100) 
 t  =   2.624    ddl =  14    P  = 0.9900   (0.0100) 
 t  =   2.467    ddl =  28    P  = 0.9900   (0.0100) 
 t  =   2.457    ddl =  30    P  = 0.9900   (0.0100) 

les valeurs devraient approcher 0.995:
 t  =  63.700    ddl =   1    P  = 0.9950   (0.0050) 
 t  =   9.930    ddl =   2    P  = 0.9950   (0.0050) 
 t  =   5.840    ddl =   3    P  = 0.9950   (0.0050) 
 t  =   2.980    ddl =  14    P  = 0.9950   (0.0050) 
 t  =   2.760    ddl =  28    P  = 0.9950   (0.0050) 
 t  =   2.750    ddl =  30    P  = 0.9950   (0.0050) 

les valeurs devraient approcher 0.9995:
 t  = 636.619    ddl =   1    P  = 0.9995   (0.0005) 
 t  =  31.598    ddl =   2    P  = 0.9995   (0.0005) 
 t  =  12.924    ddl =   3    P  = 0.9995   (0.0005) 
 t  =   4.140    ddl =  14    P  = 0.9995   (0.0005) 
 t  =   3.694    ddl =  28    P  = 0.9995   (0.0005) 
 t  =   3.646    ddl =  30    P  = 0.9995   (0.0005) 

Zgłoś jeśli naruszono regulamin