Google アラートの使い方

お久しぶりの更新。

Rは最近階層的重回帰分析にチャレンジしてるんだけど、なかなかアップする元気がないので、今回は別の話題。

今日はgoogleアラートの使い方について紹介。

皆さん、最新の文献はどのようにチェックしてますか?
僕は、RSSリーダーgoogleアラートを利用しています。

RSSリーダーを使う方法も結構便利で、CiNIでもPsychoinfoでも自分の興味分野をフィードに登録するだけ。でもこの方法はちょっと面倒なのと、遊びのリーダーの中に急に英語論文来ると心が痛いので違う方法を。。

今回はgoogle scholar を利用したやり方を紹介します。とある先生に教えてもらったものなので完全にパクリネタですが。。


多分、ほとんどの人は一度はgmailアカウントは取ったことがあると思うのでアカウントの取り方は省略します。


まずは、googleアカウントにログインした状態でgoogle スカラーに飛びます。
http://scholar.google.co.jp/


こんな感じになります。右上のアラートをクリック。


するとアラートを作成する画面になるので、届けたいメールアドレスとキーワードを入力。



最終画面はこんな感じ。僕はburnoutを入れてみました。



こんな感じで、メールが来ます。

burnoutをキーワードにすると、だいたい毎日4件位は新着メールが来ます。
ドイツ語とかフランス語とかも混じってるけどabstractを読むだけでもちょっと研究した気持ちになりますねー。メールで強制的に来るのがいい感じ。

良かったら参考にしてください。

anobakun使ってみる(被験者間2要因3水準の分散分析)

では、気を取り直して、次回は被験者間、2要因3水準の分散分析にチャレンジしてみます。

まずはデータセットから。前回のデータをちょっとリミックスして、性別(male, female),
職種(Dr, Ns, CP), mscoreの3変数からなるデータセットを作ります。

anova2<-data.frame(anova$sex,anova$job,anova$mscore)

str()で構造を確認。これはデータセットを作った時は必ずやるようにする。
結構いままで単純なミスで苦労してきたので細かいチェックをしておけばあとあと便利なんだよね。


ここでは性別をfactorにすることを忘れていた。

やれやれ。
anova$sex<-factor(anova$sex,levels=0:1,labels=c("male","female"))
を追加。

さて、いよいよここから2×3の被験者間分散分析をしてみます。
ダミーデータのmscoreを従属変数、性別、職種を独立変数としての分析です。
ちなみに前回のデータだと結果がでなかったので少し数値を変更しています。

view(anova2) でデータセットを確認してみましょう。

修正の前の画像なのでですが、この場合は従属変数を一番最後にする。そして、性別(要因A)、職種(要因B)を並べておくのがanovakunのポイント。
新しくデータセットを作らないといけないのがRの大変なところ。まあ慣れないと。


要因がAとBだから

anovakun(anova2,"ABs",2,3)
2と3は水準数だよね。



anovakunのいいところは、多重比較が充実していることです。

主な効果が有意だった場合、デフォルトではShaffer法を使って多重比較をしてくれます。


オプションだと、holm = Tで修正版bonferroniが使えます。


詳細は井関先生のページを見るのが一番ですかね。

また、peta = Tとすることで,分散分析表に偏イータ二乗(partial eta squared)が追加されます。

今回のデータで多重比較は修正bonferrroni法、効果量を算出しようと思ったら、anovakun(anova2,"ABs",2,3,holm = T,peta = T)
こんな感じのコマンドを書くのです〜

イータのところは長くなってしまって見にくいので注意が必要ですね〜


僕は被験者間の調査ばかりなので、使った事はありませんが被験者内の球面性検定のオプションもつけることができます。

きょうはここまで。

いやー統計はほんと難しいぞ。まさしく七転八倒

anovakunを使ってみる(1元配置の分散分析)

続いてanovakunを実際に使ってみようと思います。

とりあえずは一元配置の分散分析ということで前回の続きデータを使ってみます。

っと思ったら前回のデータは1要因2水準だからt検定とおなじじゃん。。。
だけどまあいっか。。


まずは、井関先生のページに行ってanovakunをゲットする。
http://www11.atpages.jp/~riseki/pukiwikiplus/index.php?ANOVA%B7%AF

ダウンロードしたテキストファイルをRのディレクトリに入れておきます。

こんな感じになっていれば大丈夫。



続いて、edit→sourceといくとダイアルログが出てくるので、さきほどのテキストファイルを選択します。

すると。。

??なんじゃそら??
以下にエラー make.names(col.names, unique = TRUE) :
1 は不正なマルチバイト文字です

よく井関先生のページを見てみると、どうやらMacの場合には文字コードを変更しておく必要があるみたい。確かに、Rstudioで開いても明らかに変だもんね。。


その後もいろいろと四苦八苦したんだけど、RstudioのEdit →source からはなんかうまくできない(たぶんやり方が間違っているだと思うのでだれか知ってたら教えて)。

仕方がないので明示しました。
source("/Users/☆/Dropbox/R/anovakun_420.txt")
※ ☆はユーザー名、別に隠さなくてもいいけど。。

見てみるとWorkspaceのところになんかそれっぽいものが入ってるのが分かります。
イイネ! ここの警告は無視して大丈夫。

ふう。


さていよいよ分散分析を開始。

anovakunの使い方は井関先生のページを見るとほとんどの人は分かるとは思うんですが、僕は結構苦労したのでメモしておきます。


anovakunの使い方は
anovakun(データ, "要因計画の型", 各要因の水準数,...)
という形です。

僕が苦労したのは要因計画の型という部分。
ページの説明では、
「要因計画「分析したい計画の型を入力します。「A」〜「Z」を各要因を表すラベル,「s」を被験者のラベルとします。被験者間要因は「s」の左側,被験者内要因は 「s」の右側に配置します。この表記法にしたがえば,例えば,2要因の被験者間計画は「ABs」,3要因の被験者内計画は「sABC」,2つの被験者間要 因と1つの被験者内要因を持つ混合要因計画は「ABsC」と表せます。なお,要因計画の型は「""」で囲む形で入力する必要があります。

となっています。

ここで書いてあるABsCというのは、A要因、B要因、C要因まで使えてそれぞれ被験者内計画、被験者間計画で使い分けるという意味だそうです。

今までのRの使い方だと、ここのABの部分に自分でつけた変数を入れていたのだけどanovakunの場合はこのまま使います。

今回のケースだと、職種の1要因なのでA、そして被験者間要因なのでsの左側に配置。

anovakun(anova1,"As",2)

こんな感じです。
僕は最初は、anovakun(anova1,"sexs"みたいな感じで実際の変数名を入れようとしてドツボにはまりました。

ではとりあえず入れてみます。


こんな感じで結果が算出されました。
赤線の所を見るとa1、a2 と出てきているのが分かります。僕の場合はここのnの数を調べて確認しました。
a1は、Dr、a2は、Nsということです。

ふう今回はnsだったので職種の主効果はなし。

!!
というか、一元配置の分散分析で2水準って普通にt検定じゃん。。。
ダミーデータの作り方がおかしかった。。

せっかくなので、t検定してp値の確認してみました。

t.test(anova1$mscore~anova1$job,var.equal=TRUE)


うん(たぶん)合ってると思う。基本的にまだ分かってないんだけどt値とF値は違ってもいいだよね。。。このブログを信用してはだめですよ〜。

気を取り直して、次回は被験者間、2要因3水準の分散分析にチャレンジしてみます。

anovakun使ってみる(データセット編)

久しぶりの更新。
今日は、anovakunの使い方についてのメモ。いつもの事ながらKosugitti先生に感謝。いろいろと復習しながら七転八倒します。

まずは、File→New→R scriptで新しいコマンドを用意。
今回はsave as anova.Rとしてみました。


さて復習がてらデータの読み込み。

anova <- read.csv(file.choose(),head=T,sep=",",na.strings="NA")

今回のデータもブログ用のダミーデータです。
まずは変数と構造の確認
names(anova)
str(anova)

いい感じです。ちなみにintというのは、数字データということ。
sex, age, job, jobposition, workinghourは個人属性で残りのM1〜M6はちょっとした質問紙の質問項目のデータです。

さて、復習がてら個人属性の変数を加工します。
anova$sex<-factor(anova$sex,levels=0:1,labels=c("male","female"))
#性別をカテゴリカルデータとして定義。maleとfemale

anova$job<-factor(anova$job,levels=0:2、labels=c("Dr","Ns","CP"))
#職種を定義付け。今回は医師と看護師と心理士という名前にしてみました。

本当は他のvariablesも定義付けする必要があるけど、今日使うのこれだけなので置いておきます。

出来たかどうか確認。できてるみたいです。


定義付けしたsexとjobに注目すると、int形式ではなく、Factorになっています。
w/ の後は水準数ですね。

とりあえず、質問紙の得点を従属変数、job(あえてDrとNsだけを使ってみる)を独立変数とした一元配置の分散分析を行おうと思うのでまずは質問紙の得点を算出(今回は適当に合算してます)

anova$mscore<-anova$M1+anova$M2+anova$M3+anova$M4+anova$M5+anova$M6)

続いてこれだけからなるデータセットを作成。
anova1<-subset(anova,job=="Ns"|job=="Dr",select=c(job,mscore))

subset 関数を使えば使いたい水準を減らしたり、variablesを限定したデータセットを作るのも簡単簡単です。
ちなみに「|」はandというような意味でとらえればいいと思います。
もしたくさん水準があって1つの水準だけ減らしたい時は、「!=」とすれば〜以外というような使い方もできるそうです。

ただ、subsetを使って水準数を減らした時には注意が必要です。
ためしにちょっとstr()を使って構造を確認。view()でデータを右上に表示しています。

なんとsubsetを使って水準を減らした場合には、実際にはデータはないのに構造上は水準が減りません。このままだとanovakunではエラーが出てしまいます。

だからもう一度factor型にチェンジ。

anova1$job<-factor(anova1$job)
これでもう一度構造を確認。
str(anova1)

はい、さっきは3水準のままだったのが2水準になりました。これは結構注意がいりそうですね。

これでデータセットは完了です。

今回七転八倒して分かったことは、なにか困った時にはstr()を使って構造を確認すること。エラーが出る時はこの型がうまくいっていないことが多いということですかね。。

とりあえず今回はここまで。
次回は、実際にanovakunを使ってみようと思います。

信頼性の分析(α係数とかomega係数とか)

今日は質問紙の分析に入ろうかと思います。

まずは、質問紙の構成の確認。

このダミーデータは先行研究においては3つの因子からなる15項目の質問紙。
m_1〜m_5 までが第1因子、m_6〜m_10が第2因子、m_11〜m_15が第3因子となっている。
まずは先行研究と同様の因子構造を使用していいかどうかを検討するためにα係数を算出しよう。

コマンドは
alpha(qp[c("m_1","m_2","m_3","m_4","m_5")])

これで第1因子を構成する質問項目の信頼性の検討を行う。
psychパッケージの中にあるalpha関数を使うのが便利みたい。
これまた@kosugitti先生に感謝。


ちなみにpsychパッケージの使い方よく分からんのうなんて思ったらhelp(psych)をコンソールに入れるとhelpが出てきます。英語なので怖いけど、僕のように現在完了形から見失っているような英語力でも少しは理解できる単純な英語なのでビビらず見てみよう!!そこの検索窓でalphaを検索して見てみたのがこちら。

結果の見方が書いてあるね〜!!

ちなみに今回のデータの結果がこちら。

まずピンクの所をみると、law_alphaとかあるけど、なぜか小数点第一位までしか書いてないなあ。law_alphaとstd.alphaが出てるけどこれって少数点第二位まで出ないのかしらん??

赤線の所を見ると、Reliability if an item in dropped と書いてある。
もちろん英語にはうんざりしてるが、これはその質問項目を除いた時のα係数の変化を示している(のだろう)。
ここの数値が、上にあるα係数よりも著しく大きくなるようであればちょっといかんのだ。だから今回のデータの信頼性はまあまあオッケーだなということが分かる。

紫で囲んだ所は、それぞれの質問項目の記述統計。平均も偏差も出してくれているので明らかな偏りがあればチェックでできる。

その下のとこは何なんだろう???
質問項目間の相関係数??

結果の見方はもう少し勉強しないと行けないがなんとか、信頼性の検討はできた。

このalpha係数は本来であれば因子分析をした後にやることが多いけど、先行研究がたっぷりある場合とかはこれだけでも結構説得力はあるねえ。
しかし、α係数の小数点第二位まで出ないのかしら?


蛇足ですが、@kosugittiに教えてもらったomegaについても備忘録的に記載。
参考ページはこちら。
http://d.hatena.ne.jp/kosugitti/20091224/1261643078

omega関数は、指定した因子構造と仮定してその負荷量から計算してくれるもの。

今回のデータだとこんな風に書く。
omega(qp,nfactors=3)

なんか変なんでました。there in no packegeと言うのがでていれGPArotationというパッケージがインストールされていないのが問題みたい。Rではこういう事はよくあるので、焦らず、tools→installs packegeでインストールして再試行。


でました。ここらへんはまだまだ勉強不足。あくまでやってみただけという感じですがなんか見た目が格好いいな。
因子分析等いろいろやった後でまたチャレンジしよう。
今日はここまで。

記述統計でてんやわんや。

ここからはしばらく記述統計でてんやわんや。

まずはattachを使って、いちいち明示($をつけなくてもよいように)しなくてもいいようにしてみた。
attach(individual)とすればいい。

このattach関数は便利なんだけどちょっと分かりにくい。
データフレームがたくさんある場合には、いちいちdetach()しないといつまでこのattachが生きているかよくわからないし、これをしていればすべてに明示が必要なくなる訳ではないので、混乱する。できれば使わないほうがいいかも。

でもまあ単純な時には便利な関数。

まずはクロス集計表をつくる。
職種ごとのsexとjobstyle、Spouse.

とりあえず出た。
しかし、こういうのひっくるめてうまいことやる方法はないかなあということで、@kosugitti先生に教えてもらいました。

コマンドはこちら。
aggregate(individual[c("sex","jobstyle","Spouse")], list(individual$job), table)

これでまとめてできる。

by関数を利用するよりもこちらのほうが良さそうですね。
ちなみに、listはまだ僕も理解してないけどjobごとにみたいなことをする場合には、いったんこれでまとめた方が認識しやすくなるみたい。

ここらへんは説明困難なので、試行錯誤といった感じかなあ。。
イメージとしては、1×1の場合は明示もいらないけど、1×3の場合は明示したりlistを使ったりする必要あると思っておけばいいかな。。


職種ごとの記述統計はこんな感じ。by関数を使う。

結構詳しく出ますけど、正直こんなに必要ないよね。。


ということでこれもまとめてやってみる。平均値と標準偏差だけ。
aggregate(individual[c("age","Employee")], list(individual$job), mean,na.rm=T)
aggregate(individual[c("age","Employee")], list(individual$job), sd,na.rm=T)

これを一気にやれればいいのだけど。。。
ここまでやって思う事は、記述統計については、残念ながらExcelのピポットテーブルのほうが分かりやすいな。。ということだが一応なんとかできたので少し満足。
Excelはいまいち信用できないし、よく落ちるので、直感的に操作してみてその後にRで検算するのがいいかと思っています。

忘れないようにdetach()して今日は終了。
なかなか先は長いな。。