Non-linear regression using fitter and visual representation
Source code name: "regression_nonlinear.py"
Programming language: Python
Topic: Data mining/Regression
DMelt Version 1.4. Last modified: 02/20/1972. License: Pro
https://datamelt.org/code/cache/regression_nonlinear_1686.py
To run this script using the DMelt IDE, copy the above URL link to the menu [File]→[Read script from URL] of the DMelt IDE.


from jhplot import *
from java.awt import Color

tData = P1D("time-temperature points") 
tData.add(0,  88, 8) # fill X, Y and error on Y 
tData.add(2,  85, 8)
tData.add(5,  80, 7)
tData.add(8,  75, 6)
tData.add(14, 68, 6)
tData.add(22, 60, 6)
tData.add(29, 55, 5)
tData.add(43, 48, 6)
tData.add(49, 45, 6)
tData.add(62, 40, 4)
tData.add(81, 35, 3)
tData.add(130,30, 2) 

fitter = HFitter() # build fitter 
fitter.setFunc("coolingfunction",1,"Tu + (Ta - Tu) * exp(-kk * x[0])","kk,Ta,Tu")
fitter.setPar("kk", 0.02)
fitter.setPar("Ta", 88.0)
fitter.setPar("Tu", 20.0)
fitter.setRange(0, 140)
func = fitter.getFunc()
print("{0} has parameters {1}".format(func.title(), func.parameterNames()))
print("{0}".format(func.codeletString()))
fitter.fit(tData)

fitresult = fitter.getResult()
kk = fitresult.fittedParameter("kk")  
Ta = fitresult.fittedParameter("Ta")
Tu = fitresult.fittedParameter("Tu") 
print("kk = {0}, Ta = {1}, Tu = {2}".format(kk, Ta, Tu))
 
c1=HPlot("Fitting")
c1.visible()
c1.setAutoRange()
max_X = max(tData.getArrayX())

c1.draw(tData)
f1=F1D("fit",func,0,max_X)
f1.setColor(Color.red)
c1.draw(f1)
# import sys,time; time.sleep(1); sys.exit(0)


You see the box below because you did not login.