xxxxxxxxxx
import numpy as np
import scipy.stats as st
import pandas as pd
# funktionen vartest2 defineres
def vartest2(x:"numpyarray_float",y:"numpyarray_float",
ciLevel:"float"=0.95):
# teste to varianser ens for data i vektorerne x og y
df1=len(x)-1
df2=len(y)-1
fstat=np.var(x,ddof=1)/np.var(y,ddof=1)
p=2*np.min([st.f.cdf(fstat,df1,df2),1-st.f.cdf(fstat,df1,df2)])
lower=fstat/st.f.ppf(1-(1-ciLevel)/2,df1,df2)
upper=fstat/st.f.ppf((1-ciLevel)/2,df1,df2)
return pd.DataFrame(np.array([fstat,df1,df2,p,lower,upper]).reshape(1,-1),
columns=['fstat','df1','df2','p','lower','upper'],index=[''])
print("Opstart er gennemført: funktion vartest2 er defineret")
xxxxxxxxxx
# Opstart ovenfor skal være kørt
# data indskrives
qia=np.array([14.8,13.3,13.0,13.3,15.1,16.3,17.1,19.2,19.2,\
24.2,22.5,22.2,23.3,25.1])
tri=np.array([21.6,26.3,28.4,36.7,36.4,35.5,35.8,36.4,38.1,\
37.8,38.1,39.9,40.5,40.5,43.7,44.3,45.5,46.4,48.5,49.1])
# test udføres
print(vartest2(qia,tri))
6.5.2 Teste to middelværdier ens
xxxxxxxxxx
import numpy as np
import scipy.stats as st
import pandas as pd
# funktionen ttest2 defineres
def ttest2(x:"numpyarray_float",y:"numpyarray_float",
varequal:"boolean"=True,ciLevel:"float"=0.95):
# two sample t-test for data i vektorerne x og y, metode betemt af varequal
n1=len(x); df1=n1-1
n2=len(y); df2=n2-1
m1=np.mean(x); m2=np.mean(y)
va1=np.var(x,ddof=1); va2=np.var(y,ddof=1)
if varequal:
df=df1+df2
s2=(df1*va1+df2*va2)/df
stds=np.sqrt(s2*(1/n1+1/n2))
else:
df=((va1/n1+va2/n2)**2)/((va1/n1)**2/df1+(va2/n2)**2/df2)
stds=np.sqrt(va1/n1+va2/n2)
est=m1-m2
tstat=est/stds
p=2*st.t.cdf(-abs(tstat),df)
t0=st.t.ppf(1-(1-ciLevel)/2,df)
lower=m1-m2-t0*stds
upper=m1-m2+t0*stds
return pd.DataFrame(np.array([tstat,df,p,est,lower,upper]).reshape(1,-1),
columns=['tstat','df','p','est','lower','upper'],index=[''])
print("Opstart er gennemført: funktion ttest2 er defineret")
xxxxxxxxxx
# Opstart ovenfor skal være kørt
# data indskrives
qia=np.array([14.8,13.3,13.0,13.3,15.1,16.3,17.1,19.2,19.2,\
24.2,22.5,22.2,23.3,25.1])
tri=np.array([21.6,26.3,28.4,36.7,36.4,35.5,35.8,36.4,38.1,\
37.8,38.1,39.9,40.5,40.5,43.7,44.3,45.5,46.4,48.5,49.1])
# t-test beregnes
print(ttest2(qia,tri,varequal=True))
xxxxxxxxxx
# Opstart ovenfor skal være kørt
# data indskrives
atmos=np.array([2.31017,2.30986,2.31010,2.31001,2.31024,2.31010,2.31028])
kemi=np.array([2.30143,2.29890,2.29816,2.30182,2.29869,2.29940,2.29849,2.29869])
# t-test beregnes
print(ttest2(atmos,kemi,varequal=False))
xxxxxxxxxx
import numpy as np
from scipy.stats import t, f
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.gofplots import qqplot
# funktionen vartest2 defineres
def vartest2(x,y,ciLevel=0.95):
df1=len(x)-1
df2=len(y)-1
fstat=np.var(x,ddof=1)/np.var(y,ddof=1)
p=2*np.min([f.cdf(fstat,df1,df2),1-f.cdf(fstat,df1,df2)])
lower=fstat/f.ppf(1-(1-ciLevel)/2,df1,df2)
upper=fstat/f.ppf((1-ciLevel)/2,df1,df2)
return pd.DataFrame(np.array([fstat,df1,df2,p,lower,upper]).reshape(1,-1),
columns=['fstat','df1','df2','p','lower','upper'],index=[''])
# funktionen ttest2 defineres
def ttest2(x:"numpyarray_float",y:"numpyarray_float",
varequal:"boolean"=True,ciLevel:"float"=0.95):
# two sample t-test for data i vektorerne x og y, metode betemt af varequal
n1=len(x); df1=n1-1
n2=len(y); df2=n2-1
m1=np.mean(x); m2=np.mean(y)
va1=np.var(x,ddof=1); va2=np.var(y,ddof=1)
if varequal:
df=df1+df2
s2=(df1*va1+df2*va2)/df
stds=np.sqrt(s2*(1/n1+1/n2))
else:
df=((va1/n1+va2/n2)**2)/((va1/n1)**2/df1+(va2/n2)**2/df2)
stds=np.sqrt(va1/n1+va2/n2)
est=m1-m2
tstat=est/stds
p=2*st.t.cdf(-abs(tstat),df)
t0=st.t.ppf(1-(1-ciLevel)/2,df)
lower=m1-m2-t0*stds
upper=m1-m2+t0*stds
return pd.DataFrame(np.array([tstat,df,p,est,lower,upper]).reshape(1,-1),
columns=['tstat','df','p','est','lower','upper'],index=[''])
# data indskrives
qia=np.array([14.8,13.3,13.0,13.3,15.1,16.3,17.1,19.2,19.2,\
24.2,22.5,22.2,23.3,25.1])
tri=np.array([21.6,26.3,28.4,36.7,36.4,35.5,35.8,36.4,38.1,\
37.8,38.1,39.9,40.5,40.5,43.7,44.3,45.5,46.4,48.5,49.1])
print("Opstart er gennemført: qia og tri er indskrevet")
xxxxxxxxxx
# Opstart ovenfor skal være kørt
# datasæt og logaritmetransformerede
x1=qia
x2=tri
logX1=log(x1)
logX2=log(x2)
# qqplots dannes
ax1=plt.subplot(1,2,1)
ax2=plt.subplot(1,2,2)
qqplot(x1,line='r',ax=ax1)
qqplot(x2,line='r',ax=ax1,marker='+',color='r')
ax1.set_title('Ikke Log')
qqplot(logX1,line='r',ax=ax2)
qqplot(logX2,line='r',ax=ax2,marker='+',color='r')
ax2.set_title('Log')
plt.tight_layout() # mere afstand mellem de to figurer
plt.show()
# test udføres
print('Test for samme varians:')
print(vartest2(logX1,logX2))
print(' ')
print('Test for samme middelværdi:')
print(ttest2(logX1,logX2,varequal=True))