[英]Correlation for multiple categorical variables tableau
我有15列類別變量,我希望它們之間具有相關性。 數據集的長度超過20,000,並且數據集如下所示:
state | job | hair_color | car_color | marital_status
NY | cs | brown | blue | s
FL | mt | black | blue | d
NY | md | blond | white | m
NY | cs | brown | red | s
請注意,第一行和最后一行NY
, cs
和s
重復。 我想找出這種模式。 NY和CS高度相關。 我需要在列中對值的組合進行排名。 希望現在這個問題有意義。 請注意, 不是數NY
或cs
。 關於找出NY
和blond
在同一行中一起出現的次數。 我需要按行對所有值執行此操作。 希望現在這有意義。
我嘗試將cor()
與R配合使用,但是由於這些是分類變量,因此該功能無法正常工作。 如何使用此數據集查找它們之間的相關性?
您可能希望參考計算相似度的方法 。 假設您的數據是
d <- structure(list(state = structure(c(2L, 1L, 1L, 2L, 2L), .Label = c("FL",
"NY"), class = "factor"), job = structure(c(2L, 1L, 4L, 3L, 2L
), .Label = c("bs", "cs", "md", "mt"), class = "factor"), hair_color = structure(c(3L,
3L, 1L, 2L, 3L), .Label = c("black", "blond", "brown"), class = "factor"),
car_color = structure(c(1L, 2L, 1L, 3L, 2L), .Label = c("blue",
"red", "white"), class = "factor"), marital_status = structure(c(3L,
1L, 1L, 2L, 3L), .Label = c("d", "m", "s"), class = "factor")), .Names = c("state",
"job", "hair_color", "car_color", "marital_status"), class = "data.frame", row.names = c(NA,
-5L))
數據:
> d
state job hair_color car_color marital_status
1 NY cs brown blue s
2 FL bs brown red d
3 FL mt black blue d
4 NY md blond white m
5 NY cs brown red s
我們可以計算觀察值之間的“差異”:
library(cluster)
daisy(d, metric = "euclidean")
輸出:
> daisy(d, metric = "euclidean")
Dissimilarities :
1 2 3 4
2 0.8
3 0.8 0.6
4 0.8 1.0 1.0
5 0.2 0.6 1.0 0.8
Metric : mixed ; Types = N, N, N, N, N
Number of objects : 5
這告訴我們觀察值1和5的差異最小。 通過許多觀察,顯然不可能目視檢查差異矩陣,但是我們可以過濾掉低於某個閾值的對,例如
out <- daisy(d, metric = "euclidean")
pairs <- expand.grid(2:5, 1:4)
pairs <- pairs[pairs[,1]!=pairs[,2],]
similars <- pairs[which(out<.8),]
假設閾值為0.8,
> similars
Var1 Var2
4 5 1
6 3 2
8 5 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.