5

gam パッケージで作成した gam オブジェクトを R でプロットしようとしています。plot.gam を使用すると、 Error in 1:object$nsdf : argument of length 0 で報告されたのと同じエラーが表示されます。ただし、そこにある解決策、最新バージョンへの更新 (と思います) は、私にとってはうまくいきません。R 3.3.1、gam 1.12、および mgcv 1.8.12 を実行しています (mgcv は plot.gam 関数の元です)。

残念ながら、作業中のデータを共有することはできません。ただし、次のコード -- Intro の p.294 から直接引っ張ってきました。Rを使用した統計学習へ-エラーを再現します:

library(gam)
library(ISLR) # contains the Wage dataset used here
gam.mod <- gam(wage ~ s(year, 4) + s(age, 5) + education, data = Wage)
plot(gam.mod)

ここで何が起こっているのか、またはそれを修正する方法を知っている人はいますか?

ありがとうございました。

4

2 に答える 2

4

それでもこのメッセージが表示される場合はmgcvgamパッケージを最新バージョンに更新する必要があります。gam2018 年 2 月にパッケージに大きな変更が加えられました:関数 plot.gam が見つかりませんでした。これは、gamパッケージに適合する GAM が「Gam」クラスを持つようになり、mgcvパッケージがロードされていても、それをプロットすることをplot選択しないことを意味します。mgcv::plot.gam

ただし、R セッションで両方のパッケージを使用することは依然として安全ではありません。したがって、2016 年に行われた次の提案は、引き続き強く推奨されます。


提案

R セッションで GAM 分析を実行できるかどうかを確認するために、このおもちゃの関数を用意することをお勧めします。

GAM_status <- function () {
  if (all(c("gam", "mgcv") %in% .packages())) print("Not OK")
  else print("OK")
  }

nsdf厳密な自由度の数であり、 でのみ使用される用語mgcvです。あなたが述べたように:mgcv関数のplot.gam元です。

問題は、R セッションにgammgcvの 2 つの互換性のないパッケージが同時に存在することです。でフィットしますgam.modgam::gam、モデルを でプロットしmgcv::plot.gamます。

注意してください、使用することによって通常正しいことは、::ここでは効果を失います。通常、2 つのパッケージが相互にマスクされた機能を持っている場合::は、これが解決策です。しかし、mgcvとのgam場合、これは完全に不可能です。したがって、私の提案は、を使用する場合は、R セッションにgam触れないことmgcvです。逆もまた同様です。

そこで、新しい R セッションを開始し、次の手順を実行します。すべて問題ありません!

library(gam)
library(ISLR) # contains the Wage dataset used here
gam.mod <- gam(wage ~ s(year, 4) + s(age, 5) + education, data = Wage)
par(mfrow = c(2,2)); plot(gam.mod)

ここに画像の説明を入力


ご回答ありがとうございます。を実際にロードしたことはありません。mgcvの依存関係だと思っただけですgam。新しい R セッションを開始したところ、提供されたコードが機能しました。car実際に同じ問題を引き起こしているのはライブラリであることがわかりました。

mgcvgamは互いに依存していませんが、mgcvは よりも人気があるためgam、多くのパッケージが に依存しています。mgcvたとえば、car次のようになります。

car: Companion to Applied Regression

Functions and Datasets to Accompany J. Fox and S. Weisberg, An R  Companion to
Applied Regression, Second Edition, Sage, 2011.
Version:    2.1-3
Depends:    R (≥ 3.2.0)
Imports:    MASS, mgcv, nnet, pbkrtest (≥ 0.4-4), quantreg, grDevices, utils,
            stats, graphics

「インポート」フィールドに注意してくださいlibrary(car)。これらのパッケージが同時に読み込まれます。

于 2016-08-19T15:06:49.537 に答える