r - 将相关矩阵转换为 R 中的数据框
问题描述
data(iris)
iris$Species<-NULL
cor(iris)
并得到cor。矩阵
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
让我们得到描述性统计数据
library(psych)
describe(iris)
和结果
vars n mean sd median trimmed mad min max range skew kurtosis se
Sepal.Length 1 150 5.84 0.83 5.80 5.81 1.04 4.3 7.9 3.6 0.31 -0.61 0.07
Sepal.Width 2 150 3.06 0.44 3.00 3.04 0.44 2.0 4.4 2.4 0.31 0.14 0.04
Petal.Length 3 150 3.76 1.77 4.35 3.76 1.85 1.0 6.9 5.9 -0.27 -1.42 0.14
Petal.Width 4 150 1.20 0.76 1.30 1.18 1.04 0.1 2.5 2.4 -0.10 -1.36 0.06
有很多统计数据,但我们只需要 mean 和 sd
所以这个问题。如果我们有变量之间的相关性,并且我们知道这些变量的均值和标准差,那么如何转换 cor。矩阵到数据框。很明显,数据框中的值很可能与真实值不同。
解决方案
您尚未指定概率分布,因此我将假设您想要一个具有正态分布的数据框,因为您提到了均值和协方差。
您可以使用包中的mvrnorm()
功能MASS
。它将生成一个多元正态分布,并具有与原始集合类似的相关矩阵。但请注意,除非原始数据具有相同的分布,否则肯定只有相关性和均值是相似的。
library(MASS)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following object is masked from 'package:MASS':
#>
#> select
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
data("iris")
iris$Species<-NULL
C <- cov(iris) # Note covariance, not cor
mu <- colMeans(iris)
df <- as_tibble(mvrnorm(10000,mu,C))
cor(df)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> Sepal.Length 1.0000000 -0.1269997 0.8728482 0.8220813
#> Sepal.Width -0.1269997 1.0000000 -0.4334930 -0.3707066
#> Petal.Length 0.8728482 -0.4334930 1.0000000 0.9633552
#> Petal.Width 0.8220813 -0.3707066 0.9633552 1.0000000
cor(iris)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
#> Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
#> Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
#> Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
推荐阅读
- mysql - MySQL 将 2 个查询连接到同一张表
- c - 解释指针和 sizeof 结构的不同值
- angular - 订单列表 - 在 Angular 5 中使用动态类时,列表项目编号消失
- python - 使用 python 将带有键和数据框的 dict 写入 excel 工作表
- python - 如何将未知 .XLS 文件的名称放入 Python 3.7 中的变量中
- r - R - 汇总行值,将结果作为一行返回
- php - 了解之间的连接:PHP + Redis + Node.js + Sockets
- python - Django - wagtail 内联面板 CSS 编辑
- vue.js - vue.js webpack 问题:无法使用 configureWebpack 向 vue.config.js 添加插件
- java - 如何在java中将docx文件头图像复制到另一个docx文件中