Hi Leute
ich komm hier einfach nicht weiter... Hab schon bei google und in mehreren :### nach ner Lösung gesucht aber nix passendes gefunden.
Wie man generell Typen in JAVA umwandelt weiss ich...
Mein Problem: Ich versuche die ganzen Faktoren die bei der linearen Regression und anschliessend natürlich den Korellationskoeffizienten auszurechnen aber ich komme damit nicht klar. Aus einer anderen Prozedur kriege ich die zwei Übergabearrays als int.
Mein Code bisher: ???:L
Ohne diese Typumwandlungen die schon drin sind funktionierts garnicht, da ist ab der Berechnung des arithmetischen Mittelwertes nur noch 0.0 in den beiden Variablen dazu.
Die Vorgehensweise selbst ist denke ich richtig. Habe die Formel von wikipedia umgesetzt...
Leider kommen so absolut unrealistische Werte (n * 10^irgendwas, kann natürlich nicht sein...) beim KkR raus was so wie ich das sehe nur an meinen Typumwandlungen liegen kann.
Ich hoffe ihr könnt mir helfen und mir sagen was ich da falsch mache. (Sorry dafür das das so lang geworden ist aber ich komme echt nicht weiter)
Gruss,
StackOverflow
PS:
die Werte kommen auf jeden Fall korrekt an. das habe ich über die Konsole bereits getestet...
ich komm hier einfach nicht weiter... Hab schon bei google und in mehreren :### nach ner Lösung gesucht aber nix passendes gefunden.
Wie man generell Typen in JAVA umwandelt weiss ich...
Mein Problem: Ich versuche die ganzen Faktoren die bei der linearen Regression und anschliessend natürlich den Korellationskoeffizienten auszurechnen aber ich komme damit nicht klar. Aus einer anderen Prozedur kriege ich die zwei Übergabearrays als int.
Mein Code bisher: ???:L
Code:
public double LinReg(int iListX[], int iListY[])
{
//Variablen
double sXX, sXY, sYY;
int sumX, sumY, sumX2, sumY2;
int sumXY;
double dArithX, dArithY;
double mX, mY;
double AchsY1, AchsY2;
double KkR;
sumX = 0;
sumY = 0;
sumX2 = 0;
sumY2 = 0;
sumXY = 0;
mX = 0;
mY = 0;
AchsY1 = 0;
AchsY2 = 0;
KkR = 0;
dArithX = 0;
dArithY = 0;
for ( int i = 0; i <= (iListX.length - 1); i++ )
{
sumX = sumX + iListX[i];
sumY = sumY + iListY[i];
sumX2 = sumX2 + ( iListX[i] * iListX[i] );
sumY2 = sumY2 + ( iListY[i] * iListY[i] );
sumXY = sumXY + ( iListX[i] * iListY[i] );
}
//arithmetisches Mittel auf die Listen anwenden:
dArithX = (double)(1 / (float)iListX.length * (float)sumX);
dArithY = (double)(1 / (float)iListY.length * (float)sumY);
//benötigte Summen:
sXX = sumX2 - ( (float)iListX.length * dArithX );
sXY = sumXY - ( (float)iListX.length * dArithX * dArithY );
sYY = sumY2 - ( (float)iListY.length * dArithY );
//Steigungen der RegGeraden:
mX = sXY / sXX;
mY = sXY / sYY;
//y-Achsenabschnitt
AchsY1 = dArithY - ( mX * dArithX );
AchsY2 = dArithY - ( mY * dArithX );
KkR = sXX - sYY;
return KkR;
}
Die Vorgehensweise selbst ist denke ich richtig. Habe die Formel von wikipedia umgesetzt...
Leider kommen so absolut unrealistische Werte (n * 10^irgendwas, kann natürlich nicht sein...) beim KkR raus was so wie ich das sehe nur an meinen Typumwandlungen liegen kann.
Ich hoffe ihr könnt mir helfen und mir sagen was ich da falsch mache. (Sorry dafür das das so lang geworden ist aber ich komme echt nicht weiter)
Gruss,
StackOverflow
PS:
die Werte kommen auf jeden Fall korrekt an. das habe ich über die Konsole bereits getestet...