- Calculator の場合:
構文: LinRegBx Xリスト, Yリスト (または LinRegMx Xリスト, Yリスト)
実行結果:
- Nspired Lua で実行する場合:
function ols(xlist, ylist) local temp1 = "{"..table.concat(xlist, ",").."}" local temp2 = "{"..table.concat(ylist, ",").."}" --math.eval("LinRegBx "..temp1..","..temp2) math.eval(string.format("LinRegBx %s, %s", temp1, temp2)) return var.recall("stat.a"), var.recall("stat.b") end x = {1,2,3,4,5,6,7,8,9,10} y = {1,2,3,4,5,6,7,8,9,10} y_out = {1,2,3,4,5,6,7,8,9,50} y_rand = {1,-3,1,-1,4,0,3,0,-5,2} function on.resize() local intercept, slope = ols(x, y) print(intercept, slope) local intercept, slope = ols(x, y_out) print(intercept, slope) local intercept, slope = ols(x, y_rand) print(intercept, slope) end
実行結果:
- Lua だけで組む場合:
function ols(xlist, ylist) local num = #xlist local sumX = 0 local sumY = 0 local sumXY = 0 local sumX2 = 0 for i = 1, num do sumX = sumX + xlist[i] sumY = sumY + ylist[i] sumXY = sumXY + xlist[i] * ylist[i] sumX2 = sumX2 + xlist[i]^2 end local b = (num * sumXY - sumX * sumY) / (num * sumX2 - sumX^2) local a = (sumY - b * sumX) / num return a, b end x = {1,2,3,4,5,6,7,8,9,10} y = {1,2,3,4,5,6,7,8,9,10} y_out = {1,2,3,4,5,6,7,8,9,50} y_rand = {1,-3,1,-1,4,0,3,0,-5,2} local intercept, slope = ols(x, y) print(intercept, slope) local intercept, slope = ols(x, y_out) print(intercept, slope) local intercept, slope = ols(x, y_rand) print(intercept, slope)
実行結果:
――――――――――――――――――――――――――――――――――――
Wolfram の場合 (ここでは Fit[] 函数を使う):
xList = {1,2,3,4,5,6,7,8,9,10}; yList = {1,2,3,4,5,6,7,8,9,10}; yOut = {1,2,3,4,5,6,7,8,9,50} ; yRand = {1,-3,1,-1,4,0,3,0,-5,2}; Fit[Transpose[{xList,yList}],{x^0,x^1},x] Fit[Transpose[{xList,yOut}],{x^0,x^1},x] Fit[Transpose[{xList,yRand}],{x^0,x^1},x]
実行結果:
――――――――――――――――――――――――――――――――――――
Excel の場合 (ここでは [近似曲線の追加] を使う。散布図上のどれか要素を右クリックし、[近似曲線の追加]、[線形近似] の順に選択する。[グラフに数式を表示する] チェックボックスをオンにすると数式も表示される):