library(dplyr)
library(data.table)
library(tidyr)
#
library(rpart) #決定木用
library(rpart.plot) #決定木用
library(partykit) #決定木作図用
#
library(MASS) #コレスポンデンス分析用
library(factoextra) #作図用
#cross集計
dt.cross <- dt.log %>%
group_by(user_id,name) %>%
summarise(n=max(value)) %>%
spread(name,n)
dt.cross[is.na(dt.cross)] <- 0 #NAを0にする
#上記クロス集計に目的変数をjoin
dt.buy_next <- dt.log_next %>%
group_by(user_id) %>%
summarise(count = length(user_id))
dt.for_model <- left_join(dt.cross, dt.buy_next, by = "user_id")
dt.for_model$user_id <- NULL
dt.for_model[is.na(dt.for_logit)] <- 0 #NAを0にする
#ロジスティック分析
result <- glm(count ~ .,data = dt.for_model)
summary(result)
#出力
write.csv(summary(result)$coefficients[,"Estimate"],
"C:/logit_Estimate.csv")
write.csv(summary(result)$coefficients[,"Pr(>|t|)"],
"C:/logit_Pvalue.csv")
#---
#決定木
#method = "class" yが質的変数 cpは破線と交わる値が理想だが目的に合わせて適時設定
result.tree <- rpart(count ~., data = dt.cross_model, method = "class",cp = 0.002)
print(result.tree)
#検証
printcp(result.tree)
plotcp(result.tree)
#
#作図
plot(as.party(result.tree))
#---
#コレスポンデンス分析
#nfは軸を意味する
result.1 <- corresp(tmp, nf=3)
#
#write results:任意の場所に書き出す
write.csv(result.1$rs,
"C:/result_1_rs.csv")
write.csv(result.1$cs,
"C:/result_1_cs.csv")
#
#作図
#一般的な図
#biplot(result.1, xlim = c(-0.8, 0.8), ylim = c(-0.6, 0.6))
#少し見栄えの良い図
fviz_ca_biplot(result.1) + theme_minimal(base_size = 12)
#
#寄与率
result.1.koyuti <- result.1$cor^2
sum(result.1.koyuti)
kiyoritu <- 100*result.1.koyuti / sum(result.1.koyuti)
kiyoritu
0 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。