Ostatnio potrzebne mi było policzenie regresji liniowej..
OK, dokładniej chodziło mi o to by przybliżyć pewien zestaw punktów [moją pensję w czasie ;-)] linią.
Z tego co pamiętam w Excelu była taka możliwość, ale Excela nie mam, w OpenOffice.org Calc nie znalazłem [choć nie szukałem jakoś szczególnie], w końcu policzyłem na kalkulatorze :-) [inne rodzaje regresji zresztą też ;-)]
Ale po wszystkim stwierdziłem, że zobaczę sobie czy da się to zrobić w Google Docs :-)
Wprost się chyba nie da, w każdym bądź razie nie znalazłem niczego, ale za to napisałem sobie skrypt :-)
Coby go dodać do naszego arkusza to wybieramy Tools -> Scripts -> Script editor i wklejamy do niego poniższy skrypt.
function linearRegression() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];
 var myValue = Browser.inputBox("Enter a range");  
 var sumXY = 0.0;
 var sumX = 0.0;
 var sumY = 0.0;
 var sumX2 = 0.0;
 var myRange = sheet.getRange(myValue);
 var n =   myRange.getHeight();
 for (var i=0; i<n; i++) {
   var xi = myRange.getCell(i+1, 1).getValue();
   var yi = myRange.getCell(i+1, 2).getValue();
   sumXY+=xi*yi;
   sumX+=xi;
   sumY+=yi;
   sumX2+=xi*xi;
 }
 var a = (n*sumXY-sumX*sumY)/(n*sumX2-sumX*sumX); 
 var b = 1/n*(sumY-a*sumX);
 Browser.msgBox("a="+a+"\nb="+b);
}Działanie polega na tym, że po nagraniu i uruchomieniu skryptu [w okienku edytora, jak to się robi bez edytora jeszcze nie wiem, używam tego od 20 minut :-)] podajemy zakres w którym są nasze dane (w postaci w stylu A1:B100). Muszą to być 2 kolumny danych, w pierwszej kolumnie będzie X, w drugiej Y.
Po chwili zobaczymy wyniki, czyli wartość współczynników a i b równania:
I to by było na tyle...
Aha, nie dam głowy że to dobrze działa ;-) ale powinno.
Podobne postybeta
A może by odkurzyć AI? ;-)
Bookmarklet do robienia CSV z obligacjami i ich oprocentowaniem ;-)
Logistic Regression wykrywa clickbaity lepiej od Bayesa ;-)
EEEBateria ;-)
[lifehack] Najprostszy sposób priorytetyzacji
Brak komentarzy:
Prześlij komentarz