Дестандартизировал каждый столбец шкалы матрицы - PullRequest
0 голосов
/ 08 ноября 2018

Мне было интересно, можно ли использовать нестандартную функцию для матрицы или фрейма данных. Я могу использовать применять со стандартизированными по столбцам без проблем, но не уверен, как изменить логику. Это также уже выполнено с функцией масштабирования. Любой совет? Пожалуйста, см. Представьте ниже.

library(tibble)
library(cbar)
df <- tibble(
  x = rnorm(10, 5, .1), 
  y = rnorm(10, 50, 1),
  z = rnorm(10, 500, 20)
)
df
#> # A tibble: 10 x 3
#>        x     y     z
#>    <dbl> <dbl> <dbl>
#>  1  4.99  52.0  530.
#>  2  5.06  48.5  527.
#>  3  5.05  49.5  504.
#>  4  5.08  48.2  512.
#>  5  4.99  49.8  496.
#>  6  4.97  49.2  517.
#>  7  4.97  50.4  483.
#>  8  4.91  49.1  498.
#>  9  4.87  51.6  478.
#> 10  4.86  49.0  531.
scale(df)
#>                 x           y          z
#>  [1,]  0.16214478  1.79905676  1.1749160
#>  [2,]  1.10506079 -1.00798624  1.0366936
#>  [3,]  0.98384421 -0.21586991 -0.1861718
#>  [4,]  1.35024672 -1.18719295  0.2255299
#>  [5,]  0.21101616  0.07949959 -0.6128166
#>  [6,] -0.01764382 -0.40700291  0.4988026
#>  [7,] -0.02722854  0.57290776 -1.2813415
#>  [8,] -0.90900232 -0.51084700 -0.5015272
#>  [9,] -1.38320530  1.47438778 -1.5696862
#> [10,] -1.47523268 -0.59695288  1.2156013
#> attr(,"scaled:center")
#>          x          y          z 
#>   4.973533  49.725633 507.582204 
#> attr(,"scaled:scale")
#>           x           y           z 
#>  0.07522165  1.24812951 19.06825608
apply(df, 2, standardized)
#>                 x           y          z
#>  [1,]  0.16214478  1.79905676  1.1749160
#>  [2,]  1.10506079 -1.00798624  1.0366936
#>  [3,]  0.98384421 -0.21586991 -0.1861718
#>  [4,]  1.35024672 -1.18719295  0.2255299
#>  [5,]  0.21101616  0.07949959 -0.6128166
#>  [6,] -0.01764382 -0.40700291  0.4988026
#>  [7,] -0.02722854  0.57290776 -1.2813415
#>  [8,] -0.90900232 -0.51084700 -0.5015272
#>  [9,] -1.38320530  1.47438778 -1.5696862
#> [10,] -1.47523268 -0.59695288  1.2156013
apply(scale(df), 2, destandardized, y_mu = colMeans(df), y_sd = apply(df, 2, sd))
#> Warning in y_hat * y_sd: longer object length is not a multiple of shorter
#> object length
#> Warning in y_hat * y_sd + y_mu: longer object length is not a multiple of
#> shorter object length
#> Warning in y_hat * y_sd: longer object length is not a multiple of shorter
#> object length
#> Warning in y_hat * y_sd + y_mu: longer object length is not a multiple of
#> shorter object length
#> Warning in y_hat * y_sd: longer object length is not a multiple of shorter
#> object length
#> Warning in y_hat * y_sd + y_mu: longer object length is not a multiple of
#> shorter object length
#>                x          y          z
#>  [1,]   4.985730   5.108861   5.061912
#>  [2,]  51.104892  48.467535  51.019561
#>  [3,] 526.342398 503.465942 504.032232
#>  [4,]   5.075101   4.884231   4.990498
#>  [5,]  49.989008  49.824858  48.960758
#>  [6,] 507.245768 499.821369 517.093500
#>  [7,]   4.971485   5.016628   4.877149
#>  [8,]  48.591080  49.088029  49.099662
#>  [9,] 481.206892 535.696208 477.651026
#> [10,]   4.862564   4.928630   5.064973
Created on 2018-11-08 by the reprex package (v0.2.0).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...