My Notes

統計学とかR(R言語)とかPython3の覚え書きとか走り書きとか。 座右の銘にしたい: All work and no play makes Jack a dull boy.

相対度数、累積相対度数をR(R言語)で 手計算とcumsum()

Rコード

#
# 相対度数、累積相対度数、cumsum()
# 使用するデータと計算式は、『ナースのための統計学 第2版」p.19~
#




血圧測定時間_秒 <- data.frame(時間 = c(94, 99, 49, 80, 175,
                                    102, 127, 38, 56, 18,
                                    83, 82, 105, 63, 111,
                                    62, 80, 78, 116, 88,
                                    26, 111, 134, 79, 107,
                                    126, 58, 123, 75, 52,
                                    108, 62, 119, 109, 71,
                                    30, 101, 92, 92, 82,
                                    119, 94, 92, 94, 83))

血圧測定時間_秒




summary(血圧測定時間_秒)




# 文字化けするなら
par(family = "Osaka")

x <- hist(血圧測定時間_秒$時間, breaks = seq(0, 180, 10), right = FALSE,
        xlab = "血圧測定時間 (秒)", ylab = "度数 (人)",
        main = "血圧測定時間の度数分布表 (ヒストグラム)",
        col = "steelblue")
x




# 相対度数
# 計算式 相対度数 = ((その階級の度数) / (全体の人数)) * 100
#
その階級の度数 <- x$counts
その階級の度数

全体の人数 <- length(血圧測定時間_秒$時間)
全体の人数

相対度数 <- (その階級の度数 / 全体の人数) * 100
相対度数
round(相対度数, 1)




# 累積相対度数
# 計算式 累積相対度数 = ((各階級の累積度数) / (全体の人数)) * 100
#
各階級の累積度数 <- cumsum(その階級の度数)
各階級の累積度数

全体の人数

累積相対度数 <- (各階級の累積度数 / 全体の人数) * 100
累積相対度数
round(累積相対度数, 1)

#
# cumsum()を使用すれば楽に計算できる
# 累積相対度数 <- round(cumsum(相対度数), 1)
# 累積相対度数
#

R Console

> #
> # 相対度数、累積相対度数、cumsum()
> # 使用するデータと計算式は、『ナースのための統計学 第2版」p.19~
> #
> 
> 
> 
> 
> 血圧測定時間_秒 <- data.frame(時間 = c(94, 99, 49, 80, 175,
+                                     102, 127, 38, 56, 18,
+                                     83, 82, 105, 63, 111,
+                                     62, 80, 78, 116, 88,
+                                     26, 111, 134, 79, 107,
+                                     126, 58, 123, 75, 52,
+                                     108, 62, 119, 109, 71,
+                                     30, 101, 92, 92, 82,
+                                     119, 94, 92, 94, 83))
> 
> 血圧測定時間_秒
   時間
1    94
2    99
3    49
4    80
5   175
6   102
7   127
8    38
9    56
10   18
11   83
12   82
13  105
14   63
15  111
16   62
17   80
18   78
19  116
20   88
21   26
22  111
23  134
24   79
25  107
26  126
27   58
28  123
29   75
30   52
31  108
32   62
33  119
34  109
35   71
36   30
37  101
38   92
39   92
40   82
41  119
42   94
43   92
44   94
45   83
> 
> 
> 
> 
> summary(血圧測定時間_秒)
      時間       
 Min.   : 18.00  
 1st Qu.: 71.00  
 Median : 92.00  
 Mean   : 87.67  
 3rd Qu.:108.00  
 Max.   :175.00  
> 
> 
> 
> 
> # 文字化けするなら
> par(family = "Osaka")
> 
> x <- hist(血圧測定時間_秒$時間, breaks = seq(0, 180, 10), right = FALSE,
+         xlab = "血圧測定時間 (秒)", ylab = "度数 (人)",
+         main = "血圧測定時間の度数分布表 (ヒストグラム)",
+         col = "steelblue")
> x
$breaks
 [1]   0  10  20  30  40  50  60  70  80  90 100 110 120 130 140 150 160 170 180

$counts
 [1] 0 1 1 2 1 3 3 4 7 7 6 5 3 1 0 0 0 1

$density
 [1] 0.000000000 0.002222222 0.002222222 0.004444444 0.002222222 0.006666667 0.006666667 0.008888889
 [9] 0.015555556 0.015555556 0.013333333 0.011111111 0.006666667 0.002222222 0.000000000 0.000000000
[17] 0.000000000 0.002222222

$mids
 [1]   5  15  25  35  45  55  65  75  85  95 105 115 125 135 145 155 165 175

$xname
[1] "血圧測定時間_秒$時間"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"
> 
> 
> 
> 
> # 相対度数
> # 計算式 相対度数 = ((その階級の度数) / (全体の人数)) * 100
> #
> その階級の度数 <- x$counts
> その階級の度数
 [1] 0 1 1 2 1 3 3 4 7 7 6 5 3 1 0 0 0 1
> 
> 全体の人数 <- length(血圧測定時間_秒$時間)
> 全体の人数
[1] 45
> 
> 相対度数 <- (その階級の度数 / 全体の人数) * 100
> 相対度数
 [1]  0.000000  2.222222  2.222222  4.444444  2.222222  6.666667  6.666667  8.888889 15.555556
[10] 15.555556 13.333333 11.111111  6.666667  2.222222  0.000000  0.000000  0.000000  2.222222
> round(相対度数, 1)
 [1]  0.0  2.2  2.2  4.4  2.2  6.7  6.7  8.9 15.6 15.6 13.3 11.1  6.7  2.2  0.0  0.0  0.0  2.2
> 
> 
> 
> 
> # 累積相対度数
> # 計算式 累積相対度数 = ((各階級の累積度数) / (全体の人数)) * 100
> #
> 各階級の累積度数 <- cumsum(その階級の度数)
> 各階級の累積度数
 [1]  0  1  2  4  5  8 11 15 22 29 35 40 43 44 44 44 44 45
> 
> 全体の人数
[1] 45
> 
> 累積相対度数 <- (各階級の累積度数 / 全体の人数) * 100
> 累積相対度数
 [1]   0.000000   2.222222   4.444444   8.888889  11.111111  17.777778  24.444444  33.333333  48.888889
[10]  64.444444  77.777778  88.888889  95.555556  97.777778  97.777778  97.777778  97.777778 100.000000
> round(累積相対度数, 1)
 [1]   0.0   2.2   4.4   8.9  11.1  17.8  24.4  33.3  48.9  64.4  77.8  88.9  95.6  97.8  97.8  97.8
[17]  97.8 100.0
> 
> #
> # cumsum()を使用すれば楽に計算できる
> # 累積相対度数 <- round(cumsum(相対度数), 1)
> # 累積相対度数
> #

ヒストグラムスクリーンショット

f:id:my_notes:20170618204426p:plain

参考文献

ナースのための統計学

ナースのための統計学