[解決済み] Rでベストフィッティングモデルの予測線を強調表示する?
2022-02-17 22:13:28
質問内容
同じデータに対して、いくつかのモデルを当てはめたことがあります。そして、すべてのモデルの予測線を1つのプロットにプロットしました。
そこで、AICが最も低いモデルの予測線を強調したいのですが(太い線で)。これに関するリソースが見つからないので、ちょっと困っています。
library(ggplot2)
set.seed(101)
x <- rnorm(100)
y <- rweibull(100,1)
d <- data.frame(x,y)
model1 <- lm(y~1, data = d)
model2 <- lm(y~x, data = d)
model3 <- lm(y~abs(x), data = d)
newvalsforx <- function(x) {
xrng <- seq(min(x), max(x), length.out=100)
function(m) data.frame(x=xrng, y=predict(m, data.frame(x=xrng)))
}
pred <- newvalsforx(d$x)
ggplot(d, aes(x,y)) +
geom_point() +
geom_line(data=pred(model1), color="red") +
geom_line(data=pred(model2), color="blue") +
geom_line(data=pred(model3), color="green")
AIC1 <- AIC(model1
AIC2 <- AIC(model2)
AIC3 <- AIC(model3)
アップデイト
これが、私が扱っているモデルの全リストです。
abs.x <- abs(x)
ipos <- (x>0)
models <- list("model1" = lm(y~1, data = d),
"model2" = lm(y~x, data = d),
"model3" = lm(y~abs(x), data = d),
"model4" = lm(y~abs.x + ipos, data = d),
"model5" = lm(y~abs.x : ipos, data = d),
"model6" = lm(y~abs.x * ipos, data = d),
"model7" = mgcv::gam(y ~ abs.x + ipos, data = d)
)
解決方法は?
ggplot2でもう少し実現可能なように少し調整しました(長い形式など)。わかったら教えてください。1.5 & 0.5の値を弄って、最小のAICで適切な曲線の太さを手に入れよう! よろしくお願いします。
set.seed(101)
library(ggplot2)
xrng <-
x <- rnorm(100)
y <- rweibull(100,1)
ipos <- (x>0)
abs.x <- abs(x)
d <- data.frame(x,y, ipos, abs.x)
models <- list("model1" = lm(y~1, data = d),
"model2" = lm(y~x, data = d),
"model3" = lm(y~abs.x, data = d),
"model4" = lm(y~abs.x + ipos, data = d),
"model5" = lm(y~abs.x : ipos, data = d),
"model6" = lm(y~abs.x * ipos, data = d),
"model7" = mgcv::gam(y ~ abs.x + ipos, data = d)
)
newvalsforx <- function(x) {
xrng <- seq(min(x), max(x), length.out=100)
function(m) data.frame(x=xrng, y=predict(m, newdata = data.frame(x=xrng, ipos=(xrng>0), abs.x=abs(xrng))))
}
pred <- newvalsforx(d$x)
pred_df <- do.call("rbind", lapply(models, pred))
pred_df <- cbind(rep(names(models), each=length(y)), pred_df)
names(pred_df) = c("model", "x", "pred")
which_model_is_min <- names(which.min(unlist(lapply(models, AIC))))
pred_df[["linewidth"]] = ifelse(pred_df$model == which_model_is_min, 1.5, 0.5)
ggplot(d, aes(x,y)) +
geom_point() +
geom_line(data=pred_df, aes(x = x, y = pred, color=model), size = pred_df$linewidth)
関連
-
[解決済み] Stataバージョン5-12の.dtaファイルではない
-
[解決済み】R - if文の引数の長さが0である。
-
[解決済み】R ggplot2 で scale_x_discrete を使用する。
-
[解決済み】match.fun(FUN)でのエラーについて)
-
[解決済み】Rの整数オーバーフローとは何ですか、そしてどのように起こるのですか?
-
[解決済み】Rヒストグラムの範囲エラー:いくつかの'x'がカウントされない; 'break'が'x'の範囲に及ばないかもしれない
-
[解決済み】長いオブジェクトの長さは、短いオブジェクトの長さの倍数ではない?[重複]。
-
[解決済み】Rでデータフレームのサブセットをプロットする方法は?
-
[解決済み】Rで結果の行数がベクトル長(arg 2)の倍数でない件
-
[解決済み] ggplot2 折れ線グラフで「geom_path: 各グループは1つの観測値のみから構成されています。グループの美観を調整する必要がありますか?"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] write.tableしようとすると、未実装の型リストが表示される。
-
[解決済み】 colMeans(x, na.rm = TRUE) のエラー : KNN分類では 'x' は数値でなければならない
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み】rbind(deparse.level, ...)でエラー:引数の列の数がRにマッチしていない
-
[解決済み】RでAIC中に行数が変化するのはなぜですか?そうならないようにするにはどうしたらいいですか?
-
[解決済み】長いオブジェクトの長さは、短いオブジェクトの長さの倍数ではない?[重複]。
-
[解決済み] [Solved] read.csv warning 'EOF within quoted string' prevents complete reading of file.
-
[解決済み】Rで、Error: ggplot2 doesn't know how to handle of data of class numericに対処する。
-
[解決済み】R4DSのエラー比較(1)は、アトミック型とリスト型でのみ可能です
-
[解決済み】Rでmax.printの制限値を増やす方法