PythonでLOWESS回帰の信頼区間を計算するにはどうすればよいですか?これらを影付きの領域として、次のコードで作成されたLOESSプロットに追加したいと思います(statsmodels以外のパッケージも問題ありません)。
import numpy as np
import pylab as plt
import statsmodels.api as sm
x = np.linspace(0,2*np.pi,100)
y = np.sin(x) + np.random.random(100) * 0.2
lowess = sm.nonparametric.lowess(y, x, frac=0.1)
plt.plot(x, y, '+')
plt.plot(lowess[:, 0], lowess[:, 1])
plt.show()
以下のウェブブログから信頼区間のプロット例を追加しました Serious Stats (Rのggplotを使用して作成されています)。
LOESSには、標準エラーの明確な概念がありません。この文脈では何の意味もありません。それが終わったので、あなたは力ずくのアプローチで立ち往生しました。
データをブートストラップします。ブートストラップされたデータにLOESS曲線を適合させます。このページの真ん中を見て、あなたがしていることのきれいな絵を見つけてください。 http://statweb.stanford.edu/~susan/courses/s208/node20.html
多数の異なるLOESS曲線を取得すると、上部と下部のXパーセンタイルを見つけることができます。
これは非常に古い質問ですが、グーグル検索で最初に出てくる質問の1つです。これは、scikit-miscのloess()関数を使用して実行できます。次に例を示します(元の変数名を保持しようとしましたが、ノイズを少し上げて見やすくしました)
import numpy as np
import pylab as plt
from skmisc.loess import loess
x = np.linspace(0,2*np.pi,100)
y = np.sin(x) + np.random.random(100) * 0.4
l = loess(x,y)
l.fit()
pred = l.predict(x, stderror=True)
conf = pred.confidence()
lowess = pred.values
ll = conf.lower
ul = conf.upper
plt.plot(x, y, '+')
plt.plot(x, lowess)
plt.fill_between(x,ll,ul,alpha=.33)
plt.show()
結果: