さまざまなモデルをフィッティングしていますが、パッケージカーから VIF を計算したいと思います。VIF では、式に複数のリグレッサーが必要なため、エラーが返されます。アイデアは、関数を実行する前に複数のリグレッサーがあるかどうかを確認することです。または、リグレッサーの数でモデルを並べ替えて、VIF 関数が i 番目の位置からのみ呼び出されるようにすることもできます。
私のコードは次のとおりです。
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
ot=rnorm(length(trt))
ot2=rnorm(length(trt))
DF=as.data.frame(cbind(ot,ot2,ctl,trt))
y=colnames(DF[1])
x = colnames(DF)
x = x[! x %in% y]
n = length(x)
id = unlist(
lapply(1:n,
function(i)combn(1:n,i,simplify=F)
)
,recursive=F)
models = sapply(id,function(i)
paste(y,paste(x[i],collapse="+"), sep="~")
)
allModelsResults=lapply(models, function(i)
lm(as.formula(i), data=DF))
library(car)
vif.r=sapply(allModelsResults,vif)