Python3数据分析与挖掘建模(10)多因子:复合分析-交叉分析与实现示例

news2024/9/29 11:37:03

1. 复合分析

1.1 概述

复合分析(Factorial Analysis)是一种统计分析方法,用于研究多个因素对观测结果的影响,并探究各个因素之间的相互作用效应。

在复合分析中,研究者会选择多个因素(也称为处理变量或独立变量),并对这些因素的不同水平进行组合。每个因素的水平表示该因素所具有的不同取值或条件。通过对不同因素水平的组合进行实验或观测,研究者可以探索这些因素对结果变量(也称为因变量)的影响。

复合分析可以帮助研究者了解以下方面:

  1. 主效应(Main Effects):即每个因素对结果变量的独立影响。通过比较不同因素水平的组合,可以确定每个因素对结果的影响程度。

  2. 交互效应(Interaction Effects):即多个因素之间的相互作用对结果的影响。交互效应表示多个因素同时存在时,它们之间是否存在非加性的影响,即相互作用效应。

复合分析可以应用于各种领域和实验设计,例如生物学、心理学、社会科学等。研究者可以利用复合分析来确定最佳因素组合、解释因素之间的相互作用以及预测结果变量在不同条件下的表现。

在实施复合分析时,常用的统计方法包括方差分析(ANOVA)、线性回归模型、混合效应模型等。这些方法可以帮助研究者对复合分析的数据进行建模和推断,以得出结论和进行预测。

总而言之,复合分析是一种多因素的统计分析方法,用于研究多个因素对观测结果的影响,并探索因素之间的相互作用效应。它可以提供对因素影响和相互作用的深入理解,以支持科学研究和决策制定。

1.2 交叉分析

交叉分析(Cross-Tabulation Analysis): 交叉分析是一种统计分析方法,用于研究两个或多个变量之间的关系。它通过将数据按照不同变量的不同取值进行分组,并计算各组之间的频数或比例,从而揭示变量之间的相关性或差异。交叉分析常用于描述分类变量之间的关系,例如性别与购买偏好、地区与产品偏好等。

1.3 因子分析

因子分析(Factor Analysis): 因子分析是一种统计方法,用于探索多个观测变量之间的潜在结构或维度。它通过分析观测变量之间的协方差矩阵,将这些变量归纳为较少的因子或维度,以解释变量之间的共同方差。因子分析可用于数据降维、变量分类和构建潜在变量模型。

1.4分组与钻研

分组与钻研(Segmentation and Drilling): 分组与钻研是一种数据分析方法,用于将数据按照特定的标准或属性进行分组,并对各组进行深入研究。通过分组与钻研,可以识别出不同组之间的差异和相似性,发现隐藏在数据中的模式和洞察,并为不同组别制定针对性的策略或决策。

1.5聚类分析

聚类分析(Cluster Analysis): 聚类分析是一种无监督学习方法,用于将相似的个体或对象归类到同一组别中。聚类分析通过测量个体之间的相似性或距离,并将相似的个体划分为不同的簇或群组。聚类分析可用于发现数据中的群集结构、识别潜在的子群体或细分市场,并支持个性化营销、客户分类和产品定位等领域。

1.6 相关分析

相关分析(Correlation Analysis): 相关分析是一种统计方法,用于衡量两个或多个变量之间的相关性或关联程度。它通过计算变量之间的相关系数(如皮尔逊相关系数)来评估它们之间的线性关系。相关分析可以帮助研究者确定变量之间的正向或负向关系,从而理解它们之间的相互依赖性或影响关系。

2. 交叉分析-独立t检验

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as ss
import seaborn as sns

# 读取 HR.csv 文件并存储为 DataFrame
df = pd.read_csv("../data/HR.csv")

# 按部门分组并获取索引
dp_indices = df.groupby(by="department").indices

# 获取销售部门和技术部门的离职情况值
sales_values = df["left"].iloc[dp_indices['sales']].values
technical_values = df["left"].iloc[dp_indices['technical']].values

# 执行 t 检验并打印 p 值
t_statistic, p_value = ss.ttest_ind(sales_values, technical_values)
print(p_value)

# 获取部门名称列表
dp_keys = list(dp_indices.keys())

# 创建用于存储 t 值的矩阵
dp_t_mat = np.zeros([len(dp_keys), len(dp_keys)])

# 创建一个新的图形对象
plt.figure()

# 遍历部门名称列表,计算 t 值并填充矩阵
for i in range(len(dp_keys)):
    for j in range(len(dp_keys)):
        # 执行 t 检验并获取 p 值
        p_value = ss.ttest_ind(df["left"].iloc[dp_indices[dp_keys[i]]].values,
                               df["left"].iloc[dp_indices[dp_keys[j]]].values)[1]
        if p_value < 0.05:
            dp_t_mat[i][j] = -1  # 如果 p 值小于 0.05,则将 t 值设置为 -1,表示显著差异
        else:
            dp_t_mat[i][j] = p_value

# 绘制热力图并设置部门名称标签
sns.heatmap(dp_t_mat, xticklabels=dp_keys, yticklabels=dp_keys)

# 显示图形
plt.show()

该代码的功能是对 HR 数据集中的部门进行交叉分析。主要步骤如下:

  1. 导入所需的库:pandas、numpy、matplotlib、scipy.stats 和 seaborn。

  2. 读取 HR.csv 文件并将其存储为 DataFrame。

  3. 使用 groupby 方法对数据按部门进行分组,并获取各个部门的索引。

  4. 从 DataFrame 中提取销售部门和技术部门的离职情况值。

  5. 使用 ss.ttest_ind 函数执行 t 检验,比较销售部门和技术部门的离职情况,并打印出 p 值。

  6. 创建一个矩阵来存储各个部门之间的 t 值。

  7. 创建一个新的图形对象。

  8. 使用嵌套循环计算每对部门之间的 t 值,并将结果填充到矩阵中。如果 p 值小于 0.05,则将 t 值设为 -1,表示存在显著差异。

  9. 使用 seaborn 库的 heatmap 函数绘制热力图,显示部门之间的 t 值

分析的图示:

交叉分析结果的热图中,黑色部分表示离职率存在显著差异的部门对,而红色部分表示离职率没有显著差异的部门对。

具体来说,黑色部分代表的部门对(如IT与technical)在离职情况上存在相关影响,即这两个部门的离职情况之间有显著差异,可能是由于工作性质、工作环境或其他因素导致的。

而红色部分代表的部门对(如hr与technical)在离职情况上没有显著差异,即这两个部门的离职情况之间的差异不具有统计学上的显著性,可能是因为这两个部门的工作性质、员工群体或其他因素相似,导致离职情况相对一致。

通过观察交叉分析结果的热图,可以更直观地了解不同部门之间的离职情况差异,并对可能存在的相关影响进行初步分析和解释。

3. 交叉分析-透视表

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 读取HR.csv数据文件,并将其存储在DataFrame对象df中
df = pd.read_csv("../data/HR.csv")

# 使用pd.pivot_table()函数创建透视表,计算"left"列的均值,按照"promotion_last_5years"和"salary"作为行索引,
# "Work_accident"作为列索引,np.mean作为聚合函数
piv_tb = pd.pivot_table(df, values="left", index=["promotion_last_5years", "salary"], \
                        columns=["Work_accident"], aggfunc=np.mean)

# 打印透视表piv_tb
print(piv_tb)

# 使用seaborn库的heatmap函数绘制热图,将透视表piv_tb作为数据,设定颜色映射为"Reds",颜色范围为0到1
sns.heatmap(piv_tb, vmin=0, vmax=1, cmap=sns.color_palette("Reds", n_colors=256))

# 显示图形
plt.show()

在上述代码中,我们首先使用pd.read_csv()函数读取HR.csv数据文件,并将其存储在DataFrame对象df中。然后,使用pd.pivot_table()函数创建透视表piv_tb,计算"left"列的均值,并按照"promotion_last_5years"和"salary"作为行索引,"Work_accident"作为列索引。

接下来,我们使用seaborn库的heatmap()函数绘制热图,将透视表piv_tb作为数据,设定颜色映射为"Reds",并将颜色范围设置为0到1。最后,使用plt.show()显示图形。热图将展示不同组合条件下"left"列的均值,并以颜色的深浅表示不同的数值。

如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

路由器WiFi密码怎么设置?这样做可以快速设置!

案例&#xff1a;我在外面租房&#xff0c;买了一个路由器&#xff0c;为了不让别人使用&#xff0c;我想设置一个密码。但我不知道如何操作。路由器怎么设置密码&#xff1f;求方法分享&#xff01; 如今&#xff0c;Wi-Fi已成为日常生活中不可或缺的一部分。为了保障个人和家…

4. LockSupport与线程中断

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: ● 如何中断一个运行中的线程&#xff1f; ● 如何停止一个运行中的线程&#xff1f; 4.1.2 什么是中断机制 ● 首先&#xff0c;一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应…

排水管网监测,万宾排水管网在线监测系统

城市排水管网是保障城市环境卫生的重要基础设施。然而&#xff0c;传统的排水管网管理方式存在许多问题.通过排水管网在线监测系统的建设&#xff0c;可以实现对管网上窨井井盖状态、管网液位、管网流量、管网水质等数据采集&#xff0c;实时掌握排水管网运行状况&#xff0c;为…

@足智多谋的你,联网智能门锁试卷(2023高考版)正式发布!

千淘万漉虽辛苦&#xff0c;吹尽狂沙始到金。2023年的高考已于上周正式结束。湖南省高考成绩和录取控制分数线将在6月25日正式公布。广大学子历经一千多个日夜的努力&#xff0c;即将在这一天见证结果。 其实&#xff0c;当我们真正走出校园才发现&#xff0c;学无止境&#x…

敏捷项目管理

在了解敏捷项目管理之前&#xff0c;我们先看下敏捷和传统项目管理有什么区别。 传统项目管理&#xff1a;阶段式项目管理模式。 制定详细的计划和步骤&#xff0c;按计划执行&#xff0c;直到所有的计划执行全部结束。 敏捷项目管理模式&#xff0c;从愿景和高价值的目标出发…

V5.0.X版本 EMQX安装、卸载 以及使用

V5.0.X版本 EMQX安装、卸载 以及使用 一、卸载二、下载安装2.1 下载2.2 安装2.2.1 rpm安装2.2.2 tar安装 2.3 测试启动 三、EMQX使用 回到目录    回到末尾 EMQX为大规模分布式物联网 MQTT 消息服务器。提供高效可靠连接海量物联网设备&#xff0c;实时处理分发消息与事件流数…

高级信息系统项目管理师资料分享

&#x1f495;&#x1f495; 推荐&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; 文章目录 1. 高级信息系统项目管理师资料分享2023年5月12日2023年4月10日2023年3月28日2023.5高项精讲 2023备考高级信息系统项目管理师资料 1. 高级信息系统项目管理师资料分…

超级实用!Python 3.6帮您提升编码效率的一个新的小特性 ——f{}

Python3.6 格式化字符串的新用法 在python 3.6格式化字符串时&#xff0c;增加了一个非常实用的新特性&#xff0c;文本以“f”或者“F”为前缀加上{}&#xff0c;可以实现类似于%和str.format的功能&#xff0c;但与他们相比更加易读和不易不错。使用也非常方便&#xff0c;以…

3分钟教你怎样搭建属于你的私有仓库

上一节我们讲了实战项目&#xff1a;docker部署springboot项目&#xff0c;我介绍了镜像的基本操作和镜像的原理以及如何利用docker部署springboot项目&#xff0c;那么有了镜像&#xff0c;我们应该如何更好地存储和分发镜像呢&#xff1f;答案就是今天的主角——Docker 的镜像…

如何能够系统的自学网络安全(黑客)?

一、自学网络安全学习的误区和陷阱 1.不要试图以编程为基础的学习开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而且实际向安全过渡后可用到的关键知识并不多 一…

ResultMap使用

要解决的问题&#xff1a;属性名和字段名不一致 1.1 查询为null问题 查看之前的数据库的字段名 Java中的实体类设计 public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样&#xff01; //构造 //set/get /…

容器(第六篇)docker-harbor

什么是Harbor Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。 Harbor以 Docker 公司开源的 Registry 为基础&#xff0c;提供了图形管理 UI 、基于角色的访问控制(Role Based AccessContr…

常用的decap MOS电容版图介绍

常用的两种decap版图如下&#xff1a; 图a 图b 很多人认为decap电容就是source drain 衬底接地做下极板&#xff0c;poly gate接电源做上极板&#xff0c;这种认同是错误的。 我们先把MOS电容拆分成pmos和nmos去看。对于图a&#xff0c;poly没有接任何东西&#xff0c;pmos部…

数据库事务隔离级别

数据库事务隔离级别&#xff1a; 不同隔离级别引发的问题&#xff1a;对于同时运行的多个事务&#xff08;多线程并发&#xff09;, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题: &#xff08;问题的本质就是线程安全问题&#x…

2核4G云服务器可以支持多少个网站数量?多维度权衡

2核4G服务器可以安装多少个网站&#xff1f;阿腾云2核4G5M带宽服务器目前安装了14个网站&#xff0c;从技术角度是没有限制的&#xff0c;只要云服务器性能够用&#xff0c;想安装几个网站就安装几个网站&#xff0c;但是从公网带宽和CPU计算性能方面考虑&#xff0c;要计算网站…

6.10 线程池及gdb调试多线程

线程池概念和使用 概念&#xff1a; 通俗的讲就是一个线程的池子&#xff0c;可以循环的完成任务的一组线程集合 必要性&#xff1a; 我们平时创建一个线程&#xff0c;完成某一个任务&#xff0c;等待线程的退出。但当需要创建大量的线程时&#xff0c;假设T1为创建线程时间&…

DAY 74 ELK企业级日志分析系统

ELK 简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求 ELK各组件介绍 ElasticSearch&#xff1a; 是基于Lucene&#xff08;一个全文检索引…

大麦一键生成订单截图 大麦生成购票链接

一键生成订单截图&#xff0c;生成购票链接 已对接支付 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

idea设置@Author文件头注释

背景&#xff1a;做项目开发&#xff0c;每个文件的文件头现在看着特别难受&#xff0c;想着弄着统一一些吧 第一步&#xff1a;选择intelliJ IDEA&#xff0c;然后选择settings 第二步&#xff1a;选择Editor,再选择File and Code Templates 第三步&#xff1a;选择Includes,…

API管理的正确姿势--API Gateway

淘宝API管理的正确姿势--API Gateway 编者按&#xff1a; 数字化生态&#xff0c;以创新客户体验为核心&#xff0c;所有我们身边能感知到的变化都来自于渐近的创新。这些创新需要试错&#xff0c;需要不断的升级&#xff0c;并且创新往往与我们熟知的功能分离开来分别呈现。微…