MathGroup Archive 2006

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

Search the Archive

Re: Solve, D, and summations

  • To: mathgroup at smc.vnet.net
  • Subject: [mg64055] Re: Solve, D, and summations
  • From: Peter Pein <petsie at dordos.net>
  • Date: Sun, 29 Jan 2006 23:10:10 -0500 (EST)
  • References: <dri7ji$9u4$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

misha schrieb:
> I am (still) a new user of Mathematica and want to solve for the 
> (easiest case) least squares estimators.
> 
> As usual, I want to choose b_0 and b_1 to minimize S, where S is the sum 
> of squared differences.  i.e.,
> 
> In [1]:= S = sum{1,...,n}[y_i - b_0 - (b_1)*x_i]^2
> 
> Out [1]= sum{1,...,n}[y_i - b_0 - (b_1)*x_i]^2
> 
> After defining this function as above, which gave me the expression as I 
> expected, I then wrote,
> 
> In [2]:= Solve[{D[S, b_0]==0, D[S, b_1]==0}, {b_0, b_1}]
> 
> But got
> 
> Out [2]= {}
> 
> I also tried it this way:
> 
> In [3]:= S[b_0, b_1] = sum{1,...,n}[y_i - b_0 - (b_1)*x_i]^2
> 
> Out [3]= sum{1,...,n}[y_i - b_0 - (b_1)*x_i]^2
> 
> In [4]:= Solve[{D[S, b_0]==0, D[S, b_1]==0}, {b_0, b_1}]
> 
> But got
> 
> Out [4]= {{}}
> 
> Is it the 'n' in the summation that is giving me the problem?
> 
> I also tried this:
> 
> In [5]:= D[S, b_0]
> 
> Out [5]= sum{1,...,n}-2*[y_i - b_0 - (b_1)*x_i]
> 
> (as expected)
> 
> In [6]:= D[S, b_1]
> 
> Out [6]= sum{1,...,n}-2*x_i*[y_i - b_0 - (b_1)*x_i]
> 
> After which I copied the returned expressions, set them to zero, and 
> used Solve as below:
> 
> In [7]:= Solve[{sum{1,...,n}-2*[y_i - b_0 - (b_1)*x_i]
> ==0, sum{1,...,n}-2*x_i*[y_i - b_0 - (b_1)*x_i]==0}, {b_0, b_1}]
> 
> But, again, I got
> 
> Out [7]= {}
> 
> Thank you
> 

Hi Misha,

the first I'd try is to use Mathematica syntax. The next is not to use an unassigned n, when solving:

In[1]:=
s = Sum[(y[i] - (Subscript[b, 0] + Subscript[b, 1]*x[i]))^2, {i, 0, n}];
eqns = Thread[D[s, {{Subscript[b, 0], Subscript[b, 1]}}] == 0]
Out[2]=
{Sum[-2*(-Subscript[b, 0] - Subscript[b, 1]*x[i] + y[i]), {i, 0, n}] == 0,
   Sum[-2*x[i]*(-Subscript[b, 0] - Subscript[b, 1]*x[i] + y[i]), {i, 0, n}] == 0}
In[3]:=
AbsoluteTiming[sol = {Subscript[b, 0], Subscript[b, 1]} /.
      First[Solve[eqns /. n -> 20, {Subscript[b, 0], Subscript[b, 1]}]]; ]
Out[3]=
{0.546875*Second, Null}
In[4]:=
SeedRandom[20060129]; (* just to make results reproducable *)
sol /. {x -> Identity, y -> ((E + (2*Random[] - 1)/10)*#1 - Pi + (2*Random[] - 1)/10 & )}
Out[5]=
{-3.147055160870977, 2.6868147584854687}

Peter


  • Prev by Date: Re: General--A Minor Annoyance
  • Next by Date: problem with constants
  • Previous by thread: Re: Solve, D, and summations
  • Next by thread: Re: Solve, D, and summations