Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Conceptual Issues with NonlinearRegress[]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg70936] Conceptual Issues with NonlinearRegress[]
  • From: Andrew Fenley <nekonunu at gmail.com>
  • Date: Thu, 2 Nov 2006 06:47:22 -0500 (EST)
  • Reply-to: <afenley at vt.edu>
  • Thread-index: Acb907TEbFiUQslOSGe8+alxzOoECg==

Greetings everyone,

I'm trying to use NonlinearRegress[] to determine the values of four
constants in a 3rd order polynomial. I have a set of 7 data points for the
polynomial to fit to. My problem arises from the apparent form
NonlinearRegress[] expects a function to be in. From what I can tell,
NonlinearRegress[] is expecting the function to have the form:
f[x1,x2,x3,...,xn] = y and the data points to have the form:
{x1,x2,x3,...,xn,y}. Unfortunately, my function is a 3rd order polynomial of
y, example: y^3 + A x1 x2 y^2 + B x3 y + C == 0. With example data points in
the form: {x1,x2,x3,y}. The constants A, B, and C would be determined from
NonlinearRegress[]. I did try the following: I used y^3 + A x1 x2 y^2 + B x3
y + C == 0 and recast the data points to be: {x1,x2,x3,y,0}. However, now
the function is varying itself in such a way that it is trying to best fit
to 0 instead of the value y. I'm not sure this is the correct approach to
take. To further investigate this approach, I looked at the example in the
Help: Master Index - 

data = {{1.0, 1.0, .126}, {2.0, 1.0, .219}, {1.0, 2.0, .076}, 
	  {2.0, 2.0, .126}, {.1, .0, .186}};

BestFitParameters /. NonlinearRegress[
		data,
		theta1 theta3 x1 / (1 + theta1 x1 + theta2 x2),
		{x1, x2}, 
		{theta1, theta2, theta3},
		RegressionReport -> BestFitParameters
]

Output: {theta1 -> 3.13151, theta2 -> 15.1594, theta3 -> 0.780063}

I changed this to:

data = {{1.0, 1.0, .126, 0}, {2.0, 1.0, .219, 0}, {1.0, 2.0, .076, 0}, 
	  {2.0, 2.0, .126, 0}, {.1, .0, .186, 0}};

BestFitParameters /. NonlinearRegress[
		data,
		(theta1 theta3 x1 / (1 + theta1 x1 + theta2 x2)) -y,
		{x1, x2, y}, 
		{theta1, theta2, theta3},
		RegressionReport -> BestFitParameters
]

Output: NonlinearRegress::bdfit: Warning: unable to find a fit that is
better than the mean response.

{theta1 -> 3.13151, theta2 -> 15.1594, theta3 -> 0.780063}

The "answer" appears to be the same, but now there is a warning attached to
it.

Any help and / or insight would be greatly appreciated.

Cheers,
Andrew Fenley


  • Prev by Date: find roots
  • Next by Date: Re: Curiosity concerning transformation rules for List
  • Previous by thread: Re: find roots
  • Next by thread: Re: Conceptual Issues with NonlinearRegress[]