タグ付けされた質問 「mgcv」

mgcvは、GCV / AIC / REMLの滑らかさを推定する混合GAM計算手段用のRパッケージです。

2
一般化された加法モデル—サイモンウッド以外の研究者は誰ですか?
私はGAMをますます使用しています。さまざまなコンポーネント(平滑化パラメーターの選択、さまざまなスプラインベース、平滑項のp値)の参照を提供しようとすると、それらはすべて1人の研究者(イギリスのバース大学のサイモンウッド)からのものです。 彼はmgcvR のメンテナーでもあり、彼は自分の仕事を実装しています。 mgcv非常に複雑ですが、非常にうまく機能します。 確かに古いものがあります。元のアイデアはHastie&Tibshiraniの功績によるものであり、2003年にRuppertらによって非常に古い教科書が執筆されました。 申請者として、私は学術統計学者の間で時代精神を感じていない。彼の作品はどのように見られていますか?1人の研究者が1つの分野でこれほど多くのことを行ったことは少し奇妙ですか?それとも、中に入れられないためにそれほど気づかない他の仕事がありmgcvますか?GAMがそれほど使用されているとは思いませんが、この資料は統計トレーニングを受けた人々にとっては合理的にアクセス可能であり、ソフトウェアは非常によく開発されています。「裏話」の多くはありますか? 統計ジャーナルからのパースペクティブの断片や他の同様のものの推奨は高く評価されるでしょう。

1
mgcv GAMモデルで平滑化を調整する方法
mgcv:gamモデルで平滑化パラメーターを制御する方法を見つけようとしています。 主に固定グリッド上のxおよびy座標の関数としてモデル化しようとしている二項変数に加えて、より小さな影響を持つ他のいくつかの変数があります。過去に、パッケージlocfitと(x、y)値のみを使用して、かなり良いローカル回帰モデルを構築しました。 ただし、他の変数をモデルに組み込んでみて、一般化された加算モデル(GAM)が良い可能性であるように見えました。両方ともGAM機能を持つパッケージgamとmgcvを調べた後、後者を選択しました。メーリングリストスレッドの多くのコメントが推奨しているようです。欠点の1つは、lessやlocfitのようなローカル回帰スムーザーをサポートしていないように見えることです。 はじめに、ちょうど(x、y)座標を使用して、おおよそlocfitモデルを複製しようとしただけです。通常の平滑化とテンソル積平滑化の両方を試しました。 my.gam.te <- gam(z ~ te(x, y), family=binomial(logit), data=my.data, scale = -1) my.gam.s <- gam(z ~ s(x, y), family=binomial(logit), data=my.data, scale = -1) ただし、モデルからの予測をプロットすると、locfitモデルに比べてはるかに滑らかになります。だから、私はモデルをあまり滑らかにしないように調整しようとしています。パラメーターspおよびkを調整しようとしましたが、それらがスムージングにどのように影響するかは明確ではありません。locfitでは、nnパラメーターは使用される近傍のスパンを制御します。値を小さくすると、平滑化が少なくなり、「ウィグリング」が増えます。これにより、二項の結果の確率が急速に変化するグリッド上の一部の領域をキャプチャできます。同様に動作するように、gamモデルを設定するにはどうすればよいですか?
14 r  smoothing  mgcv 

1
一般化された加法モデル(GAM)、相互作用、共変量
私は予測のための多くのツールを調査してきましたが、一般化された加算モデル(GAM)がこの目的に最も可能性があることがわかりました。GAMは素晴らしいです!複雑なモデルを非常に簡潔に指定できます。ただし、その簡潔さが、特にGAMが相互作用項と共変量をどのように考えているかという点で、混乱を招いています。 yいくつかのガウス分布に加えてノイズが加わった単調関数であるサンプルデータセット(投稿の最後に再現可能なコード)を考えてみましょう。 データセットには、いくつかの予測変数があります。 x:データのインデックス(1〜100)。 w:yガウス分布が存在するセクションをマークする2番目の機能。w値は1〜20で、11〜30 x、および51〜70です。それ以外の場合wは0です。 w2:w + 1ので、0値はありません。 Rのmgcvパッケージにより、これらのデータの多くの可能なモデルを簡単に指定できます。 モデル1および2はかなり直感的です。デフォルトの平滑度でyインデックス値のみから予測xすると、あいまいに正しいものが生成されますが、滑らかすぎます。に存在する「平均ガウス」モデルの結果yからのみ予測し、他のデータポイントは「認識」しません。すべてのデータポイントの値は0です。wyw モデル3は両方xを使用しw、1Dスムースとして使用して、ぴったりとフィットします。モデル4は、2Dスムーズを使用してxおりw、優れた適合性も提供します。これら2つのモデルは非常に似ていますが、同一ではありません。 モデル5モデルx"by" w。モデル6はその逆です。mgcvのドキュメントには、「by引数により、スムーズ関数に['by'引数で指定された共変量]が乗算されることが保証されている」と記載されています。モデル5とモデル6は同等ではありませんか? モデル7および8は、予測子の1つを線形項として使用します。GLMがこれらの予測子で行うことを単純に実行し、モデルの残りの部分に効果を追加するため、これらは直感的に理にかなっています。 最後に、モデル9はモデル5と同じですが、x「by」w2(つまり)で平滑化されw + 1ます。ここで私にとって奇妙なのは、ゼロの欠如がw2「by」相互作用に著しく異なる効果をもたらすことです。 したがって、私の質問は次のとおりです。 モデル3とモデル4の仕様の違いは何ですか?違いをより明確に引き出す他の例はありますか? ここで「by」とは正確には何ですか?私がウッドの本とこのウェブサイトで読んだことの多くは、「by」が相乗効果を生み出すことを示唆していますが、その直観をつかむのに苦労しています。 モデル5とモデル9の間に大きな違いがあるのはなぜですか? Rで書かれたReprexが続きます。 library(magrittr) library(tidyverse) library(mgcv) set.seed(1222) data.ex <- tibble( x = 1:100, w = c(rep(0, 10), 1:20, rep(0, 20), 1:20, rep(0, 30)), w2 = w + 1, y = …
12 r  modeling  gam  mgcv 

1
R / mgcv:なぜte()とti()テンソル積が異なる表面を生成するのですか?
のmgcvパッケージにRは、テンソル積の相互作用をフィッティングするための2つの関数がte()ありti()ます。私は2つの作業の基本的な分業を理解しています(非線形の相互作用を当てはめるか、この相互作用を主効果と相互作用に分解するか)。私が理解していないのは、なぜte(x1, x2)、そしてti(x1) + ti(x2) + ti(x1, x2)(わずかに)異なる結果を生成するのかということです。 MWE(から適応?ti): require(mgcv) test1 <- function(x,z,sx=0.3,sz=0.4) { x <- x*20 (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+ 0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2)) } n <- 500 x <- runif(n)/20;z <- runif(n); xs <- seq(0,1,length=30)/20;zs <- seq(0,1,length=30) pr <- data.frame(x=rep(xs,30),z=rep(zs,rep(30,30))) truth <- matrix(test1(pr$x,pr$z),30,30) f <- test1(x,z) y <- f + rnorm(n)*0.2 par(mfrow = c(2,2)) # …
11 r  gam  mgcv  conditional-probability  mixed-model  references  bayesian  estimation  conditional-probability  machine-learning  optimization  gradient-descent  r  hypothesis-testing  wilcoxon-mann-whitney  time-series  bayesian  inference  change-point  time-series  anova  repeated-measures  statistical-significance  bayesian  contingency-tables  regression  prediction  quantiles  classification  auc  k-means  scikit-learn  regression  spatial  circular-statistics  t-test  effect-size  cohens-d  r  cross-validation  feature-selection  caret  machine-learning  modeling  python  optimization  frequentist  correlation  sample-size  normalization  group-differences  heteroscedasticity  independence  generalized-least-squares  lme4-nlme  references  mcmc  metropolis-hastings  optimization  r  logistic  feature-selection  separation  clustering  k-means  normal-distribution  gaussian-mixture  kullback-leibler  java  spark-mllib  data-visualization  categorical-data  barplot  hypothesis-testing  statistical-significance  chi-squared  type-i-and-ii-errors  pca  scikit-learn  conditional-expectation  statistical-significance  meta-analysis  intuition  r  time-series  multivariate-analysis  garch  machine-learning  classification  data-mining  missing-data  cart  regression  cross-validation  matrix-decomposition  categorical-data  repeated-measures  chi-squared  assumptions  contingency-tables  prediction  binary-data  trend  test-for-trend  matrix-inverse  anova  categorical-data  regression-coefficients  standard-error  r  distributions  exponential  interarrival-time  copula  log-likelihood  time-series  forecasting  prediction-interval  mean  standard-error  meta-analysis  meta-regression  network-meta-analysis  systematic-review  normal-distribution  multiple-regression  generalized-linear-model  poisson-distribution  poisson-regression  r  sas  cohens-kappa 

1
mgcv gamでのランダムな効果による予測
私は、mgcvのgamを使用して総漁獲量をモデル化し、個々の船(時間の経過とともに繰り返し漁業を行う)の単純なランダム効果をモデル化することに興味があります。私は98科目を持っているので、ランダム効果をモデル化するためにgammではなくgamを使用すると思いました。私のモデルは: modelGOM <- gam(TotalFish ~ factor(SetYear) + factor(SetMonth) + factor(TimePeriod) + s(SST) + s(VesselID, bs = "re", by = dum) + s(Distance, by = TimePeriod) + offset(log(HooksSet)), data = GOM, family = tw(), method = "REML") 私はbs = "re"とby = dumでランダム効果をコード化しました(これにより、予測値またはゼロでの血管効果を予測できるようになります)。"dum"は1のベクトルです。 モデルは実行されますが、予測に問題があります。予測のために血管の1つ(Vessel21)を選択し、予測に関心のある予測子(距離)以外のすべての平均値を選択しました。 data.frame("Distance"=seq(min(GOM$Distance),max(GOM$Distance),length = 100), "SetYear" = '2006', "SetMonth" = …

1
GAM P値を解釈する方法は?
私の名前はヒューです。私は博士課程の学生で、一般的な加法モデルを使用して探索的分析を行っています。 MGCVパッケージからのp値をどのように解釈し、理解を確認したいのかわかりません(バージョン1.7-29を使用しており、Simon Woodのドキュメントをいくつか参照しました)。最初に他のCVの質問を探しましたが、最も関連性の高い質問は一般的な回帰に関するものであり、特にGAMのp値ではないようです。 GAMにはさまざまな引数がたくさんあり、p値はあくまでも概算です。しかし、私は単純に始めて、私の共変量に「シグナル」があるかどうかを確認しています。例えば: Y〜s(a、k = 3)+ s(b、k = 3)+ s(c、k = 3)+ s(d、k = 3)+ s(e、k = 3) 滑らかな項の近似p値: s(a)= 0.000473 s(b)= 1.13e-05 s(c)= 0.000736 s(d)= 0.887579 s(e)= 0.234017 R²(調整済み)= 0.62\quad 逸脱の説明= 63.7% GCVスコア= 411.17\quad スケール推定= 390.1\quad n = 120 書式設定により、df列などを切り取りました。各共変量のp値を、対応する滑らかな関数がモデルの逸脱を大幅に低減するかどうかのテストとして解釈しています。ここで、pは、0のnullモデルで観察されるものと少なくとも「比較的妥当でない」データを取得する確率です。 これは、(たとえばalpha = 0.05を使用して)平滑化された関数が "d"および "e"とnullモデルの偏差を減少させなかったのに対し、他の項については減少させたことを意味します。したがって、(d)と(e)は回帰に重要な情報を追加せず、説明された逸脱は(a)(b)(c)に下がっていますか? 助言をいただければ幸いです。また、幸運にも研究にご協力ください。
10 p-value  mgcv 

2
予測エラーをテストするためのGAM交差検証
私の質問は、mgcv RパッケージのGAMを扱います。サンプルサイズが小さいため、1対1の交差検証を使用して予測エラーを特定したいと思います。これは妥当ですか?どうすればこれを行うことができるパッケージまたはコードがありますか?ipredパッケージのerrorest()関数は機能しません。簡単なテストデータセットは次のとおりです。 library(mgcv) set.seed(0) dat <- gamSim(1,n=400,dist="normal",scale=2) b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat) summary(b) pred <- predict(b, type="response") ご協力ありがとうございます!
10 r  cross-validation  gam  mgcv 

1
適応GAMはmgcvで平滑化
GAMに関するSimon Woodの本とそれに関連するRパッケージmgcvは、GAM理論と実際のデータおよびシミュレーションデータへのモデルの適合に関して、非常に詳細で有益です。 1D平滑化の場合、それほど心配する必要はありません。循環基底関数と適応基底関数を実装するかどうかを決定することを除けば、3次平滑化、薄板平滑化、およびPスプライン平滑化と比べて非常に異なる予測結果が得られる可能性があります。適応型の場合、複数のGAMがスプラインに沿って異なる領域に適合されます。私の知る限り、循環ベースは時系列モデリングでは一般的ですが、応答変数に関してデータが大きく変化する場合は、適応平滑化を検討する必要があります。ただし、アダプティブスムースは「慎重に」使用する必要があります。 私はしばらくの間GAMを調査してきましたが、私の研究の質問を考えると、どのスムーズな方法で実装するかについて、自分の考えが大きく変わっていることに気づいています。mgcvには、17種類のスムースが含まれています(カウント別)。キュービックスムースとPスプラインスムースの両方を検討しました。 私の質問は次のとおりです。最終的な目標が予測目的でフィットしたGAMを使用することである場合、適応スムージングは​​非適応カウンターパートに対していつ考慮すべきですか?私の目的では、スムーズ化が不十分になる傾向がありますが、デフォルトのGCV平滑化基準を使用しています。 応用生態学的GAMで文献は増えていますが、適応型スムーズを実装する研究にはまだ出会っていません。 任意のアドバイスをいただければ幸いです。
9 r  mgcv 

4
mgcvのplot.gamで使用される値を取得する方法
mgcvパッケージ(x, y)でのプロットplot(b, seWithMean=TRUE)に使用される値を知りたいのですが。これらの値を抽出または計算する方法を誰かが知っていますか? 次に例を示します。 library(mgcv) set.seed(0) dat <- gamSim(1, n=400, dist="normal", scale=2) b <- gam(y~s(x0), data=dat) plot(b, seWithMean=TRUE)

2
モデルを比較するための分散分析
RでのGAMに関するワークショップについては、このサイトを見ています。http://qcbs.ca/wiki/r_workshop8 セクションの最後に、3つの異なるモデルを比較して最適なモデルを決定するため2. Multiple smooth termsに使用する例を示しanovaます。出力は Analysis of Deviance Table Model 1: y ~ x0 + s(x1) Model 2: y ~ x0 + s(x1) + x2 Model 3: y ~ x0 + s(x1) + s(x2) Resid. Df Resid. Dev Df Deviance Pr(>Chi) 1 394.08 5231.6 2 393.10 4051.3 0.97695 1180.2 < …
9 r  anova  gam  mgcv 

1
GAMパラメータのタイプを選択する方法
私はRでGAMの使用を開始し、このトピックに関する優れた本(「一般化された加法モデル、Rの概要」)を入手しました。彼の例の1つに基づいて、私は以下を調べています。 library(mgcv) data(trees) ct1<-gam(log(Volume) ~ Height + s(Girth), data=trees) この例には2つの一般的な質問があります。 モデル推定の変数がいつパラメトリック(高さなど)である必要があるのか​​、またはそれがスムーズである必要があるのか​​(ガースなど)をどのように決定しますか?一方が他方よりも有利であり、変数の最適な型が何かを決定する方法はありますか?このトピックについて誰かが文学を持っているなら、私はそれを知って幸せです。 私はの重みを詳しく見てみたいと言いますct1:ct1$coefficients。それらを- gamプロシージャの出力として使用できますか、それとも、適切であるという前提で、分析する前に変換する必要がありlog(Volume)ますか?後者の場合、私は使用する必要があると思いますexp (ct1$coefficients)

2
GAMの連続予測子とカテゴリー予測子の間の相互作用をモデリングするさまざまな方法
次の質問は、このページでの議論に基づいています。応答変数y、連続説明変数x、および因子facを指定するxとfac、引数間の相互作用を使用して、一般的な加法モデル(GAM)を定義できますby=。Rパッケージのヘルプファイル ?gam.modelsによるとmgcv、これは次のように実行できます。 gam1 <- gam(y ~ fac +s(x, by = fac), ...) ここで@GavinSimpsonは別のアプローチを提案しています。 gam2 <- gam(y ~ fac +s(x) +s(x, by = fac, m=1), ...) 私は3番目のモデルで遊んでいます: gam3 <- gam(y ~ s(x, by = fac), ...) 私の主な質問は次のとおりです。これらのモデルのいくつかは間違っているのですか、それとも単に異なるのですか?後者の場合、それらの違いは何ですか? 以下で説明する例に基づいて、それらの違いのいくつかは理解できたと思いますが、それでも何か不足しています。 例として、異なる場所で測定された2つの異なる植物種の花の色スペクトルを持つデータセットを使用します。 rm(list=ls()) # install.packages("RCurl") library(RCurl) # allows accessing data from URL df <- …
8 r  interaction  gam  mgcv 

2
循環共変量(GAMなど)を処理する方法は何ですか?
私は、いくつかの共変量が「円」上にあるモデルを構築しています。これは、それらが[0,1)の間隔で値をとり、0 = 1であるという意味です。私はこの状況に対処するためのテクニックについて疑問に思っています。1つのアイデアは、循環変数thetaを変数のペア(sin(theta)、cos(theta))として表すことです。このアプローチまたはより良いアプローチについて何か考えはありますか? 特にmgcvパッケージのGAMを使用しています。特定の加法破片が端点で同じ値を持つ必要があることをモデルに伝える方法はありますか?別のパッケージ? ありがとう!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.