Polinom Dağılımlı Ölçü Çifti İçin Ki-Kare Testi

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)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*