2021MetaPOQ
来自OBHRM百科
论文基本信息
杨伟文 李超平. 资质过剩感对个体绩效的作用效果及机制:基于情绪-认知加工系统与文化情境的元分析研究. 心理学报, 53(4),100-120
论文数据
论文R代码
#加载安装包。如果没有安装,请自行安装。安装方法见:http://www.obhrm.net/index.php/R library(psychmeta) library(tidyr) library(magrittr) library(dplyr) library(tidyverse) library(rio) library(metaSEM) library(plyr) library(meta) library(psych) setwd("D:\\") #请将2021MetaPOQ.xlsx放在D盘根目录下,如果放在其他目录下,请在此做相应调整。 ################## 全部数据准备 ###################### data <- import("2021MetaPOQ.xlsx") correct_main <- correct_r(correction = c("meas", "uvdrr_x", "uvdrr_y", "uvirr_x", "uvirr_y", "bvdrr", "bvirr"), rxyi = data$rxy, ux = 1, uy = 1, rxx = data$rxx, ryy = data$ryy, ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, rxx_type = "alpha", k_items_x = NA, ryy_restricted = TRUE, ryy_type = "alpha", k_items_y = NA, sign_rxz = 1, sign_ryz = 1, n = NULL, conf_level = 0.95, correct_bias = FALSE) data$rtp = correct_main[["correlations"]][["rtp"]] orig.data <- subset(data.frame(data, correct_main$correlations), rtp <1) # 此处获取研究样本信息 k.article <- length(unique(paste(orig.data$author, orig.data$title))) k.inde.sample <- length(unique(orig.data$id)) k.eff.size <- nrow(unique(data.frame(orig.data$title, orig.data$rxy, orig.data$x, orig.data$y))) sample.size <- unique(data.frame(orig.data$title, orig.data$n)) n.sample.size <- as.vector(sample.size$orig.data.n)%>%sum descr <- data.frame(c("文献", "独立样本", "效应值", "样本规模"), c(k.article, k.inde.sample, k.eff.size, n.sample.size))%>% set_colnames(c("类型", "数量")) descr #### 1………………直接效应分析………………#### #### 发表偏倚检验 #### d <- subset(orig.data, orig.data$x.frame.all == "资质过剩感") d$zr <- 0.5*log((1+d$rxy)/(1-d$rxy)) zr <- split(d$zr, d$y.coding.t) n <- split(d$n, d$y.coding.t) t <- list() for (i in 1:length(n)){ t[[i]] <- zr[[i]]*sqrt(n[[i]]-3) i = i + 1} nfs <- vector() for (i in 1:length(zr)){ nfs[[i]] <- abs(round(sum(t[[i]])^2/2.706 - length(zr[[i]]))) i = i + 1} final.nfs = data.frame(names(zr),nfs) %>% set_colnames(c("name", "nfs")) zr.t <- split(d$zr, d$y.frame.all) n.t <- split(d$n, d$y.frame.all) for (i in 1:length(n.t)){ t[[i]] <- zr.t[[i]]*sqrt(n.t[[i]]-3) i = i + 1} nfs <- vector() for (i in 1:length(zr.t)){ nfs[[i]] <- abs(round(sum(t[[i]])^2/2.706 - length(zr.t[[i]]))) i = i + 1} final.nfs.t = data.frame(names(zr.t),nfs)%>% set_colnames(c("name", "nfs")) nfs = rbind(final.nfs, final.nfs.t) order <- data.frame(c("消极情绪", "愤怒", "无聊", "积极自我概念", "一般效能感", "其他效能感", "一般自尊", "基于组织的自尊", "消极行为", "反生产行为", "离职意愿", "积极行为", "创新", "工作重塑", "建言", "前瞻行为", "知识共享", "组织公民行为", "任务绩效")) %>% set_colnames("order") t.nfs = left_join(order, nfs, by=c("order"="name")) #### 主要变量直接效应 #### main_r <- ma_r(rxyi = orig.data$rxy, n = orig.data$n, sample_id = orig.data$id, citekey = orig.data$id, construct_x = orig.data$x.frame.all, construct_y = orig.data$y.frame.all, moderators = orig.data$y.coding.t, data = orig.data) main_rho <- ma_r(rxyi = orig.data$rtp, n = orig.data$n, sample_id = orig.data$id, citekey = orig.data$id, construct_x = orig.data$x.frame.all, construct_y = orig.data$y.frame.all, moderators = orig.data$y.coding.t, data = orig.data) # 此处获取 %Var 信息 hetero <- heterogeneity(main_rho)%>%get_heterogeneity data.hetero = data.frame(matrix(NA, nrow = length(hetero), ncol=2)) names(data.hetero) = c("id","var") data.hetero$id = colnames(sapply(hetero, function(x) x[[1]])) data.hetero$var = sapply(hetero, function(x) x[[1]]$percent_var_accounted[[1]]) #### 主效应分析表制作 #### main_r <- main_r %>% summary %>% get_metatab main_rho <- main_rho %>% summary %>% get_metatab maineffects <- data.frame(main_r$analysis_id, main_r$construct_x, main_r$construct_y, main_r$`orig.data$y.coding.t`, main_r$k, main_r$N, round(cbind(main_r$mean_r, main_r$sd_r, main_rho$mean_r,main_rho$sd_r),2), paste("[", round(main_rho$CI_LL_95, 2), ", ", round(main_rho$CI_UL_95, 2), "]"), paste("[", round(main_rho$CR_LL_80, 2), ", ", round(main_rho$CR_UL_80, 2),"]"), data.hetero) %>% set_colnames(c("id", "x", "y", "dim", "k", "n", "r", "SD_r","rho", "SD_rho", "95% CI", "80% CV", "var%")) main.poq <- subset(maineffects, maineffects$x == "资质过剩感" & maineffects$y != "个人工作匹配"& maineffects$y != "个人组织匹配"& maineffects$y != "健康"& maineffects$y != "对工作的态度"& maineffects$y != "对组织的态度") main.poq$`5k+10` = main.poq$k * 5 + 10 maineffects.poq = left_join(main.poq, t.nfs, by=c("dim"="order")) %>% left_join(t.nfs, by=c("y"="order")) %>% unique mainpoq <- data.frame(maineffects.poq[, c(3:7,9:12)], round(unlist(maineffects.poq$`var%`),2), maineffects.poq[, 14:16])%>%set_colnames( c("y", "dim", "k", "n", "r", "rho", "SD_rho", "95%CI", "80%CV", "var", "5k+10", "nfs.dim", "nfs.all")) write.csv(mainpoq, file = "Table1_poq直接效应及发表偏倚检验.csv") #表1 maineffects$word <- paste("(", maineffects$r,", ", maineffects$rho, ")","\n", "(", maineffects$k,", ", maineffects$n, ")","\n", maineffects$`95% CI`,"\n", maineffects$`80% CV`) #### 2………………中介效应检验………………#### #### 数据准备:全模型数据 #### varnames <- c("POQ","NE", "PS", "NB", "PB", "JP") poq.ne <- subset(maineffects, maineffects$x == "资质过剩感" & maineffects$y == "消极情绪" & maineffects$dim == "All Levels") poq.ps <- subset(maineffects, maineffects$x == "资质过剩感" & maineffects$y == "积极自我概念" & maineffects$dim == "All Levels") poq.nb <- subset(maineffects, maineffects$x == "资质过剩感" & maineffects$y == "消极行为" & maineffects$dim == "All Levels") poq.pb <- subset(maineffects, maineffects$x == "资质过剩感" & maineffects$y == "积极行为" & maineffects$dim == "All Levels") poq.jp <- subset(maineffects, maineffects$x == "资质过剩感" & maineffects$y == "任务绩效" & maineffects$dim == "All Levels") ne.ps <- subset(maineffects, (maineffects$x == "消极情绪" & maineffects$y == "积极自我概念" & maineffects$dim == "All Levels")| (maineffects$y == "消极情绪" & maineffects$x == "积极自我概念" & maineffects$dim == "All Levels")) ne.nb <- subset(maineffects, (maineffects$x == "消极情绪" & maineffects$y == "消极行为" & maineffects$dim == "All Levels")| (maineffects$y == "消极情绪" & maineffects$x == "消极行为" & maineffects$dim == "All Levels")) ne.pb <- subset(maineffects, (maineffects$x == "消极情绪" & maineffects$y == "积极行为" & maineffects$dim == "All Levels")| (maineffects$y == "消极情绪" & maineffects$x == "积极行为" & maineffects$dim == "All Levels")) ne.jp <- subset(maineffects, (maineffects$x == "消极情绪" & maineffects$y == "任务绩效" & maineffects$dim == "All Levels")| (maineffects$y == "消极情绪" & maineffects$x == "任务绩效" & maineffects$dim == "All Levels")) ps.nb <- subset(maineffects, (maineffects$x == "积极自我概念" & maineffects$y == "消极行为" & maineffects$dim == "All Levels")| (maineffects$y == "积极自我概念" & maineffects$x == "消极行为" & maineffects$dim == "All Levels")) ps.pb <- subset(maineffects, (maineffects$x == "积极自我概念" & maineffects$y == "积极行为" & maineffects$dim == "All Levels")| (maineffects$y == "积极自我概念" & maineffects$x == "积极行为" & maineffects$dim == "All Levels")) ps.jp <- subset(maineffects, (maineffects$x == "积极自我概念" & maineffects$y == "任务绩效" & maineffects$dim == "All Levels")| (maineffects$y == "积极自我概念" & maineffects$x == "任务绩效" & maineffects$dim == "All Levels")) nb.pb <- subset(maineffects, (maineffects$x == "消极行为" & maineffects$y == "积极行为" & maineffects$dim == "All Levels")| (maineffects$y == "消极行为" & maineffects$x == "积极行为" & maineffects$dim == "All Levels")) nb.jp <- subset(maineffects, (maineffects$x == "消极行为" & maineffects$y == "任务绩效" & maineffects$dim == "All Levels")| (maineffects$y == "消极行为" & maineffects$x == "任务绩效" & maineffects$dim == "All Levels")) pb.jp <- subset(maineffects, (maineffects$x == "积极行为" & maineffects$y == "任务绩效" & maineffects$dim == "All Levels")| (maineffects$y == "积极行为" & maineffects$x == "任务绩效" & maineffects$dim == "All Levels")) all.matrix <- vec2symMat(c(poq.ne$rho, poq.ps$rho, poq.nb$rho, poq.pb$rho, poq.jp$rho, ne.ps$rho, ne.nb$rho, ne.pb$rho, ne.jp$rho, ps.nb$rho, ps.pb$rho, ps.jp$rho, nb.pb$rho, nb.jp$rho, pb.jp$rho), diag = FALSE, byrow = FALSE) %>% set_colnames(varnames) %>% set_rownames(varnames) all_dat <- list(all.matrix) main_in_r <- ma_r(rxyi = orig.data$rxy, n = orig.data$n, sample_id = orig.data$id, citekey = orig.data$id, construct_x = orig.data$x.frame.all, construct_y = orig.data$y.frame.all, moderators = orig.data$indi, data = orig.data) main_in_rho <- ma_r(rxyi = orig.data$rtp, n = orig.data$n, sample_id = orig.data$id, citekey = orig.data$id, construct_x = orig.data$x.frame.all, construct_y = orig.data$y.frame.all, moderators = orig.data$indi, data = orig.data) hetero_in <- heterogeneity(main_in_rho)%>%get_heterogeneity data.hetero_in = data.frame(matrix(NA, nrow = length(hetero_in), ncol=2)) names(data.hetero_in) = c("id","var") data.hetero_in$id = colnames(sapply(hetero_in, function(x) x[[1]])) data.hetero_in$var = sapply(hetero_in, function(x) x[[1]]$percent_var_accounted[[1]]) main_in_r <- main_in_r %>% summary %>% get_metatab %>% na.omit main_in_rho <- main_in_rho %>% summary %>% get_metatab %>% na.omit main_indi <- data.frame(main_in_r$analysis_id, main_in_r$construct_x, main_in_r$construct_y, main_in_r$`orig.data$indi`, main_in_r$k, main_in_r$N, round(cbind(main_in_r$mean_r, main_in_r$sd_r, main_in_rho$mean_r,main_in_rho$sd_r),2), paste("[", round(main_in_rho$CI_LL_95, 2), ", ", round(main_in_rho$CI_UL_95, 2), "]"), paste("[", round(main_in_rho$CR_LL_80, 2), ", ", round(main_in_rho$CR_UL_80, 2),"]")) %>% set_colnames(c("id", "x", "y", "indi", "k", "n", "r", "SD_r","rho", "SD_rho", "95% CI", "80% CV")) #### 数据准备:低个人主义(高集体主义)数据 #### poq.ne.l <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "消极情绪" & main_indi$indi == "L") poq.ps.l <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "积极自我概念" & main_indi$indi == "L") poq.nb.l <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "消极行为" & main_indi$indi == "L") poq.pb.l <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "积极行为" & main_indi$indi == "L") poq.jp.l <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "任务绩效" & main_indi$indi == "L") ne.ps.l <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "积极自我概念" & main_indi$indi == "L")| (main_indi$y == "消极情绪" & main_indi$x == "积极自我概念" & main_indi$indi == "L")) ne.nb.l <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "消极行为" & main_indi$indi == "L")| (main_indi$y == "消极情绪" & main_indi$x == "消极行为" & main_indi$indi == "L")) ne.pb.l <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "积极行为" & main_indi$indi == "L")| (main_indi$y == "消极情绪" & main_indi$x == "积极行为" & main_indi$indi == "L")) ne.jp.l <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "任务绩效" & main_indi$indi == "L")| (main_indi$y == "消极情绪" & main_indi$x == "任务绩效" & main_indi$indi == "L")) ps.nb.l <- subset(main_indi, (main_indi$x == "积极自我概念" & main_indi$y == "消极行为" & main_indi$indi == "L")| (main_indi$y == "积极自我概念" & main_indi$x == "消极行为" & main_indi$indi == "L")) ps.pb.l <- subset(main_indi, (main_indi$x == "积极自我概念" & main_indi$y == "积极行为" & main_indi$indi == "L")| (main_indi$y == "积极自我概念" & main_indi$x == "积极行为" & main_indi$indi == "L")) ps.jp.l <- subset(main_indi, (main_indi$x == "积极自我概念" & main_indi$y == "任务绩效" & main_indi$indi == "L")| (main_indi$y == "积极自我概念" & main_indi$x == "任务绩效" & main_indi$indi == "L")) nb.pb.l <- subset(main_indi, (main_indi$x == "消极行为" & main_indi$y == "积极行为" & main_indi$indi == "L")| (main_indi$y == "消极行为" & main_indi$x == "积极行为" & main_indi$indi == "L")) nb.jp.l <- subset(main_indi, (main_indi$x == "消极行为" & main_indi$y == "任务绩效" & main_indi$indi == "L")| (main_indi$y == "消极行为" & main_indi$x == "任务绩效" & main_indi$indi == "L")) pb.jp.l <- subset(main_indi, (main_indi$x == "积极行为" & main_indi$y == "任务绩效" & main_indi$indi == "L")| (main_indi$y == "积极行为" & main_indi$x == "任务绩效" & main_indi$indi == "L")) all.matrix.l <- vec2symMat(c(poq.ne.l$rho, poq.ps.l$rho, poq.nb.l$rho, poq.pb.l$rho, poq.jp.l$rho, ne.ps.l$rho, ne.nb.l$rho, ne.pb.l$rho, ne.jp.l$rho, ps.nb.l$rho, ps.pb.l$rho, ps.jp.l$rho, nb.pb.l$rho, nb.jp.l$rho, pb.jp.l$rho), diag = FALSE, byrow = FALSE) %>% set_colnames(varnames) %>% set_rownames(varnames) all_dat.l <- list(all.matrix.l) #### 数据准备:高个人主义(低集体主义)数据 #### poq.ne.h <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "消极情绪" & main_indi$indi == "H") poq.ps.h <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "积极自我概念" & main_indi$indi == "H") poq.nb.h <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "消极行为" & main_indi$indi == "H") poq.pb.h <- subset(main_indi, x == "资质过剩感" & main_indi$y == "积极行为" & main_indi$indi == "H") poq.jp.h <- subset(main_indi, main_indi$x == "资质过剩感" & main_indi$y == "任务绩效" & main_indi$indi == "H") ne.ps.h <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "积极自我概念" & main_indi$indi == "H")| (main_indi$y == "消极情绪" & main_indi$x == "积极自我概念" & main_indi$indi == "H")) ne.nb.h <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "消极行为" & main_indi$indi == "H")| (main_indi$y == "消极情绪" & main_indi$x == "消极行为" & main_indi$indi == "H")) ne.pb.h <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "积极行为" & main_indi$indi == "H")| (main_indi$y == "消极情绪" & main_indi$x == "积极行为" & main_indi$indi == "H")) ne.jp.h <- subset(main_indi, (main_indi$x == "消极情绪" & main_indi$y == "任务绩效" & main_indi$indi == "H")| (main_indi$y == "消极情绪" & main_indi$x == "任务绩效" & main_indi$indi == "H")) ps.nb.h <- subset(main_indi, (main_indi$x == "积极自我概念" & main_indi$y == "消极行为" & main_indi$indi == "H")| (main_indi$y == "积极自我概念" & main_indi$x == "消极行为" & main_indi$indi == "H")) ps.pb.h <- subset(main_indi, (main_indi$x == "积极自我概念" & main_indi$y == "积极行为" & main_indi$indi == "H")| (main_indi$y == "积极自我概念" & main_indi$x == "积极行为" & main_indi$indi == "H")) ps.jp.h <- subset(main_indi, (main_indi$x == "积极自我概念" & main_indi$y == "任务绩效" & main_indi$indi == "H")| (main_indi$y == "积极自我概念" & main_indi$x == "任务绩效" & main_indi$indi == "H")) nb.pb.h <- subset(main_indi, (main_indi$x == "消极行为" & main_indi$y == "积极行为" & main_indi$indi == "H")| (main_indi$y == "消极行为" & main_indi$x == "积极行为" & main_indi$indi == "H")) nb.jp.h <- subset(main_indi, (main_indi$x == "消极行为" & main_indi$y == "任务绩效" & main_indi$indi == "H")| (main_indi$y == "消极行为" & main_indi$x == "任务绩效" & main_indi$indi == "H")) pb.jp.h <- subset(main_indi, (main_indi$x == "积极行为" & main_indi$y == "任务绩效" & main_indi$indi == "H")| (main_indi$y == "积极行为" & main_indi$x == "任务绩效" & main_indi$indi == "H")) all.matrix.h <- vec2symMat(c(poq.ne.h$rho, poq.ps.h$rho, poq.nb.h$rho, poq.pb.h$rho, poq.jp.h$rho, ne.ps.h$rho, ne.nb.h$rho, ne.pb.h$rho, ne.jp.h$rho, ps.nb.h$rho, ps.pb.h$rho, ps.jp.h$rho, nb.pb.h$rho, nb.jp.h$rho, pb.jp.h$rho), diag = FALSE, byrow = FALSE) %>% set_colnames(varnames) %>% set_rownames(varnames) all_dat.h <- list(all.matrix.h) #### 调和平均数 #### all_n <- c(poq.ne$n, poq.ps$n, poq.nb$n, poq.pb$n, poq.jp$n, ne.ps$n, ne.nb$n, ne.pb$n, ne.jp$n, ps.nb$n, ps.pb$n, ps.jp$n, nb.pb$n, nb.jp$n, pb.jp$n) %>% harmonic.mean %>% round n_l <- c(poq.ne.l$n, poq.ps.l$n, poq.nb.l$n, poq.pb.l$n, poq.jp.l$n, ne.ps.l$n, ne.nb.l$n, ne.pb.l$n, ne.jp.l$n, ps.nb.l$n, ps.pb.l$n, ps.jp.l$n, nb.pb.l$n, nb.jp.l$n, pb.jp.l$n) %>% harmonic.mean %>% round n_h <- c(poq.ne.h$n, poq.ps.h$n, poq.nb.h$n, poq.pb.h$n, poq.jp.h$n, ne.ps.h$n, ne.nb.h$n, ne.pb.h$n, ne.jp.h$n, ps.nb.h$n, ps.pb.h$n, ps.jp.h$n, nb.pb.h$n, nb.jp.h$n, pb.jp.h$n) %>% harmonic.mean %>% round ####模型设置 #### model_all <- 'NB ~ POQ + PS + NE PB ~ POQ + PS + NE JP ~ POQ + PS + NE NE ~ POQ PS ~ POQ NE ~~ 1*NE PS ~~ 1*PS POQ ~~ 1*POQ NE ~~ 0.1*PS NB ~~ 0.1*NB PB ~~ 0.1*PB JP ~~ 0.1*JP NB ~~ 0.1*PB NB ~~ 0.1*JP JP ~~ 0.1*PB' RAM_all <- lavaan2RAM(model_all, obs.variables = varnames) #### SEM全部数据及调和平均数 #### fin_dat <- list(all_dat, all_dat.l, all_dat.h) fin_n <- c(all_n, n_l, n_h) stage1 <- list() stage2 <- list() stage2_LB <- list() stage2_Z <- list() ind_LB <- list() ind_Z <- list() fitness <- list() path <- list() ind <- list() sem <- list() name <- c("all", "low individualism", "high individualism") for (i in 1:length(fin_dat)){ #### stage1 #### stage1[[i]] <- tssem1(Cov = fin_dat[[i]], n = fin_n[i], method = "FEM", RE.type = "Diag", RE.startvalues=0.1, acov = "weighted") summary(stage1[[i]]) #### stage2 #### stage2[[i]] <- tssem2(stage1[[i]], Amatrix = RAM_all$A, Smatrix = RAM_all$S) summary(stage2[[i]]) stage2_LB[[i]] <- tssem2(stage1[[i]], Amatrix = RAM_all$A, Smatrix = RAM_all$S, diag.constraints = TRUE, intervals.type = "LB", mx.algebras = list( #POQ-NE-Y IndNE_NB = mxAlgebra(NEONPOQ*NBONNE, name = "IndNE_NB"), IndNE_PB = mxAlgebra(NEONPOQ*PBONNE, name = "IndNE_PB"), IndNE_JP = mxAlgebra(NEONPOQ*JPONNE, name = "IndNE_JP"), #POQ-PS-Y IndPS_NB = mxAlgebra(PSONPOQ*NBONPS, name = "IndPS_NB"), IndPS_PB = mxAlgebra(PSONPOQ*PBONPS, name = "IndPS_PB"), IndPS_JP = mxAlgebra(PSONPOQ*JPONPS, name = "IndPS_JP"), #POQ-NE+PS-Y Indall_NB = mxAlgebra(NEONPOQ*NBONNE + PSONPOQ*NBONPS, name = "Indall_NB"), Indall_PB = mxAlgebra(NEONPOQ*PBONNE + PSONPOQ*PBONPS, name = "Indall_PB"), Indall_JP = mxAlgebra(NEONPOQ*JPONNE + PSONPOQ*JPONPS, name = "Indall_JP"), #POQ-NE+PS-Y PLUS POQ-Y Total_NB = mxAlgebra(NEONPOQ*NBONNE + PSONPOQ*NBONPS + NBONPOQ, name = "Total_NB"), Total_PB = mxAlgebra(NEONPOQ*PBONNE + PSONPOQ*PBONPS + PBONPOQ, name = "Total_PB"), Total_JP = mxAlgebra(NEONPOQ*JPONNE + PSONPOQ*JPONPS + JPONPOQ, name = "Total_JP"), #Diff POQ-(NE-PS)-Y DIF_NEminusPS_NB= mxAlgebra(NEONPOQ*NBONNE - PSONPOQ*NBONPS, name = "DIF_NEminusPS_NB"), DIF_NEminusPS_PB= mxAlgebra(NEONPOQ*PBONNE - PSONPOQ*PBONPS, name = "DIF_NEminusPS_PB"), DIF_NEminusPS_JP= mxAlgebra(NEONPOQ*JPONNE - PSONPOQ*JPONPS, name = "DIF_NEminusPS_JP"))) stage2_LB[[i]] <- rerun(stage2_LB[[i]]) ind_LB[[i]] <- summary(stage2_LB[[i]]) stage2_Z[[i]] <- tssem2(stage1[[i]], Amatrix = RAM_all$A, Smatrix = RAM_all$S, diag.constraints = FALSE, intervals.type = "z", mx.algebras = list( IndNE_NB = mxAlgebra(NEONPOQ*NBONNE, name = "IndNE_NB"), IndNE_PB = mxAlgebra(NEONPOQ*PBONNE, name = "IndNE_PB"), IndNE_JP = mxAlgebra(NEONPOQ*JPONNE, name = "IndNE_JP"), IndPS_NB = mxAlgebra(PSONPOQ*NBONPS, name = "IndPS_NB"), IndPS_PB = mxAlgebra(PSONPOQ*PBONPS, name = "IndPS_PB"), IndPS_JP = mxAlgebra(PSONPOQ*JPONPS, name = "IndPS_JP"), Indall_NB = mxAlgebra(NEONPOQ*NBONNE + PSONPOQ*NBONPS, name = "Indall_NB"), Indall_PB = mxAlgebra(NEONPOQ*PBONNE + PSONPOQ*PBONPS, name = "Indall_PB"), Indall_JP = mxAlgebra(NEONPOQ*JPONNE + PSONPOQ*JPONPS, name = "Indall_JP"), Total_NB = mxAlgebra(NEONPOQ*NBONNE + PSONPOQ*NBONPS + NBONPOQ, name = "Total_NB"), Total_PB = mxAlgebra(NEONPOQ*PBONNE + PSONPOQ*PBONPS + PBONPOQ, name = "Total_PB"), Total_JP = mxAlgebra(NEONPOQ*JPONNE + PSONPOQ*JPONPS + JPONPOQ, name = "Total_JP"), DIF_NEminusPS_NB= mxAlgebra(NEONPOQ*NBONNE - PSONPOQ*NBONPS, name = "DIF_NEminusPS_NB"), DIF_NEminusPS_PB= mxAlgebra(NEONPOQ*PBONNE - PSONPOQ*PBONPS, name = "DIF_NEminusPS_PB"), DIF_NEminusPS_JP= mxAlgebra(NEONPOQ*JPONNE - PSONPOQ*JPONPS, name = "DIF_NEminusPS_JP"))) stage2_Z[[i]] <- rerun(stage2_Z[[i]]) ind_Z[[i]] <- summary(stage2_Z[[i]]) #### 拟合系数 #### fitness[[i]] <- ind_LB[[i]][["stat"]]%>%as.data.frame%>%round(2)%>% set_colnames("Goodness-of-fit indices") #### 路径系数 #### path[[i]] <- data.frame(round(ind_Z[[i]][["coefficients"]][,1], 2), paste("[", round(ind_Z[[i]][["coefficients"]][,3], 2),",", round(ind_Z[[i]][["coefficients"]][,4], 2), "]"), round(ind_Z[[i]][["coefficients"]][,2], 2), round(ind_Z[[i]][["coefficients"]][,5], 2), round(ind_Z[[i]][["coefficients"]][,6], 2)) %>% set_colnames(c("β", "95% CI", "SE", "z", "p")) %>% set_rownames(c("NE->JP", "POQ->JP", "PS->JP", "NE->NB", "POQ->NB", "PS->NB", "POQ->NE", "NE->PB", "POQ->PB", "PS->PB", "POQ->PS")) #### 中介效应 #### ind[[i]] <- data.frame(round(ind_LB[[i]][["mx.algebras"]][,2],2), paste("[", round(ind_LB[[i]][["mx.algebras"]][,1],2), ",", round(ind_LB[[i]][["mx.algebras"]][,3],2), "]")) %>% set_colnames(c("β", "95%CI"))%>% set_rownames(c("IndNE_NB", "IndNE_PB", "IndNE_JP", "IndPS_NB", "IndPS_PB", "IndPS_JP", "Indall_NB", "Indall_PB", "Indall_JP", "Total_NB", "Total_PB", "Total_JP", "DIF_NEminusPS_NB", "DIF_NEminusPS_PB", "DIF_NEminusPS_JP")) sem[[i]] <- list(name = name[i], fit=fitness[[i]], path = path[[i]], ind = ind[[i]]) sem[[i]] i = i + 1} #### 相关系数文本 #### sem.matrix <- cbind(c(poq.ne$word, poq.ps$word, poq.nb$word, poq.pb$word, poq.jp$word), c(" ", ne.ps$word, ne.nb$word, ne.pb$word, ne.jp$word), c(" ", " ", ps.nb$word, ps.pb$word,ps.jp$word), c(" ", " ", " ", nb.pb$word, nb.jp$word), c(" ", " "," ", " ", pb.jp$word))%>% set_colnames(c("资质过剩感", "消极情绪", "积极自我概念", "消极角色外行为", "积极角色外行为"))%>% set_rownames(c("消极情绪", "积极自我概念", "消极角色外行为", "积极角色外行为", "任务绩效")) write.csv(sem.matrix, "Table2_变量相关系数矩阵.csv") # 表2 #### 结构方程分析结果 #### # 此处获取结构方程拟合结果 final_fit <- cbind(sem[[1]][["fit"]][c(1,7,4),], sem[[2]][["fit"]][c(1,7,4),], sem[[3]][["fit"]][c(1,7,4),])%>% set_rownames(c("n", "Chi", "p"))%>% set_colnames(c("全样本", "高集体主义", "低集体主义")) # 此处获取图2到4信息 #### final_path <- rbind(c("全样本", " "," ", " ", " ", "高集体主义", " "," ", " ", " ", "低集体主义", " "," ", " ", " "), rep(c("β", "CI", "SE", "z", "p"), 3), cbind(rbind(sem[[1]][["path"]]), rbind(sem[[2]][["path"]]), rbind(sem[[3]][["path"]])))%>%set_colnames(c(1:15)) write.csv(final_path, "Figure2_4_模型1-3路径系数.csv") # 图2、图3、图4 final_ind <- rbind(rep(c("β", "95%CI"),3), cbind(sem[[1]][["ind"]], sem[[2]][["ind"]], sem[[3]][["ind"]]))%>%set_colnames(c(1:6)) final_ind_final <- rbind(final_ind[c(1:7, 14:16, 11:13),]) write.csv(final_ind_final, "Table3_情绪认知间接效应检验.csv") # 表3 #### 3………………概念冗余度检验………………#### #### 相关矩阵构建 #### matrix <- data.frame(maineffects$x, maineffects$y, maineffects$dim, paste( "(", maineffects$k, ",", maineffects$n, ")" ) , paste( "(", maineffects$r, ",", maineffects$rho, ")" ) , maineffects$`95% CI`, maineffects$`80% CV`, maineffects$rho)%>% set_colnames(c("x", "dim", "y", "(k, n)", "(r, ρ)", "95% CI", "80% CV", "rho")) matrix$all = matrix$`(r, ρ)` poq_pj <- subset(matrix, matrix$x == "资质过剩感" & matrix$y == "个人工作匹配") poq_po <- subset(matrix, matrix$x == "资质过剩感" & matrix$y == "个人组织匹配") poq_y <- subset(matrix, (matrix$y == "压力(反向)"| matrix$y == "组织承诺"| matrix$y == "工作满意度"| matrix$y == "创新"| matrix$y == "组织公民行为"| matrix$y == "反生产行为"| matrix$y == "离职意愿"| matrix$y == "任务绩效")& matrix$x == "资质过剩感") pj_po <- subset(matrix, matrix$x == "个人工作匹配" & matrix$dim == "个人组织匹配") pj_y<- subset(matrix, (matrix$x == "个人工作匹配"& (matrix$y == "压力(反向)"| matrix$y == "组织承诺"| matrix$y == "工作满意度"))| (matrix$dim == "个人工作匹配"& (matrix$y == "创新"| matrix$y == "组织公民行为"| matrix$y == "反生产行为"| matrix$y == "离职意愿"| matrix$y == "任务绩效"))) po_y <- subset(matrix, (matrix$x == "个人组织匹配"& (matrix$y == "压力(反向)"| matrix$y == "组织承诺"| matrix$y == "工作满意度"))| (matrix$dim == "个人组织匹配"& (matrix$y == "创新"| matrix$y == "组织公民行为"| matrix$y == "反生产行为"| matrix$y == "离职意愿"| matrix$y == "任务绩效"))) #### 相关矩阵表格 #### ynames <- c("创新", "组织公民行为", "反生产行为", "离职意愿", "任务绩效", "压力(反向)", "工作满意度", "组织承诺") rwa.text <- data.frame(ynames, poq_y= poq_y$all, pj_y = pj_y$all, po_y = po_y$all, poq_pj = poq_pj$all, poq_po = poq_po$all, pj_po = pj_po$all) write.csv(rwa.text, "Table4_poq及匹配与结果变量相关性.csv") # 表4 #### 数据准备:相对权重分析 #### data.rwa <- data.frame(ynames, poq_y= poq_y$rho, pj_y = pj_y$rho, po_y = po_y$rho, poq_pj = poq_pj$rho, poq_po = poq_po$rho, pj_po = pj_po$rho) varnames <- c("y", "poq", "pj", "po") lables <- list(varnames, varnames) cordat <- list() for (i in 1:nrow(data.rwa)){ cordat[[i]] <- vec2symMat(as.matrix(data.rwa[i,2:ncol(data.rwa)]), diag = FALSE, byrow = FALSE) dimnames(cordat[[i]]) <- lables} #### 相对权重分析函数 #### #注:参考https://relativeimportance.davidson.edu/,根据本研究做相应调整 multRegress<-function(mydata){ numVar<<-NCOL(mydata) Variables<<- names(mydata)[2:numVar] RXX<-mydata[2:numVar,2:numVar] RXY<-mydata[2:numVar,1] RXX.eigen<-eigen(RXX) D<-diag(RXX.eigen$val) delta<-sqrt(D) lambda<-RXX.eigen$vec%*%delta%*%t(RXX.eigen$vec) lambdasq<-lambda^2 beta<-solve(lambda)%*%RXY rsquare<<-sum(beta^2) RawWgt<-lambdasq%*%beta^2 import<-(RawWgt/rsquare)*100 result<-data.frame(Variables, Raw.W=round(RawWgt,2), R.perc=round(import,2), R2 = round(rsquare,2)) } #### POQ fit 相对权重计算 #### rawdata <- list() thedata <- list() Labels <- list() a <- list() title <- list() R_square <- list() rwa.results <- list() for (i in 1:length(cordat)){ rawdata[[i]]<- data.frame(cordat[[i]]) attach(rawdata[[i]]) thedata[[i]] <- data.frame(y, poq, pj, po) Labels[[i]] <- names(thedata[[i]])[2:length(thedata[[i]])] a[[i]] <- multRegress(thedata[[i]]) %>% set_colnames(c("变量", "W", "%R", "R2")) title[[i]] <- data.frame("", ynames[[i]], "", "") %>% set_colnames(c("变量", "W", "%R", "R2")) R_square[[i]] <- data.frame("R2", unique(a[[i]][,4]), "", "") %>% set_colnames(c("变量", "W", "%R", "R2")) rwa.results[[i]] <- rbind(a[[i]], R_square[[i]], title[[i]], data.frame("变量", "W", "%R", "R2") %>% set_colnames(c("变量", "W", "%R", "R2")))[, 1:3] rwa.results[[i]] <- data.frame(id = c(1:nrow(rwa.results[[i]])), rwa.results[[i]]) } total<-merge(rwa.results[[1]], rwa.results[2:length(rwa.results)], by="id")%>%t%>%unique%>%t total.rwa <- rbind(total[5:6,], total[1:4,]) write.csv(total.rwa, file = "Table5_6_相对权重分析结果.csv") # 表5与表6