Re: More troubles coming from indexed variables

• To: mathgroup at smc.vnet.net
• Subject: [mg25092] Re: [mg25000] More troubles coming from indexed variables
• From: Tomas Garza <tgarza01 at prodigy.net.mx>
• Date: Fri, 8 Sep 2000 03:00:40 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

I hope it's not too late to suggest an alternative treatment to the
problem you pose.
I take your least squares example. Sometime ago I was asked a similar
question, and I proposed the following approach.

I wil use Array[y, n] to denote your y values, and Array[x, n] to denote

values. "ones" is a vector of 1's, and "." means Dot (dot product):

First, assign a value to n:

In[1]:=

n = 10;

In[2]:=

ones = Table[1, {10}]

Out[2]=

{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}

This is where you define the function you want to minimize:

In[3]:=

Q[v_, w_, k_] := (Array[y, k] - v*ones - w*Array[x, k]).(Array[y, k]
- v*ones -

w*Array[x, k])

and now you ask for the solution of the two equations:

In[4]:=

e = Solve[{D[Q[a, b, n], a] == 0, D[Q[a, b, n], b] == 0}, {a,
b}]

(I omit the output, but you may try it: it works fine, in all
generality,

and it requires only that n be previously specified, as above)

The output looks a bit messy, but you can reduce it by using
ReplaceRepeated on Simplify[e], giving adequate transformation rules for
each of the forms you obtain, like sums, sums of squares and sums of
cross products (these will appear clearly in the output Out[5]):

In[5]:= Simplify[e] //. {Plus @@ Array[y, k] -> Sy, Plus @@ Array[x,
k] -> Sx,

Plus @@ (Array[x, k]^2) -> Sx2, Array[x, k].Array[y, k] -> Sxy}

Again, I omit the output, but it certainly gives the right answer for
the

least squares estimators of a and b, in a relatively neat form, which
you

could further reduce if you wished to. And, of course, from this result
for

a particular value of n you might be able to infer the general formula.

I wonder if this is what you were looking for.

Tomas Garza

Mexico City

Barbara DaVinci [barbara_79_f at yahoo.it] wrote:

<Snip>
> I'm writing an educational notebook

> on least-square fit and in a subsection I must show

> how the well-known

> formula is carried out.

>

> This provides a symbolic data set :

> datsimx = Table[x[k], {k, 1, 10}]

> datsimy = datsimx /. x -> y

>

> {x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9],

> x[10]}

> {y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8], y[9],

> y[10]}

>

> Now I must declare x[1] ... x[10] and y[1] ... y[10]

> to be costants

> (otherwise D[] and Dt[] ...) .

>

> I tried two ways, both ineffective.

>

<Snip>

• Prev by Date: Re: How to keep things real?
• Next by Date: Re: Re: Simple integral wrong
• Previous by thread: Re: More troubles coming from indexed variables
• Next by thread: Re: Functional or rules-based equivalent for procedural program