# Rの起動 # ファイル→ディレクトリの変更→csvファイルのある場所を指定 # 文字化けしている場合:編集→GUIプリファレンス→フォントをMSゴシックに # 計算問題(中西さんのHPより) 2 + 3 - 4 5 * 6 / 7 (8 + 9) / 2 - 10 * 3 11 ^ 4 # 11の4乗 13 %% 6 # 剰余 13 %/% 6 # 整数商 sqrt(16) # 平方根 abs(-2.5) # 絶対値 #上記の他に、log()やlog2(),sin(), cos(), tan() など色々取れる # 関数の定義、ソースの使用 # 日本地図を描画(ソースは青木繁伸先生のHPより) # draw.mapという関数を定義している # 境界線データに基づいて白地図を描く draw.map <- function(fn) # 境界線データのあるファイル名 { data <- matrix(scan(fn, quiet=TRUE), ncol=2, byrow=TRUE)# x, y 座標が組みになっている continue <- apply(data, 1, any) # x, y 座標が共に 0 であるのは,一連の境界線の終わりを意味する plot(data, type = "n", axes=FALSE, bty="n", asp=1) # 枠組みをとる start <- 1 for (i in 2:nrow(data)) { if (continue[i] == FALSE) { # 一区切り lines(data[start:(i-1),]) # (0, 0) の次から,(0, 0) の前までを折れ線で結ぶ start <- i+1 } } } draw.map("jpn.dat") #jpn.datというファイルをdraw.map関数で描画 # パッケージの使用(lattice) # ソースはR-Tipsの58から # パッケージ→CRANミラーサイトの設定→Japan (Tokyo):パッケージをダウンロードしてくるミラーを選択している # パッケージ→パッケージのインストール→この場合はlattice(ついでに "gplots"もダウンロードしておいて下さい) library(lattice) #パッケージlatticeの呼び出し data(volcano) #すいません、この意味が分かりません・・・ wireframe(volcano, shade = TRUE, aspect = c(61/87, 0.4), light.source = c(10,0,10)) #すいません、この意味が分かりません・・・ # 以下の分散分析では google で 統計ソフト R interaction.plot と検索して出てきたページの下のページを参考に作りました # このページ、odfファイル(Open officeのファイル?)で書かれている為、通常は開くことが出来ません # googleで検索した場合、キャッシュをHTMLで開くことが可能なので、それで開きます # しかしメチャクチャ重いので、結局プリントアウトして使用しました # それでも「統計ソフトRのミニミニマニュアル」が非常に分かりやすいのでお勧めです # 一要因分散分析 # 単語の再生成績(recall)が方略(stra)によって変わるかという実験の結果(データ解析テクニカルブック p.87より引用) # 従属変数:再生成績(recall), 独立変数:方略(4水準) rs <- read.csv("test.csv", header=TRUE) #test.csvを読み込み、rsという名前を付ける rs #データの読み込み names(rs) #rsの変数名 mean(recall) #recallの平均(このままでは不可能 ←変数名を直接扱えていないから) attach(rs) #rsの変数名をダイレクトに扱う mean(recall) #recallの平均 sd(recall) #recallの標準偏差 stem(recall) #recallのヒストグラム hist(recall) #recallのヒストグラム library(gplots) #ライブラリからgplotsの呼び出し plotmeans(recall~stra) #グラフを書く stra <- factor(stra) #stra要因を因子形式に summary(aov(recall~stra, data=rs)) #一要因分散分析→再生成績~要因(方略), データはrsを使用 result <- aov(recall~stra, data=rs) #分散分析結果にresultという名前を付ける summary(result) #resultを実行 # 有意な結果が見られるので、下位検定(事後分析, 多重比較を行う) pairwise.t.test(recall, stra, p.adj = "bonf") #多重比較(ボンフェローニ) (注)本来TukeyHSD(result)でも出来るはずだが何故かエラーが・・・orz detach(rs) #attach(rs)の逆→上の操作は不可能に(変数をダイレクトに扱えなくする) # 二要因分散分析 # 抑うつ得点(depression)は、失敗経験(failure)の多さや完全主義得点(perfect)の高さによって変化するか、というデータ # データはマニュアルの中にある小塩先生のページのデータhttp://psy.isc.chubu.ac.jp/~oshiolab/teaching_folder/datakaiseki_folder/05_folder/da05_02.htmlを使用しました # そのデータの変数を書き換えてcsv形式で保存したものを使用しています # 従属変数:抑うつ得点(depression), 独立変数:失敗経験(少/中/多;3水準), 完全主義(低/高;2水準) d2 <- read.csv("depression2.csv", header=TRUE) #depression2.csvを読み込み、d2という名前を付ける d2 #d2データの読み込み attach(d2) #d2の変数名を直接扱えるように failure <- factor(failure) #failure要因を因子形式に perfect <- factor(perfect) #perfect要因を因子形式に class(failure) #failure要因が因子形式になっているか確認 class(perfect) #perfect要因が因子形式になっているか確認 result <- aov(depression~failure*perfect) #分散分析結果にresultという名前を付ける summary(result) #resultを実行 interaction.plot(failure, perfect, depression, fixed=TRUE) #グラフを描画(要因A, 要因B, 従属変数) model.tables(result, "means") #各セルの平均を見る TukeyHSD(result) #TukeyHSDを用いたresultの多重比較 # 失敗経験の主効果有り、完全主義の主効果有り、交互作用有意 # 交互作用が有意であるため、単純主効果の検定を行う必要がある # 交互作用の分析(単純主効果の検定) #1 完全主義(perfect)が低群(1)である時の失敗経験(failure)の単純主効果 d2[d2$perfect=="1",] #perfectが1のデータをd2から取り出す p1 <- d2[d2$perfect=="1",] #↑のデータにp1という名前を付ける summary(aov(p1$depression~factor(p1$failure))) #p1のdepressionを従属変数に、p1のfailure要因で分散分析 # →有意差無し #2 完全主義(perfect)が高群(2)である時の失敗経験(failure)の単純主効果 d2[d2$perfect=="2",] #perfectが2のデータをd2から取り出す p2 <- d2[d2$perfect=="2",] #↑のデータにp2という名前を付ける summary(aov(p2$depression~factor(p2$failure))) #p2のdepressionを従属変数に、p2のfailure要因で分散分析 #→有意差有り→多重比較 pairwise.t.test(p2$depression, factor(p2$failure), p.adj = "bonf") #p2のdepressionを、因子形式にしたfailureで多重比較(bonferroni) # →完全主義の強い人において、失敗経験が多い人は、そうでない人(低・中群)に比べて抑うつ得点が高い #3 失敗経験が少ない者における完全主義の単純主効果(2群の比較なのでt検定を用いる) d2[d2$failure=="1",] #failureが1のデータをd2から取り出す f1 <- d2[d2$failure=="1",] #↑のデータにf1という名前を付ける t.test(f1$depression~factor(f1$perfect), var.equal=T) #f1のdepressionを従属変数、f1のperfect要因でt検定 #→有意差無し #4 失敗経験が中程度の者における完全主義の単純主効果(2群の比較なのでt検定を用いる) d2[d2$failure=="2",] #failureが2のデータをd2から取り出す f2 <- d2[d2$failure=="2",] #↑のデータにf2という名前を付ける t.test(f2$depression~factor(f2$perfect), var.equal=T) #f2のdepressionを従属変数、f2のperfect要因でt検定 # →有意差有り(完全主義高群>完全主義低群) #5 失敗経験が多い者における完全主義の単純主効果(2群の比較なのでt検定を用いる) d2[d2$failure=="3",] #failureが3のデータをd2から取り出す f3 <- d2[d2$failure=="3",] #↑のデータにf3という名前を付ける t.test(f3$depression~factor(f3$perfect), var.equal=T) #f3のdepressionを従属変数、f3のperfect要因でt検定 # →有意差有り(完全主義高群>完全主義低群) # 上記で得た結果はSPSSと異なる→単純に輪切りにして行っているため、誤差項は全体ではなく、水準別誤差項を用いた分析になる