atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
R入門
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
R入門
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
R入門
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • R入門
  • 統計解析

R入門

統計解析

最終更新:2025年01月01日 08:55

r-intro

- view
管理者のみ編集可

目次

  • 目次
  • 乱数
    • 乱数を発生させる
    • 一様分布する乱数を得る
    • 正規分布する乱数を得る
    • 乱数の発生を再現する
  • その他
    • 偏差平方和を標本数で割った分散と標準偏差を求めるための自作関数vari,stdをそれぞれ作る
    • データの標準化をする
    • 相関行列を求める
    • 分散共分散行列を求める

乱数

乱数を発生させる

runif関数を使う。第一引数には発生させる乱数の数を指定する。デフォルトでは、0~1の範囲の小数を返す。

> runif(5)
[1] 0.67853053 0.11993910 0.88077171 0.27966928 0.07728223
> d <- runif(1.e5)
> hist(d)

発生させる乱数の最小値と最大値は、それぞれminオプション、maxオプションで指定することができる。

> d <- runif(1000, min = 100, max = 300)
> hist(d)

一様分布する乱数を得る

runif関数を使う。runif関数は一様分布(指定の範囲内で各値が一様の確率で現れる分布)に基づく乱数を返す。第一引数に指定した個数の実数を返す。デフォルトでは0<x<1の範囲内の値を返すが、minオプションとmaxオプションに一様分布の範囲の両端の値をそれぞれ指定することができる。

マニュアルには「runif will not generate either of the extreme values unless max = min or max-min is small compared to min, and in particular not for the default arguments. 」とあり、原則両端の値は含まない乱数が返されることに注意。

> runif(6)
[1] 0.73539532 0.02306577 0.92723891 0.09129656 0.27582346 0.32496829
> runif(5, min = 0.5)
[1] 0.9989089 0.7668412 0.7744202 0.5232379 0.5672689
> runif(4, min = 0, max = 100)
[1] 78.59427 53.52239 65.26063 29.73860
> hist(runif(10 ^ 7), breaks = 100)

正規分布する乱数を得る

rnorm関数を使う。rnorm関数は正規分布に基づく乱数を返す。第一引数に指定した個数の実数を返す。デフォルトでは平均0、標準偏差1の正規分布の基づく乱数を返すが、meanオプションとsdオプションに正規分布の平均と標準偏差の値をそれぞれ指定することができる。

> rnorm(6)
[1]  0.8549655  1.6048736 -0.7680202 -0.6509009  0.3799471  1.4280449
> rnorm(6, mean = 10)
[1]  8.030706  9.324379  9.554407  9.463829 11.769583  8.810051
> rnorm(6, mean = 20, sd = 2)
[1] 19.10057 21.46614 20.83233 23.92880 22.03404 16.10972
> hist(rnorm(10 ^ 7, mean = 50, sd = 5), breaks = 40)

乱数の発生を再現する

runif関数などの乱数を発生させる関数を実行する前に、set.seed関数に任意の整数を与えて実行することで、同じ乱数を発生させることができるようになる。

以下の例のとおり、set.seed関数に3を与えて実行した後は、まったく同じ乱数が得られていることがわかる。

> runif(4)
[1] 0.41928296 0.26762217 0.04780944 0.10349305
> runif(4)
[1] 0.3140315 0.8006411 0.2293247 0.2129984
> set.seed(3)
> runif(4)
[1] 0.1680415 0.8075164 0.3849424 0.3277343
> runif(4)
[1] 0.6021007 0.6043941 0.1246334 0.2946009
> set.seed(4)
> runif(4)
[1] 0.585800305 0.008945796 0.293739612 0.277374958
> runif(4)
[1] 0.8135742 0.2604278 0.7244059 0.9060922
> set.seed(3)
> runif(4)
[1] 0.1680415 0.8075164 0.3849424 0.3277343
> runif(4)
[1] 0.6021007 0.6043941 0.1246334 0.2946009

その他

偏差平方和を標本数で割った分散と標準偏差を求めるための自作関数vari,stdをそれぞれ作る

以下は1~10の10個の数について、自作関数を作成して、それぞれ計算した例。dは標本(合計10個)、nは標本数。dssは偏差平方和。

> d <- 1:10
> n <- length(d)
> dss <- sum((d - mean(d)) ^ 2)
> dss
[1] 82.5
> dss / n
[1] 8.25
> vari <- function(d) sum((d - mean(d)) ^ 2 / length(d))
> vari(d)
[1] 8.25
> sqrt(dss / n)
[1] 2.872281
> std <- function(d) sqrt(sum((d - mean(d)) ^ 2 / length(d)))
> std(d)
[1] 2.872281

データの標準化をする

scale関数を使う。ただし、このscale関数では標準化への変換の際に、分散ではなく不偏分散(偏差平方和を「標本数-1」で割った値)を使うことに注意。

以下は、ベクトルでデータを与えた例。

> scale(c(1, 4, 9, 16,25))
           [,1]
[1,] -1.0341754
[2,] -0.7239228
[3,] -0.2068351
[4,]  0.5170877
[5,]  1.4478455
attr(,"scaled:center")
[1] 11
attr(,"scaled:scale")
[1] 9.66954

引数に行列を与えると、列ごとにデータの標準化を行う。

> mx <- matrix((1:20) ^ 2, 5, 4)
> mx
     [,1] [,2] [,3] [,4]
[1,]    1   36  121  256
[2,]    4   49  144  289
[3,]    9   64  169  324
[4,]   16   81  196  361
[5,]   25  100  225  400
> scale(mx)
           [,1]        [,2]        [,3]        [,4]
[1,] -1.0341754 -1.18262479 -1.21500315 -1.22911095
[2,] -0.7239228 -0.67015405 -0.65610170 -0.64967293
[3,] -0.2068351 -0.07884165 -0.04860013 -0.03511746
[4,]  0.5170877  0.59131240  0.60750157  0.61455548
[5,]  1.4478455  1.34030810  1.31220340  1.29934586
attr(,"scaled:center")
[1]  11  66 171 326
attr(,"scaled:scale")
[1]  9.66954 25.36730 41.15216 56.95173

不偏分散ではなく分散(偏差平方和を標本数で割った値)によるデータの標準化には、関数を自作する必要がある。以下は、標準偏差(偏差平方和を標本数で割った値の平方根)を求める自作関数stdと、分散によるデータの標準化を行う自作関数scaを使った例。

> std <- function(d) sqrt(sum((d - mean(d)) ^ 2) / length(d))
> sca <- function(d) (d - mean(d)) / std(d)
> sca(c(1, 4, 9, 16, 25))
[1] -1.1562432 -0.8093703 -0.2312486  0.5781216  1.6187405
> apply(mx, MARGIN = 2, sca)
           [,1]        [,2]        [,3]        [,4]
[1,] -1.1562432 -1.32221471 -1.35841482 -1.37418782
[2,] -0.8093703 -0.74925500 -0.73354400 -0.72635642
[3,] -0.2312486 -0.08814765 -0.05433659 -0.03926251
[4,]  0.5781216  0.66110736  0.67920741  0.68709391
[5,]  1.6187405  1.49851001  1.46708800  1.45271284

相関行列を求める

cor関数を使う。以下は、以下のデータで求めた例。

No, x1,  x2
1, 190, 235
2,  85,  97
3,  94,  85
4, 151, 186
> x1 <- c(190, 85, 94, 151)
> x2 <- c(235, 97, 85, 186)
> mx <- matrix(c(x1, x2), 4, 2)
> mx
     [,1] [,2]
[1,]  190  235
[2,]   85   97
[3,]   94   85
[4,]  151  186
> cor(mx)
          [,1]      [,2]
[1,] 1.0000000 0.9888381
[2,] 0.9888381 1.0000000

このcor(mx)で得られた行列が、相関行列。

分散共分散行列を求める

cov関数を使う。以下、計算例。

以下のデータで求める。

No, x1,  x2
1, 190, 235
2,  85,  97
3,  94,  85
4, 151, 186
> x1 <- c(190, 85, 94, 151)
> x2 <- c(235, 97, 85, 186)
> mx <- matrix(c(x1, x2), 4, 2)
> mx
     [,1] [,2]
[1,]  190  235
[2,]   85   97
[3,]   94   85
[4,]  151  186
> cov(mx)
     [,1]    [,2]
[1,] 2454 3527.00
[2,] 3527 5184.25

同様に、相関行列も求めてみる。相関行列を求めるにはcor関数を使う。

> cor(mx)
          [,1]      [,2]
[1,] 1.0000000 0.9888381
[2,] 0.9888381 1.0000000

名前:
コメント:
「統計解析」をウィキ内検索
LINE
シェア
Tweet
R入門
記事メニュー

メニュー

  • トップページ
  • Rとは
  • Rを使ってみる
  • 画面出力と入力
  • 変数とオブジェクト
  • ベクトル
  • 演算子と制御構文
  • 数と式
  • 文字と文字列
  • 正規表現
  • 日付と時刻
  • データフレーム
  • tidyverse
  • リスト
  • ファイルの入出力
  • ファイル・ディレクトリ
  • 実行とデバッグ
  • 数学
  • 行列
  • 関数
  • 統計学
  • 統計解析
  • 数値計算
  • 応用
  • 時系列解析
  • 地理空間情報
  • Rの操作
  • データベース
  • パッケージ

  • 環境
  • インターネット
  • 作図
  • 画像

  • 本の計算を再現
  • セイバーメトリクス
  • その他


ここを編集
記事メニュー2

更新履歴

取得中です。

ここを編集
最近更新されたページ
  • 14日前

    データフレーム
  • 17日前

    リスト
  • 41日前

    行列
  • 44日前

    tidyverse
  • 81日前

    インターネット
  • 93日前

    日付と時刻
  • 93日前

    応用
  • 93日前

    文字と文字列
  • 109日前

    変数とオブジェクト
  • 153日前

    その他
もっと見る
最近更新されたページ
  • 14日前

    データフレーム
  • 17日前

    リスト
  • 41日前

    行列
  • 44日前

    tidyverse
  • 81日前

    インターネット
  • 93日前

    日付と時刻
  • 93日前

    応用
  • 93日前

    文字と文字列
  • 109日前

    変数とオブジェクト
  • 153日前

    その他
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. R.E.P.O. 日本語解説Wiki
  3. シュガードール情報まとめウィキ
  4. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. SYNDUALITY Echo of Ada 攻略 ウィキ
  6. ソードランページ @ 非公式wiki
  7. 星飼いの詩@ ウィキ
  8. ドラゴンボール Sparking! ZERO 攻略Wiki
  9. GTA5 MADTOWN(β)まとめウィキ
  10. シミュグラ2 @ ウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  6. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  7. 発車メロディーwiki
  8. 検索してはいけない言葉 @ ウィキ
  9. MadTown GTA (Beta) まとめウィキ
  10. オレカバトル アプリ版 @ ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  3. 金 - アニヲタWiki(仮)
  4. 868 - ストグラ まとめ @ウィキ
  5. シャア専用ヅダ - アニヲタWiki(仮)
  6. ジロリアンコピペ - ラーメン二郎 wiki
  7. モンスター一覧_第2章 - モンスター烈伝オレカバトル2@wiki
  8. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  9. ロスサントス警察 - ストグラ まとめ @ウィキ
  10. 参加者一覧 - MadTown GTA (Beta) まとめウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.