2026年8月10日月曜日

独立2群のt検定

Rによる独立2群のt検定

 CSV形式で,以下のようなコレステロールと飲用しているサプリメントの種類に関するデータがあったとします(これをexample_a.csvというファイル名で保存します).

choles,suppl

118,A

132,A

120,A

115,A

113,A

129,B

126,B

134,B

135,B

131,B

このデータを用いて,独立2群のt検定を行うには以下のようなコマンドを実行します.

まずは,データのcsvファイル(example_a.csv)を読み込み,"ex.a"という名前をつけます.

> ex.a <- read.csv("example_a.csv")

ex.a にデータが格納されているかを確認しておきます.

> ex.a

   choles suppl

1     118     A

2     132     A

3     120     A

4     115     A

5     113     A

6     129     B

7     126     B

8     134     B

9     135     B

10    131     B

データの構造を確認するための 関数str を使って,データを見てみます.

> str(ex.a)

'data.frame': 10 obs. of  2 variables:

 $ choles: int  118 132 120 115 113 129 126 134 135 131

 $ suppl : chr  "A" "A" "A" "A" ...

ここで,以下の文章はex.aがデータフレーム型であり,2つの変数からなっていて,それぞれ10個の観測値を持つと書かれています.これは正しいのでOKです.

'data.frame': 10 obs. of  2 variables:


続いて,変数に関する情報です.最初の"choles"は,int(整数)型の数値であることを示していて,各値も示されています.続いて,2つ目の変数"suppl"は,chr(文字列)型の変数として読み込まれています.

 $ choles: int  118 132 120 115 113 129 126 134 135 131

 $ suppl : chr  "A" "A" "A" "A" ...

"suppl"がchr(文字列)型のままでは解析ができないので,以下のようにfactor関数を使って,強制的に因子型に読み直すように指示します.

> ex.a $ suppl <- factor(ex.a $suppl)

再度,確認してみると,int型で認識されていることが確認できます.

> str(ex.a)

'data.frame': 10 obs. of  2 variables:

 $ choles: int  118 132 120 115 113 129 126 134 135 131

 $ suppl : Factor w/ 2 levels "A","B": 1 1 1 1 1 2 2 2 2 2


ここから,t検定に入ります.まずは,関数attachを使ってデータフレーム"ex.a"の中を探索範囲とします.

> attach(ex.a)

t検定を行うには,以下のコマンドを実行します."choles"を応答変数(response variable),"suppl"を説明変数(explanatory variable)にモデル式(choles ~ suppl)として指定して,"var.equal=T"では,等分散を仮定してt検定を行うという指示を出しています.ここで,"T"は"TRUE"を意味し,そのように書いても問題ありません.

> t.test(choles ~ suppl, var.equal=T)


Two Sample t-test


data:  choles by suppl

t = -3.0732, df = 8, p-value = 0.01527

alternative hypothesis: true difference in means between group A and group B is not equal to 0

95 percent confidence interval:

 -19.954001  -2.845999

sample estimates:

mean in group A mean in group B 

          119.6           131.0 

関数attachを使わない方法としては"$"を使う方法があります.

> t.test(ex.a$choles ~ ex.a$suppl, var.equal=T)


Two Sample t-test


data:  ex.a$choles by ex.a$suppl

t = -3.0732, df = 8, p-value = 0.01527

alternative hypothesis: true difference in means between group A and group B is not equal to 0

95 percent confidence interval:

 -19.954001  -2.845999

sample estimates:

mean in group A mean in group B 

          119.6           131.0 

得られる結果は,当然同じになります.

2026年8月9日日曜日

Jupyter Notebook でRを使う際の設定メモ

 導入にあたって,作業がダブっている可能性もありますが,実施した事を列挙しておきます.実施したのは,Apple M3が搭載されているMac Book Airです.

まずは,ターミナルを立ち上げて,Homebrew経由でZMQをインストールしました.

% brew update

% brew install zmq

必要ないとは思いますが,アップグレードもかけておきます.

% brew upgrade zmq


続けて,R パッケージを立ち上げて以下のコマンドを実行します.

> install.packages('devtools')

このコマンドを実施すると,以下のようにどこからダウンロードを行うか選択する必要があります.

--- Please select a CRAN mirror for use in this session ---

ここでは,Japanを選択しました.
続いて,以下のコマンドを実行します.

> install.packages(c('repr', 'IRdisplay', 'IRkernel'), type = 'source')

> IRkernel::installspec()


以上のコマンドを実行した後に,ターミナルからJupyter Notebookを立ち上げます.

% Jupyter-notebook

そして,Jupyter Notebookの右上の"New"プルダウンを開いてRがあれば成功です.