« 2022年3月 | トップページ | 2022年5月 »

2022年4月30日 (土)

[R]t分布における分布関数の値を求める

pt関数を使う。以下は自由度5のt分布において、確率変数Xが2における上側(=0.05096974…)、両側(=0.1019395…)の分布関数の値を求めた例。

> pt(2, 5, lower.tail = FALSE)
[1] 0.05096974
> 2 * pt(2, 5, lower.tail = FALSE)
[1] 0.1019395

2022年4月27日 (水)

[R]t分布における確率密度関数の値を求める

dt関数を使う。以下は確率変数が-5~5の範囲において、自由度1と5のt分布における確率密度関数をグラフにした例。

> xx <- seq(-5, 5, 0.1)
> plot(xx, dt(xx, 5), type = "l", col = "blue")
> lines(xx, dt(xx, 1), col = "black")
> text(1.5, 0.3, "n=5", col = "blue")
> text(2, 0.2, "n=1")

Dt

2022年4月26日 (火)

[R]t分布におけるパーセント点を求める

qt関数を使う。以下は自由度5のt分布において、上側5%点(=2.015048…)、両側5%点(=2.570582…)を求めた例。

> qt(1 - 0.05, 5)
[1] 2.015048
> qt(1 - 0.05 / 2, 5)
[1] 2.570582
 

2022年4月25日 (月)

女子大生200人の身長を3cmきざみで整理した度数分布表(統計解析のはなし、p.11)

> dtf <- read.csv("table1-1-1.csv", header = TRUE)
> w <- 3
> sumn <- 0
> for (i in seq(142, 169, w)) {
+ n <- length(which(dtf$height > i & dtf$height <= i + w))
+ cat(sprintf("%d~%d %2d\n", i, i + w, n))
+ sumn <- sumn + n
+ }
142~145 1
145~148 5
148~151 15
151~154 29
154~157 51
157~160 41
160~163 31
163~166 17
166~169 9
169~172 1
> cat(sprintf("計 %d\n", sumn))
計 200

2022年4月18日 (月)

[R]女子大生200人の身長を1cmきざみで整理した度数分布表(統計解析のはなし、p.10)

> dtf <- read.csv("table1-1-1.csv", header = TRUE)
> for (i in 143:170) {
+ cat(sprintf("%d %2d\n", i, length(which(dtf$height == i))))
+ }
143 1
144 0
145 0
146 2
147 2
148 1
149 2
150 4
151 9
152 4
153 17
154 8
155 16
156 22
157 13
158 12
159 15
160 14
161 8
162 15
163 8
164 7
165 7
166 3
167 2
168 4
169 3
170 1

2022年4月17日 (日)

[R]t分布のグラフ(統計解析のはなし、p.123)

> x <- seq(-3, 3, 0.1)
> plot(0, 0, xlim = c(-3, 3), ylim = c(0, 0.4), xlab = "", ylab = "", type = "n")
> for (i in c(1, 2, 5, 100)) {
+ lines(x, dt(x, i))
+ text(0.4, dt(0, i), sprintf("n=%d", i))
+ }

Fig2314

2022年4月13日 (水)

[R]t分布のパーセント点の略表(両側)(入門 統計解析 医学・自然科学編、p.35)

> for (i in 1:20) {
+ cat(sprintf("%2d %5.3f %6.3f %6.3f\n", i, qt(0.95, i), qt(0.975, i), qt(0.995, i)))
+ }
1 6.314 12.706 63.657
2 2.920 4.303 9.925
3 2.353 3.182 5.841
4 2.132 2.776 4.604
5 2.015 2.571 4.032
6 1.943 2.447 3.707
7 1.895 2.365 3.499
8 1.860 2.306 3.355
9 1.833 2.262 3.250
10 1.812 2.228 3.169
11 1.796 2.201 3.106
12 1.782 2.179 3.055
13 1.771 2.160 3.012
14 1.761 2.145 2.977
15 1.753 2.131 2.947
16 1.746 2.120 2.921
17 1.740 2.110 2.898
18 1.734 2.101 2.878
19 1.729 2.093 2.861
20 1.725 2.086 2.845

2022年4月12日 (火)

[R]正規分布の分布関数の値を得る

pnorm関数を使う。平均が0、標準偏差が1の正規分布における-1における分布関数は以下のとおり。

> pnorm(-1, mean = 0, sd = 1)
[1] 0.1586553

この0.1586553…という値は、以下の確率密度関数のグラフにおける、緑色で塗った箇所の面積である。

> x <- seq(-5, 5, 0.1)
> y <- dnorm(x, mean = 0, sd = 1)
> xp <- seq(-5, -1, 0.1)
> yp <- dnorm(xp, mean = 0, sd = 1)
> plot(x, y, type = "l")
> polygon(c(xp, -1), c(yp, 0), col = "green")

Pnorm

この関数を使うと、いわゆる1σ(いちしぐま)の範囲(平均値±標準偏差)の値が出る確率を簡単に求めることができる。分布関数とは、確率変数が指定の値より小さい値をとるときの確率であるため、σ(上記の例では1)における分布関数の値から、-σ(上記の例では-1)における分布関数の値を引けばよい。

> pnorm(1, mean = 0, sd = 1) - pnorm(-1, mean = 0, sd = 1)
[1] 0.6826895

標準正規分布(平均0、標準偏差1)において、平均値±標準偏差の範囲になる確率は0.6826895…(約68%)である。

2022年4月11日 (月)

[R]標準正規分布 N(0, 1^2) の値とグラフ(統計解析のはなし、pp.103-104)

> x <- seq(-4.0, 4.0, 0.5)
> y <- dnorm(x, mean = 0.0, sd = sqrt(1))
> for (i in 1:length(x)) cat(sprintf("%4.1f %8.6f\n", x[i], y[i]))
-4.0 0.000134
-3.5 0.000873
-3.0 0.004432
-2.5 0.017528
-2.0 0.053991
-1.5 0.129518
-1.0 0.241971
-0.5 0.352065
0.0 0.398942
0.5 0.352065
1.0 0.241971
1.5 0.129518
2.0 0.053991
2.5 0.017528
3.0 0.004432
3.5 0.000873
4.0 0.000134
> plot(x, y, type = "l")
> points(x, y, pch = 20, col = "black")

Fig231

2022年4月 8日 (金)

[R]正規分布の確率密度関数の値を得る

dnorm関数を使う。よく見かける平均0、標準偏差が1の正規分布に従う、確率密度関数のグラフは以下のとおり。

> x <- seq(-5, 5, 0.1)
> y <- dnorm(x, mean = 0, sd = 1)
> plot(x, y, type = "l")

Dnorm

この正規分布で確率変数(横軸)が0のときの確率密度関数の値(縦軸の値)は、図より0.4程度と推察されるが、それをより正確に求めるにはdnorm関数で次のようにする。

> dnorm(0.0, mean = 0, sd = 1)
[1] 0.3989423

dnorm関数は、meanオプションを省略すると0、sdオプションを省略すると1が指定されたものとして計算をする。よって、この例では次のようにしても同じ。

> dnorm(0.0)
[1] 0.3989423

2022年4月 4日 (月)

[R]データフレームから列の値が一致する行の行番号を得る

which関数を使う。以下、取得例。

> s <- c("h", "e", "l", "l", "o")
> n <- c(3, 1, 4, 1, 5)
> dtf <- data.frame(s, n)
> dtf
s n
1 h 3
2 e 1
3 l 4
4 l 1
5 o 5
> idx <- which(dtf$s == "e")
> idx
[1] 2
> idx <- which(dtf$s == "l")
> idx
[1] 3 4
> idx <- which(dtf$s == "l" & dtf$n == 1)
> idx
[1] 4
> idx <- which(dtf$s == "l" & dtf$n == 5)
> idx
integer(0)

検索対象の列を列名を指定したくない場合は、連番で指定する。

> idx <- which(dtf[, 1] == "l" & dtf[, 2] == 1)
> idx
[1] 4

« 2022年3月 | トップページ | 2022年5月 »

無料ブログはココログ

■■

■■■