6

Rにスクリプトを入力するとエラーメッセージが表示される理由を誰かが理解するのを手伝ってくれるかどうか疑問に思っていました.背景情報については、6つの異なる変数の影響を調べています(63の組み合わせまたはモデルだと思います)(X )私の環境科学の優等プロジェクトのために、異なる空間スケールで別々に総一次および純生態系生産(Y)を持っています。akaikes 情報量基準 (AIC) を使用した徹底的な検索重回帰分析を使用して、最適なモデルのグループを見つけようとしました。(および異なる X 変数に起因する分散を比較するための階層分割) どのモデルが基準を「最もよく満たす」かをランク付けできるように重みを取得したいおそらくデータに適合します。

最近、Cross Validated の hier.part パッケージに同様の質問を投稿しましたが、すばらしい回答が得られ、今後同様の質問があればここに来るように言われました。

Rで使用しているパッケージはglmultiです。ここで見つけることができます

私が使用しているスクリプトはこれです

require(glmulti)
GPPANDDRIVER<-read.table("C:\\Databases at different scales for R\\River Rhine and Netherlands\\GPP and drivers rhineland (comma delimited).csv",header=T,sep=",")
GPP<-GPPANDDRIVER$GPP
IND_VARS<-subset(GPPANDDRIVER,select=-GPP)
#  glmulti S4 generic 
glmulti(y=GPP, xr=IND_VARS, data, exclude = c(), name = "glmulti.analysis", intercept = TRUE, marginality = FALSE, bunch=30, chunk = 1, chunks = 1,
level = 2, minsize = 0, maxsize = -1, minK = 0, maxK = -1, method = "h", crit = "aic", confsetsize = 63, popsize = 40, mutrate = 10^-3, sexrate = 0.1, imm = 0.3, plotty = TRUE, report = TRUE, deltaM = 0.05, deltaB = 0.05, conseq = 5, fitfunction = "glm", resumefile = "id", includeobjects=TRUE,)

例で言及されているラインランドのサイトの .csv データへのリンクは次のとおりです。 http://www.filedropper.com/gppanddriversrhinelandcommadelimited

私はRに非常に慣れていないので、 popsizeはこのスケールで40の複製数を意味すると推測したので、40を使用しました。また、confsetsizeは6つの変数のために63であると思われる可能なモデルの数を意味すると仮定しました?

誰かがそれを助けることができれば、それは大歓迎です

ご辛抱いただきありがとうございます。基本的な質問で申し訳ありません。

リチャード

編集今朝スクリプトを実行しようとしたところ、Rがクラッシュしました.

4

1 に答える 1

8

これは私にとってはうまくいきました。主なことは、モデル呼び出しにすべてのパラメーターをやみくもに含めないことだと思います。これらのほとんどにはデフォルト値があるため、(パッケージ作成者が仕事を終えている場合) そのままにしておくことができ、あまり心配する必要はありません (もちろん、RTFM を使用して、それらの意味を (理解しようと) 理解する必要があります)。 ..)

dat <- read.csv("GPPdriversRhineland.csv")
library(glmulti)

予測子の名前を短いタグに変更することにしました。

prednames <- c("NDVI","solar.rad","avg.temp","precip",
                "nutr.avail","water.cap")
names(dat)[1:6] <- prednames

主効果のすべての組み合わせを適合させるために必要なのはこれだけです。6 つの予測子があるため、64 個のレベル 1 モデル (ヌル モデルを含む) があります。

g1 <- glmulti("GPP",xr=prednames,data=dat,level=1)

より大きな計算上の課題の場合:

g2 <- glmulti("GPP",xr=prednames,data=dat,level=2)

2^(choose(6,2)+6)= 210 万の可能なモデルがここにあると私は信じています。モデルのフィッティングを停止?glmultiする方法を説明するのに十分なほど詳しく調べていません。始めたばかりですが (これまでに 66,000 モデルを評価しました)、AIC が約 500.5 の 2 レベル モデルが見つかりました。これは、1 レベル モデルのセットの最小 AIC 518 よりもはるかに優れています.. .

PS私は、徹底的なアプローチではなく遺伝的アルゴリズムのアプローチを試して、設定をもう少しいじりました(glmulti「徹底的なアプローチを使用しますが、N試行後に停止する」と言う明白な方法はわかりません)。遺伝的アルゴリズムの設定がデフォルトよりもわずかに寛容であっても、最初に試した(部分的な)徹底的なスクリーニングで見つかった値を超える AIC 約 504 でスタックしているようです。

例えば:

g2 <- glmulti("GPP",xr=prednames,data=dat,level=2,marginality=TRUE,
              method="g",conseq=25,popsize=500,mutrate=1e-2)

PPS : 網羅的なケースでより良い結果が得られた理由はmarginality=FALSE、モデルに含まれる相互作用に関与する主効果パラメーターをモデルから除外することが許可されていたためです。これは必ずしも賢明ではありません。限界制約をオフにすると、遺伝的アルゴリズムはあまり問題なく AIC=499 まで下げることができます...

glmulti("GPP",xr=prednames,data=dat,level=2,marginality=TRUE,
              method="d")

も便利です。指定された仕様に対して定義された候補モデルの数を出力します。

于 2012-04-17T14:30:30.367 に答える