【数据分析】中介效应的简介、模型、python代码实现以及数据可视化

这篇具有很好参考价值的文章主要介绍了【数据分析】中介效应的简介、模型、python代码实现以及数据可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当谈到因果关系时,中介效应是一种非常重要的概念。中介效应发生在一个变量(中介变量)部分地中介了另外两个变量之间的关系。

什么是中介效应?

中介效应发生在以下情况下:

一个变量(中介变量)部分地中介了另外两个变量之间的关系。假设自变量X对因变量Y产生了影响,而这种关系是通过中介变量M传递的。这种中介效应可以通过如下的公式来计算:

其中,是自变量X对中介变量M的回归系数,是中介变量M对因变量Y的回归系数。这个公式告诉我们,中介变量M部分地中介了自变量X和因变量Y之间的关系。

如何计算中介效应?

我们可以使用statsmodels库来计算中介效应。为了说明这一点,我们可以参考以下模型:

【数据分析】中介效应的简介、模型、python代码实现以及数据可视化

【数据分析】中介效应的简介、模型、python代码实现以及数据可视化

在这个模型中,X是自变量,M是中介变量,Y是因变量,使用OLS回归模型来拟合这个模型,并计算中介效应。下面是计算中介效应的示例代码:

import pandas as pd
import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt

#读取数据,读取各个变量
data = pd.read_csv("mediation_data.csv")
X = data["X"].values.reshape(-1, 1)
M = data["M"].values.reshape(-1, 1)
Y = data["Y"].values.reshape(-1, 1)

# 标准化
X = sm.add_constant(X)
M = sm.add_constant(M)
X_scaled = (X - X.mean()) / X.std()
M_scaled = (M - M.mean()) / M.std()
Y_scaled = (Y - Y.mean()) / Y.std()

# 拟合回归模型
reg = sm.OLS(Y_scaled, X_scaled).fit()

# 拟合中介效应模型
med = sm.OLS(M_scaled, X_scaled).fit()
med_y = sm.OLS(Y_scaled, sm.add_constant(med.predict(X_scaled))).fit()

# 计算中介效应和总效应
indirect = med.params[1] * med_y.params[1]
direct = reg.params[1]
total = direct + indirect

print("中介效应:", indirect)
print("总效应:", total)

# 绘制路径图
fig, ax = plt.subplots()
sc = ax.scatter(X_scaled[:,1], Y_scaled, c=M_scaled[:,1], cmap='viridis', alpha=0.5)
plt.colorbar(sc)
fit_x = np.linspace(X_scaled[:,1].min(), X_scaled[:,1].max(), 100).reshape(-1,1)
fit_M = np.array([0.5] * len(fit_x)).reshape(-1,1)
fit_X = sm.add_constant(fit_x)
fit_M = sm.add_constant(fit_M)
fit_X_scaled = (fit_X - X.mean()) / X.std()
fit_M_scaled = (fit_M - M.mean()) / M.std()
fit_Y_pred = reg.predict(fit_X_scaled)
med_Y_pred = med_y.params[0] + med_y.params[1] * med.predict(fit_X_scaled)
ax.plot(fit_x, fit_Y_pred, label='Y', linewidth=2)
ax.plot(fit_x, med_Y_pred, label='M->Y', linewidth=2)
ax.legend()
plt.xlabel('X')
plt.ylabel('Y/M')
plt.show()

在这里,如果没有相关数据可以让我们去运行模型的话,我们可以考虑使用随机生成一个简单的可以用来计算中介效应的数据集,该数据集包含三个变量:自变量X、中介变量M和因变量Y。M = 0.5 * X + e,其中e是从均值为0,标准差为0.5的正态分布中生成的随机噪声,Y是根据X和M生成的,具体地,Y = 2 * X + 0.5 * M + e,其中e是从均值为0,标准差为1的正态分布中生成的随机噪声。

import numpy as np
import pandas as pd


np.random.seed(123)

# 随机生成
X = np.random.normal(size=100)
M = 0.5 * X + np.random.normal(0, 0.5, 100)
Y = 2 * X + 0.5 * M + np.random.normal(0, 1, 100)

# 建立dataframe
data = pd.DataFrame({'X': X, 'M': M, 'Y': Y})

data.to_csv('mediation_data.csv', index=False)

这个数据集是一个简单的中介效应数据集,其中自变量X影响因变量Y,同时也影响中介变量M。中介变量M也影响因变量Y,但是这种影响是通过自变量X间接产生的。因此,自变量X对因变量Y的总效应包括两部分,一部分是直接效应(X -> Y),另一部分是间接效应(X -> M -> Y)。这个数据集可以用来演示中介效应的计算和可视化。

【数据分析】中介效应的简介、模型、python代码实现以及数据可视化

路径图可以展示模型中自变量、中介变量、因变量之间的关系,以及模型拟合的结果。在这个由随机数据集生成的路径图中,横轴代表自变量X,纵轴代表因变量Y和中介变量M,散点图中颜色代表中介变量M的取值,蓝色的线代表自变量X对因变量Y的直接影响路径,橙色的线代表自变量X对中介变量M的直接影响路径,绿色的线代表中介变量M对因变量Y的影响路径,路径上的数字表示相应的系数估计值。

一起尝试运行吧!( ̄︶ ̄)↗ 

 文章来源地址https://www.toymoban.com/news/detail-460947.html

到了这里,关于【数据分析】中介效应的简介、模型、python代码实现以及数据可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python数据分析-数据挖掘(准备数据——数据建模——模型评估——模型应用)

    20 理解业务和数据:我们需要做好什么计划?_哔哩哔哩_bilibili 目录   一、理解业务和数据:我们需要做好什么计划? 1.1两个思想问题 1.2为什么数据挖掘不是万能的 1.3业务背景与目标 1.4把握数据  1.5总结 二、 准备数据:如何处理出完整、干净的数据? 2.1找到数据 2.2数据探索

    2024年02月05日
    浏览(65)
  • 生态经济学领域里的R语言机器学(数据的收集与清洗、综合建模评价、数据的分析与可视化、数据的空间效应、因果推断等)

    近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据,而计量经济学则通常使用较小样本,

    2024年02月11日
    浏览(57)
  • Python综合数据分析_RFM用户分层模型

    参考资料:开课吧

    2024年02月01日
    浏览(113)
  • ARIMA模型时间序列数据分析(附python代码)

    ARIMA模型建模流程  1 )平稳性检验与差分处理 我们选取原始数据 bus 中的“ prf_get_person_count ”列,并截取前 32 个站点的数据进行平稳性检验,这里采用的是 ADF 检验确定数据的平稳性,导入 statsmodels 包下的 adfuller 函数,该函数返回 adf 值与概率 p 值。若原始序列不平稳,就

    2024年02月01日
    浏览(56)
  • Python数据分析案例33——新闻文本主题多分类(Transformer, 组合模型) 模型保存

    对于海量的新闻,我们可能需要进行文本的分类。模型构建很重要,现在对于自然语言处理基本都是神经网络的方法了。 本次这里正好有一组质量特别高的新闻数据,涉及  \\\'教育\\\' \\\'科技\\\' \\\'社会\\\' \\\'时政\\\' \\\'财经\\\' \\\'房产\\\' \\\'家居\\\'  七大主题,基本涵盖了所有的常见的新闻类型。每个

    2024年01月17日
    浏览(46)
  • python数据分析与应用:使用scikit-learn构建模型分析 第六章实训(1,2)

    有问题可以加我微信交流学习,bmt1014 (gcc的同学不要抄袭呀!) 一、实验目的 1、掌握skleam转换器的用法。 2、掌握训练集、测试集划分的方法。 3、掌握使用sklearm进行PCA降维的方法。 4、掌握 sklearn 估计器的用法。 5、掌握聚类模型的构建与评价方法。 6、掌握分类模型的构

    2024年02月09日
    浏览(50)
  • 【Python数据分析】实践编写篇3:在Python中使用三阶指数平滑模型对金融数据集进行拟合与预测

    目录 一、前期准备 二、数据来源与样式  三、数据的预处理 (一)表格处理 (二)数据导入 (三)数据处理  四、模型构建(指数平滑) (一)数据作图 (二)观察季节性与趋势 (三)一阶指数平滑 (四)二阶指数平滑 (五)三阶指数平滑 (六)均方误(MSE)比较  

    2024年02月17日
    浏览(51)
  • GPT模型结合Python-GEE遥感云大数据分析、管理与可视化技术

    查看原文GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例应用 目录 第一章、理论基础 第二章、开发环境搭建 第三章、遥感大数据处理基础与ChatGPT等AI模型交互 第四章、典型案例操作实践 第五章、输入输出及数据资产高效管理 第六章、云端数据

    2024年02月08日
    浏览(96)
  • (3)【Python数据分析进阶】Machine-Learning模型与算法应用-线性回归与逻辑回归

    目录 一、Linear Regression线性回归应用 一元一次线性回归公式及解析 应用案例(一)——自定义数据(Custom data) 1、下载安装sklearn库 2、导入库函数 3、加载数据集 4、创建线性回归对象 5、模型训练 6、预测结果 7、绘制模型图像 8、应用模型进行预测 9、评估指标 应用案例(

    2024年01月24日
    浏览(53)
  • 数据分析简介

    判断采集数据的有效性和进行数据校准是数据处理中重要的步骤。以下是一些常见的方法和步骤可以帮助你进行数据有效性的判断和数据校准: 数据有效性判断: 数据范围:检查数据是否落在合理的范围内。根据具体情况,确定真实数据的上下限,并检查数据是否超过这些范

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包