Importation des modules
import os # pour gérer les répertoires
import numpy as np # pour quelques fonctions mathématiques et pour stocker les données
import scipy.stats as sps # pour toutes les fonctions statistiques (moyenne, variance, tests, ...)
Lecture des données dans un fichier .txt
os.chdir('D:\\Users\\ridard\\Desktop') # on change le répertoire de travail
f=open('data_1.txt','r') # on ouvre le fichier en mode lecture
lst=f.readlines()
x=''
for ligne in lst:
x=x+ligne
f.close()
x
Stockage des données dans un tableau numpy
y=x.replace('\n','\t')
lst=y[:-1].split('\t')
lstc=lst[:]
for i in range(len(lst)):
lstc[i]=eval(lst[i])
data=np.array(lstc)
data
Description statistique des données
sps.describe(data)
Test de normalité à partir des coefficients d'asymétrie (skewness) et d'applatissement (kurtosis)
sps.normaltest(data)
La première composante de la réponse (statistic) est la réalisation $w$ de la variable de décision du test $W$
La deuxième (pvalue) est la probabilité sous $H_0$ (l'échantillon est gaussien) d'avoir $|W|>|w|$, c'est la p-value bilatérale
On peut alors rejeter $H_0$ dès que la p-value est inférieure à l'erreur de première espèce $\alpha$, mais attention il s'agit là d'un test bilatéral
NB : pour récupérer la p-value unilatérale, il suffit de diviser par deux la p-value fournie par Python !
Test de normalité de Shapiro-Wilk
sps.shapiro(data)
Directement
sps.ttest_1samp(data,2400) # cf. exercice du cours
A la main
D'abord, on calcule la réalisation $w$ de la variable de décision $W$
stat=sps.describe(data)
n,moyEmp,varEmpC=stat.nobs,stat.mean,stat.variance
w=(moyEmp-2400)/np.sqrt(varEmpC/n)
w
Ensuite, on calcule la valeur critique c'est à dire l'extrémité de la zone de rejet (test unilatéral à droite avec une erreur de première espèce égale à 5%)
alpha=0.05
dl=n-1
valCrit=sps.t.ppf(1-alpha,dl)
valCrit
On décide
if w>valCrit:
print('On rejette H0')
else :
print('Aucune raison de rejeter H0')
On peut aussi retrouver la p-value bilatérale fournie par Python
pValBil=(1-sps.t.cdf(np.abs(w),dl))*2
pValBil
Ecrire un script permettant de répondre à l'exercice du cours (toujours le même) concernant la variance.
# Réponse
Dans le cas de variances inconnues supposées égales
D'abord, on récupère l'échantillon $A$ puis on regarde s'il peut être supposé gaussien
f=open('data_2A.txt','r')
x=f.readline()
f.close()
y=x.replace(',','.')
lst=y[:-1].split('\t')
lstc=lst[:]
for i in range(len(lst)):
lstc[i]=eval(lst[i])
data_A=np.array(lstc)
sps.shapiro(data_A)
Idem avec l'échantillon $B$
f=open('D:\\Users\\ridard\\Desktop\\data_2B.txt','r')
x=f.readline()
f.close()
y=x.replace(',','.')
lst=y[:-1].split('\t')
lstc=lst[:]
for i in range(len(lst)):
lstc[i]=eval(lst[i])
data_B=np.array(lstc)
sps.shapiro(data_B)
Directement
sps.ttest_ind(data_A,data_B,equal_var=True) # le dernier paramètre précise l'égalité supposée des variances inconnues
Déterminer la p-value unilatérale et conclure
# Réponse
A la main
Ecrire un script réalisant le test précédent à la main
# Réponse
Ecrire un script réalisant le test de comparaison de variances pour retrouver le fait que les variances inconnues peuvent être supposées égales
# Réponse