---
title: "統計データ解析"
subtitle: "第6講 演習"
date: "`r Sys.Date()`"
format:
    html: 
      toc: true
      html-math-method: katex
      self-contained: true
      grid: 
        margin-width: 350px
execute: 
  echo: true
  warning: false
reference-location: margin
citation-location: margin
tbl-cap-location: margin
fig-cap-location: margin
editor: visual
editor_options: 
  chunk_output_type: console
---

## 準備

以下で利用する共通パッケージを読み込む．

```{r}
library(conflicted) # 関数名の衝突を警告
conflicts_prefer(   # 優先的に使う関数を指定
  dplyr::filter(),
  dplyr::select(),
  dplyr::lag(),
  )
library(tidyverse)  
library(broom)      # 解析結果を tibble 形式に集約
library(gt)         # 表の作成
library(gtsummary)  # 分析結果の表の作成
library(ggfortify)  # 分析結果の描画
```

## 人工データによる主成分分析

### 問題

数値実験により主成分分析の考え方を確認しなさい．

-   以下のモデルに従う人工データを生成する

    ``` r
    #' 観測データ (2次元) の作成 (aのスカラー倍に正規乱数を重畳)
    a <- c(1, 2)/sqrt(5) # 主成分負荷量 (単位ベクトル)
    n <- 100 # データ数
    toy_data <- tibble(runif(n, -1, 1) %o% a + rnorm(2*n, sd = 0.3))
    ```

-   観測データの散布図を作成

-   観測データから第1主成分負荷量を推定

    ``` r
    prcomp(toy_data) # 全ての主成分を計算する
    a_hat <- prcomp(toy_data)$rotation[,1] # 負荷量(rotation)の1列目が第1主成分
    ```

-   散布図上に主成分負荷量を描画

    ``` r
    geom_abline(slope = 傾き, intercept = 切片) # 指定の直線を追加できる  
    ```

```{r}

```

## 第1主成分の求め方

### 問題

第1主成分とGram行列の固有ベクトルの関係を調べなさい．

-   人工データを生成する

-   主成分分析を実行する

-   Gram 行列を計算し固有値・固有ベクトルを求める

    ``` r
    #' 中心化を行う
    X <- scale(toy_data, scale = FALSE)
    #' 詳細は '?base::scale' を参照
    #' Gram 行列を計算する
    G <- crossprod(X)
    #' 固有値・固有ベクトルを求める
    eigen(G) # 返り値 'values, vectors' を確認
    #' 詳細は '?base::eigen' を参照
    ```

```{r}

```

## 社会生活統計指標の分析

### 問題

都道府県別の社会生活統計指標のデータを用いて主成分分析を行いなさい．

-   データを読み込む

    ``` r
    js_data <- read_csv("data/japan_social.csv") |>
      mutate(Area = as_factor(Area)) # 地方区分を因子化
    ```

-   データの散布図行列を描く

-   各データの箱ひげ図を描き，変数の大きさを確認する

-   主成分負荷量を計算する

    ``` r
    js_pca <- prcomp(js_data[-c(1,7)], scale. = TRUE)
    #' '-c(1,7)' は都道府県名・地方区分を除く．関数 select() を利用することもできる
    #' 'scale.=TRUE' とすると変数を正規化してから解析する
    ```

```{r}

```
