如何解读链式中介作用分析结果?

191 篇文章 31 订阅
10 篇文章 1 订阅

中介作用是研究自变量X对因变量Y的影响时,是否会先通过中介变量M,再去影响Y。比如工作满意度(X)会影响到创新氛围(M),再影响最终工作绩效(Y)。

在中介作用研究中,如果自变量与因变量之间存在多个中介变量被称为多重中介模型。

 

一、基本类型

根据中介变量之间是否有影响关系又可分为两种类型。

并行中介模型:并行多重中介模型,中介变量之间互不影响

链式中介模型:链式多重中介模型,中介变量之间相互影响

目前比较常见的是Bootstrap法进行中介效应检验。

 

二、多重中介操作方法

(1)并行中介基于SPSSAU的操作:

 

①登录SPSSAU上传数据;

②在SPSSAU左侧仪表盘选择[问卷研究]--[中介作用];

③拖拽相应的变量到对应分析框;中介变量可同时放入多个;

④[中介类型]选择“平行中介”;

⑤点击开始分析。

 

SPSSAU中介作用分析

 

结果分析

上表是对中介作用分析结果的基本汇总。本次研究以X作为自变量,M1、M2作为中介变量,Y为自变量进行分析。本次中介效应分析共涉及共4个模型,模型方程分别如下:


Y=2.835+0.408*X
M1=2.093+0.541*X
M2=1.152+0.776*X
Y=1.611+0.038*X+0.524*M1+0.110*M2

 

上表是以Bootstrap法进行中介检验,分别对应两条路径结果:X->M1->Y 和 X->M2->Y;

如果置信区间不包括0,那么中介作用显著,支持有中介作用的假设; 如果包括0,则不显著,不支持有中介作用的假设。

 

本研究中,总体中介效应为:0.369,中介模型检验结果的置信区间不包括0,说明中介模型成立。

分别对两条路径分别进行中介效应检验。首先看X->M1->Y这条路径,bootstrap 95%置信区间为0.337~0.498,不包括0,说明X对Y影响时M1的中介效应显著。中介效应为0.284。

接着看X->M2->Y这条路径,bootstrap 95%置信区间为0.033~0.221,检验结果不包括0,说明X对Y影响时M2的中介效应显著。中介效应为0.085。

上表为中介作用效应量结果汇总表格。如果中介效应显著,可在此表中进一步查看中介作用的效应占比。

 

(2)链式中介基于SPSSAU的操作:

 

①登录SPSSAU上传数据;

②在SPSSAU左侧仪表盘选择[问卷研究]--[中介作用];

③拖拽相应的变量到对应分析框;中介变量可同时放入多个;

④[中介类型]选择“链式中介”(默认为并行中介);

⑤点击开始分析。

 

SPSSAU中介作用分析

 

结果分析

上表是对中介作用分析结果的基本汇总。本次研究以X作为自变量,M1、M2作为中介变量,Y为自变量进行分析。本次中介效应分析共涉及共4个模型。

上表为中介效应分过程汇总表格,输出包括中介效应、间接效应和总效应等结果。

如果置信区间不包括0,那么中介作用显著,支持有中介作用的假设; 如果包括0,则不显著,不支持中介作用的假设。

 

其中,总效应bootstrap95%置信区间为0.331~0.484,检验结果不包括0,说明总效应显著直接效应95%置信区间为-0.055~0.132,检验结果包括0,说明直接效应不显著

间接效应需要结合两条或多条路径回归模型的结果值相乘得到,比如中介变量M时,X->M和M->Y的效应值相乘,即得到间接效应值,间接效应值进行Bootstrap抽样检验,最终验证是否存在中介效应。间接效应结果可通过下面的间接效应分析表格进行查看。

使用Bootstrap抽样检验法进行中介效应研究,抽样次数为5000次,结果显示:

针对链式中介效应路径进行分析,针对‘X⇒M1⇒M2⇒Y’这条中介路径来看, 95%区间并不包括数字0(95% CI:0.003~0.021),因而说明此条中介效应路径存在。

针对‘X⇒M1⇒Y’这条中介路径来看, 95%区间并不包括数字0(95% CI:0.332~0.431),因而说明此条中介效应路径存在。
针对‘X⇒M2⇒Y’这条中介路径来看, 95%区间并不包括数字0(95% CI:0.051~0.077),因而说明此条中介效应路径存在。

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 下面是一些C语言链表操作的示例代码: 1. 定义链表节点结构体 ``` typedef struct node { int data; struct node *next; } Node; ``` 2. 创建链表 ``` Node *create_list(int n) { Node *head, *tail, *p; int i, data; head = tail = NULL; for (i = 0; i < n; i++) { scanf("%d", &data); p = (Node *)malloc(sizeof(Node)); p->data = data; p->next = NULL; if (head == NULL) { head = tail = p; } else { tail->next = p; tail = p; } } return head; } ``` 3. 插入节点 ``` Node *insert_node(Node *head, int pos, int data) { Node *p, *q; int i = 0; p = (Node *)malloc(sizeof(Node)); p->data = data; p->next = NULL; if (pos == 0) { p->next = head; head = p; } else { q = head; while (q != NULL && i < pos - 1) { q = q->next; i++; } if (q == NULL) { printf("Position not found\n"); } else { p->next = q->next; q->next = p; } } return head; } ``` 4. 删除节点 ``` Node *delete_node(Node *head, int pos) { Node *p, *q; int i = 0; if (pos == 0) { p = head; head = head->next; free(p); } else { q = head; while (q != NULL && i < pos - 1) { q = q->next; i++; } if (q == NULL || q->next == NULL) { printf("Position not found\n"); } else { p = q->next; q->next = p->next; free(p); } } return head; } ``` 5. 查找节点 ``` int find_node(Node *head, int data) { Node *p = head; int pos = 0; while (p != NULL) { if (p->data == data) { return pos; } p = p->next; pos++; } return -1; } ``` 这些是一些基本的链表操作,可以根据需要进行修改和扩展。 ### 回答2: 链式线性表是一种常见的数据结构,它由一系列的节点组成,每个节点包含数据元素和指向下一个节点的指针。 在C语言中,我们可以使用结构体来定义链表的节点,如下所示: ``` typedef struct Node { int data; // 数据元素 struct Node* next; // 指向下一个节点的指针 } Node; ``` 链表的操作包括插入节点、删除节点和遍历节点。下面是相应的代码实现: 1. 插入节点: ```c void insertNode(Node** head, int data) { Node* newNode = (Node*)malloc(sizeof(Node)); // 创建新节点 newNode->data = data; // 设置节点数据 newNode->next = NULL; // 将新节点的指针设置为NULL if (*head == NULL) { *head = newNode; // 如果链表为空,将新节点作为头节点 } else { Node* temp = *head; while (temp->next != NULL) { temp = temp->next; // 移动到链表的最后一个节点 } temp->next = newNode; // 将新节点添加到链表的最后一个节点后面 } } ``` 2. 删除节点: ```c void deleteNode(Node** head, int data) { Node* currentNode = *head; Node* prevNode = NULL; if (currentNode != NULL && currentNode->data == data) { *head = currentNode->next; // 若节点为头节点,则将头指针指向下一个节点 free(currentNode); // 释放节点的内存空间 return; } while (currentNode != NULL && currentNode->data != data) { prevNode = currentNode; currentNode = currentNode->next; } if (currentNode == NULL) { return; // 若指定数据的节点不存在,则直接返回 } prevNode->next = currentNode->next; // 删除节点 free(currentNode); // 释放节点的内存空间 } ``` 3. 遍历节点: ```c void traverseList(Node* head) { Node* currentNode = head; while (currentNode != NULL) { printf("%d ", currentNode->data); currentNode = currentNode->next; } printf("\n"); } ``` 以上就是C语言链式线性表操作的基本代码实现。需要注意的是,在实际使用中需要考虑内存的申请和释放,以及错误处理等问题。 ### 回答3: 链式线性表是一种常见的数据结构,它通过指针将数据元素连接起来形成一个链式结构。C语言中可以使用结构体和指针来实现链式线性表,下面是一个链式线性表的操作代码示例。 #define NULL 0 // 定义链式线性表的结点结构体 typedef struct Node { int data; struct Node* next; } Node; // 初始化链式线性表 void initList(Node** list) { *list = NULL; } // 判断链式线性表是否为空 int isEmpty(Node* list) { return list == NULL; } // 在链式线性表的末尾插入元素 void insert(Node** list, int value) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = value; newNode->next = NULL; if (*list == NULL) { *list = newNode; } else { Node* tail = *list; while (tail->next != NULL) { tail = tail->next; } tail->next = newNode; } } // 删除链式线性表中第一个与指定值相等的元素 void remove(Node** list, int value) { if (*list == NULL) { return; } if ((*list)->data == value) { Node* nodeToRemove = *list; *list = (*list)->next; free(nodeToRemove); } else { Node* currentNode = *list; while (currentNode->next != NULL && currentNode->next->data != value) { currentNode = currentNode->next; } if (currentNode->next != NULL) { Node* nodeToRemove = currentNode->next; currentNode->next = currentNode->next->next; free(nodeToRemove); } } } // 遍历并打印链式线性表中的所有元素 void printList(Node* list) { Node* currentNode = list; while (currentNode != NULL) { printf("%d ", currentNode->data); currentNode = currentNode->next; } printf("\n"); } 以上是一个简单的链式线性表操作的代码,包括了初始化链式线性表、判断链式线性表是否为空、插入元素、删除元素和打印链式线性表等基本功能。通过这些操作,我们可以方便地对链式线性表进行增删查改等操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值