Enroll in the Certified Web Development Professional course package to learn HTML, Javascript, and PHP. Build a solid foundation to work toward your dream job!

Become a Premium Member and unlock a new, free course in leading technologies each month.

Solved

Posted on 2009-04-08

I have hundreds of data sets showing change (y) over time (t) at different locations. I am attempting to plot the (y,t) data for each location and fit a second order polynomial line of regression to each of the data sets. I would like to automate the LINEST function in VBA to accomplish this by finding the constants C1, C2, and b; i.e. y = C1*t^2 + C2*t + b. I would also like the statistical data that LINEST provides.

Thanks, BL

Thanks, BL

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

- Help others & share knowledge
- Earn cash & points
- Learn & ask questions

6 Comments

Compose the Vandermonde matrix for the t_i data, that is:

[ 1 t_1 t_1^2 ]

[ 1 t_2 t_2^2 ]

X = [ . . . ]

[ . . . ]

[ 1 t_n t_n^2 ]

Then compute:

(X^t X)^-1 X

and multiply this (from the left of course) by:

[ y_1 ]

Y = [ . ]

[ y_n ]

then the answer will be a vector consisting of the coefficients:

[ b ]

[ C2 ]

[ C1 ]

You have to install the Analysis Toolpak - VBA add-in, which I assume you know how to do since you're a VBA programmer.

Make sure you choose both the Analysis Toolpak AND the Analysis Toolpak - VBA

The resource for the Analysis Toolpak - VBA is something like

C:\Program Files\Microsoft Office\Office12\LIBRARY\AN

Then, when you're in the VBA editor in Excel, you can call the data analysis functions. The native LINEST is actually surpassed by the Regress function which gives all the output you want.

One the Analysis Toolpak add-ins are installed correctly, go to your VBA editor and add a Reference to ATPVBAEN.XLS

Here's a little snippet:

Sub test()

Dim Res As Variant

Res = [atpvbaen.xls].Regress( ARGS = X AND Y RANGE, DESIRED OUTPUT STATISTICS )

Debug.Print Res

End Sub

What you want to do is totally possible.

Good luck, hope this helps!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Course of the Month14 days, 7 hours left to enroll

Join the community of 500,000 technology professionals and ask your questions.