罰則付き回帰スプラインについて

このQ&Aのポイント
  • 回帰スプライン、平滑化スプライン、Penalized Regression Splineの3種類がある
  • Penalized Regression Splineは節点数が少ないスプラインで統計パッケージでよく使われている
  • 罰則付き回帰スプラインの詳細情報や邦訳がわからず、情報を求めている
回答を見る
  • ベストアンサー

罰則付き回帰スプライン?について

スプラインを用いた回帰には,私が知る限り以下の3種類あるようです。 (1)回帰スプライン:全データ点を通るスプライン。残差平方和を最小にするように求める。 (2)平滑化スプライン:罰則によって滑らかにしたスプライン。データ点と節点の数が一致する。 (3)Penalized Regression Spline:(2)より節点数の少ないスプライン。 そのうちPenalized Regression Splineは,統計パッケージでよく使われているのですが(例えばRのmgcvライブラリのgam関数),求めるためのアルゴリズムがよく分からないため,詳しく調べてみたいと思っています。ところが,邦訳が見当たりません。 直訳すると「罰則付き回帰スプライン」になるのでしょうが,Googleで1件もヒットしません。 もし,何か情報をお持ちの方がいらっしゃいましたら,教えて頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • goma_2000
  • ベストアンサー率48% (62/129)
回答No.1

日本語なら 『罰則付き最尤法』と『スプライン回帰』の の2つで検索してみてください。 要は、最尤推定する際に正則化項を入れて解くモデルです。 正則化項として変動の大きさ(2階微分)を入れます。

blueblink
質問者

補足

ご回答いただきありがとうございます。 行き詰っていたので、本当に助かりました! まだ、検索結果に色々あたっているところですが、もしよろしければ追加でお伺いしたいことがありまして、補足を書かせて頂きました。 "Penalized Regression Spline"に関する現在の理解は、対数尤度-正則化項(罰則項)を最大化して求めたスプラインだということです。そうすると、一方の平滑化スプラインは残差平方和+罰則項を最小化して求めたスプラインと理解しておりますので、両者には少なくとも目的関数に違いがあると思います。 ところが、両者には別の違いもあるようなのです。平滑化スプラインがデータ点数と同数の節点を用いるのに対し、Rのmgcvパッケージに実装されている"Penalized Regression Spline"は、計算負荷低減のため、データ点数よりも少数の節点を用いるそうです。この節点の選択を、どのようなアルゴリズムで行っているのか、最終的に知りたいと思っています。 この点に関してもしご存知でしたら、教えて頂ければ幸いです。

関連するQ&A

  • 回帰係数のt検定について

    回帰係数の検定では回帰定数を0とした帰無仮説とするということを、とあるテキストに書いてあり、その場合のt検定の式が下記のようになるらしいですが t=(求めた回帰定数)/√{(残差平方和)/(n-2) /(説明変数の偏差平方和)} このような式に至る過程を詳細に知りたいです。 どなたか詳しい方は教えて頂けませんでしょうか?一番気になる点は自由度が(n-2)になる点です。何卒宜しくお願い致します。

  • 原点を通る重回帰式の偏回帰係数

    はじめまして。 目的変数に対し、3つの説明変数を持つ資料があり、原点を通る重回帰式をたてたいところです。Excelなど、計算機の機能によって答えはわかっているのですが、式を作る計算過程を説明する資料を作らなければならなくなりました。 Y = aX+ bW + cZ Y: 目的変数 X:説明変数1 W:説明変数2 Z:説明変数3 a,b,c : 偏回帰係数 について、残差平方和 {Σ(Yi - ( aXi + bWi + cZi ))}^2を最小にするa,b,cを求めたいのです。残差平方和に対し、a,b,cで偏微分するといいのだ・・・などという理論は概ねわかりますが、私の数学力では、実際に計算過程を書き表すことができません。 説明変数が2つで、原点を通らない重回帰式の偏回帰係数の計算方法については、たとえば、以下のURLに書き表した例があります。 http://aoki2.si.gunma-u.ac.jp/lecture/Regression/mreg/mreg1.html このような書き表しの例で、説明変数が3つで、原点を通る重回帰式の偏回帰係数の計算方法をご紹介、またはご提示いただけないでしょうか。 どうかよろしくお願いいたします。

  • 不均一分散の回帰分析に適した変数変換とは?

    不均一分散する変数について回帰分析をする場合、加重最小2乗法や変数変換等があるという情報をウエブで見つけました。 手持ちのデータ(独立変数が大きくなるほど、残差のばらつきが大きくなっているデータ)で試しに従属変数の対数変換をして回帰したら、確かに元の結果よりかなり鮮明な傾向が認められ、また分散もほぼ一定となっている様に見受けられたのですが、その様になる理由は、簡単にイメージ的に説明すると何なのでしょうか。 また上記の様に“綺麗な結果”になる場合、そのまま対数変換の手法を採用して回帰してしまって差し支えないでしょうか。似た様な曲線形をとる関数に平方根(y=√x)等もあると思うので、ひょっとしたら「平方根変換」等も選択肢としてはあり得るとも思うのですが…何故対数変換なのでしょうか。 やはり実際に使う以上、直感的イメージだけでもその手法の仕組みを理解したいので、ご教示頂けると非常に助かります。

  • 線形回帰分析:多重共線性と主成分回帰について

     最小二乗法による線形回帰モデルのあてはめについて,説明変数間に多重共線性がある場合,回帰係数の信頼性や予測精度が低下すると習いました.これを防止する方法として,元の説明変数行列の主成分を説明変数としてあてはめを行う主成分回帰(PCR)等があるようです.  しかし,説明変数行列の線形変換は,回帰モデルのあてはめ値(fitted values),残差,新たなデータに関する予測値に影響を与えません.主成分も線形変換の1つなので,元の説明変数と同数の主成分を説明変数に用いる場合,全く同じあてはめ値,残差,予測値が得られます. それでは,主成分回帰は何故,多重共線性による回帰係数の信頼性,予測精度の低下を防止する手段と言えるのでしょうか? (主成分回帰の狙いは,元の説明変数より少数の重要な主成分のみを説明変数に用いることにもあるようですが,これは,多重共線性の問題の防止とは関係ないと思います.) 勘違いしている点もあるかもしれないので,コメントを頂ければ嬉しいです。

  • エクセルでの重回帰分析が上手くいきません

    エクセルにて重回帰分析を行っています。下記の状況になりますが何が原因か、また、対策はどうすべきかご教授ください。 <元データ> ・説明変数16個 <エクセルの統計データ機能を使用した結果> 回帰統計 重相関 R 1 重決定 R2 1 補正 R2 65535 標準誤差 0 観測数 3 分散分析表   自由度 変動     分散    観測された分散比 有意 F 回帰 16  1.646666667 0.823333333 #NUM!     #NUM! 残差  0    0     65535 合計  16 1.646666667 t値 65535 P値 #NUM! 以上です。 どうぞよろしくお願い致します。

  • ダイアログベースの3次Spline補間のプログラム

    現在、Visual C++ 2008 Express Editionを使用して下に示すようなダイアログベースの3次Spline補間のプログラムを作成しています。 各節点間を等分割するほうはできたのですが、各区間を同一刻み幅で算出するほうが、なかなかできません。 どこをどうしたらいいかがさっぱりです。 以下にプログラムの一部(各区間を同一刻み幅で計算する部分)を示しますので、教えてください。 わからない点は、dnの配列に入ってくる分割数が合っているときと少ないときがあることです。プログラムの後に使用した入力データと、dnの中身を参考までに掲載します。 ============▼プログラムの一部=========== /* n:全点数(int), num:全節点数(int),xn,yn:節点(double型のarray),dX:全区間(xn[0]~xn[num-1])の刻み幅(double) * dn[]:各区間の分割数(int),xx,yy:Spline補間による点(節点を含む,double),x計算された補間点のx座標(double) Cub(double):3乗する関数,Sqr(double):2乗する関数,a[],b[],c[],d[]:3次Spline補間に用いる3次関数の各係数*/ //nの初期化 n =0; //テキストボックスから刻み幅を取得 dX = double::Parse(DX->Text::get()); //各区間の分割数を計算し、全点数を求める for(i=0;i<num-1;i++){ dn[i]=(int)((xn[i+1]-xn[i])/dX); n +=dn[i]; } //xx,yyを全点数+1(最後の節点を含むために+1をしている)で領域確保 xx=gcnew array<double>(n+1); yy=gcnew array<double>(n+1); //ループインデックスを初期化 i=0,j=0; //補間点のx座標を求めながらy座標を算出 for(x=xn[0];x<=xn[num-1];x+=dX){ if(!((xn[j]<=x)&&(x<xn[j+1]))){ j++; } if(i>n+1){ break; } xx[i]=x; yy[i]=a[j]*Cub(xx[i]-xn[j])+b[j]*Sqr(xx[i]-xn[j])+c[j]*(xx[i]-xn[j])+d[j]; i++; } =======▼入力データ(csvファイル)=========== xn yn 0.904 7.54 1.002 13.86 1.104 23.42 1.207 36.61 1.305 52.91 1.403 73.4 1.505 97 1.603 123 1.706 151.3 1.808 182.6 1.906 215.3 2.009 249.2 2.107 284.6 2.209 321.6 2.312 359 2.41 398.1 2.571 438.7 2.669 504.9 2.772 548.3 2.869 593 2.972 639 3.075 687 3.172 736 3.275 787 3.378 840 3.476 895 3.578 951 3.676 1011 3.779 1073 3.876 1136 3.979 1204 4.077 1276 4.18 1353 4.277 1440 4.38 1543 4.483 1762 4.585 2082 4.683 3445 4.786 5598 4.888 7120 4.991 8080 =======▼dnの中身=========== Excelでの計算値 プログラムでの計算値 --------------------------------------- 98 97 102 102 103 102 98 97 98 98 102 101 98 98 103 102 102 102 98 97 103 102 98 98 102 101 103 102 98 98 161 161 98 97 103 102 97 97 103 102 103 103 97 96 103 102 103 103 98 97 102 101 98 98 103 102 97 96 103 103 98 97 103 102 97 97 103 102 103 102 102 102 98 97 103 102 102 102 103 102 上の表の右側はダイアログ上で、「区間間隔」をクリック(各ラジオボタンをクリックすると右横のテキストボックスが入力できるようになります。)してテキストボックスに0.001を入れた時の結果です。

  • 理論に基づいた回帰モデル作成の意味について

    あるデータから回帰モデルを構築し,別のデータを予測する場合,各変量間の関係が理論的にわかっている場合は,回帰モデルの形をデータだけで決めずに,理論的に決めたほうがよいと思います。ところが,どうして理論的に決めたほうがよいのかと聞かれると,うまく答えることが出来ません。 ご存知の方がいらっしゃいましたら,教えて頂ければ幸いです。 上記の抽象的な文では内容が伝わらない場合に備えて,長くなりますが下記に具体例を書かせていただきました。上記の文で足りる場合は,具体例は読んで頂かなくても結構です。 <具体例> 大気の薄いある惑星上で,ボールを真上に初速Vで発射し,落ちてくるまでの時間Tを測る実験を,100回行ったとします(あり得ない話ですが)。この実験によって,変量V,Tに関する大きさ100のデータが得られます。さて,このデータをもとに,VからTを予測する式を作る必要が生じたとします。 ニュートン力学に基づけばTはVと線形関係にあるはずですから,高校で物理を習った人は,T = αVという単回帰モデルを使うのが自然だと思います。これが,回帰モデルの形を理論に基づいて決めるアプローチです(アプローチ(1))。 一方,統計学を習いながらも物理を全く習っていない人は, T = αV^2 + βV のような多項式回帰モデルや, T = s(V) のようなノンパラメトリック回帰モデル(sは平滑化スプラインなど)を使うかもしれません。どれを使えばよいか判らない場合のモデル選択には,交差確認法などのモデル選択基準を用いることができます。これは,完全に統計的なアプローチと呼べると思います(アプローチ(2)) このような状況で,アプローチ(1)が(2)より優れていると私は何気なく思ってきたのですが,どうして優れているのか,わからなくなってしまいました。 モデルの新しいデータに対する予測誤差(汎化誤差)は(1)より(2)の場合のほうが小さくなることだってあると思うのです(例えば,空気抵抗があった場合や,実験誤差が正規分布しなかった場合)。また,アプローチ(2)についてまわる,回帰の際のデータに対する過剰適合(overfitting)の問題は,モデル選択基準を使うことである程度避けることができると理解しています。それでも,理論を利用することが優れているとすれば,どのような点においてでしょうか? よろしくお願い致します。

  • 統計学 重回帰分析についての問題

    問題 目的関数をy、説明変数を他の二つとして重回帰分析を行え。 この問題をRで実行し、※は自分がつけた補足です。 以下は間違ったことを言っていないか見てほしいです。 よろしくお願いします。 > condo<- read.table("clipboard",header=TRUE) ※Excel上で範囲指定したデータを読み込む > condo x1 x2 y 1 12 4 22 2 12 3 24 3 11 3 21 4 7 1 19 5 8 3 19 6 9 2 22 7 14 5 24 8 11 4 23 > attach(condo) > lm1<- lm(y~.,data =condo)  ※yを目的変数、他のすべての変数を説明変数として線形重回帰分析を実行 > summary(lm1) ※実行結果の要約 Call: lm(formula = y ~ ., data = condo) Residuals: ※残差の8数要約 1 2 3 4 5 6 7 8 -0.7477 0.6682 -1.3259 -0.4708 -0.3084 1.1016 -0.1752 1.2582 Coefficients: ※係数の最小二乗推定値と対応t値など Estimate Std. Error t value Pr(>|t|) (Intercept) 13.0140 2.1917 5.938 0.00193 ** ※β_0 x1 1.0058 0.3465 2.903 0.03369 * ※β_1 x2 -0.5841 0.6478 -0.902 0.40854 ※β_2 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.087 on 5 degrees of freedom Multiple R-squared: 0.7852, Adjusted R-squared: 0.6992 ※寄与率、自由度調整済み寄与率 F-statistic: 9.137 on 2 and 5 DF, p-value: 0.02139 最後の行は、母集団において、得られた回帰式 y= β_0+ β_1 x_1+ β_2 x_2+ ε_i が全くあてにならないという仮説(H0: β_1= β_2= 0 )を分散分析で検証している。検定統計量 F=S_R・(n-p-1)/ S_e・p ( n:標本数、p:説明変数の数、S_R:回帰による平方和、S_e:残差平方和 ) が自由度(p,n-p-1)のF分布に従うことを用いている。上記では、p値が0.02139と極めて小さいので、有意水準0.05で仮説H0は棄却され、母集団においてもこの式はあてになるという結論に至る。 ・・回答よろしくお願いします。

  • 回帰平方和 > 全平方和 の原因

    当方,統計学に関してはほぼ素人です。 実験データの解析で減衰曲線の理論式のフィッティングを行ったのですが,その決定係数が何故か1以上になってしまいます。ExcelのDevSq関数で理論値と実験値からそれぞれ算出した回帰平方和 ÷ 全平方和で算出していますが,その時 回帰平方和 > 全平方和になってしまいます。式や計算範囲の確認は行ってみましたが,素人目線では特に問題があるようには感じられません。以下の点についてご教授ください。 ・決定係数1以上に意味があるのか? ・計算間違え以外で回帰平方和の方が大きくなってしまうことがありうるのか?あればその原因は何か? 参考までに使用したデータのグラフの画像を示します。 因みに現状では決定係数R^2=1.0788程度で,用いた式は以下の単純な指数関数減衰曲線で,フィッテングパラメータ変数も減衰速度定数(k)のみです N(t)=N0*exp(-1*k*t) 恐縮ですが,エンドユーザーレベルの知識しか持ち合わせない故,分かりやすく教えて頂ければ幸いです。 よろしくお願いします。

  • 回帰モデルの予測精度と回帰データサイズの関係を調べる方法

    手元に200個(大きさ200;行数200)の観測データがあり、その一部(n個)を用いて回帰モデルを構築した場合の予測精度が、用いたデータ数nにどのように依存するかを調べたいと考えています。 このような場合、次の(1)~(3)を、様々なnについて繰り返す方法でよいのでしょうか? (1)200個のデータをランダムに、大きさn, (200-n)の2つの部分集合に分ける (2)前者を用いて構築した回帰モデルで後者を予測する (3)予測誤差を評価する 不安な点は、nに応じて、予測されるデータ数(精度検証に用いられるデータ数)が変化してしまうことです。 何かコメントをいただければ幸いです。