No.10986 R; 重み付け  【ST】 2009/10/02(Fri) 17:11

最近Rに乗り換えた初心者です。以前はSPSSや他のソフトを用いて分析をしていました。

調査データにはサンプリングの歪みを補正するためのウェイトがありますが,Rではどのようにすればウェイトを使用して分析をおこなえるのかがよく分かりません。

SPSSでは「ケースの重み付け」という機能があり,この重み付けでウェイトを指定すると,以後,1変数の記述統計でも,2変数による平均の比較でも,回帰分析でも,すべて重み付けられたケースをもとに統計量の計算がおこなわれます。

Rでもこのようにウェイトを使用することができないのでしょうか?lmではウェイトを指定する引数がありますが,単純平均や度数分布,クロス表の結果にもウェイトを反映したいとき,どのようにしたらよいでしょうか?

ご教授いただければ幸いです。

自分でハード・リターンを入れないように

No.10988 Re: R; 重み付け  【青木繁伸】 2009/10/02(Fri) 21:43

x <- data.frame(データフレーム, データフレームの各行の重み)
のようなデータ構造にして,データフレームの各行の重みに従って,各行を重複展開するというような作業を1度だけ行いその結果として得られるデータフレームを使って分析する。このような例は,重み付けデータの最もシンプルな場合ではあるが(重みは整数値)。
> x <- data.frame(age=rep(5:8*5, 2), sex=rep(1:2, each=4), weight=c(5,4,6,7, 4,3,2,6))
> x
age sex weight
1 25 1 5 # age=25, sex=1 が 25 人(weight) みたいなこと
2 30 1 4
3 35 1 6
4 40 1 7
5 25 2 4
6 30 2 3
7 35 2 2
8 40 2 6
> y <- data.frame(lapply(x, function(i) rep(i, x[, "weight"])))[-3] # これを,展開する
> y
age sex
1 25 1 # age=25, sex=1 が 5 例
2 25 1
3 25 1
4 25 1
5 25 1
6 30 1 # 以下同様
7 30 1
8 30 1
9 30 1
10 35 1
11 35 1
12 35 1
13 35 1
14 35 1
15 35 1
16 40 1
  途中省略
31 35 2
32 40 2
33 40 2
34 40 2
35 40 2
36 40 2
37 40 2
展開の後は,全ての統計は y を使う

し かしまあ,このような重み付けは,「サンプリングの歪みを補正するためのウェイト」というよりは,データ入力の省エネ化に過ぎないような使い方が一般的で はないかな?という気がしますよ。「サンプリングの歪み」って,ゆがみがわかっているような場合は少ないだろうし,その補正の重みの定義というのも客観的 かどうかかなり疑問ではないかなぁ?

No.10995 Re: R; 重み付け  【ST】 2009/10/03(Sat) 17:02

青木先生

お返事ありがとうございます。さっそく試してみると,ウェイトが整数値の場合はうまくい きました。ただ,実際の分析ではウェイトを単純にかけるとケース数(N)が膨らんでしまうので,ウェイトの正規化をおこなうのですが,これにより1.0以 下のウェイトが出来たりすると,各行の重複展開がうまくいかないようでした。

Rではこのような作業はあまりしないほうがよいのでしょうか……? lm内でのウェイトの指定はまったく問題なく可能ですので,Rでもウェイトを使用した分析が可能と思っていたのですが。もし,対処法等ありましたら,アドヴァイスいただければ幸いです。

研 究領域によって異なるのかもしれませんが,私の研究分野では最近データセットにウェイトが含まれることが多くなってきました。対象群をオーバーサンプリン グしたときなどは,ウェイトの使用が推奨されています。ただ,ウェイトは万能ではなく疑問をもつ人も多いので,ウェイトを使うかどうかは分析者の判断にゆ だねられている部分も大きいようです。

No.10997 Re: R; 重み付け  【青木繁伸】 2009/10/03(Sat) 21:12

> 1.0以下のウェイトが出来たりすると,各行の重複展開がうまくいかないようでした。

当たり前です。「(重みは整数値)」と書いてあるでしょう。。。

> Rでもウェイトを使用した分析が可能と思っていたのですが。もし,対処法等ありましたら

万能な処方箋は,「自分で解析プログラムを書きましょう」ということですね。

No.12020 Re: R; 重み付け  【R on Nokia N900】 2010/02/11(Thu) 03:59

library(survey) でいかがでしょう?
http://faculty.washington.edu/tlumley/survey/

● 「統計学関連なんでもあり」の過去ログ--- 043 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る