2017-09-21 15 views
-1

Seretosa、Versicolor、およびVirginicaのグループで構成される虹彩データセットを考えてみましょう。セパレーションの長さ、セパレーションの幅、ペタルの長さ、ペタルの幅の4つの変数について50の観測があります。 Rを使用して各グループのサンプル共分散行列をどのように計算しますか?サンプル共分散行列の生成R

答えて

0

ここlapplyを用いて溶液とdplyrパイプです:

data(iris) 
library(dplyr) 

l = lapply(unique(iris$Species), function(s) { 
    my.matrix = iris %>% filter(Species == s) %>% select(-Species) %>% as.matrix 
    return(cov(my.matrix)) 
}) 

彼らはアイリスデータセットに表示される結果lは種の同じ順序で、共分散行列のリストです。

1

あなたは、グループごとに共分散行列の名前のリストを取得するために、ベースRでこれを行うことができます:ここで

tapply(seq_along(iris[[5]]), iris[[5]], FUN = function(ind) cov(iris[ind, -5])) 
3

を別の方法...

lapply(split(iris[,-5],iris$Species),cov) 

$setosa 
      Sepal.Length Sepal.Width Petal.Length Petal.Width 
Sepal.Length 0.12424898 0.099216327 0.016355102 0.010330612 
Sepal.Width 0.09921633 0.143689796 0.011697959 0.009297959 
Petal.Length 0.01635510 0.011697959 0.030159184 0.006069388 
Petal.Width 0.01033061 0.009297959 0.006069388 0.011106122 

$versicolor 
      Sepal.Length Sepal.Width Petal.Length Petal.Width 
Sepal.Length 0.26643265 0.08518367 0.18289796 0.05577959 
Sepal.Width 0.08518367 0.09846939 0.08265306 0.04120408 
Petal.Length 0.18289796 0.08265306 0.22081633 0.07310204 
Petal.Width 0.05577959 0.04120408 0.07310204 0.03910612 

$virginica 
      Sepal.Length Sepal.Width Petal.Length Petal.Width 
Sepal.Length 0.40434286 0.09376327 0.30328980 0.04909388 
Sepal.Width 0.09376327 0.10400408 0.07137959 0.04762857 
Petal.Length 0.30328980 0.07137959 0.30458776 0.04882449 
Petal.Width 0.04909388 0.04762857 0.04882449 0.07543265 
です
関連する問題