巻末資料 / 付録B

付録B Rの使い方 — インストールから基本操作・統計関数まで

このページで学ぶこと

この付録では、無料の統計ソフト R の最低限の使い方を紹介します。インストールから、ベクトルやデータフレームの基本操作、そして $t$ 検定・回帰・分散分析といった2級の主役たちを実行する関数までを、短いコード例と出力イメージで一気通貫に見ていきます。

ねらいは「自分の手で計算した結果を、ソフトでも確認できる」ようになること。手計算とソフトの両輪で理解すると、式の意味がぐっと立体的になります。試験対策としても、ソフトが吐く出力の読み取りは本編とそのまま地続きです。気軽に手元のR(やオンライン環境)で打ち込みながら読んでみてください。

さえちゃん
さえ

最初に大事なお知らせ! Rの「操作」そのものは統計検定2級の試験範囲ではないから、コードを暗記する必要はないよ。でも、統計ソフトが出力した結果の「読み取り」は出題範囲なんだ(だから回帰や分散分析の出力の読み方は本編5-6などに残してあるよ)。この付録は、その出力がどう作られるのかを体験して、本編の読み取りをもっと腑に落とすためのものだと思ってね!

1. はじめに ─ 試験範囲との関係

POINT

Rの操作(インストール・コマンドの打ち方)は統計検定2級の試験範囲外です。本付録の内容を覚えなくても合格には影響しません。ただし、統計ソフトの「出力の読み取り」は出題範囲です。たとえば回帰分析の係数・標準誤差・$t$ 値・$p$ 値の表や、分散分析表(ANOVA表)を読む問題は実際に出ます。そのため、出力の読み取りは本編(5-6 回帰の有意性 など)に残し、ここでは「その出力を生み出す道具」としてRを軽く紹介する、という位置づけです。

なぜRなのか。Rは統計解析のために生まれた無料・オープンソースの言語で、$t$ 検定も回帰も分散分析も、関数を1つ呼ぶだけで実行できます。手計算で導いた式が、ソフトでは一瞬で同じ答えを返す──この一致を自分で確かめると、理解が一段深まります。本編の数式と照らし合わせながら読み進めましょう。

2. インストール ─ CRAN と RStudio

Rを使う準備は2段階です。まずR本体を入れ、次に(必須ではありませんが)操作しやすくする統合環境RStudioを入れます。

POINT

導入の流れ──

  • R本体:公式配布サイト CRAN(The Comprehensive R Archive Network)から、自分のOS(Windows / macOS / Linux)向けのインストーラをダウンロードして実行します。
  • RStudio:コード入力・結果表示・グラフ・履歴を1画面にまとめた無料の開発環境。R本体を入れたあとに導入します。初学者はRStudioを使うと快適です。

最近はインストール不要でブラウザから試せるオンライン実行環境もあります。「とりあえず触ってみたい」段階ならそれでも十分です。

準備ができたら、コンソール(入力欄)に式を打ってみましょう。Rは電卓のようにそのまま計算してくれます。行頭の > はRが入力を待っているしるし(プロンプト)で、自分で打つ必要はありません。出力行の先頭の [1] は「結果の1番目の要素」という意味の目印です。

> 2 + 3 * 4
[1] 14
> sqrt(16)
[1] 4

3. 基本操作 ─ 代入・ベクトル・データフレーム

Rの土台になる3つの道具を押さえます。代入ベクトルデータフレームです。

代入 <- とベクトル c()

値に名前をつけて保存することを代入といい、Rでは矢印 <- を使います(= でも動きますが、Rでは <- が伝統的です)。複数の値をまとめた並びをベクトルと呼び、c() 関数で作ります(c は combine の頭文字)。

> x <- c(58, 62, 55, 71, 64)   # 5人の点数をベクトルに
> x
[1] 58 62 55 71 64
> length(x)                    # 要素数
[1] 5
> x * 2                        # 各要素を2倍(ベクトルごと計算)
[1] 116 124 110 142 128

Rの大きな特徴は、ベクトルにそのまま演算すると要素ごとに一括で計算してくれる点です。ループを書かずに「全員の点数を2倍」といった処理が一行で済みます。

データフレーム

データフレームは、表計算ソフトのような「行=個体、列=変数」の表です。列ごとに数値・文字など型が違ってよく、実データの分析はたいていこの形で扱います。

> df <- data.frame(
+   name  = c("A", "B", "C", "D"),
+   score = c(55, 58, 62, 71),
+   hours = c(2, 3, 5, 6)
+ )
> df
  name score hours
1    A    55     2
2    B    58     3
3    C    62     5
4    D    71     6
> df$score                     # 列の取り出しは $ で
[1] 55 58 62 71

CSVファイルの読み込み read.csv()

実際の分析では、外部のCSVファイルを読み込んでデータフレームにするのがふつうです。read.csv() を使います。

> df <- read.csv("data.csv")    # CSVを読み込みデータフレームに
> head(df)                      # 先頭の数行を確認
> summary(df)                   # 各列の要約統計量をまとめて表示
さえちゃん
さえ

3点セットを覚えよう! 代入は <-、ベクトルは c()、表はデータフレーム。列を取り出すときは df$score みたいに $ を使うよ。あとは head() で中身をチラ見、summary() でざっくり要約──この流れがデータ分析のいちばん最初の一歩なんだ!

4. よく使う統計関数 ─ 記述統計

まずは第1章で学んだ記述統計の関数です。ベクトルを渡すと一発で返ってきます。

関数計算する量本編との対応
mean(x)平均第1章 代表値
median(x)中央値第1章 代表値
var(x)不偏分散($n-1$ で割る)第1章 散らばり
sd(x)標準偏差(不偏分散の平方根)第1章 散らばり
quantile(x)四分位数・分位点第1章 5数要約
cor(x, y)相関係数第1章 相関
> x <- c(58, 62, 55, 71, 64)
> mean(x)
[1] 62
> var(x)        # 不偏分散(n-1=4 で割る)
[1] 37.5
> sd(x)
[1] 6.123724
> quantile(x)
   0%   25%   50%   75%  100%
   55    58    62    64    71
POINT

注意したいのは var()sd() です。Rはこれらを不偏分散($n-1$ で割る版)で計算します。本編 1-4 で確認した「分散は $n-1$ で割る」がそのまま実装されているわけです。手計算と突き合わせるときは、$n$ で割る版(標本分散)と混同しないよう気をつけましょう。

5. よく使う統計関数 ─ 検定・推定

ここからが2級の主役、推定と検定の関数です。それぞれ本編のどの章に対応するかも添えます。

t.test() ─ 母平均のt検定・信頼区間

母分散未知の母平均の検定(本編 4-4)と信頼区間(3-7)を、まとめて返してくれます。

> x <- c(58, 62, 55, 71, 64)
> t.test(x, mu = 60)            # 帰無仮説 μ = 60 の検定

	One Sample t-test

data:  x
t = 0.7303, df = 4, p-value = 0.5057
alternative hypothesis: true mean is not equal to 60
95 percent confidence interval:
 54.39639 69.60361
sample estimates:
mean of x
       62
POINT

出力の読み方──t は検定統計量、df は自由度(ここでは $n-1=4$)、p-value は両側の $p$ 値です。$p \approx 0.51$ は有意水準 $5\%$ より大きいので「母平均は $60$ と異なるとはいえない」と判断します。下の 95 percent confidence interval が母平均の $95\%$ 信頼区間で、本編 3-7 で手計算する区間とぴたり一致します。

prop.test() ─ 母比率の検定・区間推定

母比率の検定(本編 4-5 など)に使います。たとえば「$200$ 回中 $115$ 回成功、比率は $0.5$ か?」を調べる場合です。

> prop.test(115, 200, p = 0.5)  # 成功数, 試行数, 帰無の比率
# 出力には p-value と 95% 信頼区間が含まれる

lm()summary() ─ 回帰分析

lm()(linear model)は回帰の主役です。y ~ x という書き方で「$y$ を $x$ で説明する」モデルを指定し、summary() で結果の表を表示します。これは本編 5-6 の出力読み取りと直結します。

> model <- lm(score ~ hours, data = df)
> summary(model)

Call:
lm(formula = score ~ hours, data = df)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   47.100      3.774  12.479   0.0064 **
hours          3.600      0.877   4.103   0.0546 .
---
Residual standard error: 2.775 on 2 degrees of freedom
Multiple R-squared:  0.8938,	Adjusted R-squared:  0.8407
F-statistic: 16.83 on 1 and 2 DF,  p-value: 0.05461
POINT

この出力の読み取りこそ試験範囲です。Estimate が回帰係数(傾き $3.6$・切片 $47.1$)、Std. Error が標準誤差、t value が係数の検定統計量、Pr(>|t|) がその $p$ 値(本編 5-3)。Multiple R-squared は決定係数 $R^2$、Adjusted R-squared は自由度調整済み決定係数、最下行の F-statistic は回帰全体の有意性の検定(本編 5-6)です。数値そのものより、どの欄が何を表すかを本編と対応づけて押さえましょう。

anova() ─ 分散分析表

anova() は分散分析表(ANOVA表)を出します。回帰モデルや、群を表す要因に対して使い、本編 5-8 1元配置分散分析 の表と対応します。

> anova(model)
Analysis of Variance Table

Response: score
          Df Sum Sq Mean Sq F value  Pr(>F)
hours      1 129.60  129.60  16.831 0.05461 .
Residuals  2  15.40    7.70

Df が自由度、Sum Sq が平方和(変動)、Mean Sq が平均平方(平方和÷自由度)、F value が $F$ 比、Pr(>F) がその $p$ 値です。本編で「変動を要因と残差に分け、平均平方の比が $F$」と学んだ流れが、そのまま表になっています。

chisq.test()cor.test()

第6章のχ²検定と、相関係数の検定(本編 5-7)に対応する関数です。

> chisq.test(table_data)        # 適合度・独立性の検定(第6章)
# 出力に X-squared(χ²統計量), df, p-value

> cor.test(df$score, df$hours)  # 相関係数の検定(本編 5-7)
# 出力に相関係数 cor, t 値, df, p-value, 信頼区間
関数役割本編との対応
t.test()母平均のt検定・信頼区間3-7 / 4-4
prop.test()母比率の検定・区間推定3-8 / 4-5
lm() + summary()回帰分析(係数・$R^2$・有意性)5-1 / 5-3 / 5-6
anova()分散分析表5-6 / 5-8
chisq.test()適合度・独立性の検定6-3 / 6-4
cor.test()相関係数の検定5-7

6. 結論 ─ 手計算とソフトの両輪で

本付録で見たように、Rは1つの関数で検定や回帰を実行し、結果を表にまとめてくれます。試験ではこの表の読み取りが問われます──どの欄が係数で、どこが $p$ 値で、どれが決定係数か。本編で式を導いておけば、出力の各欄が「あの式のどこか」だとすぐ分かります。

POINT

ふたたび確認します。Rの操作は試験に出ませんが、出力の読み取りは出ます。だからこの付録のゴールは、コードを暗記することではなく、「summary(lm(...))anova() が吐く表の意味を、本編の数式と結びつけて読めるようになること」です。手で計算した結果とソフトの出力が一致する体験を一度しておくと、出力読み取りの問題が驚くほど解きやすくなります。

まとめ

付録B、ポイントを整理します。

これで巻末資料は終わりです。お疲れさまでした。数表の引き方(付録A)とソフトの出力読み取り(本付録)が手に入れば、本編で導いた式に実データを通す準備は万全です。あとは過去問で「式 → 表 → 判断」の流れを繰り返し、本番の感覚を磨いていきましょう。

さえちゃん
さえ

Rの世界、のぞいてみてどうだった? もう一度だけ──操作は試験に出ない、でも出力の読み取りは出るよ! lm() の表で「ここが係数、ここが $p$ 値」とパッと言えるようになれば完璧。本編の数式とソフトの出力、両方から眺めると理解が立体的になるよ。講座はここまで、本当にお疲れさま!