lineær regression i java

Tags:    java

Hej,
jeg er totalt grøn i at kode, men har et spørgsmål, som jeg håber nogen kan hjælpe mig lidt med :)

I et mindre projekt i BlueJ skal jeg forsøge at få en metode til at estimere a og b for en ligning på formlen y = ax + b.

først har jeg prøvet følgende:

int index = 0;
int index2 = 0;
double a = 0;
double b = 0;
while( o.size() - 1 > index ) {
a += ( o.getY(index + 1) - o.getY(index) ) / ( o.getX(index + 1) - o.getX(index) );
index++;

}

a = a / (o.size() - 1);

while( o.size() > index2 ) {
b += o.getY(index2) - a*o.getX(index2);

while( o.size() > index2 ) {
b += o.getY(index2) - a*o.getX(index2);
index2++;



}
b = b / o.size();
return "a " + a + " b " + b;

}

}

det må da kunne gøres lettere end bare at tage gns af alle a og b'er, som jeg gør her?

Har desuden en klasse der kan beregne: SSE - Error Sum of Squares), SSR - Regression Sum of Squares, SST - Total Sum of Squares, r^2 - Coeffecient of Determination.
Måske noget med at systematisk gennemgå forskellige værdier for a og b, for så at se hvilken r^2 de giver?

mvh anders



kan da gøres meget lettere end du gør hvis.
Hvis Y og X er ukendte kan a og b være et hvilket som helt tal mellem minus og plus uendelig. så der kan de bare bruge en random metode.
Hvis Y er kendt og X er kendt eller ukendt kan du bare sætte a til 0 og b til y.

Antar stærkt der et eller andet du har glemt at fortælle :)



Indlæg senest redigeret d. 06.03.2007 08:18 af Bruger #5620
:) x og y er kendte størrelser, som bliver hentet fra .txt filer og så gemt i to arraylists.

Desuden skal jeg få den til at lave samme trick, bare for en ligning på formen f(x) = ax^2 + bx + c.

Skal egentlig lave det samme som excel gør, når man plotter data i en x,y-graf og så finder en sammenhæng mellem punkterne i en funktion.



t