English, Japanese
Rによる統計解析と効果量算出法
JAMOVIを使った方が楽かも? [リンク] MacとWinでコマンドが多少異なることがある。


各main effectの効果量:partial eta squared (ηP2)

エクセルでのテーブル様式。IDの列も重要。
ID 要因1 要因2 ...value
ID1 control X 数値
ID2controlX 数値
ID3treatY 数値
ID4treatY 数値

1.ANOVA君をダウンロード。[URL]

2. Rを立ち上げ、作業ディレクトリをANOVA君がある場所へ変更。R本体もANOVA君も同じところに置くのが楽。
今のディレクトリは
getwd()
で見れる。変更する場合は、画面上部の「その他->作業ディレクトリの変更」

3. Rで画面上部の「ファイル->ソースを読み込む」でanovakun_***.txtを読み込む。

4.Rに
dat <- read.clip(header = T)
とコピペ。リターンはまだ押さない。

5.テーブルを1行目からコピーして、Rでリターン。気が向いたら
dat
でテーブルを確認。

6. Rに
anovakun(dat, "AB…s", long = T, nopost = T, peta = T)
とコピペし、"AB…s"を整える。要因の数だけABC…をsの前につける。リターン。
P.eta^2がPartial eta squared (ηp2)

6-1. one-way ANOVAならば
anovakun(dat,"As", long = T, s2d = T, peta = T)
でpost hoc test: Shaffer's Modified Sequentially Rejective Bonferroni Procedureまで同時に行える。


各main effectの効果量:generalized eta squared (ηG2)

エクセルでのテーブル様式
Grouptime1time2time3...
X数値数値数値
X数値数値数値
X数値数値数値
X数値数値数値

1.ANOVA君をダウンロード。[URL]

2. Rを立ち上げ、作業ディレクトリをANOVA君がある場所へ変更。R本体もANOVA君も同じところに置くのが楽。
今のディレクトリは
getwd()
で見れる。変更する場合は、画面上部の「その他->作業ディレクトリの変更」

3. Rで画面上部の「ファイル->ソースを読み込む」でanovakun_***.txtを読み込む。

4. Rに
dat <- read.clip()
とコピペ。リターンはまだ押さない。

5. テーブルの数値だけをコピーして、Rでリターン。

6. Rに
anovakun(dat, "sA", **, nopost = T, geta = T)
とコピペし、**を繰り返しの数(上のテーブルだとtime3なので3)に置き換えて、リターン。
G.eta^2がGeneralized eta squared (ηG2)


各main effectの効果量:generalized eta squared (ηG2)

エクセルでのテーブル様式
ID 要因1 要因2 ...time1time2time3...
ID1 control X 数値数値数値
ID2controlX 数値数値数値
ID3treatY 数値数値数値
ID4treatY 数値数値数値

1.ANOVA君をダウンロード。[URL]

2. Rを立ち上げ、作業ディレクトリをANOVA君がある場所へ変更。R本体もANOVA君も同じところに置くのが楽。
今のディレクトリは
getwd()
で見れる。変更する場合は、画面上部の「その他->作業ディレクトリの変更」

3. Rで画面上部の「ファイル->ソースを読み込む」でanovakun_***.txtを読み込む。

4. Rに
install.packages("tidyr")
とコピペしリターン。インストール済みなら不要。

5. Rに
library(tidyr)
とコピペしリターン。

6. Rに
library(dplyr)
とコピペしリターン。

7. Rに
dat <- read.clip(header=T)
とコピペ。リターンはまだ押さない。

8. テーブルを1行目からコピーして、Rでリターン。

9. Rに
dat_long <- dat %>% gather(Time, value, -ID, -要因1, -要因2)
とコピペ。要因1、要因2を(要因がもっとあるなら-要因3、-要因4…と追加して)テーブルと同一にした後にリターン。
気が向いたら
dat_long
で、テーブルがうまく変換された(time1のデータ、time2のデータ…と全てのデータが正しく縦に並んでいる)ことを確認。

9. Rに
anovakun(dat_long, "ABsC", long = T, nopost = T, geta = T)
とコピペし、"ABsC"を整えて(要因の数に応じてsの前と後にABCDE...を振り分ける。sの前が群間要因、sの後ろが繰り返し要因)、リターン。
G.eta^2がGeneralized eta squared (ηG2)


全てのペア比較
どんなテストだ?何やってる?はこちらで解説されてます [URL]

各ペア間の効果量:Cohen's d。算出方法はt検定参照

エクセルでのテーブル様式
ID グループ名 value
ID1 contX 数値
ID2contX数値
ID3treatY数値
ID4treatY数値

1.ANOVA君をダウンロード。[URL]

2. Rを立ち上げ、作業ディレクトリをANOVA君がある場所へ変更。R本体もANOVA君も同じところに置くのが楽。
今のディレクトリは
getwd()
で見れる。変更する場合は、画面上部の「その他->作業ディレクトリの変更」

3. Rで画面上部の「ファイル->ソースを読み込む」でanovakun_***.txtを読み込む。

4.Rに
dat <- read.clip(header = T)
とコピペ。リターンはまだ押さない。

5. テーブルを1行目からコピーして、Rでリターン

6. Rに
anovakun(dat,"As", long = T, s2d = T)
とコピペしリターン。

7. 各群にabcを振る方法はこちら [URL] [保存版]


各ペア間の効果量:Cohen's d。算出方法はt検定参照

エクセルでのテーブル様式
group value(この行の名前を変えては駄目)
X 数値
X数値
Y数値
Y数値
Z数値
Z数値

1. Rに
install.packages("SimComp", dependencies = TRUE)
とコピペしリターン。インストール済みなら不要。

2. Rに
library(SimComp)
とコピペしリターン。

3. Rに
dat <- read.table(pipe("pbpaste"),header=T)
Winの場合は dat <- read.table("clipboard", header=T)
とコピペ。リターンはまだ押さない。

4. テーブルを1行目からコピーして、Rでリターン

5. Rに
dat$group <- factor(dat$group, levels = c("X","Y","Z")) とコピペし、X,Y,Zを群名にそれぞれ変更してリターン

6. Rに
levels(dat$group)
とコピペしリターン。対照群の順番を確認。

7. Rに
SimTestDiff(data = dat, grp = "group", resp = "value", type = "Dunnet", base = 1, covar.equal = T)
とコピペ。base = 1の数字を対照群の順番に変更。そしてリターン。

各ペア間の効果量:Cohen's d。算出方法はt検定参照

エクセルでのテーブル様式
group value(この行の名前を変えては駄目)
X 数値
X数値
Y数値
Y数値
Z数値
Z数値

1. Rに
dat <- read.table(pipe("pbpaste"),header=T)
Winの場合は dat <- read.table("clipboard", header=T)
とコピペ。リターンはまだ押さない。

4. テーブルを1行目からコピーして、Rでリターン

5. Rに
TukeyHSD(aov(dat$value ~ dat$group))
とコピペ、リターン。


各ペア間の効果量:Cohen's d。算出方法はt検定参照

エクセルでのテーブル様式
group value(この行の名前を変えては駄目)
X 数値
X数値
Y数値
Y数値
Z数値
Z数値

1. Rに
dat <- read.table(pipe("pbpaste"), header=T)
Winの場合は dat <- read.table("clipboard", header=T)
とコピペ。リターンはまだ押さない。

2. テーブルを1行目からコピーして、Rでリターン

3. Rに
group=factor(dat$group)
とコピペしリターン。

4. Rに
value=dat$value
とコピペしリターン。

5. Rに
pairwise.t.test(value, group, p.adjust.method="none")
とコピペしリターン。もしP値の表示桁数を変更したければ、Rに
options(digits=10)
とコピペし、数字をいじって再び5(pairewise…)を行う。




効果量:epsilon squared (ε2)

エクセルでのテーブル様式
要因 データ
X 数値
Y数値
Z数値

1. Rに
install.packages("rcompanion", dependencies = TRUE)
とコピペしリターン。インストール済みなら不要。

2. Rに
library(rcompanion)
とコピペ、リターン。

3.Rに
dat <- read.table(pipe("pbpaste"), header=T)
とコピペ。リターンはまだ押さない。

4. テーブルをヘッダーからコピーして、Rでリターン。

5. Rに
kruskal.test(データ ~ 要因, data = dat)
とコピペしリターン。統計結果。

6. Rに
epsilonSquared(x = dat$データ, g = dat$要因)
とコピペしリターン。効果量 (ε2)

各ペア間の効果量:r

エクセルでのテーブル様式
要因 データ
X 数値
Y数値
Z数値

1. Rに
install.packages("NSM3")
とコピペしリターン。続いて
install.packages("coin")
とコピペしリターン。続いて
install.packages("rosetta")
とコピペしリターン。インストール済みなら不要。

2. Rに
library("NSM3")
とコピペしリターン。続いて
library("coin")
とコピペしリターン。続いて
library("rosetta")
とコピペしリターン。 3.Rに
dat <- read.table(pipe("pbpaste"), header=T)
とコピペ。リターンはまだ押さない。

4. テーブルをヘッダーからコピーして、Rでリターン。

5. Rに
dat$要因 <- as.factor(dat$要因)
とコピペしリターン。6が問題なければ飛ばして可。

6. Rに
pSDCFlig(dat$データ, dat$要因, method="Asymptotic")
とコピペしリターン。

7. Rに
qnorm(1-(p値/2))/sqrt(全部のサンプル数)
とコピペし、6で出したp値とサンプル数を入れてリターン。効果量r




各ペア間の効果量:Cohen's d

エクセルでのテーブル様式
group value
X 数値
X数値
Y数値
Y数値

1. Rに
install.packages("lessR", dependencies = TRUE)
とコピペしリターン。インストール済みなら不要。

2. Rに
library(lessR)
とコピペ、リターン。

3. Rに
groupA <- scan(pipe("pbpaste"))
Winの場合は groupA <- scan("clipboard")
とコピペ。リターンはまだ押さない。

4. 1群目のデータだけをコピーして、Rでリターン。

5. Rに
groupB <- scan(pipe("pbpaste"))
Winの場合は groupB <- scan("clipboard")
とコピペ。リターンはまだ押さない。

6. 2群目のデータだけをコピーして、Rでリターン。

7. Rに
ttest(groupA, groupB)
とコピペしリターン。
Cohen's dと95% Confidence Interval for Mean Differenceが出てくる(t値と自由度(df)も)。


各ペア間の効果量:r

エクセルでのテーブル様式
group value
X 数値
X数値
Y数値
Y数値

1. Rに
install.packages("coin", dependencies = TRUE)
とコピペしリターン。インストール済みなら不要。

2. Rに
library(coin)
とコピペ、リターン。

3. Rに
groupA <- scan(pipe("pbpaste"))
Winの場合は groupA <- scan("clipboard")
とコピペ。リターンはまだ押さない。

4. 1群目のデータだけをコピーして、Rでリターン。

5. Rに
groupB <- scan(pipe("pbpaste"))
Winの場合は groupB <- scan("clipboard")
とコピペ。リターンはまだ押さない。

6. 2群目のデータだけをコピーして、Rでリターン。

7. Rに
wilcox.test(groupA, groupB, distribution="exact")
とコピペしリターン。統計結果。

8. Rに
qnorm(1-(p値/2))/sqrt(全部のサンプル数)
とコピペし、7で出したp値とサンプル数を入れてリターン。効果量r


各ペア間の効果量:Cohen's d

エクセルでのテーブル様式
ID pre post
ID1 数値 数値
ID2数値数値
ID3数値数値
ID4数値数値

1. Rに
install.packages("lessR", dependencies = TRUE)
とコピペしリターン。インストール済みなら不要。

2. Rに
library(lessR)
とコピペ、リターン。

3. Rに
groupA <- scan(pipe("pbpaste"))
Winの場合は groupA <- scan("clipboard")
とコピペ。リターンはまだ押さない。

4. 1群目(pre)のデータだけをコピーして、Rでリターン。

5. Rに
groupB <- scan(pipe("pbpaste"))
Winの場合は groupB <- scan("clipboard")
とコピペ。リターンはまだ押さない。

6. 2群目(post)のデータだけをコピーして、Rでリターン。

7. Rに
ttest(groupA, groupB, paired = T)
とコピペしリターン。
Cohen's dと95% Confidence Interval for Mean Differenceが出てくる(t値と自由度(df)


各ペア間の効果量:r

エクセルでのテーブル様式
ID pre post
ID1 数値 数値
ID2数値数値

1. Rに
install.packages("coin", dependencies = TRUE)
とコピペしリターン。続いて
install.packages("survival", dependencies = TRUE)
とコピペしリターン。インストール済みなら不要。

2. Rに
library(survival)
とコピペ、リターン。続いて
library(coin)
とコピペ、リターン。

3. Rに
groupA <- scan(pipe("pbpaste"))
Winの場合は groupA <- scan("clipboard")
とコピペ。リターンはまだ押さない。

4. 1群目(pre)のデータだけをコピーして、Rでリターン。

5. Rに
groupB <- scan(pipe("pbpaste"))
Winの場合は groupB <- scan("clipboard")
とコピペ。リターンはまだ押さない。

6. 2群目(post)のデータだけをコピーして、Rでリターン。

7. Rに
wilcoxsign_test(groupA ~ groupB, distribution = "exact", zero.method="Wilcoxon")
とコピペしリターン。

8. Rに
qnorm(1-(p値/2))/sqrt(全部のサンプル数)
とコピペし、7で出したp値とサンプル数を入れてリターン。効果量r




エクセルでのテーブル様式
Group1Group2Group3...
X数値数値数値
Y数値数値数値
Z数値数値数値

1. Rに
dat <- read.table(pipe("pbpaste"))
Winの場合は dat <- read.table("clipboard")
とコピペ。リターンはまだ押さない。

2. テーブルの数値だけをコピーして、Rでリターン。

3. Rに
fisher.test(dat)
とコピペし、リターン。

エラー(workspase増やせ or "simulate.p.value=TRUE"を使ってみろ)が出た場合は
fisher.test(dat, workspace=100000000)
とかしてworkspaceを増やすか(数字を増やせばもっと増える)
fisher.test(dat, simulate.p.value=TRUE)
としてシミュレートするか。


2項目(データがXとY)が多群、なら使えるかも。それでも、もしくはもっと多くの項目の多群では、普通に(上で)かけてボンフェローニなり、Hochbergの方法も大変ではないのでHochbergなり、手でやればよいだけかも。

エクセルでのテーブル様式
Group1Group2Group3...
X数値数値数値
Y数値数値数値
Z数値数値数値


1. Rに
install.packages("RVAideMemoire")
とコピペしリターン。インストール済みなら不要。

2. Rに
library(RVAideMemoire)
とコピペ、リターン。

2. Rに
tab <- matrix(c(*,*,*,*,*,*), nrow=**)
とコピペ。データの数値(*)を入力し(解析するテーブルを左から縦に読んでいく)と、テーブルの行数(**)を入力し、リターン。

2. Rに
dimnames(tab) <- list(c("X","Y","Z"), c("Group1","Group2","Group3"))
とコピペ。行と列に応じて"X","Y","Z"と"Group1","Group2","Group3"を整える。

3. Rに
fisher.multcomp(tab, p.method="none")
or
fisher.multcomp(tab, p.method="holm")
or
fisher.multcomp(tab, p.method="hochberg")
と、補正方法(有意差の出やすさ hochberg > holm)に応じてコピペし、リターン。




多数の測定項目で探す場合はテーブルを作った方が楽かも。
項目数と手間との兼ね合いで。けれど一番楽なのは、外れ値とされたデータを
大きい順や小さい順にデータをみて、自分で見つけることかも。

1項目での検索
エクセルでのテーブル様式

測定項目
数値
数値
数値
数値


1.Rに
dat <- scan(pipe("pbpaste"))
Winの場合は dat <- scan("clipboard")
とコピペ。リターンはまだ押さない。

2. テーブルの数値部分だけをコピーしリターン。

3. Rに
boxplot(dat)
とコピペしリターン。箱ひげ図の上や下に丸があれば外れ値。
外れ値の分布パターンで以下の3つ(4-1, 4-2, 4-3)のどれかを行う。

4-1. 外れ値が上にある場合は、Rに
high <- quantile(dat, 3/4) + IQR(dat) * 1.5
とコピペしリターン。続いて
dat[dat > high]
とコピペしリターン。外れ値が表示される。

4-2. 外れ値が下にある場合は、Rに
low <- quantile(dat, 1/4) - IQR(dat) * 1.5
とコピペしリターン。続いて
dat[dat < low]
とコピペしリターン。外れ値が表示される。

4-3. 外れ値が両方にある場合は、Rに
high <- quantile(dat, 3/4) + IQR(dat) * 1.5
とコピペしリターン。続いて
low <- quantile(dat, 1/4) - IQR(dat) * 1.5
とコピペしリターン。そして
dat[(dat < low) | (dat >high)]
とコピペしリターン。外れ値が表示される


多項目での検索
エクセルでのテーブル様式

ID 項目1 項目2 ...
ID1 数値 数値 ...
ID2数値数値...
ID3数値数値...
ID4数値数値...


1.Rに
dat <- read.table(pipe("pbpaste"), header=T)
Winの場合は dat <- read.table("clipboard", header=T)
とコピペ。リターンはまだ押さない。

2. テーブルを1行目からコピーして、Rでリターン。

3. Rに
boxplot(dat)
とコピペしリターン。箱ひげ図の上や下に丸があれば外れ値。
外れ値の分布パターンで以下の3つ(4-1, 4-2, 4-3)のどれかを行う。

4-1. ある項目で外れ値が上にある場合は、Rに
high <- quantile(dat$項目, 3/4) + IQR(dat$項目) * 1.5
とコピペし、上記の"項目"を調べたい項目名に変更してリターン。続いて
dat[dat$項目 > high, ]
とコピペし、上記の"項目"を調べたい項目名に変更してリターン。外れ値が表示される。

4-2. ある項目で外れ値が下にある場合は、Rに
low <- quantile(dat$項目, 1/4) - IQR(dat$項目) * 1.5
とコピペし、上記の"項目"を調べたい項目名に変更してリターン。続いて
dat[dat$項目 < low, ]
とコピペし、上記の"項目"を調べたい項目名に変更してリターン。外れ値が表示される。

4-3. ある外れ値が両方にある場合は、Rに
high <- quantile(dat$項目, 3/4) + IQR(dat$項目) * 1.5
とコピペし、上記の"項目"を調べたい項目名に変更してリターン。続いて
low <- quantile(dat$項目, 1/4) - IQR(dat$項目) * 1.5
とコピペし、上記の"項目"を調べたい項目名に変更してリターン。そして
dat[(dat$項目 < low) | (dat$項目 > high), ]
とコピペし、上記の"項目"を調べたい項目名に変更してリターン。外れ値が表示される。

<- read.table(pipe("pbpaste")
クリップボードのデータをテーブルとして格納 (Mac)

<- scan(pipe("pbpaste"))
クリップボードのデータを数字として格納 (Mac)

header = T: データの1行目はヘッダーだという指定(Ture)

anovakun(dat, "AsB", long = T, nopost = T, peta = T)
dat: データ名
要因の数だけ、テーブルの左からABC…と名付ける。sの前が群間の要因、sの後ろが反復要因
nopost: main effect間のpost hoc testいらない(TrueのT)
peta = T, geta = T, s2d = T: ANOVA君を参照 [URL]

since 2001.3.1