#Oppgave c #Quadratic regression [a, b, c] = quadraticRegression(Tid, T) yplot = np.dot(a,np.power(xplot,2))+np.dot(b,xplot) + c plt.plot(xplot, yplot, 'b--') #Determinant koeffisienten Sy2 = sum((T-np.mean(T))**2) SSEQuad = sum((T-(np.dot(a,np.power(Tid,2))+np.dot(b,Tid) + c))**2) Quadratic = (Sy2-SSEQuad)/Sy2 print('\nKvadratisk regresjon sin determinant koeffisient:') print(np.sqrt(Quadratic)) #print(np.corrcoef(xplot, yplot)[0][1]) #Cubic regression [a, b, c, d] = cubicRegression(Tid, T) yplot = np.dot(a,np.power(xplot,3))+ np.dot(b,np.power(xplot,2))+np.dot(c, xplot) + d plt.plot(xplot, yplot, 'k') #Determinant koeffisienten SSECubic =sum((T-(np.dot(a,np.power(Tid,3))+np.dot(b,np.power(Tid,2))+np.dot(c,Tid) + d))**2) r2Cubic = (Sy2-SSECubic)/Sy2 print('\nKubisk regresjon sin determinant koeffisient:') print(np.sqrt(r2Cubic)) #print(np.corrcoef(xplot, yplot)[0][1]) plt.xlabel('Tid (m)') plt.ylabel('Temperatur') plt.title('Temperatur over tid') plt.legend(['LReg','QReg', 'CReg', 'Temp']) plt.show #Oppgave d
# c) [a_kva, b_kva, c_kva] = regression.quadraticRegression(X, T) Sy2_kva = sum((T - np.mean(T))**2) SSE_kva = sum( (T - (np.dot(a_kva, np.power(X, 2)) + np.dot(b_kva, X) + c_kva))**2) R2_kva = (Sy2_kva - SSE_kva) / Sy2_kva print("Determinantkoeffisient for kvadratisk", R2_kva) # -> 0.9126314317675248 yplot = np.dot(a_kva, np.power(xplot, 2)) + np.dot(b_kva, xplot) + c_kva plt.plot(xplot, yplot) [a_kub, b_kub, c_kub, d_kub] = regression.cubicRegression(X, T) Sy2_kub = sum((T - np.mean(T))**2) SSE_kub = sum( (T - (np.dot(a_kub, np.power(X, 3)) + np.dot(b_kub, np.power(X, 2)) + np.dot(c_kub, X) + d_kub))**2) R2_kub = (Sy2_kub - SSE_kub) / Sy2_kub print("Determinantkoeffisient for kubisk", R2_kub) # -> 0.9335598634480327 yplot = np.dot(a_kub, np.power(xplot, 3)) + np.dot(b_kub, np.power( xplot, 2)) + np.dot(c_kub, xplot) + d_kub plt.plot(xplot, yplot)
r2Linear = (Sy2 - SSELin) / Sy2 print("\n2b)\nr² = ", r2Linear) # c) # Kvadratisk tilnærming: [a, b, c] = reg.quadraticRegression(X, T) # så kvadratisk yplot = np.dot(a, np.power(X, 2)) + np.dot(b, X) + c plot_qua = plt.plot(X, yplot, label="Quadratic") SSEQuad = sum((T - (np.dot(a, np.power(X, 2)) + np.dot(b, X) + c))**2) r2Quadratic = (Sy2 - SSEQuad) / Sy2 print("\nc)\nKvadratisk tilnærming r² = ", r2Quadratic) # Kubisk tilnærming: [a, b, c, d] = reg.cubicRegression(X, T) yplot = np.dot(a, np.power(X, 3)) + np.dot(b, np.power(X, 2)) + np.dot(c, X) + d plot_cubic = plt.plot(X, yplot, label="Cubic") SSECubic = sum((T - (np.dot(a, np.power(X, 3)) + np.dot(b, np.power(X, 2)) + np.dot(c, X) + d))**2) r2Cubic = (Sy2 - SSECubic) / Sy2 print("\nKubisk tilnærming r² = ", r2Cubic) # Svar oppgave 2d: # Vi kan se ved grafen at den kubiske ser ut til å passe situasjonen best. Dette stemmer også med # determinasjonskoeffisienten som også er høyest for kubisk. plt.legend() plt.show()
r2Linear = (Sy2 - SSELin) / Sy2 # Determinasjonskoeffisienten = 0.745 # c) [a, b, c] = quadraticRegression(tid, temp) yplot = np.dot(a, np.power(xplot, 2)) + np.dot(b, xplot) + c plt.plot(xplot, yplot) SSEQuad = sum((temp - (np.dot(a, np.power(tid, 2)) + np.dot(b, tid) + c))**2) r2Quadratic = (Sy2 - SSEQuad) / Sy2 # Determinasjonskoeffisienten ved kvadratisk tilnærming = 0.913 [a, b, c, d] = cubicRegression(tid, temp) yplot = np.dot(a, np.power(xplot, 3)) + np.dot(b, np.power(xplot, 2)) + np.dot( c, xplot) + d plt.plot(xplot, yplot) SSECubic = sum((temp - (np.dot(a, np.power(tid, 3)) + np.dot(b, np.power(tid, 2)) + np.dot(c, tid) + d))**2) r2Cubic = (Sy2 - SSECubic) / Sy2 plt.show() # Determinasjonskoeffisienten ved kvadratisk tilnærming = 0.934 # d) Det er den kubiske tilnærmingen som passer best, både basert på plot og determinasjonskoeffisienten. # Oppgave 3
xplot = np.linspace(-2, 12) yplot = np.dot(a, xplot) + b plt.plot(xplot, yplot) Sy2 = sum((y - np.mean(y))**2) SSELin = sum((y - np.dot(a, x) - b)**2) r2Linear = (Sy2 - SSELin) / Sy2 # Quadratic regression [a, b, c] = regression.quadraticRegression(x, y) yplot = np.dot(a, np.power(xplot, 2)) + np.dot(b, xplot) + c plt.plot(xplot, yplot) SSEQuad = sum((y - (np.dot(a, np.power(x, 2)) + np.dot(b, x) + c))**2) r2Quadratic = (Sy2 - SSEQuad) / Sy2 # Cubic regression [a, b, c, d] = regression.cubicRegression(x, y) yplot = np.dot(a, np.power(xplot, 3)) + np.dot(b, np.power(xplot, 2)) + np.dot( c, xplot) + d plt.plot(xplot, yplot) SSECubic = sum((y - (np.dot(a, np.power(x, 3)) + np.dot(b, np.power(x, 2)) + np.dot(c, x) + d))**2) r2Cubic = (Sy2 - SSECubic) / Sy2 omega = 8 # 1b print('Linear coefficient of determination: ', r2Linear) # 0.00322 print('Quadratic coefficient of determination: ', r2Quadratic) # 0.274 print('Cubic coefficient of determination: ', r2Cubic) # 0.686 # Determinasjonskoeffisienten skal være et tall mellom 0 og 1, og jo nærmere # den er 1 jo bedre vil modellen stemme med punktene fra input-dataen.