DS_Lec9_20101213
DS_Lec9_20101213
DS_Lec9_20101213
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2010/12/13 第9回<br />
平滑化法、一般化加法モデル<br />
滑 法、 般 法<br />
東京の平均気温 1876年~2007年<br />
(単変量)回帰モデル<br />
y 0 1<br />
year <br />
傾向を、もっと柔軟に表現したい<br />
統計関連学会連合<br />
統計教育推進委員会<br />
教材教育サイトより<br />
1
2010/12/13 第9回<br />
移動平均法<br />
(2m+1)項移動平均:当期と前後m期の合計(2m+1)期の<br />
平均を当期の移動平均値とする<br />
21項移動平均<br />
東京の平均気温 1876年~2007年<br />
2
2010/12/13 第9回<br />
移動平均法:局所的な平均<br />
局所重み付き回帰法<br />
局所重み付き回帰法<br />
局所的 局所的に多項式回帰モデルをあてはめる<br />
多項式回帰 デ をあ はめる<br />
x x<br />
の近傍で局所的に = に近いほど大きな重み、<br />
遠い値には0の重み、を付けて<br />
多項式を最小2乗法であてはめる<br />
2 x x y f x ) <br />
w<br />
i<br />
i ( i ⇒ 最小化<br />
f (x)<br />
:多項式関数<br />
(直線、2次曲線、…)<br />
直線 次曲線<br />
3
2010/12/13 第9回<br />
局所重み付き回帰法<br />
東京の平均気温 1876年~2007年<br />
関数 loess による<br />
あてはめ<br />
4
2010/12/13 第9回<br />
関数 loess<br />
局所重み付き多項式回帰法により曲線(曲面)をあ 局所重み付き多項式回帰法により曲線(曲面)をあてはめる はめる<br />
loess(formula, data, weights, subset, na.action, span = 0.75,<br />
enp.target, ddegree = 2, parametric = F, ddrop.square<br />
= F,<br />
normalize = T, family = c("gaussian", "symmetric"), model = F,<br />
control control, ...) )<br />
誤差に正規分布を 誤差に正規分布を仮定せず、<br />
仮定する.重みの再計算 重みの再計算を繰り返して、<br />
をしない(デフォルト) 頑健なあてはめを行う<br />
formula モデル式 をしない(デフォルト)<br />
data 用いるデータフレーム(指定は任意)<br />
span 平滑の度合いをコントロールするパラメータ<br />
平滑の度合いをコントロールするパラメータ.<br />
大きいほど滑らかな曲線になる. デフォルトは 0.75<br />
degree あてはめる多項式の次数 あてはめる多項式の次数. デフォルトは2次<br />
デフォルトは2次.<br />
どの平滑化手法も、平滑の度合いをコントロールするパラメー<br />
タの値によって、結果が大きく異なることに注意.<br />
5
2010/12/13 第9回<br />
関数 loess: パラメータspan ラ タ p の値による違い<br />
値 る違<br />
6
2010/12/13 第9回<br />
平滑化スプライン法<br />
平滑化 ライ 法<br />
f (x)<br />
3次スプライン関数<br />
2階までの導関数が連続な 2階までの導関数が連続な、区分的3次多項式<br />
区分的3次多項式<br />
, , x x <br />
, 2<br />
x<br />
x x <br />
• 節点(knots): 1 m 1 2<br />
m<br />
• 各 各区間 間 [ , x 1 ] ( k 1 1,...,<br />
m 1 ) で3次多項式 次多項式 f ( (x )<br />
xk k <br />
m 1<br />
f ( x)<br />
I[<br />
x x ] ( x)<br />
fk<br />
<br />
f ( ) [ x ] ( ) f<br />
k , xk1<br />
k<br />
k 1<br />
;<br />
( x )<br />
• 各節点(端点を除く)で2階までの導関数が 連続<br />
f<br />
k 1<br />
f <br />
f<br />
k 1<br />
k 1<br />
( x<br />
( x<br />
( x<br />
k<br />
k<br />
k<br />
)<br />
)<br />
)<br />
<br />
<br />
<br />
f<br />
k<br />
k<br />
( x<br />
f ( x<br />
f (<br />
x<br />
k<br />
k<br />
k<br />
k<br />
)<br />
) ,<br />
)<br />
k<br />
2 , , m 1<br />
x<br />
f k<br />
7
2010/12/13 第9回<br />
節点での値を f ( x ) ( k 1 ,..., m ) と固定したとき<br />
y k k<br />
• m‐1個(区関数)の3次多項式 4(m‐1) パラメータ<br />
• 節点(区間の両端点)での制約 2(m‐1) 2(m 1)<br />
• 1階微分の連続性の制約 m‐2<br />
• 2階微分の連続性の制約 m‐2<br />
⇒ 4(m‐1) –{2(m‐1)+m‐2+m‐2} = 2個の自由度が残る<br />
2個の自由パラメータをどう定めるかでいろいろなスプライン関<br />
数がある<br />
• 自然スプライン(natural spline) f ( x 1 ) f <br />
( x m ) 0<br />
• B‐スプライン(B‐spline, B for Basic)(両端に任意の3節点を加える)<br />
B<br />
B<br />
m 3<br />
<br />
i1<br />
( 3)<br />
f ( x ) B ( x ) <br />
( d )<br />
i<br />
( 0)<br />
i<br />
i<br />
x xi<br />
( x)<br />
<br />
x x<br />
id<br />
1<br />
<br />
1 xi<br />
x x<br />
( x)<br />
<br />
0<br />
その他<br />
i<br />
i<br />
B<br />
i1<br />
( d 1)<br />
i<br />
x<br />
( x)<br />
<br />
x<br />
id<br />
id<br />
x<br />
x<br />
i<br />
B<br />
( d 1)<br />
i1<br />
( x)<br />
i 1,...,<br />
m<br />
d<br />
<br />
0,<br />
1,<br />
2<br />
8
2010/12/13 第9回<br />
平滑化と補間<br />
平滑化 補間<br />
補間 (interpolation) 、補外(extrapolation)<br />
– 観測されていない値を補う<br />
– 観測された点は通らなければならない<br />
x に対する y の値を補う場合、<br />
補間は観測された値の範囲内の x に対する y を補い、<br />
補外は観測された値の範囲外の x に対する y を補う。<br />
平滑曲線は 平滑曲線は、観測された点を通るわけではない。<br />
観測された点を通るわけではない<br />
y<br />
f (x)<br />
<br />
f ( (x ) は y の‘傾向’を表す滑らかな曲線<br />
9
2010/12/13 第9回<br />
平滑化スプライン法<br />
平滑化 ライ 法<br />
• 3次平滑化スプライン法は、罰則付き残差2乗和<br />
n<br />
y f x ) <br />
<br />
2<br />
<br />
2<br />
i ( i f (<br />
x)<br />
dx<br />
i1<br />
<br />
<br />
<br />
データの当てはまり<br />
具合を表す<br />
関数のでこぼこに<br />
対するペナルティー<br />
(roughness penalty)<br />
を最小にするスプライン曲線を平滑化関数とする方法。<br />
<br />
• はデータへの当てはまり具合と関数の滑らかさのバラン<br />
スをコントロ スをコントロールするパラメータで平滑化パラメータ<br />
ルするパラメ タで平滑化パラメ タ<br />
(smoothing parameter) と呼ばれる。<br />
• が大きいほど が大きいほど、滑らかな曲線が得られる。<br />
滑らかな曲線が得られる<br />
<br />
10
2010/12/13 第9回<br />
関数 smooth.spline p<br />
B‐スプライン関数による平滑化スプライン曲線を当てはめる<br />
smooth smooth.spline(x, spline(x yy, w = below>>, df = below>>,<br />
spar = 0, cv = F, all.knots = F, df.offset = 0, penalty = 1)<br />
x 予測変量<br />
y 反応変量<br />
df 等価自由度 等価自由度. これを用いても滑らかさを制御できる<br />
これを用いても滑らかさを制御できる。<br />
spar と同等の平滑化パラメータ. 滑らかさについての指<br />
定がない場合は、一般化交差検証法(GCV)で自動的に選択<br />
定がない場合は、 般化交差検証法(GCV)で自動的に選択<br />
される。<br />
等価自由度: 等価 度 平滑化スプライン法による推定値ベクトルは、観<br />
滑 ラ 法 推定値 、観<br />
測値ベクトルの線形結合として yˆ My と表現でき、行列 M<br />
は疑似射影行列とみなせる。この対角和 tr(M)<br />
が等価自由度<br />
11
2010/12/13 第9回<br />
Tokyotemp T<br />
Tokyoteemp<br />
平滑化スプライン法による平滑曲線<br />
平滑化 ライ 法 る平滑曲線<br />
17<br />
15 16<br />
13 14<br />
16 17<br />
13<br />
14 15<br />
GCV(spar=0.0254)<br />
1880 1900 1920 1940 1960 1980 2000<br />
Time<br />
spar=1<br />
1880 1900 1920 1940 1960 1980 2000<br />
Time<br />
Tokyotemp T<br />
17<br />
15 16<br />
13 14<br />
spar=0.000001<br />
1880 1900 1920 1940 1960 1980 2000<br />
Time<br />
> smooth.spline(Tttime, p ( Tokyotemp) y p)<br />
Call:<br />
smooth.spline(x = Tttime, y = Tokyotemp)<br />
Smoothing Parameter (Spar): 00.02544036 02544036<br />
Equivalent Degrees of Freedom (Df): 4.018848<br />
Penalized Criterion: 26.63255<br />
GCV: 0.2073451<br />
><br />
12
2010/12/13 第9回<br />
一般化加法モデル<br />
GAM GAM, GGeneralized li dAdditi Additive MModel d l<br />
一般化線形モデル<br />
X X<br />
g <br />
<br />
g ( ) 0 1 1 2 2 <br />
Y<br />
一般化加法モデル<br />
~ 指数型分布 ,<br />
E[Y ]<br />
g <br />
) <br />
<br />
f ( X ) <br />
f ( X ) <br />
<br />
<br />
<br />
p p X p p<br />
( 0 1 1 2 2 f p ( X p<br />
Y<br />
~ 指数型分布 ,<br />
f X ), f ( X ), ,<br />
1( 1 2 2 f p ( X p<br />
)<br />
E[Y ]<br />
<br />
<br />
:平滑化関数<br />
)<br />
13
2010/12/13 第9回<br />
一般化加法モデルの当てはめ<br />
般化加法 デ 当<br />
gam(formula = formula(data), family = gaussian, data = , weights h = , subset b = ,<br />
na.action = na.fail, start = , control =<br />
gam gam.control(...), control( ) trace = FF, model = FF, x = FF, y = TT, qr = F, F<br />
method = "qr", contrasts = NULL, ...)<br />
引数は glm とほとんど同じ.大きな違いは、formula に与えるモ<br />
デル式の右辺に lo, s, bs, ns などの平滑化関数を指定できる<br />
こと.<br />
• 局所回帰(loess)関数 lo(…, span=0.5, degree=1)<br />
• 平滑化スプライン関数(smoothing spline) s(x, df=4, spar=0)<br />
• B‐スプライン関数 (basic spline) bs<br />
• 自然スプライン関数(natural spline) ns<br />
14
2010/12/13 第9回<br />
partial residualls<br />
脊椎後湾症データへの一般化加法モデルのあてはめ<br />
脊椎後湾症デ タ の 般化加法モデルのあてはめ<br />
1 2<br />
-3 -22<br />
-1 0<br />
0 50 100 150 200<br />
partial residualls<br />
AAge<br />
St Startt<br />
2<br />
-6 -4 - -2 0<br />
5 10 15<br />
>kypho.gam = gam(Kyphosis ~ s(Age,4) +s(Start)+ Number, family =<br />
binomial binomial, data = kyphosis)<br />
>kyphopdt = predict(kypho.gam,type='terms')<br />
>plot(Age, plot(Age, kyphopdt[,1]+residuals(kypho.gam), kyphopdt[,1] residuals(kypho.gam), ylab="partial ylab partial residuals residuals") )<br />
>lines(Age[order(Age)], kyphopdt[order(Age),1],col=3,lwd=2)<br />
>plot(Start, kyphopdt[,2]+residuals(kypho.gam),ylab="partial residuals")<br />
>lines(Start[order(Start)], ( [ ( )], kyphopdt[order(Start),2],col=3,lwd=2)<br />
yp p [ ( ), ], , )<br />
15
2010/12/13 第9回<br />
燃費データへの一般化加法モデルのあてはめ<br />
燃費<br />
0.12<br />
0.10<br />
0.08<br />
2000 3000 4000 5000<br />
排気量<br />
>attach(fuel)<br />
>fuel.gam= gam(Fuel~lo(Disp.), data=fuel)<br />
>plot(Disp., Fuel,xlab='排気量',ylab='燃費')<br />
>lines(Disp.[order(Disp.)], predict(fuel.gam)[order(Disp.)],col=3,lwd=2)<br />
16