       Re: Fit vs Regress

• To: mathgroup at smc.vnet.net
• Subject: [mg4356] Re: Fit vs Regress
• From: rubin at msu.edu (Paul A. Rubin)
• Date: Thu, 11 Jul 1996 01:02:01 -0400
• Organization: Michigan State University
• Sender: owner-wri-mathgroup at wolfram.com

```In article <4qqnlu\$49m at dragonfly.wolfram.com>,
"Prof. L. Seiford, IEOR, UMass, 413/545-1658" <SEIFORD at ecs.umass.edu>
wrote:
->I received the following from a colleague.
->I'm not that familiar with the package.
->Does anyone have an explanation?
->thanks
->--larry
->
->>Wayne and I are trying to do a little linear regression, and having
trouble.
->>What we want is to fit a linear form to 49 independent variables.  We
succeed in
->>using the Fit[ ] function as follows:
->>  A = ReadList["test3624.mat", Number, RecordLists ->True]
->>  y = Array[x,49]
->>  z = Fit[A, y, y]
->>which results in
->>  z = 0.178173 x + 0.178173 x - 0.0380162 x +
->>      0.0713675 x + 0.178173 x ET CETERA ... x
->>
->>However, the Function Browser window shows us that we can load in the
package
->>  <<"Statistics`LinearRegression`"
->>and use the Regress[ ] function. We tried this on a super-small data set
first,
->>without using any subscripting of the independent variables, and it
worked
->>nicely and gave us lots more data about the fit than Fit[ ] gives.
->>
->>However, if we try the full data set with the subscripted variables as
above,
->>to wit:
->>  A = ReadList["test3624.mat", Number, RecordLists ->True]
->>  y = Array[x,49]
->>  z = Regress[A, y, y]
->>we get nothing but error messages, in spite of the fact that the
function
->>browser suggests that Fit[ ] and Regress[ ] have identical input
formats!
->>
->>Any ideas?

Regress[ ..., ..., {x, y, z, ...} ] uses Function[ {x, y, z, ...}, ... ],
in which the variables names from the regression equation are used as
formal parameters to Function.  When the variable list has the form y =
{x, x, ..., x}, those formal parameters are actually function
calls; e.g., x is the (undefined) function x evaluated at argument 1.
This is ok mathematically (after all, subscripting is just treating a
symbol as a function of an integer argument), but syntactically it causes
Function[] indigestion, hence the error messages.

One workaround is to type in the variable names they want:  y = {x1, x2,
..}.  Another is to change y = Array[ x, 49 ] to y0 =
Table[ Unique["x"], 49 ] both places it occurs in the call to Regress,
which will give them 49 symbols of the form x\$nnn (but not necessarily x\$1,
x\$2, ...).  If that's a big deal, they can convert to the other notation
after Regress gets done with

Regress[ A, y0, y0 ] /. Thread[ Rule[ y0, y ] ]

Paul

**************************************************************************
* Paul A. Rubin                                  Phone: (517) 432-3509   *
* Department of Management                       Fax:   (517) 432-1111   *
* Eli Broad Graduate School of Management        Net:   RUBIN at MSU.EDU    *
* Michigan State University                                              *
* East Lansing, MI  48824-1122  (USA)                                    *
**************************************************************************
Mathematicians are like Frenchmen:  whenever you say something to them,
they translate it into their own language, and at once it is something
entirely different.                                    J. W. v. GOETHE

==== [MESSAGE SEPARATOR] ====

```

• Prev by Date: Re: Help: Column/Row Vector
• Next by Date: Re: VectorToMatrix
• Previous by thread: Fit vs Regress