PCA-如何可视化所有变量处于不同/相同比例

问题描述 投票:0回答:1

我正在使用数据集uscrime,但此问题适用于任何众所周知的数据集,例如cars。谷歌搜索之后,发现PCA基于原始变量的协方差矩阵找到新的方向,协方差矩阵对变量的标准化很敏感,因此对标准化数据非常有用。

但是,我发现“如果所有变量的比例都相同,则不必标准化变量。”

要标准化变量,我正在使用以下功能:z_uscrime <- (uscrime - mean(uscrime)) / sd(uscrime)

在标准化我的数据之前,如何检查所有变量是否在同一范围内?

r pca
1个回答
0
投票

证明我的观点,无论您想要多少次,都可以标准化数据

library(tidyverse)
library(recipes)
#> 
#> Attaching package: 'recipes'
#> The following object is masked from 'package:stringr':
#> 
#>     fixed
#> The following object is masked from 'package:stats':
#> 
#>     step


simple_recipe <- recipe(mpg ~ .,data = mtcars) %>% 
  step_center(everything()) %>% 
  step_scale(everything())


mtcars2 <- simple_recipe %>% 
  prep() %>%
  juice()

simple_recipe2 <- recipe(mpg ~ .,data = mtcars2) %>% 
  step_center(everything()) %>% 
  step_scale(everything())

mtcars3 <- simple_recipe2 %>% 
  prep() %>%
  juice()

all.equal(mtcars2,mtcars3)
#> [1] TRUE

mtcars2 %>%
  summarise(across(everything(),.fns = list(mean = ~ mean(.x),sd = ~sd(.x)))) %>% 
  pivot_longer(everything(),names_pattern = "(.*)_(.*)",names_to = c("stat", ".value"))
#> # A tibble: 11 x 3
#>    stat       mean    sd
#>    <chr>     <dbl> <dbl>
#>  1 cyl   -1.47e-17  1   
#>  2 disp  -9.08e-17  1   
#>  3 hp     1.04e-17  1   
#>  4 drat  -2.92e-16  1   
#>  5 wt     4.68e-17  1.00
#>  6 qsec   5.30e-16  1   
#>  7 vs     6.94e-18  1.00
#>  8 am     4.51e-17  1   
#>  9 gear  -3.47e-18  1.00
#> 10 carb   3.17e-17  1.00
#> 11 mpg    7.11e-17  1

mtcars3 %>%
  summarise(across(everything(),.fns = list(mean = ~ mean(.x),sd = ~sd(.x)))) %>% 
  pivot_longer(everything(),names_pattern = "(.*)_(.*)",names_to = c("stat", ".value"))
#> # A tibble: 11 x 3
#>    stat       mean    sd
#>    <chr>     <dbl> <dbl>
#>  1 cyl   -1.17e-17     1
#>  2 disp  -1.95e-17     1
#>  3 hp     9.54e-18     1
#>  4 drat   1.17e-17     1
#>  5 wt     3.26e-17     1
#>  6 qsec   1.37e-17     1
#>  7 vs     4.16e-17     1
#>  8 am     4.51e-17     1
#>  9 gear   0.           1
#> 10 carb   2.60e-18     1
#> 11 mpg    4.77e-18     1

reprex package(v0.3.0)在2020-06-07创建

© www.soinside.com 2019 - 2024. All rights reserved.