Nonlinear Regression in MATLAB

  Рет қаралды 128,873

APMonitor.com

APMonitor.com

Күн бұрын

Пікірлер: 111
@chaosui3169
@chaosui3169 3 жыл бұрын
Good Video. I was wondering what can we do if we only have the data but do not know the function/model, for example, the data is so complex that not sure the function. Is there any method to find the function?
@apm
@apm 3 жыл бұрын
Yes, try regression from machine learning: apmonitor.com/pds/
@MarsVltorRecords
@MarsVltorRecords 2 жыл бұрын
Professor I have a problem, I am trying to change the model and data from the APM file and CSV file respectively, but matlab always gives me the same result, suggesting that it does not consider those files
@apm
@apm 2 жыл бұрын
Make sure the run directory is set correctly. You may also want to try Python Gekko: apmonitor.com/me575/index.php/Main/NonlinearRegression
@ghoshabir4
@ghoshabir4 4 жыл бұрын
I am facing a problem. Can anyone help me plz. i have a dataset of about 500 data points in my csv file but my xm and ym is showing only one value instead of a array of 500
@apm
@apm 4 жыл бұрын
Try running the source code at apmonitor.com/che263/uploads/Main/MATLAB_nonlinear_regression.zip (after you extract the archive) and then replace the data.csv values with your data. Also, you'll want to open the data.csv file with a text editor to make sure the numbers are formatted correctly as a CSV (Comma Separated Value) file.
@reTache4955
@reTache4955 7 ай бұрын
It seems to not work as good when you have a function with a singularity, do you have any idea on how to handle that? y = a * ((sin(bx)/(bx))^2 Edit: It worked rather okay, when I slightly shifted the function and added a restriction a > 10 y = a * ((sin(bx)/(bx+0.000001))^2
@apm
@apm 7 ай бұрын
Great observation. Setting a bound or rearranging the equation to avoid divide-by-zero is often effective.
@bircan9647
@bircan9647 2 жыл бұрын
Hi, thank you.It seems it will solve my problem. I am trying to repeat the example and I got the error. " Error using urlread. The value of 'url' is invalid. Expected input to be one of these types". Any recommendation to resolve this? Thank you
@apm
@apm 2 жыл бұрын
Please check that your MATLAB version is 2014+ and that you are connected to the Internet. If either of those is a problem, I recommend that you try Python Gekko that doesn't require an internet connection in local mode. There is also a way to call Gekko from Matlab: apmonitor.com/che263/index.php/Main/MatlabCallsPython
@achadavid2302
@achadavid2302 4 жыл бұрын
i can't seem to make an apm file.. once i make a new text document, it only saves as a text document and not an apm file
@apm
@apm 4 жыл бұрын
Here is help on changing the extension: kzbin.info/www/bejne/j52xapSubN52ZqM
@patricksinko4375
@patricksinko4375 4 жыл бұрын
Hello, I am curious how I can add regression statistics to this demo file? I ultimate want to run a for loop and run multiple model files for the same data set and compare a model statistic, like the root mean square error to determine the best fit.
@patricksinko4375
@patricksinko4375 4 жыл бұрын
So the RMSE calculation is easy but I was wondering if apmonitor has functions to do this? my RMSE code is : %results check tau = z.t(1) + z.k(1).*z.xm.^(z.n(1)); %(this is the model im fitting so just change this to whatever you need to) %RMSE Calcualtion difsq = zeros(1,length(z.ym)); count = length(z.ym); for i = 1:1:length(z.ym) difsq(i) = (tau(i)-z.ym(i)).^2; end error = sqrt(sum(difsq(:))/count); disp(['RMSE = ' num2str(error)])
@apm
@apm 4 жыл бұрын
APMonitor doesn't return the R^2 value. However, there are functions in MATLAB for this: www.mathworks.com/help/stats/coefficient-of-determination-r-squared.html Here is some additional analysis that you may be able to adapt from Python: apmonitor.com/che263/index.php/Main/PythonRegressionStatistics
@biomilitus8139
@biomilitus8139 4 жыл бұрын
@@apm Hello, how does your first example (in the comment link) translate to the example from this video. In other words. how and where would I put in code to obtain a R^2 value for the measured and predicted values for the final plot in this video? So far this has been very helpful. But I am hitting a wall at this point.
@biomilitus8139
@biomilitus8139 4 жыл бұрын
@@patricksinko4375 I tried using this but get a error Undefined operator '-' for input arguments of type 'struct'. Note: I am working off this video exactly, with just a change in the model. From there I am trying to get an R^2 from the measured and predicted values.
@apm
@apm 4 жыл бұрын
@@biomilitus8139 You can calculate the R^2 from this code: Bbar = mean(B); SStot = sum((B - Bbar).^2); SSreg = sum((A - Bbar).^2); SSres = sum((B - A).^2); R2 = 1 - SSres/SStot Where B is your vector of measurements and A is your vector of predictions.
@jessielim569
@jessielim569 4 жыл бұрын
Dear Prof, I get this error message when I run the script(even when I run the example script shown in the video). Could you please help me with this problem? Thank you. Error using urlread The value of 'url' is invalid. Expected input to be one of these types: char Instead its type was java.net.URL. Error in urlreadwrite>parseInputs (line 144) p.parse(args{:}) Error in urlreadwrite (line 15) inputs = parseInputs(fcn,varargin); Error in urlread (line 47) [s,status] = urlreadwrite(mfilename,catchErrors,url,varargin{:}); Error in urlread_apm (line 51) output = urlread(url); Error in apm (line 31) response = urlread_apm(url); Error in regression (line 12) apm(s,a,'clear all');
@apm
@apm 4 жыл бұрын
You need to be connected to the Internet to use the public server to solve it. If you don't have an Internet connection, you can use Python Gekko through MATLAB with remote=False apmonitor.com/che263/index.php/Main/MatlabCallsPython or else get a local server: apmonitor.com/wiki/index.php/Main/APMonitorServer
@apm
@apm 4 жыл бұрын
Also, you'll need at least MATLAB 2014 to run this. If you have an older version, it may not work.
@jessielim569
@jessielim569 4 жыл бұрын
Thank you for your tutorial and reply. May I ask how to define the objective function? And wondering why data input is not required in this simulation?
@apm
@apm 4 жыл бұрын
@@jessielim569 here is information on the objectives. The default is to use the l1-norm error: apmonitor.com/do/index.php/Main/EstimatorObjective The measurements are defined in the data.csv file. The measurement is the column labeled ym.
@maryquevedob
@maryquevedob 5 жыл бұрын
i dont knwo why, but when i want to display the solutions i get an error; at z = y.x; it says Reference to non-existent field 'x'. How can i fix it? Thx
@apm
@apm 5 жыл бұрын
There is likely a problem with the solution. You'll need to print the solver output and resolve the error.
@abinayasubramaniam2286
@abinayasubramaniam2286 4 жыл бұрын
Hello Sir I would like to use model y=a+b*cos(x), It says reference to non-existent x. Can you please help me with this?
@apm
@apm 4 жыл бұрын
At 5:22 you can use y=a+b*cos(xm). Otherwise, you need to define a new parameter x.
@ghoshabir4
@ghoshabir4 4 жыл бұрын
I tried to fit my (500 data points) data to a cos squared function . My model equation is --> y =a + b*((cos((c*xm)+d))^2)
@apm
@apm 4 жыл бұрын
Maybe switch over to Python Gekko. There are examples 3 and 4 here: apmonitor.com/do/index.php/Main/DynamicEstimation or a similar problem here: apmonitor.com/me575/index.php/Main/NonlinearRegression
@isabeltacunancastillo7651
@isabeltacunancastillo7651 3 жыл бұрын
Dear Prof. I'm trying to make my code with this equation : y=p*(ke/(kd-ke))*exp(-ke*xm)-exp(-kd*xm)) But I'm getting an error message: Creating file: infeasibilities.txt Use command apm_get(server,app,'infeasibilities.txt') to retrieve file @error: Solution Not Found Solution a = 1 b = 1 c = 1
@apm
@apm 3 жыл бұрын
The solver didn't find a solution. Here are suggestions on StackOverflow. You may want to consider switching to gekko: www.google.com/search?q=infeasible+stackoverflow+gekko
@ehuli7679
@ehuli7679 5 жыл бұрын
Dear Prof. I want to find 3 Parameters(xi, yi,I) of a non linear least square function. But i dont know how to use "Isqcuervefit" because there are three initival of them. Hier is mein Code: clear all; close all; clc %Define parameters: % My = magnetic permeability[H/m] % Rho = Gain factor % phi = pahse delay [°] % Theta Sensig directional angle % r,phi = Position and angular distance between conductor and sensor % xs,ys = Coordinate of sensor % xi,yi = Coordinate of conductor to be measured % I Current [A] My = 4*pi*10^(-7); Rho = 6.824*10000; phi = 13.61; Theta = 0.01; RI = 21; % in[mm] % Define the magetic fields in [µT] of sensors B = [0.17; 0.47; 35.30; 35.32; 6.66; 6.59; 36.28; 35.43; 13.36; 15.04; 42.17; 44.05]; % calculate the output voltage of sensors V = (My*Rho*exp(j*phi*pi/180))*B; % Define the measured voltage of sensors Vm = [0.0152 + 0.0034i; 0.0392 + 0.0095i; 2.9421 + 0.7123i; 2.9437 + 0.7127i 0.5751 + 0.1344i; 0.6 + 0.1330i; 3.0238 + 0.7321i; 2.9529 + 0.7149i 1.1235 + 0.2696i; 1.2535 + 0.3035i; 3.7147 + 0.8509i; 3.6713 + 0.8889i]; % Define the positions of each sensor xs = [-21; 21; 0; 0; -14.5; -15; 16; 15.3; -8.800; -7.900; 10.3; 9.4]; ys = [0; 0; 21; -21; 14.5; 13.8; -12.9; 13.9; 18.3; -18.8; -17.9; 18]; x0 = [30,30,10]; % Contraints of function NNLS x = lsqcurvefit(@(xi,yi,I)NNLS_fuct(My,Rho,phi,Theta,RI,V,Vm,xi,yi,xs,ys),x0,V,Vm); function NNLS = NNLS_fuct(xi,yi,I,My,Rho,phi,Theta,RI,V,Vm,xs,ys) % calculate the distance between the sensor and conductor dis_array = sqrt((ys-yi).^2-(xs-xi).^2); % calculate cos angular distance between conductor and sensor cos_delta_a = (xs.*cos(Theta)-ys.*sin(Theta)).*(xs-xi)+(ys.*cos(Theta)-xs.*sin(Theta)).*(ys-yi); cos_delta_b = (xs-xi).^2+(ys-yi).^2; a = My*Rho*exp(j*phi*pi/180)*I; % calculate the Output-voltage V = a.*cos_delta_a.*cos_delta_b./dis_array; Sum_V = sum(V); end Not enough input arguments. Error in Noninvasive_current_sensor>NNLS_fuct (line 46) dis_array = sqrt((ys-yi).^2-(xs-xi).^2); Error in Noninvasive_current_sensor>@(xi,yi,I)NNLS_fuct(My,Rho,phi,Theta,RI,V,Vm,xi,yi,xs,ys) Error in lsqcurvefit (line 213) initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:}); Error in Noninvasive_current_sensor (line 41) x = lsqcurvefit(@(xi,yi,I)NNLS_fuct(My,Rho,phi,Theta,RI,V,Vm,xi,yi,xs,ys),x0,V,Vm); Caused by: Failure in initial objective function evaluation. LSQCURVEFIT cannot continue. Thx. help!!
@apm
@apm 5 жыл бұрын
I haven't used that package. Does this help? www.mathworks.com/help/optim/ug/lsqcurvefit.html
@farhanaakhter5532
@farhanaakhter5532 4 жыл бұрын
Hello, Thank you for your video. For my research, I am trying to come up with a calibration equation. I used this tool to develop four of my model. others are polynomial equations. One of the four model is y= a+b*x^m+c*x^n. The reason for using this tool is to get non-integer value for the parameter m and n. I think my equation is not non-linear. My question is can I use this tool to get parameters value for my models. Thank you very much.
@apm
@apm 4 жыл бұрын
Yes, this tool will work for that application.
@farhanaakhter5532
@farhanaakhter5532 4 жыл бұрын
@@apm Thank you very much. I was confused because I thought that this tool is only for non-linear regression.
@missaouisalah3939
@missaouisalah3939 8 жыл бұрын
i tried to use another model but it didn't work. y={(415/b)*(c+6.464*(1-c)*(1/cos{0.33*asin[-13.5*xm*(xm^2-0.33)]}-1)*[(sqrt((1+a^2)/3)*sin{0.33*asin[-13.5*xm*(xm^2-0.33)]}+a*(xm+0.33*cos{0.33*asin[-13.5*xm*(xm^2-0.33)]}}^(-1/0.25) thank you to tell me what i have to change .
@rrc
@rrc 8 жыл бұрын
could you post your problem files to the APMonitor Google group?
@dr.nayyefa.alqayssi2242
@dr.nayyefa.alqayssi2242 8 жыл бұрын
Thank you very much professor john . I will joint the group and hope to find your kind help
@alifallah1939
@alifallah1939 4 жыл бұрын
the software looks really good but the description is so vague!!! I have some experience with Matlab and couldn't get what you are trying to say sir so I guess I ll keep trying with examples
@apm
@apm 4 жыл бұрын
Thanks for the feedback. There are additional examples at apmonitor.com/do
@trotion
@trotion 5 жыл бұрын
Excellent video and very helpful! Can this approach be implemented on more than one plot at a time? For example: solving for the coefficients of a similar mathematical formula which is attempting to predict 10 curves instead of one like above?
@apm
@apm 5 жыл бұрын
There is no limit. Please see apmonitor.com/do/index.php/Main/ModelIdentification for multiple time series models. You can add more equations and variables to this problem as well.
@trotion
@trotion 5 жыл бұрын
@@apm Thanks for the quick response! I will investigate, thanks again.
@trotion
@trotion 5 жыл бұрын
I have narrowed down my issue to the following: this is the error Im getting: "Error using fmincon (line 619) Supplied objective function must return a scalar value." So its because I am trying to use this approach for more than one [xm, ym] data set, i.e. [xm,ym;xm,ym;....;.....]. I hope that fmincon can accommodate this?
@apm
@apm 5 жыл бұрын
@@trotion fmincon always needs a single value that returns from the objective function. Instead of returning a vector, try summing up all the objective contributions into one value. Here is a Gekko (Python) example of multivariate regression: stackoverflow.com/questions/57726954/what-is-the-correct-way-handle-with-multidimensional-array-in-gekko-nonlinear-re You can also do the same thing with APM MATLAB or run Gekko in MATLAB: github.com/BYU-PRISM/GEKKO/tree/master/gekko/utilities/MatlabWrapper
@ehuli7679
@ehuli7679 5 жыл бұрын
Dear Professor how can i display Output U? function fval = conductor_output_voltage(u, p, b, ok, I, xs, ys, xi, yi) %This function calculates output-voltage of each conductors fval = u * p * exp(1i*cos(b))*I./2*pi*sqrt((ys.-yi.)^2-(xs.-xi.)^2) end %Define parameters: % u = magnetic permeability % p = Gain factor % b = Sensing directional angle % r,ok = Position and angular distance between conductor and sensor % xs,ys = Coordinate of sensor % xi,yi = Coordinate of conductor to be measured % I Current u = 4*pi*10^(-7); p = 6.824*10000; b = 13.61; ok = 0.01; % Define the positions of each sensor. xs = [27.69; 27.15; 15.24; -13.16]; ys = [-14.78; 9.55; 24.07; 24.71]; % Define the positions and values of each conductor. xi = [1.242; -6.6884; -2.346; 5.0564]; yi = [+9.9012; +6.0868;+1.5672; +1.9709]; I = [4.6689-4.9448i; -10.363-2.2886i; 1.6691+5.6988i;4.025-1.5346i];
@apm
@apm 5 жыл бұрын
Are you trying to calculate u or is it a constant? You can print a value with disp(u). You'll need to use regression if you need to calculate u: apmonitor.com/che263/index.php/Main/MatlabDataRegression
@ehuli7679
@ehuli7679 5 жыл бұрын
how about if i have imaginary number?
@apm
@apm 5 жыл бұрын
The solver fmincon can use imaginary numbers. See example 3: apmonitor.com/che263/index.php/Main/MatlabDataRegression
@adityasonwane2926
@adityasonwane2926 4 жыл бұрын
Great video, helping me to find my parameters for the nonlinear curve, I have 2 variables which I have input and the code as per yours. It is taking a lot of time to complete the run. Can you tell me how I can speed up my work?
@apm
@apm 4 жыл бұрын
How many data points are you solving? Sometimes it helps to install a local server instead of using the public server: apmonitor.com/wiki/index.php/Main/APMonitorServer Also, Python gekko is likely faster: apmonitor.com/che263/index.php/Main/PythonDataRegression
@KrishnaKumar-sh6qu
@KrishnaKumar-sh6qu 6 жыл бұрын
Error : Reference to non-existent field 'x'. How do I fix it?
@apm
@apm 6 жыл бұрын
Make sure you get the latest apm package from apmonitor.com/wiki/index.php/Main/MATLAB Also, you should print the solver output to make sure a solution is correctly generated.
@Satoshi_Nguyen
@Satoshi_Nguyen 8 жыл бұрын
Hello John, A stupid question is that why we should include s = byu.apmonitor.com ?
@apm
@apm 8 жыл бұрын
It solves the problem on the remote server and then returns the solution to your MATLAB console. There is an option to download and install the APMonitor software (apmonitor.com/wiki/index.php/Main/APMonitorServer) but most users will probably just want to use the web service (available from github.com/APMonitor/apm_matlab).
@duongthanh6687
@duongthanh6687 6 жыл бұрын
Hello. My model runs to 100 iterations and it it displays: "Maximum iterations" and also "Creating file: infeasibilities.txt Use command apm_get(server,app,'infeasibilities.txt') to retrieve file @error: Solution Not Found" How can I solve it. Thank you very much.
@apm
@apm 6 жыл бұрын
You can try a different solver apmonitor.com/wiki/index.php/Main/OptionApmSolver or else increase the maximum number of iterations: apmonitor.com/wiki/index.php/Main/OptionApmMaxIter as the command: apm_options(s,a,'apm.solver',3)
@anoirebenjdidia6768
@anoirebenjdidia6768 8 жыл бұрын
Hi, the problem that my experimental values are divided into 8 .txt files and they are voluminous so I can't import it in excel to have the data.csv Do you have a solution ?
@alexandrelopes7059
@alexandrelopes7059 8 жыл бұрын
What differences would be necessary to do, if instead of the equation y = a + b/x + c ln(x) I would have a mfile with several input vectors and one output vector to do the exact same minimization? In other words, how can i put this equation in another file and call that file in model.apm to have the same result?
@apm
@apm 8 жыл бұрын
+Alexandre Lopes if you have an M-file then I'd recommend that you use fmincon or a solver package like Tomlab. You can also dynamically define the APM file if you have multiple cases or change inputs to that model with apm_meas. There are a couple examples here: apmonitor.com/do/index.php/Main/ParameterStatistics
@MuflihArisaAdnan91
@MuflihArisaAdnan91 8 жыл бұрын
In my case, I only have two unknowns, what should I do toward the existing file to solve my problem?
@apm
@apm 8 жыл бұрын
+Muflih Arisa Adnan you can modify the model file as show at 4:27 to include a different number of parameters. You can calculate those parameters by turning status=1 (on) in your Matlab script as shown at 9:55. Good luck!
@MuflihArisaAdnan91
@MuflihArisaAdnan91 8 жыл бұрын
I have tried to reduce the number of parameters from 3 to 2 parameters (I removed c parameter). Then I deactivate these two scripts: apm_info(s,a,'FV','c'); apm_option(s,a,'c.status',1); But, there is an error message: Reference to non-existent field 'x'. Error in regression (line 33) z = y.x; what should I do to solve this error?
@apm
@apm 8 жыл бұрын
It looks like there is another error in your script. There is probably a message before the one that you showed. It should point to the place in your model where there is an error.
@waimyokhing
@waimyokhing 6 жыл бұрын
please explain me! why can't read data.csv file. i get z.xm and z.ym are 1.
@apm
@apm 6 жыл бұрын
You need to download the data.csv file and extract the zipped archive.
@waimyokhing
@waimyokhing 6 жыл бұрын
I do it but i get both z.xm and z.ym are 1.
@apm
@apm 6 жыл бұрын
Please try this archive: apmonitor.com/che263/uploads/Main/MATLAB_nonlinear_regression.zip Make sure you unzip the archive before you run it. I just tried it with MATLAB 2017a and it works. What version of MATLAB are your running?
@MrPetarzh
@MrPetarzh 8 жыл бұрын
Professor can you suggest me good article to calculate by hand(manually without matlab) coefficients - a , b and c(slope) related with your example - 3PL nonelinear?
@apm
@apm 8 жыл бұрын
You can find an analytic solution to this problem if you substitute two new variables x1 = 1/xm and x2 = ln(xm) and then perform linear regression on y = a + b * x1 + c * x2. With P = diag[a, b, c] and X = diag[1, x1, x2], the equation is Y = X * P and the solution is P = (X^T * X)^-1 X^T * y. The key is that you use multivariate linear regression (see a good textbook such as Applied Multivariate Statistical Analysis by Johnson and Wichern) on the transformed problem to make it linear.
@sandipvasani6204
@sandipvasani6204 8 жыл бұрын
How i can solve this Eqation Na= Nd(Sa/Sd)^(-k).? I know only Value Of Na nd Sa and try to fit the line by getting the value of Nd,Sd,& k.
@apm
@apm 8 жыл бұрын
+sandip vassani You can download the sample files for the example problem in this video from: apmonitor.com/che263/uploads/Main/MATLAB_nonlinear_regression.zip. You can download, unzip, and then modify the files for your application. If you run into any trouble, please send the files to the APMonitor discussion group for help: apmonitor.com/wiki/index.php/Main/UsersGroup (at apmonitor@googlegroups.com).
@iljasagradov9781
@iljasagradov9781 7 жыл бұрын
Hello John! Thank you very much for this great video! I was wondering if it is possible to replace the equation with the parameters a,b,c by an ODE with the same parameters. Just a simple one like: y = a*xm + b*xm^2 +c*xm_dot. I would be very greatful if You could help me with that. Thank you very much!
@apm
@apm 7 жыл бұрын
Ilja Sagradov, you can use a derivative value with $xm instead of xm_dot. You could also use xm_dot if you crate it as a new parameter and insert a new xm_dot column in your data file if you want to provide the derivatives.
@Enetx
@Enetx 7 жыл бұрын
I tried and received this error: "Error: include CSV data in 81.240.25.145_data_regression.csv when CSV_read is ON STOPPING. . ." Anyone who can help me to fix it, please?
@apm
@apm 7 жыл бұрын
+Sergio Valdivia, it looks like you are missing the data file. Could you try to start with these files? apmonitor.com/che263/uploads/Main/MATLAB_nonlinear_regression.zip Don't forget to extract the archive after you download and run the script.
@Enetx
@Enetx 7 жыл бұрын
Thank you!
@wiki806
@wiki806 8 жыл бұрын
Thank you very much for all tutorials videos , I want to ask you about Apmonitor, when for example students completed successfully their online courses, will you give them a certificate?
@rrc
@rrc 8 жыл бұрын
The only way to get credit is to register for the course through BYU.
@LiathANaji
@LiathANaji 7 жыл бұрын
how can write error function
@r.a.qurrota4906
@r.a.qurrota4906 7 жыл бұрын
Dear John I interest with this program, let me know in the case when I have 6 independents parameter. I want to construct a non linear regression. Can I use this formula and adding x1, x2...x5?. Thx
@apm
@apm 7 жыл бұрын
It is no problem to add additional variables - it should work with up to 100,000+ variables.
@janmauriciopizarrotapia9762
@janmauriciopizarrotapia9762 2 жыл бұрын
You atrted to talk in chinese at 8:27 😔 I'm so lost...
@apm
@apm 2 жыл бұрын
Sorry for the confusion. This additional material may help: apmonitor.com/pds/notebooks/06_regression.html
@somnathpaul1993
@somnathpaul1993 8 жыл бұрын
Thanks for this tutorial. But I am getting an error message regarding fgets: Invalid file identifier. Use fopen to generate a valid file identifier. Error in apm_load (line 21) aline = fgets(fid); could you please suggest what to do ! Thanks in advance :)
@apm
@apm 8 жыл бұрын
+Somnath Paul it appears that you are missing a file. Please download the source code for this example from: apmonitor.com/che263/uploads/Main/MATLAB_nonlinear_regression.zip. You can see additional course content at: apmonitor.com/che263/index.php/Main/MatlabDataRegression
@mattiasanguinetti5338
@mattiasanguinetti5338 8 жыл бұрын
Hello John, wonderful video! Only a question: I have to fit a lot of data (almost 12000) with the double exponential decay model [y=A*exp(-a*x)+B*exp(-b*x)+C], a,b>0 but the response is No feasible solution Solver : APOPT (v1.0) Solution time : 76.6786999999968 sec Objective : 11278.6596207652 Unsuccessful with error code 0 I know the order of magnitude that the 5 parameters should assume, can I write down the range in which to vary the 5 parameters? Thanks a lot
@apm
@apm 8 жыл бұрын
At 4:30 in the video, you can add constraints on the parameters such as: a = 0. Sometimes better guess values or constraints can help the solver converge. You can also try changing the solver to the IPOPT solver with apm_option(s,a,'nlc.solver',3). Let me know if you need additional support with your application - you can send the files to the APMonitor user's group by subscribing and posting to apmonitor@googlegroups.com.
@mattiasanguinetti5338
@mattiasanguinetti5338 8 жыл бұрын
Thanks for answer. I have added the constraints to the parameters and the result of the objective value was about 0.07 and the measured data was quite close to the predicted data. Thanks a lot.
@KrishnaKumar-sh6qu
@KrishnaKumar-sh6qu 6 жыл бұрын
Can I use Marquardt Method to fit this curve?
@apm
@apm 6 жыл бұрын
Yes, Levenberg-Marquardt method is another option. Unfortunately, I don't have this method in the code.
@brownsara87
@brownsara87 8 жыл бұрын
Thank you for this tutorials they are very useful ,but I am getting an error message : Warning: Name is nonexistent or not a directory: apm. > In path at 110 In addpath at 87 ??? Undefined function or method 'apm' for input arguments of type 'char'. I have downloaded the apm file and did everything like in the video , please what should i do , to get it right (i don't have Wolfram Mathematica) , ihave only matlab , and thank you very much again.
@apm
@apm 8 жыл бұрын
+brown Sara please download the apm folder from apmonitor.com or at github.com/APMonitor/apm_matlab. Place the apm folder in your directory so that Matlab can add the functions to make this work.
@مژدهرمضان
@مژدهرمضان 6 жыл бұрын
can matlab identify nonlinear processes?? I want two methods
@apm
@apm 6 жыл бұрын
A solver such as fmincon can also perform nonlinear regression. I'm planning to make a video tutorial on this next week so check back soon.
@apm
@apm 6 жыл бұрын
I just added an fmincon tutorial to apmonitor.com/che263/index.php/Main/MatlabDataRegression
@rboshra
@rboshra 7 жыл бұрын
Thanks - great quality videos. Please keep making more of them.
@dr.nayyefa.alqayssi2242
@dr.nayyefa.alqayssi2242 8 жыл бұрын
very wonderful video . many thank to you professor please prof. can I used different equation in my model kind regard
@apm
@apm 8 жыл бұрын
Yes, you can modify the equations in the model file. See the part of the video starting at 4:28 for information on modifying the model.
@dr.nayyefa.alqayssi2242
@dr.nayyefa.alqayssi2242 8 жыл бұрын
Many thanks for your response , please professor kindly ,I make some change in the model equation and reply the code but I don't see any change in the results value of the coefficient or other parameter .what is that mean kind regard
@apm
@apm 8 жыл бұрын
Please post your code to the APMonitor Discussion group. You'll need to subscribe first at groups.google.com/forum/#!forum/apmonitor
@cjscott1917
@cjscott1917 7 жыл бұрын
Thank you for this great video. Easy to follow, with good explanations.
@meriembouhbou6992
@meriembouhbou6992 8 жыл бұрын
APMonitor.com thank you so much for your helpful amazing video :) keep on ;)
@matthiasehrhardt3469
@matthiasehrhardt3469 7 жыл бұрын
Obviously this is a LINEAR problem to be easily solved e.g. by least squares normal equations and a Cholesky decomposition of a 3x3 system.
@apm
@apm 7 жыл бұрын
+Matthias Ehrhardt, you are correct that it is linear in the parameters. The purpose of this tutorial is to demonstrate the platform with a simple example. Nonlinear, differential, and mixed integer variables are also allowed and are shown here: apmonitor.com/do
@matthiasehrhardt3469
@matthiasehrhardt3469 7 жыл бұрын
so the title is a bit misleading
@apm
@apm 7 жыл бұрын
It is still a nonlinear regression problem because I didn't do a parameter transform. It can be simplified to a linear regression but the actual method that I demonstrated is nonlinear.
@matthiasehrhardt3469
@matthiasehrhardt3469 7 жыл бұрын
at least in german universities this is classified as a linear problem. Linear does not necessarily mean that the approximant is a straight line; here it is a linear dependence of y on (a,b,c).
@apm
@apm 7 жыл бұрын
I agree that the problem can be simplified to a linear problem by reformulating it as y = a + b*w + c*z with w=1/x and z=ln(x). In the tutorial, the nonlinear transforms for w and z are performed with the solver, not as a precursor step. The data is only provided as y and x, not as y, w, and z as would typically be the case when performing linear regression. I think we both understand that this problem is linear in the parameter space. The purpose of the tutorial is to demonstrate how to solve a parameter estimation problem with a very simple correlation. You are welcome to try nonlinear relationships like y = a * sqrt(x) + b and they should also work in this environment. One other thing to consider is that the objective function at 5:27 is normalized by the measured value, making it different than a standard least squares problem. Other objective function forms such as the 2-norm (square root of squared errors) or 1-norm (minimize absolute value) are also possible. I appreciate your concern over this example problem, especially when a simple linear regression is possible. In many problems there are constraints, nonlinear correlations, or custom objective terms that don't fit a standard linear least squares regression. The significance of this platform is that large scale parameter estimation is possible even though this simple example problem doesn't fully exercise the functionality.
Nonlinear Regression in Python
13:55
APMonitor.com
Рет қаралды 53 М.
Linear Regression 1 [Matlab]
12:05
Steve Brunton
Рет қаралды 41 М.
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 34 МЛН
Интересно, какой он был в молодости
01:00
БЕЗУМНЫЙ СПОРТ
Рет қаралды 3,6 МЛН
The evil clown plays a prank on the angel
00:39
超人夫妇
Рет қаралды 44 МЛН
How many people are in the changing room? #devil #lilith #funny #shorts
00:39
Forecasting using Matlab Regression Learner app
14:10
RESEARCH HUB
Рет қаралды 25 М.
Nonlinear regression - the basics
19:15
TileStats
Рет қаралды 19 М.
Linear Least Squares to Solve Nonlinear Problems
12:27
The Math Coffeeshop
Рет қаралды 33 М.
How to fit non-linear equations in excel using solver
6:24
Taylor Sparks
Рет қаралды 271 М.
Learn Statistical Regression in 40 mins! My best video ever. Legit.
40:25
LAVROV's interview with Tucker CARLSON 😁 [Parody]
8:34
Юрий ВЕЛИКИЙ
Рет қаралды 397 М.
Polynomial regression in MATLAB
9:52
RobertTalbertPhD
Рет қаралды 152 М.
MATLAB Nonlinear Optimization with fmincon
14:26
APMonitor.com
Рет қаралды 242 М.
Nonlinear Regression in Microsoft Excel
9:14
APMonitor.com
Рет қаралды 273 М.
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 34 МЛН