モデルのリストを生成しました。要約テーブルを作成したいと思います。
例として、次の2つのモデルがあります。
x <- seq(1:10)
y <- sin(x)^2
model1 <- lm(y ~ x)
model2 <- lm(y ~ x + I(x^2) + I(x^3))
および2つの式、最初の式は式のコンポーネントから方程式を生成します
get.model.equation <- function(x) {
x <- as.character((x$call)$formula)
x <- paste(x[2],x[1],x[3])
}
2番目はモデルの名前を文字列として生成します
get.model.name <- function(x) {
x <- deparse(substitute(x))
}
これらを使用して、要約テーブルを作成します
model.list <- list(model1, model2)
AIC.data <- lapply(X = model.list, FUN = AIC)
AIC.data <- as.numeric(AIC.data)
model.models <- lapply(X = model.list, FUN = get.model)
model.summary <- cbind(model.models, AIC.data)
model.summary <- as.data.frame(model.summary)
names(model.summary) <- c("Model", "AIC")
model.summary$AIC <- unlist(model.summary$AIC)
rm(AIC.data)
model.summary[order(model.summary$AIC),]
これはすべて正常に機能します。get.model.nameを使用してモデル名をテーブルに追加したい
x <- get.model.name(model1)
それは私が望むように私に「model1」を与えます。
そこで、この関数をモデルのリストに適用します
model.names <- lapply(X = model.list, FUN = get.model.name)
しかし今ではmodel1の代わりにX[[1L]]を取得します
X [[1L]]ではなくmodel1を取得するにはどうすればよいですか?
私は次のようなテーブルを探しています:
Model Formula AIC
model1 y ~ x 11.89136
model2 y ~ x + I(x^2) + I(x^3) 15.03888