data1 <- read.csv("logindata.csv")
str(data1)
因子转哑变量
library(caret)
dmy <- dummyVars(~.,data = data1)
dmytsrf <- data.frame(predict(dmy,newdata = data1))
str(dmytsrf)
# 自定义相关性函数
cor.prob <- function (X, dfr = nrow(X) - 2) {
R <- cor(X, use="pairwise.complete.obs")
above <- row(R) < col(R)
r2 <- R[above]^2
Fstat <- r2 * dfr/(1 - r2)
R[above] <- 1 - pf(Fstat, 1, dfr)
R[row(R) == col(R)] <- NA
R
}
flattenSquareMatrix <- function(m) {
if( (class(m) != "matrix") | (nrow(m) != ncol(m))) stop("Must be a square matrix.")
if(!identical(rownames(m), colnames(m))) stop("Row and column names must be equal.")
ut <- upper.tri(m)
data.frame(i = rownames(m)[row(m)[ut]],
j = rownames(m)[col(m)[ut]],
cor=t(m)[ut],
p=m[ut])
corMasterList <- flattenSquareMatrix(cor.prob(dmytsrf))
corList <- corMasterList[order(-abs(corMasterList$cor)),]
head(corList,10)
selectSub <- subset(corList,(abs(corList$cor)>0.04 & i %in% c("是否付费.是")))
bestsub <- as.character(selectSub$j)
library(corrplot)
corrplot.mixed(cor(dmytsrf[,c("是否付费.是",bestsub)]),lower="ellipse",upper="number",tl.pos="lt",diag="u")