前提・実現したいこと
Excelの回帰分析における、「標準誤差」と同じものをpythonで求めて、可視化のパラメータとしたいです。
ネットで調べたところ、ExcelのSTEYXに相当する(?とおもう)という情報を見つけたので、
さしあたって、下記の図のように簡単なデータセットに対し、
pythonで上記に相当するstackoverflowのコードをみつつ書いてみたのですが、
後述する、TypeErrorが出力されてしまいます。(Errorの内容から推測するに、
行列の形があってなさそうな感じなのですが…)
お聞きしたいことは下記2点です。
①Excelの「標準誤差」(回帰統計の箇所の4番目、1.243114の箇所)は、STEYXと一致しているという理解で正しいでしょうか。
②pythonで上記と同等の処理を実現する場合、下記のコードで問題ないでしょうか。その場合はどのように修正すれば
問題なく動作するでしょうか。(もしくは、他によい実装方法などがあればご教示いただければ幸甚です)
発生している問題・エラーメッセージ
エラーメッセージ can't multiply sequence by non-int of type 'numpy.float64'
該当のソースコード
Python3
1import numpy as np 2 3x = [1.0,2.0,3.0,4.0,5.0] 4# x1 = [3.3,6.5,8.9, 11.7, 15.1] 5y = [2.1, 4.5, 3.6, 7.9, 9.2] 6 7import statsmodels.api as sm 8X = sm.add_constant(x) # intercept 9model = sm.OLS(y, X) 10fit = model.fit() 11 12fit = np.polyfit(x,y,deg=1) 13n = len(x) 14m = fit[0] 15c = fit[1] 16y_pred = m*x+c 17STEYX = (((y-y_pred)**2).sum()/(n-2))**0.5 18print(STEYX) 19
試したこと
Excelの回帰分析に関する処理の動きを調べた
簡単なコードをjupyterで作成して、動作させた。
補足情報(FW/ツールのバージョンなど)
python 8.7.6
statsmodels 0.13.0
回答1件
あなたの回答
tips
プレビュー