« 2021年7月 | トップページ | 2021年9月 »

2021年8月15日 (日)

[R]データの標準化を行う

scale関数を使う。ただし、この関数は変換の過程で分散ではなく不偏分散を使う。

以下のようなテキストファイルdata.txtがカレントディレクトリにあり、このデータの標準化を行ってみる。

 1,165,53,86,56,92
2,160,47,84,52,92
3,166,55,86,64,89
4,164,56,90,60,95
5,168,55,87,56,87
6,164,54,87,57,92
7,168,54,94,58,97
8,169,55,88,57,92
9,169,53,86,58,93
10,166,56,84,57,90

テキストファイルを読み込んで、標準化を行う。

> dtf <- read.csv("data.txt", header = FALSE)
> mx <- unname(as.matrix(dtf[, -c(1)]))
> mx
[,1] [,2] [,3] [,4] [,5]
[1,] 165 53 86 56 92
[2,] 160 47 84 52 92
[3,] 166 55 86 64 89
[4,] 164 56 90 60 95
[5,] 168 55 87 56 87
[6,] 164 54 87 57 92
[7,] 168 54 94 58 97
[8,] 169 55 88 57 92
[9,] 169 53 86 58 93
[10,] 166 56 84 57 90
> scale(mx)
[,1] [,2] [,3] [,4] [,5]
[1,] -0.32065694 -0.30578831 -0.40350226 -0.4895355 0.03513642
[2,] -2.10208440 -2.59920068 -1.07600602 -1.7949634 0.03513642
[3,] 0.03562855 0.45868247 -0.40350226 2.1213203 -1.01895613
[4,] -0.67694243 0.84091787 0.94150526 0.8158924 1.08922897
[5,] 0.74819953 0.45868247 -0.06725038 -0.4895355 -1.72168450
[6,] -0.67694243 0.07644708 -0.06725038 -0.1631785 0.03513642
[7,] 0.74819953 0.07644708 2.28651278 0.1631785 1.79195734
[8,] 1.10448502 0.45868247 0.26900150 -0.1631785 0.03513642
[9,] 1.10448502 -0.30578831 -0.40350226 0.1631785 0.38650060
[10,] 0.03562855 0.84091787 -1.07600602 -0.1631785 -0.66759195
attr(,"scaled:center")
[1] 165.9 53.8 87.2 57.5 91.9
attr(,"scaled:scale")
[1] 2.806738 2.616189 2.973961 3.064129 2.846050

不偏分散ではなく分散を使ってデータの標準化を行う場合は、自作の関数を作りapply関数を使う必要がある。以下は、分散の平方根(標準偏差)を求めるための自作関数std、分散を使うデータの標準化を行うための自作関数scaを作成し、それぞれを使用して計算した例。上の例を行い、行列mxに計算するための値が入っていることが前提。

> std <- function(d) sqrt(sum((d - mean(d)) ^ 2) / length(d))
> sca <- function(d) (d - mean(d)) / std(d)
> apply(mx, MARGIN = 2, sca)
[,1] [,2] [,3] [,4] [,5]
[1,] -0.33800209 -0.3223292 -0.42532872 -0.5160157 0.03703704
[2,] -2.21579151 -2.7397981 -1.13420993 -1.8920575 0.03703704
[3,] 0.03755579 0.4834938 -0.42532872 2.2360680 -1.07407407
[4,] -0.71355998 0.8864053 0.99243369 0.8600261 1.14814815
[5,] 0.78867155 0.4834938 -0.07088812 -0.5160157 -1.81481481
[6,] -0.71355998 0.0805823 -0.07088812 -0.1720052 0.03703704
[7,] 0.78867155 0.0805823 2.41019610 0.1720052 1.88888889
[8,] 1.16422944 0.4834938 0.28355248 -0.1720052 0.03703704
[9,] 1.16422944 -0.3223292 -0.42532872 0.1720052 0.40740741
[10,] 0.03755579 0.8864053 -1.13420993 -0.1720052 -0.70370370

2021年8月 6日 (金)

[R]あるハードウェアの毎月の卸売高(WHARD(Wholesale hardware)データ)

パッケージTSSSに格納されている。パッケージをインストールして読み出す。

> install.packages("TSSS")
(表示省略)
> library(TSSS)
> data(WHARD)
> WHARD
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1967 626 614 689 686 723 778 711 824 793 831 775 689
1968 692 718 757 769 791 809 836 878 856 935 850 763
1969 761 796 830 902 910 932 931 908 934 995 865 822
1970 763 778 841 845 863 952 909 899 952 963 893 831
1971 773 803 918 967 963 1065 1014 1051 1054 1051 1039 960
1972 930 956 1072 1023 1136 1181 1088 1247 1164 1251 1218 1062
1973 1114 1088 1253 1254 1354 1349 1305 1420 1313 1481 1387 1284
1974 1310 1262 1446 1573 1634 1612 1591 1640 1590 1696 1456 1296
1975 1311 1232 1274 1388 1374 1443 1466 1454 1538 1587 1406 1341
1976 1351 1367 1553 1588 1591 1703 1643 1711 1731 1678 1678 1580
1977 1515 1544 1817 1838 1925 2017 1898 2068 1961 2027 1974 1820
1978 1796 1708 2021 2102 2306 2360 2247 2412 2159 2455 2250 2057
1979 2142 1984 2319 2374 2592 2461 2524 2678 2399 2794 2415
> plot(WHARD)

Whard

« 2021年7月 | トップページ | 2021年9月 »

無料ブログはココログ

■■

■■■