Cutting Edge on My Life

社会心理学者の筆者が切り取った日常[Academic Life/Social Life/IT Life]を書き溜めます.

9月16日(木)のつぶやき

2010-09-17 02:30:56 | Social Life
11:05 from web
最近妻はYouTubeのビデオクリップ集をよく見ているが,こういった楽しみ方が今後主流となるのだろう.iPhoneやiPodで音楽を聴かなくなってる? 楽曲ダウンロードが失速中... http://news.livedoor.com/article/detail/5010083/
16:31 from Azurea
久々に西友に行って、巷で囁かれている、ウォルマート化ぶりを体験してみた。倉庫っぽい雰囲気は出てましたね。売ってるモノの単位というか、サイズはやっぱりちがうので、こじんまり感はあります。イオンみたいに無人清算システムは導入しないのかな。店員を極力減らせばいい線いってると思う。
19:49 from Azurea
新幹線が1番席だったので、アダプターを出してThinkPad X201をコンセントにつないで使ってみたら、供給電流の不足で結局バッテリー使用だった。このコンセントってずいぶん前からあるけど、恩恵を受けられるのはネットブックやタブレットなど比較的最近のガジェットたちなのね。
19:56 from Azurea
広島といえば、今日こそカープに頑張ってほしい...って、ちっとも学会の話しじゃないし。
21:21 from Azurea
西条行きの車中。夜の山陽本線はちょっと礼儀正しい常磐線の風情。もう筑大生も常磐線なんか乗らないんだよねぇ、きっと。
by kfsq on Twitter

9月10日(金)のつぶやき

2010-09-11 00:27:45 | Social Life
09:42 from web
環境事務所の自粛要請を無視した落ち度はあるけど,これで映画とか制作する人はやりにくくなるかもね.撮影許可とっても「道路封鎖されて迷惑だ」とクレーム付けられたらお蔵入りかも. ラ王CM、槍ケ岳で迷惑撮影 登山者遮り、ヘリ強行使用 http://t.asahi.com/bnp
23:18 from Tweet Button
R で調整化残差を求める #psych_R #goo_kfsk http://t.co/dQfjlE3
by kfsq on Twitter

R で調整化残差を求める

2010-09-10 23:17:11 | Academic Life
オープンソースの統計解析パッケージ R については,心理学でもじわじわと認知されるようになってきたと思う.
Rの利用法については,すでにさまざまな書籍が出版されているし,有益なサイトもたくさんある.ただ,それらで紹介される事例はそのための事例であることが多く,実際のデータ解析の場では,あれこれ工夫をしなければならないことが多い.
なので,ここでも自分なりのデータ処理の事例を記事にして,アップしてみようと思う.決して,洗練された手法ではないかもしれないが,読んだ人にも何かの参考になるかもしれないし,自分の備忘録くらいにはなるだろう.もっとよい手法をお知りの方は,コメントなりトラックバックで教えてほしい.

第1回目は,クロス表における調整化残差の計算である.
調整化残差が分かるというのは,χ2値なんかよりも有益な場合が多い(と思う).でも標準の出力では出てこないし,いくつかの書籍やサイトで調べても決定的なことが分からなかったので,ならば自力でやるしかない.

注)以後のRの出力については,変数名や変数ラベルは仮のものをあてはめています.

関数chisq.test()が作成するオブジェクトを見てみるとresidualsというのがある.
> dat <- read.csv("xxx.csv, header=T)
> table(dat$var02, dat$var02)
             
           A1  A2  A3  A4
  B1       7  11  10  16
  B2      52  55  41  48
  B3      43  43  70  67
  B4      16  18  33  42

> ct <- chisq.test(dat$var02, dat$var01)
ピアソンのカイ二乗検定(連続性補正なし)

データ:  dat$var02 と dat$var01
カイ二乗値 = 21.6707, 自由度 = 9, P値 = 0.009983

> summary(ct)
          Length    Class  Mode    
statistic    1     -none- numeric 
parameter  1     -none- numeric 
p.value      1     -none- numeric 
method      1     -none- character
data.name  1     -none- character
observed  16     table  numeric 
expected  16     -none- numeric 
residuals  16     table  numeric 

> ct$residuals
                dat$var01
dat$var02                 A1              A2              A3              A4
  B1           -0.68936794  0.39377346 -0.53638819  0.73802881
  B2            1.81898217  1.74062507 -1.62015922 -1.46502575
  B3           -0.44282457 -0.92549477  1.28561709 -0.05428336
  B4           -1.36779699 -1.26051514  0.67448868  1.57327321

これは標準化残差のようだ.
調整化残差を求めるには,各セルの分散を求め,その平方根で割ればよい.分散Vijは次の式で求まる.
Vij = { 1 - ( n.j / N ) } { 1 - ( ni. / N ) }
n.j, ni. は,各行・列の周辺度数,Nは全度数である.

周辺度数は,margin.table()関数で求まる.全度数はどう計算してもいいが,まぁ周辺度数を足せばいいか.

> c.phfreq <- margin.table(ct$observed, 1) # 観測度数表から周辺度数を計算
> r.phfreq <- margin.table(ct$observed, 2)
> N.ct <- sum(ct$observed)
求めたc.phfreq, r.phfreqは,ベクトルになっているから,これを行列とみなして,[4行1列]の行列と[1行4列]の行列積を計算すればいいんじゃないか.
試行錯誤の末,次のようにすれば分散が求められた.
> V.ct <- (1-(c.phfreq/N.ct)) %*%  (1-(t(r.phfreq/N.ct))) # 各セルの分散を求める
> V.ct
                dat$var01
dat$var02              A1           A2            A3           A4
  B1           0.7326520 0.7181280 0.6745562 0.6438946
  B2           0.5217370 0.5113942 0.4803658 0.4585310
  B3           0.4842718 0.4746717 0.4458714 0.4256046
  B4           0.6424581 0.6297221 0.5915143 0.5646272
行列の転置を行うt()関数を使っているのがミソ.行列積は %*% で表す.

以上より,標準化残差は次の通り.
> Adj.ct <- ct$residuals / sqrt(V.ct) # 調整化残差を求める
> Adj.ct
                dat$var01
dat$var02              A1             A2             A3             A4
  B1          -0.8053826  0.4646709 -0.6530856  0.9197418
  B2           2.5182719  2.4340379 -2.3376079 -2.1635200
  B3          -0.6363369 -1.3433132  1.9253372 -0.0832077
  B4          -1.7064723 -1.5884502  0.8769848  2.0937423

調整化残差の絶対値が,1.96を超えると,そのセルの頻度は5%水準で有意に偏りがあるということになる.

ここまでできたら,頻度と比率の表の出力もまとめて,関数化したほうがいいね.

9月9日(木)のつぶやき

2010-09-10 00:27:48 | Social Life
22:56 from web
mozcでは「東方神起」が一発変換されない
22:59 from web
google日本語入力では,無事「東方神起」と変換できました.と書こうとしたら,mozcでもすぐ学習して変換できるようになった.
23:12 from web
7・8月に北海道で開催,なんてでどうでしょう.1・2月に沖縄っていうのもアリ?【SOCCERZINE】ナビスコカップは短期集中開催でどうか http://news.livedoor.com/article/detail/4997781/
by kfsq on Twitter

9月5日(日)のつぶやき

2010-09-06 00:33:26 | Social Life
16:32 from Azurea
軽量さがウリのWindowsMobile向けtwitterクライアントのAzureaがver. 1.2.6にアップデートしましたね。このソフト本体だけじゃなくドキュメントも軽量気味で使いこなしづらい点があるのですが、作者さんはblogでtipsなど書かれているのですね。
16:35 from Azurea
ちなみに、twitterのTLとおなじくらいどんなツールを使ってポストしてるのかに関心があるっていうのは、やっぱ変わってるんでしょうか。
16:45 from web
「週刊CB750」って聞いて,「しげの秀一はからまなくていいの?」と思う.えっ,フィギュアがあーだの,カラーリングがどーだのいうつもりはありませんよ.
by kfsq on Twitter

9月3日(金)のつぶやき

2010-09-04 00:33:14 | Social Life
09:58 from web (Re: @LenovoJP_TP
@LenovoJP_TP 回答:XXシリーズ.ThinkPadの思想を引き継いだネットブックかタブレットPCのラインナップができたらいいと思う.
10:27 from web
図書館はメーカーに保守契約をしていたのかしら.弁明からはしてたような印象が持てなかった.【J-CASTニュース】ホームページへの大量アクセス事件 岡崎市立中央図書館の弁明に異論相次ぐ http://www.j-cast.com/2010/09/02074918.html
10:51 from web
大佐(少佐?)風に言えば,「認めたくないものだな.お役所仕事故の過ちというものを」っていったところかしら.あっさり「こちらの認識にも誤りがありました.すみません」と言ってしまえばいいものの,逆に開き直っている(便乗してメーカーも)から,余計騒ぎが大きくなっている.
10:55 from web (Re: @LenovoJP_TP
@LenovoJP_TP じゃあ,ThinkPad Extreme (短く ThinkPad EX. でも可).フラッグシップモデルって,X300系の後継的なものととらえていいんでしょうか(少なくとも,こちらはそういう認識です).
17:22 from web
今週末は妻が仙台出張なので,父子家庭状態です.なので,早目に帰らないと.つぶやいているばやいぢゃない.
by kfsq on Twitter

9月2日(木)のつぶやき

2010-09-03 00:31:59 | Social Life
09:24 from web
ただ返しているだけじゃなく,ちゃんとライン際にコントロールされてるんだから.空いた口が塞がらないレベル. テニスの神わざ「股抜きショット」(動画) http://wiredvision.jp/news/201009/2010090119.html (@wiredvision)
10:22 from web
WS020SHの通話の問題は継続中.電話に着信しても相手の声が聞こえない.自分の声は届いているようだ.故障かな.
23:01 from web
WS020SHの通話の問題ですが,妻のPHSとは通話ができた.固定電話と話ができないのだろうか.
by kfsq on Twitter