日々の記録簿

日々のできごとの記録

日記

surveyでR2値を計算する方法

投稿日:

Rのsurvey packageには通常の回帰分析におけるR2値を計算する関数が存在しないようである。なので計算方法。参考にしたのはこちらのサイト。コードを見るとわかるが、途中でヌルモデルを計算してるので複雑なデザインだと算出に時間がかかるかもしれない。ちなみに調整済R2は計算できない。モデル比較をしたいならanova関数を使うと良いらしい。

library(survey)

data(api)
dstrat <- svydesign(
  id = ~1, strata = ~stype, weights = ~pw, data = apistrat, fpc = ~fpc
)

lm1 <- svyglm(api00 ~ ell + meals + mobility, design = dstrat)
lm2 <- svyglm(api00 ~ ell, design = dstrat)
lm3 <- svyglm(api00 ~ ell * meals * mobility, design = dstrat)

svyrsq <- function(object) {
  if (!object$family$family == "gaussian") {
    stop("only applied 'family = gaussian'")
  }
  null_f <- update(object$formula, . ~ 1)
  null_e <- survey::svyglm(null_f, design = object$survey.design) # ヌルモデルを計算
  tot_var <- summary(null_e)$dispersion[1]
  res_var <- summary(object)$dispersion[1]
  rsq <- 1 - res_var / tot_var
  return(rsq)
}

svyrsq(lm1)
svyrsq(lm2)
svyrsq(lm3)

# モデル比較をしたい場合はanovaを使う
anova(lm2, lm1)
anova(lm3, lm1)

スポンサーリンク

スポンサーリンク

-日記

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

php 7.4にしたら、wordpressの自動更新ができなくなっている(php-fpmの設定の問題)

php 7.4 に更新したら、wordpressの自動アップデートが止まるという問題が発生していた。その場しのぎでphpのアップデートを止めていたのだが、そろそろヤバイということで解決策をググってみた …

サイトをSSLへ移行してみた!

今、話題のLet’s Encryptを利用して、このサイトをSSLに移行してみました。 参考にしたのは、次のページです。 Arch Wiki Let’s Encrypt さくらのレンタルサ …

vim-r-pluginの導入方法

vimからRを使う、vim-r-pluginの紹介。 まあ、vimにこだわりがないなら、RStudio使ったほうが幸せになれると思います。 環境は、Arch Linuxです。 インストール vim-r …

awstatsでアイコンが表示されない

私は、アクセス解析にawstatsを利用しています。 なかなか便利なのですが、一つだけ気になっていたのが、アイコン画像が表示されないことです。ほとんど実害はないので半年ほど放置していましたが、この度、 …

FactoMineRからベンゼクリの修正割合(Benzecri’s modified rates)を計算する

最近、多重対応分析(Multiple Correspondence Analysis)を勉強していた。RではFactoMineRのMCA関数がいい感じである。 ただ、ベンゼクリの修正割合を計算できると …