[未知用户]
> ## 协方差
> library(dplyr)
>
> x <- runif(100) %>% matrix(ncol = 2, dimnames = list(NULL, c('x', 'y'))) %>% data.frame(., type = sample(c('j', 'k'), nrow(.), replace = TRUE)) %>% tbl_df
>
> n <- nrow(x); m <- ncol(x); k <- length(levels(x$type))
> mu <- matrix(nrow = k,ncol = m - 1)
> S <- matrix(0, nrow = m - 1, ncol = m - 1)
> y <- as.matrix(select(x, -type))
> for(j in 1:k){
+ a <- select(filter(x, type == "j"), -type)
+ mu[j, ] <- apply(a, 2, mean)
+ S <- S + nrow(a) * cov(a)
+ }
> S <- S/(n - k)
> S
x y
x 0.08392931 -0.01063358
y -0.01063358 0.10158913