[Date Index]
[Thread Index]
[Author Index]
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
your x
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**
| |