Я использую следующий метод для расчета корреляции моего набора данных:
cor( var1, var2, method = "method")
Но мне нравится создавать корреляционную матрицу из 4 разных переменных. Какой самый простой способ сделать это?
Я использую следующий метод для расчета корреляции моего набора данных:
cor( var1, var2, method = "method")
Но мне нравится создавать корреляционную матрицу из 4 разных переменных. Какой самый простой способ сделать это?
Используйте ту же функцию (cor
) в кадре данных, например:
> cor(VADeaths)
Rural Male Rural Female Urban Male Urban Female
Rural Male 1.0000000 0.9979869 0.9841907 0.9934646
Rural Female 0.9979869 1.0000000 0.9739053 0.9867310
Urban Male 0.9841907 0.9739053 1.0000000 0.9918262
Urban Female 0.9934646 0.9867310 0.9918262 1.0000000
Или, в кадре данных, также содержащем дискретные переменные (также иногда называемые факторами), попробуйте что-то вроде следующего:
> cor(mtcars[,unlist(lapply(mtcars, is.numeric))])
mpg cyl disp hp drat wt qsec vs am gear carb
mpg 1.0000000 -0.8521620 -0.8475514 -0.7761684 0.68117191 -0.8676594 0.41868403 0.6640389 0.59983243 0.4802848 -0.55092507
cyl -0.8521620 1.0000000 0.9020329 0.8324475 -0.69993811 0.7824958 -0.59124207 -0.8108118 -0.52260705 -0.4926866 0.52698829
disp -0.8475514 0.9020329 1.0000000 0.7909486 -0.71021393 0.8879799 -0.43369788 -0.7104159 -0.59122704 -0.5555692 0.39497686
hp -0.7761684 0.8324475 0.7909486 1.0000000 -0.44875912 0.6587479 -0.70822339 -0.7230967 -0.24320426 -0.1257043 0.74981247
drat 0.6811719 -0.6999381 -0.7102139 -0.4487591 1.00000000 -0.7124406 0.09120476 0.4402785 0.71271113 0.6996101 -0.09078980
wt -0.8676594 0.7824958 0.8879799 0.6587479 -0.71244065 1.0000000 -0.17471588 -0.5549157 -0.69249526 -0.5832870 0.42760594
qsec 0.4186840 -0.5912421 -0.4336979 -0.7082234 0.09120476 -0.1747159 1.00000000 0.7445354 -0.22986086 -0.2126822 -0.65624923
vs 0.6640389 -0.8108118 -0.7104159 -0.7230967 0.44027846 -0.5549157 0.74453544 1.0000000 0.16834512 0.2060233 -0.56960714
am 0.5998324 -0.5226070 -0.5912270 -0.2432043 0.71271113 -0.6924953 -0.22986086 0.1683451 1.00000000 0.7940588 0.05753435
gear 0.4802848 -0.4926866 -0.5555692 -0.1257043 0.69961013 -0.5832870 -0.21268223 0.2060233 0.79405876 1.0000000 0.27407284
carb -0.5509251 0.5269883 0.3949769 0.7498125 -0.09078980 0.4276059 -0.65624923 -0.5696071 0.05753435 0.2740728 1.00000000
Если вы хотите совместить матрицу с некоторыми визуализациями, я могу порекомендовать (я использую встроенный набор данных iris
):
library(psych)
pairs.panels(iris[1:4]) # select columns 1-4
Аналитика производительности в основном делает то же самое, но включает значения по умолчанию.
library(PerformanceAnalytics)
chart.Correlation(iris[1:4])
Или эта приятная и простая визуализация:
library(corrplot)
x <- cor(iris[1:4])
corrplot(x, type="upper", order="hclust")
Смотрите corr.test
функцию в пакете psych
:
> corr.test(mtcars[1:4])
Call:corr.test(x = mtcars[1:4])
Correlation matrix
mpg cyl disp hp
mpg 1.00 -0.85 -0.85 -0.78
cyl -0.85 1.00 0.90 0.83
disp -0.85 0.90 1.00 0.79
hp -0.78 0.83 0.79 1.00
Sample Size
mpg cyl disp hp
mpg 32 32 32 32
cyl 32 32 32 32
disp 32 32 32 32
hp 32 32 32 32
Probability value
mpg cyl disp hp
mpg 0 0 0 0
cyl 0 0 0 0
disp 0 0 0 0
hp 0 0 0 0
И еще одно бесстыдное самореклама: https://gist.github.com/887249
Возможно, вы захотите посмотреть Quick-R, в котором есть много хороших небольших учебников о том, как вы можете делать базовые статистические данные в R. Например, на корреляциях:
Вы также можете рассчитать корреляции для всех переменных, но исключить выбранные, например:
mtcars <- data.frame(mtcars)
# here we exclude gear and carb variables
cors <- cor(subset(mtcars, select = c(-gear,-carb)))
Кроме того, чтобы вычислить корреляцию между каждой переменной и одним столбцом, вы можете использовать sapply()
# sapply effectively calls the corelation function for each column of mtcars and mtcars$mpg
cors2 <- sapply(mtcars, cor, y=mtcars$mpg)