R中的相关输出

时间:2019-07-12 23:10:03

标签: r correlation chi-squared

我希望有人可以帮助我阐明相关矩阵。具体来说,我想知道输出,以及-为什么以这种方式输出。

我的目的是了解两个分类(无序名义)数据之间的相关性。在使用其他方法获得计数之前,先清理下面的数据以创建名义变量之外的因子。

例如,我使用虚拟数据在 R 中创建了一个相关矩阵:

set.seed(1234)
randomCities<-c("Washington","Boston","Seattle","Portland","Oakland","Dallas","Miami")
randomYachts<-c("BigOl Yacht","Notsobig Yacht","Fancy Yacht","SuperFancy Yacht")
randomYears<-c(2019,2017,2016,2015,2018)
randomQuarters<-c(1,2,3,4)

dat1<-data.frame(city=sample(randomCities,400,replace = T),
                 yachts=sample(randomYachts,400,replace = T),
                 year = sample(randomYears,400,replace=T),
                 qtr = sample(randomQuarters,400,replace = T),
                 stringsAsFactors = F)

然后我将数据子集化,将要检查的变量转换为因子:

#store the vars as factors
fac.Yachts<-as.factor(dat1$yachts)
fac.City<-as.factor(dat1$city)

使用gmodels包,创建了一个列联表:

#Create contingency table 
joint_counts = joint$t

joint_counts
            y
x            BigOl Yacht Fancy Yacht Notsobig Yacht
  Boston              19          12             10
  Dallas              12          18             15
  Miami               16          16             11
  Oakland              6          12             11
  Portland            14          16             14
  Seattle             12          19              9
  Washington          13          15             16

最后,我使用cor()Hmsic包创建了一个相关矩阵:

cor1<-cor(joint_counts)

#cor() function

>cor(joint_counts)
                  BigOl Yacht  Fancy Yacht Notsobig Yacht SuperFancy Yacht
BigOl Yacht       1.000000000 -0.006586363    -0.09691724      -0.25682171
Fancy Yacht      -0.006586363  1.000000000     0.14098436       0.01312562
Notsobig Yacht   -0.096917240  0.140984364     1.00000000      -0.66337471
SuperFancy Yacht -0.256821708  0.013125623    -0.66337471       1.00000000


#Output from Hmsic
res2<-rcorr(as.matrix(joint_counts))
>res2$r
                  BigOl Yacht  Fancy Yacht Notsobig Yacht SuperFancy Yacht
BigOl Yacht       1.000000000 -0.006586363    -0.09691724      -0.25682171
Fancy Yacht      -0.006586363  1.000000000     0.14098436       0.01312562
Notsobig Yacht   -0.096917240  0.140984364     1.00000000      -0.66337471
SuperFancy Yacht -0.256821708  0.013125623    -0.66337471       1.00000000

现在,我的问题是-为什么相关矩阵会导致此输出?意思是,我的目的是查看 游艇 可能与 城市 的关系,但是矩阵(似乎是?)告诉我 游艇 的水平如何关联。

*注意:利用创建的 * joint 变量,我会得到一些信息,但是,当从中创建相关矩阵时,似乎游艇之间的关系。我只是在读相关矩阵错了吗?

joint = CrossTable(fac.City,fac.Yachts,prop.chisq = F)
$prop.row
            y
x            BigOl Yacht Fancy Yacht Notsobig Yacht SuperFancy Yacht
  Boston       0.3275862   0.2068966      0.1724138        0.2931034
  Dallas       0.2142857   0.3214286      0.2678571        0.1964286
  Miami        0.2909091   0.2909091      0.2000000        0.2181818
  Oakland      0.1224490   0.2448980      0.2244898        0.4081633
  Portland     0.2187500   0.2500000      0.2187500        0.3125000
  Seattle      0.1875000   0.2968750      0.1406250        0.3750000
  Washington   0.2407407   0.2777778      0.2962963        0.1851852

1 个答案:

答案 0 :(得分:0)

关联仅对定量变量有意义。 您的代码计算出每种类型的游艇数量之间的相关性, 即频率矩阵各列之间的相关性。

有一些类似的定性变量相关性: Cramer's V,Phi等

library(DescTools) 
counts <- table(dat1[,1:2])
CramerV(counts)  # 0.15