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

一般化加法モデル(GAM)は、応答変数がいくつかの予測変数の未知の滑らかな関数に依存する一般化線形モデル(GLM)です。

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 

2
インフレ率がゼロのGAMM
RのゼロインフレデータにGAMM(一般化された加法混合モデル)を適合させることは可能ですか? そうでない場合、ゼロインフレートされたデータに対してRに負の二項分布または準ポアソン分布をもつGAM(一般化された加法モデル)を当てはめることは可能ですか?(私はポアソン分布のCOZIGAM :: zigamおよびmgcv:ziP関数を見つけました)


2
これまでのすべての努力を無視してきたこの非線形重回帰を当てはめる
編集:この投稿を作成して以来、私はここに追加の投稿を続けています。 以下のテキストの要約:私はモデルに取り組んでいて、線形回帰、ボックスコックス変換、およびGAMを試しましたが、あまり進歩していません を使用してR、現在、メジャーリーグ(MLB)レベルでマイナーリーグの野球選手の成功を予測するモデルに取り組んでいます。従属変数は、交換(oWAR)上記の攻撃のキャリアの勝利は、MLBレベルでの成功のためのプロキシで、プレイヤーは彼のキャリア(ここでは詳細にわたってに関与しているすべてのプレイに攻勢寄与の合計として測定される- のhttp ://www.fangraphs.com/library/misc/war/)。独立変数は、年齢を含むメジャーリーグレベルでの成功の重要な予測因子であると考えられる統計のzスコアのマイナーリーグ攻撃変数であり(年齢が若いプレーヤーほど成功率が高い傾向にあります)、取り消し率[SOPct ]、歩行率[BBrate]および調整された生産(攻撃的な生産のグローバルな尺度)。さらに、マイナーリーグには複数のレベルがあるため、マイナーリーグのプレーのレベル(ダブルA、ハイA、ローA、ルーキー、トリプルAのショートシーズン[メジャーリーグの前の最高レベル])のダミー変数を含めました。参照変数として])。注:WARを0から1に変化する変数に再スケーリングしました。 変数scatterplotは次のとおりです。 参考までに、従属変数oWARには次のプロットがあります。 線形回帰から始めてoWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeason、次の診断プロットを取得しました。 残差の不偏性の欠如とランダムな変動の欠如には明らかな問題があります。さらに、残差は正常ではありません。回帰の結果を以下に示します。 前のスレッドのアドバイスに従って、Box-Cox変換を試みましたが、成功しませんでした。次に、ログリンクを使用してGAMを試し、これらのプロットを受け取りました。 元の 新しい診断プロット スプラインがデータの近似に役立ったように見えますが、診断プロットはまだ不十分な近似を示しています。編集:私は当初、残差対適合値を見ていると思いましたが、私は間違っていました。最初に表示されたプロットはオリジナル(上記)としてマークされ、後でアップロードしたプロットは新しい診断プロット(上記も)としてマークされます。 モデルのが増加しましたR2R2R^2 しかし、コマンドによって生成された結果gam.check(myregression, k.rep = 1000)はそれほど有望ではありません。 誰もがこのモデルの次のステップを提案できますか?これまでの進捗状況を理解するのに役立つと思われるその他の情報を提供させていただきます。あなたが提供できる助けをありがとう。

3
一般的な加法ポアソンモデル問題におけるスプラインdfの選択
SASを使用したポアソン一般加法モデルを使用して、いくつかの時系列データを近似していPROC GAMます。一般的に言えば、組み込みの一般化された相互検証手順によって、単一のスプラインの少なくとも適切な「開始点」が生成されるようにしてきました。これは、時間の非線形関数と単一のパラメトリック項(1つのI実際に興味があります)。 これまでのところ、私のデータセットの1つを除いて、かなりスムーズに機能しています。そのデータセットには132の観測値があり、GCVは128自由度のスプラインを示唆しています。それは...間違っているようです。大きな過ち。さらに重要なのは、それがまったく安定していないことです。2番目のアプローチを試してみました。「推定値の変更」基準などを使用して、パラメトリック項の推定値が変化しなくなったときに自由度の追加を停止しました。何も変わらない場合はなぜ制御を追加し続けるのですか。 問題は、見積もりがまったく安定していないことです。次の自由度を試しましたが、ご覧のとおり、パラメトリックな用語が乱暴に跳ね返っています。 DF: Parametric Estimate: 1 -0.76903 2 -0.56308 3 -0.47103 4 -0.43631 5 -0.33108 6 -0.1495 7 0.0743 8 0.33459 9 0.62413 10 0.92161 15 1.88763 20 1.98869 30 2.5223 40-60 had convergence issues 70 7.5497 80 7.22267 90 6.71618 100 5.83808 110 4.61436 128 1.32347 この特定のデータビットに対してdfに関して何を使用する必要があるかについて、私はまったく直感がありません。dfを選択する方法に関する他のアイデアはありますか?スプラインの重要性を見るべきですか? …

1
モデルの構築:意味のあるgamモデルを構築する方法は?(一般化された加法モデル)
ギャムの解釈と構成に関してさまざまな質問があることを確認しました。これは、非統計家が対処するのが難しいことを示しているようです。残念ながら、私が読んだスレッドやチュートリアルのどれからも、意味のあるモデルを構築する方法を明確に理解できませんでした。 現在、ミツバチのコロニーのパフォーマンスに対する有機農業の影響を研究しています。それにより、半径500mでの有機農業の割合(bio.percent_b500)のような景観特性を、蜂蜜保護区などのコロニー発達パラメータに関連付けようとします。最初に、基本的なgamモデル(model0)を構築しました。蜂の巣の蜂蜜の量は1年の間に非線形に変化するため、説明変数として年の週のみを使用します。 library("gam") library("mgcv") model0 <- gam(honey.mean ~ s(week), data= my.data.frame) summary(model0) plot(model0) 次に、有機農業の割合を含むスムーズな用語を含めようとしました。しかし、これは失敗しました。なぜなら、コロニーの85%以上が半径500mに有機的なフィールドを持っていなかったからでしょう。 model1 <- gam(honey.mean ~ s(week) + s(bio.percent_b500),data = my.data.frame) # Error in smooth.construct.tp.smooth.spec(object, dk$data, dk$knots) : # A term has fewer unique covariate combinations than specified maximum # degrees of freedom model2 = gam(honey.mean ~ s(week,bio.percent_b500) …

2
GAMのノットの選択
GAMに適切な数のノットを選択する場合、データの数とx軸の増分を考慮に入れることができます。 x軸に100の増分があり、各増分に1000のデータポイントがある場合はどうなるでしょうか。 ここの情報は言う: それらが指定されていない場合、スプラインのノットは、用語が参照する共変量値全体に均等に配置されます。たとえば、101データをxの11ノットスプラインでフィッティングすると、10番目ごとにノットが存在します(順序付け) x値。 この例では、基本的な開始は9ノットである必要がありますか?非常に小さな数から非常に大きな数までフィッティングできるため、このデータセットにどのノットの範囲が適しているかはわかりません。 set.seed(1) dat <- data.frame(y = rnorm(10000), x = 100) library(ggplot) ggplot(dat, aes(x = x, y = y)) + geom_point(size= 0.5) + stat_smooth(method = "gam", formula = y ~ s(x, bs = "cs"),k=9, col = "black") k = 25が有用な適合を提供した場合、このデータに妥当でしょうか?
9 r  gam  splines 

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 

1
ガムモデルの結果の解釈
mgcvR のパッケージを使用していくつかの一般化された加法モデルをフィッティングしており、2つのモデル間でテストしたいと考えています。用語を削除できるかどうか。しかし、(私が知る限り)矛盾する結果が出ています。 追加されm1たの滑らかな項を持つモデルは、、AIC、説明された逸脱度、およびF検定を使用してモデルを比較するときにx、より良い適合を与えるように見えます。ただし、平滑化項の重要性は重要ではありません(モデルにスプラインではなく線形共変量として追加した場合も同様です)。R2a djRadj2R^{2}_{adj} スムーズタームテストの私の解釈は正しいですか?私がヘルプページを理解できたのは、テストは概算であったということですが、ここにはかなり大きな違いがあります。 モデルの出力 m1 <- gam(out ~ s(x) + s(y) + s(z), data=dat) > summary(m1) # # Family: gaussian # Link function: identity # # Formula: # out ~ s(x) + s(y) + s(z) # # Parametric coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) …
8 r  regression  gam 

1
原因の特定とペナルティ付きスプライン
私は経済学のジャーナルから拒絶されました。拒否の理由としては、次のものが挙げられます。 因果関係を明確に識別する代替のより単純な手法と比較して、セミパラメトリック法を使用することの利点は明確には発揮されません OLSに固執する多くのエコノミストに方法論を動機付けるより良い仕事をしたかもしれないことは確かに可能です。しかし、私は「クリーンな識別」に違反しましたか?ご自身で判断して、ご意見をお聞かせください。 私の主な推定式は Zは連続で、XとTはバイナリです。私は当然のことながら E [yit=αi+β1Tit+f⎛⎝⎜ZitZit×TitZit×Tit×Xt⎞⎠⎟+β2Xt+ϵityit=αi+β1Tit+f(ZitZit×TitZit×Tit×Xt)+β2Xt+ϵit y_{it} = \alpha_i + \beta_1 T_{it} + f\left(\begin{array}{l}Z_{it}\\ Z_{it} \times T_{it} \\ Z_{it}\times T_{it} \times X_t\end{array} \right) + \beta_2X_t + \epsilon_{it} ZZZXXXTTT つまり、 Tの係数は、個々のレベルのダミー変数(計量経済学における「固定効果」)を条件として不偏であることを意味します。連続変数 Zを含めると、 Zの勾配に対する推定処理効果の不均一性がわかります。治療の平均因果効果ので Tはの平均値である β 1 + F Z × Tの様々なレベルのために Z Iが観測こと。E[ϵ|α,T]=0E[ϵ|α,T]=0 E[\epsilon|\alpha,T] = 0 TTTZZZZZZTTTβ^1+f^Z×Tβ^1+f^Z×T\hat\beta_1 + \hat f_{Z\times …

1
時間の経過に伴うスプラインのモデリング—設計マトリックスとアプローチの調査
応答変数yは、いくつかの予測子変数Xの非線形関数です(実際のデータでは応答は二項分布ですが、ここでは簡単にするために正規分布値を使用しています)。スプライン/スムースを使用して、予測子と応答の間の関係をモデル化できます(たとえば、mgcvR のパッケージのGAMモデル)。 ここまでは順調ですね。ただし、それぞれの応答は、時間とともに進化するプロセスの結果です。つまり、予測子Xと応答yの関係は、時間の経過とともに変化します。各応答について、応答の周りのいくつかの時点にわたる予測子のデータがあります。つまり、時点のグループごとに1つの応答があります(応答が時間とともに進化するわけではありません)。 この時点で、いくつかのイラストが役立つでしょう。以下は、既知のパラメーター(以下のコード)を持ついくつかのデータで、ggplot2(GAMメソッドと適切なスムーザーを指定)を使用して、ファセットの時間とともにプロットされます。説明のために、yはx1の2次関数であり、この関係の符号と大きさは時間の関数として変化します。 x2とyの関係は円形であり、特定の方向 x2 でのyの増加に対応します。この関係の振幅は、時間とともに変化します。(gcclotで、 "cc"円形3次スムーザーを指定するgamを使用してモデル化されています)。 2次元スプラインのようなものを使用して、各予測子の(非線形)変化を時間の関数としてモデル化したいと思います。 mgcvパッケージで2次元のスムース(のようなものte(x1,t))を使用することを検討しました。ただし、これには長い形式(つまり、1列の時点)のデータが必要になる場合を除きます。1つの応答がすべての時点に関連付けられているため、これは不適切だと思います-したがって、データを長い形式で配置すると(つまり、同じ応答を設計行列の複数の行に複製すると)、観測の独立性に違反します。私のデータは現在列(y, x1.t1, x1.t2, x1.t3, ..., x2.t1, x2.t2, ...)で配置されており、これが最も適切なフォーマットだと思います。 私が知りたいのですが: このデータをモデル化するより良い方法はありますか もしそうなら、モデルの設計行列/式はどのようになるでしょう。最終的には、JAGSのようなmcmcパッケージでベイジアン推論を使用してモデル係数を推定したいので、2次元スプラインの記述方法を知りたいです。 私の例を再現するRコード: library(ggplot2) library(mgcv) #------------------- # start by generating some data with known relationships between two variables, # one periodic, over time. set.seed(123) nTimeBins <- 6 nSamples <- 500 # the …
8 r  ggplot2  splines  gam 

1
従属変数または独立変数、あるいはその両方のログを取得すると、モデルのエラーに影響があり、したがって推論の妥当性に影響しますか?
私はよく人々(統計家や実務家)が再考せずに変数を変換しているのを見ます。エラーの分布が変更されて無効な推論につながる可能性があるので、私は常に変換を怖がっていますが、何かを誤解しなければならないのはよくあることです。 アイデアを修正するために、モデルがあるとします Y=β0expXβ1+ϵ, ϵ∼N(0,σ2)Y=β0exp⁡Xβ1+ϵ, ϵ∼N(0,σ2)Y=\beta_0\exp X^{\beta_1}+\epsilon,\ \epsilon\sim\mathcal{N}(0,\sigma^2) これは原則としてNLSに適合します。しかし、ほとんどの場合、私は人々が丸太を取り、フィッティング logY=logβ0+β1logX+???⇒Z=α0+β1W+???log⁡Y=log⁡β0+β1log⁡X+???⇒Z=α0+β1W+???\log{Y}=\log\beta_0+\beta_1\log{X}+???\Rightarrow Z=\alpha_0+\beta_1W+??? これはOLSで適合できることはわかっていますが、パラメーターの信頼区間を計算する方法がわかりません。今のところ、予測区間や許容区間はもちろんです。 そして、それは非常に単純なケースでした:かなり複雑な(私にとって)ケースを考えてください。 YYY そして XXX アプリオリですが、GAMなどを使用してデータから推測しようとします。次のデータについて考えてみましょう。 library(readr) library(dplyr) library(ggplot2) # data device <- structure(list(Amplification = c(1.00644, 1.00861, 1.00936, 1.00944, 1.01111, 1.01291, 1.01369, 1.01552, 1.01963, 1.02396, 1.03016, 1.03911, 1.04861, 1.0753, 1.11572, 1.1728, 1.2512, 1.35919, 1.50447, 1.69446, 1.94737, 2.26728, 2.66248, 3.14672, 3.74638, …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.