mgcv でエラーが発生しましたが、どこから来たのかわかりません。セットアップは次のとおりです。「MI」と呼ばれる適合した GAM オブジェクトと、「予測データ」のベクトル (予測変数のデフォルト値を含む) があります。これを次の関数を介して predict.gam(object, newdata = anything) にフィードします。
makepred = function(varstochange,val){
for (i in 1:length(varstochange)){
if (varstochange[i] == "pot.trial"){j=1}
if (varstochange[i] == "year"){j=2}
if (varstochange[i] == "crop.legume"){j=3}
if (varstochange[i] == "crop.fruit"){j=4}
if (varstochange[i] == "feedstock"){j=5}
if (varstochange[i] == "BCAR.imp"){j=8}
if (varstochange[i] == "INAR.imp"){j=9}
if (varstochange[i] == "bcph.imp"){j=10}
if (varstochange[i] == "phi.imp"){j=11}
if (varstochange[i] == "htt.imp"){j=12}
if (varstochange[i] == "bc.prc.C.imp"){j=13}
if (varstochange[i] == "CEC.imp"){j=14}
if (varstochange[i] == "soc.imp"){j=15}
if (varstochange[i] == "sand.imp"){j=16}
if (varstochange[i] == "clay.imp"){j=17}
if (varstochange[i] == "abslat.imp"){j=18}
preddat[j] = val[i]
}
predict.gam(MI,newdata=preddat,se.fit=TRUE)
}
次に、次のような予測を行います。
a = makepred(c("phi.imp","bcph.imp","year"),c(4.5,7.25,1))
b = makepred(c("phi.imp","bcph.imp","year"),c(5.5,7.25,1))
c = makepred(c("phi.imp","bcph.imp","year"),c(6.5,7.25,1))
d = makepred(c("phi.imp","bcph.imp","year"),c(7.5,7.25,1))
makepHplot(a,b,c,d,title="1st harvest, BC pH = 7.25")
ここで、「makepHplot」は私が作成した別の関数です。
これはかなり長い間機能しました。その後、モデルにデータを追加し、仕様を少し変更しました。今、私はこのエラーメッセージを受け取っています:
1> a = makepred(c("bcph.imp","year"),c(7.5,1))
Error in PredictMat(object$smooth[[k]], data) :
`by' variable must be same dimension as smooth arguments
古い装着モデルではこのメッセージは表示されませんでした (今でも表示されません)。
何が起こっている?エラー メッセージの意味がわかりません。また、新しく取り付けたモデルがこの問題を引き起こしている原因がわかりません。「PredictMat」と入力しても役に立ちません。Google も役に立ちません。問題は、すべての変数が予測データに含まれていないことではありません。
ここで何か助けていただければ幸いです。
(R-help でのクロスポストについてのお詫び)
また、欠損データを代入した後、このモデルを数回フィッティングし、Rubin のルールを使用して出力を組み合わせていることも注目に値します。しかし、それは関係ありません-結合されたバージョンではなく、構成適合モデルのいずれかを使用して同じエラーが発生します
問題解決: 問題は、因子変数である「trialid」に「1」を含まない水準があったことでした。preddat で triid を別のものに設定すると、機能します。私がモデルを設定し、ランダム効果をダミー =0 と相互作用させる方法では、この変数は効果がありませんが、mgcv は予測を行うためにまだ必要です。