BBS: Inland Empire Archive Date: 04-11-92 (17:14) Number: 11 From: JEAN CREPEAU Refer#: NONE To: DON KROUSE Recvd: NO Subj: Regression Conf: (2) Quik_Bas
In a message to ALL, DON KROUSE wrote:
DK=> Hi Folks,
DK=> Does anyone know were I might find source code for a multiple
regression routine?
DK=> I am particularly interested in a routine that does Linear, Log,
Exponential, Power, etc. and that optimizes the order in which the
dependent variables are included.
Use the following formula
m=(n*SUM(x*y) - SUM(x)*(SUM(y))/(n*SUM(x*x) - SUM(x)*SUM(x))
b=(SUM(y)-m*SUM(x))/n
where n=# of samples
Your linear equation is y=mx+b
Here is the source:
TYPE RECT
X AS SINGLE
Y AS SINGLE
END TYPE
SUB REGR(N,VEC() AS RECT,MODE,M,B)
FOR X=0 TO N-1
IF MODE AND 1 THEN CX=LOG(VEC(X).X) ELSE CX=VEC(X).X
IF MODE AND 2 THEN CY=LOG(VEC(X).Y) ELSE CY=VEC(X).Y
SX=SX+CX:SY=SY+CY:SXY=SXY+CX*CY:SX2=SX2+CX*CX
NEXT
M=(N*SXY-SX*SY)/(N*SX2-SX*SX)
B=(SY-M*SX)/N
END SUB
This sub calculates m and b from a list of points vec(0...n-1). It
has been modified to compute linear, log, exp and power regression. To use
it:
1. You put the data in a vector of type RECT
INPUT "NUMBER OF DATA: ",N
REDIM VEC(N-1) AS RECT
FOR X=0 TO N-1
INPUT "(X,Y): ",VEC(X).X,VEC(X).Y
NEXT
2. You determine the mode
MODE=0 => linear
MODE=1 => log
MODE=2 => exp
MODE=3 => power
3. You call the sub
REGR N,VEC(),MODE,M,B
4. Your regression equation is
Mode 0: y=m*x+b
Mode 1: y=m*log x + b
Mode 2: y=exp(b)*exp(m*x)
Mode 3: y=exp(b)*x^m
---
* Origin: INTERACESS Montreal (QC) Canada (514) 528-1415 (1:167/280)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET