Nonlinear multiple regression using total least squares (error-in-variables) model

3 views (last 30 days)
edit - I got the normal nonlinear regression functions lsqcurvefit and nlinfit to work if I increased the tolerances to 1e-3, but I still think the EIV method would be more accurate.
I am trying to find coefficients for a multiple variable equation using a large amount of CFD data, so the predictor variables have variance as well. Specifically, the Nusselt correlation
Nu = K * (Re)^a * (Pr)^c * (rho_bulk/rho_wall)^d * (mu_bulk/mu_wall)^e * (k_bulk/k_wall)^f * (Cpbar/Cp_bulk)^g * (p/p_critical)^h /
solving for K, a, c, d, e, f, g, and h.
After having very inconsistent results for the coefficients, I've been trying to implement total least squares (TLS or EIV) method, but it looks like all of the answers/files out there are for single variable regression. I'd also like to eventually implement some sort of stepwise function to weed out unnecessary variables, but that's a separate issue. Currently, I keep running into the issue where K becomes massive and one or more of the other coefficients goes highly negative to balance this, which might be resolvable if I had more toolboxes, but I'm only on a student license.
How do I implement a nonlinear multivariable total least squares regression on this data while setting limitations on the coefficient estimates so they don't explode or correspondingly cancel each other out (i.e. a=10, d=-13, etc.)? lsqcurvefit seems inadequate (and not TLS) and nlinfit (also not TLS) says I'm rank deficient, which is true.
  1 Comment
Zhang lu
Zhang lu on 12 Jun 2013
Edited: Zhang lu on 12 Jun 2013
Nu = K * (Re)^a * (Pr)^c * (rho_bulk/rho_wall)^d * (mu_bulk/mu_wall)^e * (k_bulk/k_wall)^f * (Cpbar/Cp_bulk)^g * (p/p_critical)^h
transform the function as follow
log(Nu)=K+a*log(Re)+c*log(Pr)+d*log(rho_bulk/rho_wall)+e*log(mu_bulk/mu_wall)+f*log(k_bulk/k_wall)+g*log(Cpbar/Cp_bulk)+h*log(p/p_critical)
and try _regress _ to solve it

Sign in to comment.

Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!