Re: Problem with lists as matrices for OLS and statistical inference
- To: mathgroup at smc.vnet.net
- Subject: [mg81660] Re: [mg81638] Problem with lists as matrices for OLS and statistical inference
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Mon, 1 Oct 2007 04:40:39 -0400 (EDT)
- References: <19756584.1191142844936.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
First of all, underscores can't be used in symbol names; rsquare_one is a named pattern object with head "one" and name "rsquare". rsquare[x_, y_] := (x.firstOLS[x, y]).(x.firstOLS[x, y])/(y.y) Secondly, your xtwo and ytwo have incompatible shapes for the purpose. Dimensions /@ {x, y, xtwo, ytwo} {{30, 10}, {30}, {9, 3}, {9, 1}} y is a vector, but ytwo is a column matrix. You can flatten ytwo, and then ytwo = Flatten@ytwo {3.21116, 3.22359, 3.22625, 3.18356, 3.15343, 3.18843, 3.17617, \ 3.19074, 3.3005} rsquare[xtwo, ytwo] 0.99989 and so forth. Bobby On Sun, 30 Sep 2007 02:58:22 -0500, Mauricio Esteban Cuak <cuak2000 at gmail.com> wrote: > Hello everyone. > I tried making some functions for OLS, R square, etc. (yes, I'm aware > these functions already exist). As a newcomer to Mathematica, I'm a > bit confused with using lists instead of matrices. > > Here was my first attempt: > > Clear["`*"]; Needs["HypothesisTesting`"]; > firstOLS[x_, y_] := (Inverse[Transpose[x].x]).Transpose[x].y > > And I did also one for estimated variance for the parameters and one > for R square: > > estimatedvariance[x_, > y_] :=(Inverse[Transpose[x].x])*((y - x.firstOLS[x, y]).(y - > x.firstOLS[x, y]))/(Length[y] - > Length[firstOLS[x, y]]) > > rsquare_one[x_, y_] := (x.firstOLS[x, y]).(x.firstOLS[x, y])/(y.y) > > I tried both with this matrices and it worked fine: > > x = Table[RandomReal[10, > 10], {30}];y = RandomReal[21, 30]; > > So far so good. When I tried using data imported from excel, all hell > broke loose. Here are the matrices I used for x and y : > > xtwo = {{1.`, 4.351993`, 1.888761`}, {1.`, 4.321984`, > 1.907567`}, {1.`, 4.290852`, 1.88777`}, {1.`, 4.296212`, > 1.99383`}, {1.`, 4.258126`, 1.870771`}, {1.`, 4.343519`, > 1.967788`}, {1.`, 4.337479`, 1.882922`}, {1.`, 4.332442`, > 1.94114`}, {1.`, 4.36106`, 1.942251`}} > > ytwo = {{3.211156`}, {3.223586`}, {3.226253`}, {3.183556`}, > {3.15343`}, {3.18843`}, {3.17617`}, {3.190737`}, {3.300504`}} > > Now my functions don't work even though they look the same to me! (the > output gives an error saying the matrices can't be divided) I tried > correcting them in this way: > > estimated_variance_two[x_, > y_] := (Inverse[Transpose[x].x])*(Flatten[ > Transpose[(y - x.firstOLS[x, y])].(y - x.firstOLS[x, > y])])/(Length[y] - > Length[firstOLS[x, y]]) > > rsquare_two[x_, > y_] := (Flatten[ > Transpose[(xdmda.firstOLS[x, y])].(x.firstOLS[x, > y])])/Flatten[Transpose[y].y] > > Now they seem to work fine with the last x and y matrices, but when I > use this functions with the original "test" matrices, they don't > work... > I think I must be missing something about the way Mathematica works with > lists. > Hope you can help me. Thanks! > > Regards, > > cd > > -- DrMajorBob at bigfoot.com