Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
2010/1/15 1
一般化加法モデル(Generalized Additive Model, p.266)
0 1 1( ( )) p pg E y 1 x x
( ) ( ( ))Var V Ey y
一般化線形モデル
10 1( ( )) ( ) ( )ppfg fE y 1 x x
( ) ( ( ))Var V Ey y
一般化加法モデル
1 2, ,..., pf f fただし, は未知
平滑化(Smoothing)
2010/1/15 2
• 局所回帰(loess)関数 lo
• 平滑化シュプライン関数(smoothing spline) s
• Bシュプライン関数(basic spline) bs
• 自然シュプライン関数(natural spline) ns
1 2, ,..., pf f f非線形関数
平滑化と補間
• 補間(interpolation),補外(extrapolation)– 観測されていない値を補う
– 求める曲線は観測された値は通らなければならない
– 線形補間
– 区分多項式(spline)補間
• 自由度を残した平滑曲線はデータの背後にある現象の一つのモデルとして用いることができる
( )y f x
approx
spline
.RData.RData.RData
一次元平滑化(p.172~)
• 平滑化の背景となるモデル
• 平滑(smooth)な曲線...具体的な形は未知
• 平滑化によるデータの分解
( ) , , ,y f x x y R
( ) , , , nf y x x y R
( )', '',..,k kf C f f f数学としての定義 : が存在して連続
smooth, lowess
S/N (Signal/Noise)比
.RData
• 例
1 2( ) ( )z f x f y
1 2,f f は未知の(平滑な)関数であり,平滑化スプライン,あるいは局所回帰によって得られる関数を想定
gam(z ~s(x)+lo(y) )
平滑化スプライン 局所回帰
2010/1/15 6
> attach(ethanol)
> names(ethanol)
[1] "NOx" "C" "E"
> eth1=gam(NOx~C+lo(E,degree=2))
> eth1
Call:
gam(formula = NOx ~ C + lo(E, degree = 2))
Degrees of Freedom: 88 total; 80.1184 Residual
Residual Deviance: 5.16751
> par(mfrow=c(2,2))
> plot(NOx~C+E)
> plot(eth1, residual=T, se=T, rug=F, scale=4)
2010/1/15 7
C
NO
x
8 10 12 14 16 18
12
34
E
NO
x
0.6 0.8 1.0 1.2
12
34
C
part
ial fo
r C
8 10 12 14 16 18
-2-1
01
2
E
lo(E
, deg
ree
= 2)
0.6 0.8 1.0 1.2
-2-1
01
2
2010/1/15 8
> eth2=gam(NOx~C+poly(E,2))
> eth2
Call:
gam(formula = NOx ~ C + poly(E, 2))
Degrees of Freedom: 88 total; 84 Residual
Residual Deviance: 19.67801
> plot(eth2, residual=T, se=T, rug=F, scale=4)
2010/1/15 9
C
part
ial fo
r C
8 10 12 14 16 18
-2-1
01
2
E
lo(E
, deg
ree
= 2)
0.6 0.8 1.0 1.2
-2-1
01
2
C
part
ial fo
r C
8 10 12 14 16 18
-2-1
01
2
E
poly
(E, 2
)
0.6 0.8 1.0 1.2
-3-2
-10
12
2010/1/15 10
一般化加法モデルの当てはめ
gam(formula, family = gaussian, data = , weights = , subset = ,
na.action = na.fail, start = , control = gam.control(...),
trace = F, model = F, x = F, y = T, contrasts = NULL, ...)
引数は glm とほとんど同じ.大きな違いは formula に与えるモデル式の右辺にlo, s, bs, ns などの非線形関数を与えられること.
これらの非線形関数は,当てはめを確かめるたびに計算しなおすのではなく,gam が必要とする情報だけをわたす(p.287)
2010/1/15 11
当てはめ値
0 1 1 1 1 1( ( )) ( ) ( )q q q q p p q pg E f f y 1 x x x x
additive.predictors: 結果の成分 右辺の当てはめ値
1 1 2 2smooth: ( ), ( ),..., ( )q q p q pf f f x x x結果の成分 を行列に
まとめたもの
0 1 pcoefficients: , ,..., 結果の成分
1fitted values: g結果の成分 を施した値
(fittedで求まる) (新たな x の値に対しては predict)
2010/1/15 12
当てはめ結果
データ数=係数の数(p+1) +等価自由度(Npar)の和+残差(Residual)の自由度
0 1 1 1 1 1( ( )) ( ) ( )q q q q p p q pg E f f y 1 x x x x
当てはめは,線形項も含めて行われ,各項の寄与を調整するため非線形項にも係数を導入する(p.325)
基本的に,自由度と尤離度だけしか表示しない
summary, anova
局所回帰による平滑化
0 0 0 0 1 0 0 0
( ) , 1,2,...,
( ) :
( ; ) ( ) ( ) ( ) ( ) ( )
i i i
p
p
y g x i n
g x
g x x x x x x x x x
局所的に多項式
2
( )
( ) || ( ; ) || minj
j j jg
x U x
W x x y g x x
0ˆˆ ˆ( ) ( ; ) ( )g x g x x x
( )W x実際には,重み関数 を残差によって変更する
手続きを繰り返す.
シュプライン関数
2010/1/15 14
spline(x, y, n = , periodic = F, boundary = 0,
xmin =min(x), xmax = max(x))
0 1 2 :kx x x x 節点
1( ) ( ) , 0,1,2,..., 1i i if x p x for x x x i k
( ) ( )
1 1 1( ) ( ), 0,1,2,..., 2, 0,1,2,..., 1j j
i i i ip x p x i k j d
( )ip x d各 は 次の多項式
3次シュプライン関数による補間
approx(x, y, xout=,method="linear",n=50, rule=1, f=0)
1次シュプライン関数による補間、つまり線形補間
2010/1/15 15
(3次)平滑化シュプライン
2 2
1
( ( )) ( ( )) minn
i if
i
PRESS y f x f t dt
となるような3次区分多項式 を平滑化関数とする.
f
は平滑化パラメータ(smoothing parameter)
と呼ばれる.
smooth.spline(x, y, w = , df = ,
spar = 0, cv = F, all.knots = F, df.offset = 0, penalty = 1)
:
:
df
spar
等価自由度
2010/1/15 16
等価自由度
線形平滑化法(lo, s)に特有な量
1
ˆ ( ) ( , )n
i i
i
f t S t x y
t yに関しては非線形であるが, に関しては線形
1ˆ ˆ ˆ( )T TX X X X X y β ε y ε
1( ( ) ) 1, :T Ttr X X X X p p 説明変量の数
( ) 1 df tr S :等価自由度
{ ( , ), 1 , }i jS S x x i j n
平滑化行列
2010/1/15 17
GAM用の、モデル式中で平滑化の種類を指定するための関数
lo( . . ., span=0.5, degree=1)
s(x, df =4, spar=0)
:
:
df
spar
等価自由度
:
:
span U
degree
データの何割を近傍 とするか
局所多項式の次数
0 ,spar
df
が でなければこれが優先され
0ならば が優先される。
2010/1/15 18
bs(x, df, knots, degree=3, intercept=FALSE, Boundary.knots)
knots: 内節点の位置をベクトルで与えるdf: これが与えられれば,df-degree 個の節点が,各区間に入るデータ数が等しくなるように選ばれる.
両方とも省略したときは,内節点はなし.
Bシュプラインと名前が付いているが,特別な区分多項式ではなく,計算精度を確保するため,シュプラインを基底関数の線形結合で表すので,この名前が付いている
節点を指定して、スプライン関数をモデル式中で平滑化関数として用いる
Bシュプライン
2010/1/15 19
ns(x, df, knots, intercept=F, Boundary.knots)
両端点を越えたところで線形という制約を課した3次区分多項式
定めなければならないパラメータを一つづつ減らすことができる,
内部節点を2つ多くとっても残差の自由度は変わらない(利点)
自然シュプライン
2010/1/15 20
4つの平滑化関数の使い分け
• 局所回帰,平滑化シュプライン
–明確な節点(変化点)を想定できないとき
–平滑度を大域的に押さえたいなら後者
• Bシュプライン,自然シュプライン
–明確な節点(変化点)(の存在)が想定できる
–データの範囲外で線形が自然なら後者