トップ «前の日記(2022-10-28 (Fri)) 最新 次の日記(2022-11-05 (Sat))» 編集   RSS 1.0 FEED  

Journal InTime


2022-10-30 (Sun) [長年日記]

_ Rubyで理解する統計解析の基礎: 3章

numo-gslにpolyfitがなさそうなのと、rb-gslのインストールにRuby 3.xだと失敗するので、3章の途中からあきらめてPyCallを使った。

poly_fit = Numpy.polyfit(english_scores, math_scores, 1)
poly_1d = Numpy.poly1d(poly_fit)
xs = Numpy.linspace(english_scores.min, english_scores.max)
ys = poly_1d.(xs)

だとysがpoly1d([37. , 37.85714286, 38.71428571, ... になってしまって関数が適用されないので

ys = Numpy.array(xs.to_a.map { |x| poly_fit[0] * x +  poly_fit[1] })

としたけど何かもっといい方法がありそうな気がする。

10/31追記

Numpy.poly1dは関数風のクラスを返すようで、

poly_1d = Numpy.poly1d.(poly_fit)

のように .() を使用したら poly_1d.(xs) で期待した結果を得られた。 クラスなので、 Numpy.poly1d.(poly_fit)Numpy.poly1d.new(poly_fit) でもよいようだ。