Polinom dağılımlı bir gözlem çiftine ilişkin herhangi bir kütüphane kullanılmadan oluşturulmuş Ki-Kare testi
list=[]
sigma=[]
tiki=[]
tuc=[]
tdort=[]
t2=[]
t3=[]
t4=[]
tmv=[]
tmvi=[]
t2mvi=[]
t2mv=[]
GCVi=[]
CVi=[]
Matrix = [[0 for x in range(3)] for y in range(3)]
YMatrix = [[0 for x in range(1)] for y in range(3)]
sig=0.05
chikarevek = []
dosya = open("veri.txt","r")
for satir in dosya:
list.append([float(x) for x in satir.split()])
Ti = [x[0] for x in list]
MVi = [x[1] for x in list]
n = len (Ti)
def sgma(sigma,cikarilan,cikan):
for num in range(n):
sigma.append(cikarilan[num]-cikan[num])
def esitle(esitlenen, esitlenecek):
for num in range(n):
esitlenecek.append(esitlenen[num])
def tki(Ti):
for num in range(n):
tiki.append(Ti[num]**(2))
esitle(tiki,t2)
return
def tkup(Ti):
for num in range(n):
tuc.append(Ti[num]**(3))
esitle(tuc,t3)
return
def tdrt(Ti):
for num in range(n):
tdort.append(Ti[num]**(4))
esitle(tdort,t4)
return
def timvi(Ti,MVi):
for num in range(n):
tmvi.append(Ti[num]*MVi[num])
esitle(tmvi,tmv)
def tikaremvi(t2,MVi):
for num in range(n):
t2mvi.append(t2[num]*MVi[num])
esitle(t2mvi,t2mv)
return
def getMatrixMinor(m,i,j):
return [row[:j] + row[j+1:] for row in (m[:i]+m[i+1:])]
def getMatrixDeternminant(m):
if len(m) == 2:
return m[0][0]*m[1][1]-m[0][1]*m[1][0]
determinant = 0
for c in range(len(m)):
determinant += ((-1)**c)*m[0][c]*getMatrixDeternminant(getMatrixMinor(m,0,c))
return determinant
def minoresitle(m):
w, h = len(m), len(m);
minor = [[0 for x in range(w)] for y in range(h)]
for a in range(0, len(m)):
for b in range(0, len(m)):
x = (getMatrixDeternminant(getMatrixMinor(m, a, b)))
minor[a][b] = x;
return minor
def kofaktor(m):
w, h = len(m), len(m);
kofaktor = [[0 for x in range(w)] for y in range(h)]
for a in range(0, len(m)):
for b in range(0, len(m)):
if (a+b) % 2 == 0:
x = m[a][b]
kofaktor[a][b] = x;
elif (a+b) % 2 != 0:
x = (-1) * m[a][b]
kofaktor[a][b] = x;
return kofaktor
def mat_mult(a, b):
result = []
result1 = []
while len(a) > 0:
d = 0
a1 = a[:1:]
c = True
while d < len(a1):
for x in b:
for x1 in x:
result.append(x1 * a1[0][d])
d = d + 1
a.pop(0)
result = [result[i:i + len(b[0])] for i in range(0, len(result), len(b[0]))]
sum = 0
while len(result) > 0:
for X in range(len(result[0])):
for Y in range(len(b)):
sum = sum + result[Y][X]
result1.append(sum)
sum = 0
for s in range(len(b)):
result.pop(0)
result1 = [result1[i:i + len(b[0])] for i in range(0, len(result1), len(b[0]))]
return (result1)
def inversematris(det,m):
w, h = len(m), len(m);
inverse = [[0 for x in range(w)] for y in range(h)]
for a in range(0, len(m)):
for b in range(0, len(m)):
x = (1/det)*m[a][b]
inverse[a][b] = x;
return inverse
def polynomial(a,b,c,m):
for num in range(n):
CVi.append(a+m[num]*b+c*m[num]**(2))
esitle(CVi,GCVi)
return
def chisquare(meas, parent, sig):
for num in range(n):
chikarevek.append(((meas[num] - parent[num]) / sig) * ((meas[num] - parent[num]) / sig))
return
tki(Ti)
tkup(Ti)
tdrt(Ti)
timvi(Ti,MVi)
tikaremvi(t2,MVi)
ttoplam = sum(Ti)
t2toplam = sum(t2)
t3toplam = sum(t3)
t4toplam = sum(t4)
tmtoplam = sum(tmv)
t2mtoplam = sum(t2mv)
MVitoplam = sum(MVi)
Matrix[0][0]=n
Matrix[0][1]=ttoplam
Matrix[0][2]=t2toplam
Matrix[1][0]=ttoplam
Matrix[1][1]=t2toplam
Matrix[1][2]=t3toplam
Matrix[2][0]=t2toplam
Matrix[2][1]=t3toplam
Matrix[2][2]=t4toplam
YMatrix[0][0]=MVitoplam
YMatrix[1][0]=tmtoplam
YMatrix[2][0]=t2mtoplam
GMinor = minoresitle(Matrix)
GKofaktor = kofaktor(GMinor)
determinant= getMatrixDeternminant(Matrix)
GInverse = inversematris(determinant,GKofaktor)
Gcarpim = mat_mult(GInverse,YMatrix)
a1= Gcarpim[0][0]
a2= Gcarpim[1][0]
a3= Gcarpim[2][0]
polynomial(a1,a2,a3,Ti)
chisquare(MVi,GCVi,sig)
chikare = sum(chikarevek)
print(chikare)