首页 > 编程语言 >Python统计实战:一题巩固单因子方差分析

Python统计实战:一题巩固单因子方差分析

时间:2024-06-17 20:04:01浏览次数:21  
标签:plt Python 管理者 exercise9 方差分析 评分 因子 层级 import

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。

(以下练习题来源于《统计学—基于Python》。联系获取完整数据和Python源代码文件。)


练习题

一家管理咨询公司为不同的客户提供人力资源管理讲座。每次讲座的内容基本上一样,听课者有时是高层管理者,有时是中层管理者,有时是基层管理者。该咨询公司认为,不同层级的管理者对讲座的满意度是不同的。听完讲座后,随机抽取不同层级的管理者,他们的满意度评分如下(评分标准是1~10,10代表非常满意):

(1)检验管理者的层级不同是否会导致评分有显著差异(α=0.05),并分析效应量。

(2)采用HSD方法比较管理者的评分之间的差异。

(3)检验满意度评分是否满足正态性和方差齐性。


分析与结果

(1)这道题考查的是单因子方差分析,该因子为管理者层级,分为了三个层级,即高层、中层和基层。

首先要检验管理者的层级不同是否会导致评分有显著差异(α=0.05),我们需要进行方差分析并将计算得到的p值与0.05作比较。如果p值小于0.05,我们则可以做出判断,管理者的层级不同会导致评分有显著差异。注意需要先对数据进行融合。

方差分析的结果显示,如下图所示,p值=0.000633,远小于0.05,因此可以断定,管理者的层级不同会导致评分有显著差异。

效应量可根据R-sqaured得到。如下图所示,效应量为0.625,即在评分取值的总误差中被管理者层级解释的比例为62.5%

Python代码

import pandas as pd

exercise9_2 = pd.read_csv('exercise9_2.csv')
# exercise9_2.head()
exercise9_2_1 = pd.melt(exercise9_2, value_vars = ['高层管理者', '中层管理者', '基层管理者'], var_name = '层级', value_name = '评分') # 融合数据
# exercise9_2_1.head() # 查看融合后的数据

# 进行单因子方差分析
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
model1 = ols(formula = '评分 ~ 层级', data = exercise9_2_1).fit()  # 拟合方差分析模型
anova_lm(model1, typ =1)

Python代码

print(model1.summary())

(2)采用HSD方法进行多重比较,找出哪两个层级的评分之间有显著差异。如下图所示,中层管理者与基层管理者、基层管理者与高层管理者的评分差异显著,而中层管理者与高层管理者的评分差异不显著。

Python代码

from statsmodels.stats.multicomp import MultiComparison

mc = MultiComparison(exercise9_2_1['评分'], exercise9_2_1['层级'])
print(mc.tukeyhsd(alpha = 0.05))

(3)接下来,我们绘制Q-Q图、直方图和核密度曲线来检验正态性。正态Q-Q图显示,评分近似服从正态分布;直方图与核密度图显示,评分接近对称分布。

Python代码

# 正态性检验:3个管理者层级的评分数据合并后的正态Q-Q图、直方图和核密度曲线
import pandas as pd
from matplotlib import pyplot as plt
import statsmodels.api as sm
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['Songti SC'] # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False     # 正常显示负号

# 绘制Q-Q图,采用的数据是 exercise9_2_1
plt.subplots(1, 2, figsize = (8, 3.5))
ax1 = plt.subplot(121)
pplot = sm.ProbPlot(exercise9_2_1['评分'], fit = True)
pplot.qqplot(line = 'r', ax = ax1, xlabel = '期望正态值', ylabel = '标准化的观测值')
ax1.set_title('评分的正态Q-Q图', fontsize = 12)

# 绘制直方图和核密度图
plt.subplot(122)
sns.histplot(exercise9_2_1['评分'], kde = True, bins = 6, stat = 'frequency')
plt.title('评分的直方图和核密度图')

plt.tight_layout()

最后,根据Levene检验法检验样本数据的方差齐性。计算结果为统计量F = 1.36364, p值 = 0.28567。由于p值大于0.05,可以认为各个管理者层级的评分满足方差齐性。残差图也反映出样本数据的方差齐性。

Python代码

# 用Levene检验法检验样本数据的方差齐性
import pandas as pd
from scipy.stats import levene
exercise9_2 = pd.read_csv('exercise9_2.csv')

sample1 = exercise9_2['高层管理者']
sample2 = exercise9_2['中层管理者']
sample3 = exercise9_2['基层管理者']

F, p_value = levene(sample1, sample2, sample3)
print(f"统计量F = {F:.5f}, p值 = {p_value:.5g}")
# 用残差图检验方差齐性
import pandas as pd
from statsmodels.formula.api import ols
import statsmodels.api as sm
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Songti SC'] # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False     # 正常显示负号

model1 = ols(formula = '评分 ~ 层级', data = exercise9_2_1).fit()  # 拟合单因子模型

# 绘制单因子方差分析的残差图
plt.scatter(model1.fittedvalues, model1.resid, marker = '*')
plt.xlabel('拟合值')
plt.ylabel('残差')
plt.title('残差图', fontsize = 13)
plt.axhline(0, ls = '--', color = 'red')

plt.tight_layout()

都读到这里了,不妨关注、点赞一下吧!

标签:plt,Python,管理者,exercise9,方差分析,评分,因子,层级,import
From: https://blog.csdn.net/lucasluy2020/article/details/139752813

相关文章

  • Python-入门指南第二版-全-
    Python入门指南第二版(全)原文:annas-archive.org/md5/4b0fd2cf0da7c8edae4b5ecfd40159bf译者:飞龙协议:CCBY-NC-SA4.0前言正如标题所承诺的,本书将向你介绍世界上最流行的编程语言之一:Python。它旨在面向初学者和希望将Python添加到他们已经掌握的语言中的更有经验的程序员......
  • Python 中的 Pandas(数据分析与处理)
    Pandas是Python中最受欢迎的数据处理库之一,其名字源自于“PanelData”(面板数据)的缩写。它提供了三种主要的数据结构:Series, DataFrame,Panel(在新版本已经被弃用)    数据操作与基本技巧数据读取与加载:Pandas支持从多种数据源加载数据,包括CSV文件、Excel文件、S......
  • 一行Python代码可以做什么,超出你想象
    哈喽,大家好,我是木头左!揭秘编程语言的灵活性在编程的世界里,简洁就是力量。Python以其优雅和简洁而著称,让开发者能够用更少的代码做更多的事。但这并不意味着功能上的妥协——Python的强大之处在于它允许在一行代码中执行多个语句,这不仅能提高的编码效率,还能使代码更加紧凑和易......
  • 嗨翻-Python-第三版-早期发布--全-
    嗨翻Python第三版(早期发布)(全)原文:annas-archive.org/md5/417e7d9e18255015d2c5d146fdf36e20译者:飞龙协议:CCBY-NC-SA4.0序言安装最新的Python3你在这里所做的取决于你正在运行的平台,假定是其中之一的Windows、macOS或Linux。好消息是所有三个平台都支持最新的Pyt......
  • Python-与-Jax-现代推荐系统构建指南-全-
    Python与Jax现代推荐系统构建指南(全)原文:annas-archive.org/md5/da17d05291861831978609329c481581译者:飞龙协议:CCBY-NC-SA4.0前言你是如何找到这本书的?是在网站上看到广告吗?也许是朋友或导师建议的;或者你在社交媒体上看到了提到它的帖子。也许你是在书店的书架上发现......
  • Python-机器学习秘籍第二版-全-
    Python机器学习秘籍第二版(全)原文:annas-archive.org/md5/343c5e6c97737f77853e89eacb95df75译者:飞龙协议:CCBY-NC-SA4.0前言当本书的第一版于2018年出版时,填补了机器学习(ML)内容日益丰富的关键空白。通过提供经过充分测试的、实用的Python示例,使从业者能够轻松地复制和......
  • 【cv-python基础】不同数据集的解析
    前言数据集使用之前需要对标注文件进行解析,故此记录。代码实现1.APA数据集解析#20240612:parsejsonfiletolabeledimage.importargparseimportjsonimportosimportos.pathasospimportcv2ascvimportnumpyasnpjsonfilename="freespace_3Dbox_APA.j......
  • 2024华为OD机试真题-出租车计费 、靠谱的车-(C++/Python)-C卷D卷-100分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述:程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。比如:23再多......
  • 2024华为OD机试真题-API集群负载统计-(C++/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述某个产品的RESTfulAPI集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTfulAPI是......
  • 用Python实现学生信息管理系统
    哈喽......