日々の記録簿

日々のできごとの記録

日記

SPSSの「ケースの重み付け」とは何なのか

投稿日:

前回の続き。だいたい納得したのだが、SPSSの「ケースの重み付け」が一体何をしているのかもう少し調べてみたくなった。「ケースの重み付け」を設定したとき、分散や標準偏差はどうやって計算されているのだろう?

weighted.var <- function(x, w, na.rm = FALSE) {
  if (na.rm) {
    w <- w[!is.na(x)]
    x <- x[!is.na(x)]
  }
  sum(w * (x - weighted.mean(x, w))^2) / (sum(w) - 1)
}
weighted.se <- function(x, w, na.rm = FALSE) {
  if (na.rm) {
    w <- w[!is.na(x)]
    x <- x[!is.na(x)]
  }
  v <- sum(w * (x - weighted.mean(x, w))^2) / (sum(w) - 1)
  sqrt(v) / sqrt(sum(w))
}

d <- data.frame(
  ans = c(1, 2, 2, 3, 3, 4, 4, 1, 2, 3),
  gender = c(rep(1, 7), rep(2, 3)),
  w = c(rep(5 / 7, 7), rep(5 / 3, 3))
)

weighted.mean(d$ans, d$w) # 平均
sqrt(weighted.var(d$ans, d$w)) # 標準偏差
weighted.se(d$ans, d$w) # 標準誤差

というわけでRのコード。例題は前回と同じくこちらのサイトのものを流用。これならウェイトが整数でないにもかかわらず、それっぽい(誤った)数値が算出される。na.rmのオプションも付けたので、欠測があっても大丈夫。もっとも使うことはないだろうが。

スポンサーリンク

スポンサーリンク

-日記

執筆者:


comment

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

関連記事

vimでMplusのinpファイルを書くためのplugin “mplusVim”を作ってみた!

ふだんはRを使って分析をしているのですが、どうしてもMplusを使う必要がでてきました。で、inpファイルを書き始めたのですが・・・。Syntax HighlightingもAuto Indentもな …

棒グラフとヒストグラムの違い

棒グラフとヒストグラムの違いがわからないというコメントを受けることが多いので、どう説明したものかと思っていたのですが、次のような図を書いたら、理解してくれる人が多いような気がしたのでご紹介。 まずデー …

Nvim-Rの導入方法

vimからRを使う、vim-r-pluginが、Nvim-Rに変わりました。 Neovimを使う前提ですが、tmuxを使わなくてもいいなど、いろいろ設定が楽になったと思います。 インストール まず、n …

kernel 4.2でPT3を使う

kernel 4.2にアップグレードした際に、pt3のlinuxドライバのビルドに失敗しました。 とりあえずkernelをダウングレードして凌いでいたのですが、対処方が記載されたサイトがあったので、情 …

志水宏吉『学力格差を克服する』を読んだ!

タイトルのとおりだが、読んだ。冒頭11ページに「これまでの研究の総まとめ」が執筆の動機だとあるが、確かに著者のこれまでの研究が網羅されており、良くも悪くも集大成と呼べる書籍になっていると思う。 「良く …