混合模型方差分析

文章目录

  • 一、说明
  • 二、受试者“间”因素和受试者“内”因素的意思?
  • 三、混合模型方差分析回答 3 件事
  • 四、混合模型方差分析的假设

一、说明

在本文中,我将讨论一种称为混合模型方差分析的方差分析变体,也称为具有重复测量的 2 因素方差分析。这种统计方法用于分析包括受试者间因素(不同组)和受试者内因素(对同一受试者的重复测量)的数据。

二、受试者“间”因素和受试者“内”因素的意思?

​​在这里插入图片描述
受试者间因素和受试者内因素
假设我们想测试不同的教学方法(A、B 和 C)是否会影响学生的表现。我们对 15 名参与者进行研究,每组随机分配 5 名参与者(每组一种教学方法)。这种设置体现了主题之间的因素。

“受试者间因素”表示研究中的每个参与者只被分配到一组,并且每组经历不同的情况。

在此分析中,我们的目标是确定各组之间的平均性能水平是否存在显着差异,这正是单因素方差分析旨在实现的目标。如果您需要更多详细信息,可以参考我之前的文章,位于“参考资料”部分。

但是,我们可以探索一种教学方法在多个时间点对每个科目的影响,例如:

  • 在应用教学方法之前(预测试)
  • 教学期过半
  • 应用教学方法后(后测)
    这个过程代表了受试者内因素

此过程表示主题内因素。因此,在混合模型方差分析中,我们至少有一个受试者内因子和一个受试者间因子。

三、混合模型方差分析回答 3 件事

受试者内因素效应:它确定受试者内因素(前测、中测、后测等时间点)是否对因变量(学生表现)有显着影响。
受试者间因素效应:它评估了学科间因素(不同的教学方法)是否对因变量有显着影响。
交互作用:它检查了受试者内和受试者之间的因素之间是否存在显着的交互作用。
设置假设
在混合模型方差分析中,通常有三个假设

1/ 受试者内因素(时间)的主效应

原假设 (H0): 不同测量时间点的平均值没有显著差异。
备择假设 (H1):不同测量时间点的平均值存在显著差异。
2/ 学科间因素的主要影响(教学方法)

原假设 (H0):不同教学方法组的平均值没有显著差异。
备择假设 (H1): 不同教学方法组的平均值存在显著差异。
3/ 互动效果(教学方法*时间):

原假设 (H0):教学方法对绩效的影响不会随时间而改变(没有相互作用)。
备择假设 (H1): 教学方法对绩效的影响会随着时间而变化(存在交互作用)。

四、混合模型方差分析的假设

1 常态:因变量应近似正态分布在受试者间因子的每一组中。
2 独立:观察结果是独立的。
3 方差的同质性:因变量的方差在受试者间因子的不同组中应该是相等的(我们可以使用 Levene 检验来检查假设,您可以在 参考资料 部分阅读我关于它的文章
4 无显著异常值:数据不应包含显著的异常值,因为它们会不成比例地影响分析结果。
5 协方差的同质性:对于受试者内因素(时间),相关组的所有组合之间的差异方差应相等。(可以使用 Mauchly 的球形度测试进行测试,以后可以调整)
关于协方差的同质性的注意事项:在我们的例子中,我们有 3 个组。
第一组之间的差异。
第二组的差异,第一组和第三组的差异。
第二组和第三组之间的差值应具有相同的方差。

1/ 数据 :让我们计算一下前面的例子。我将利用 Numpy 生成随机数据。

import pandas as pd
import numpy as np
from pingouin import mixed_anova

np.random.seed(0)

n = 15

time_points = ['T1', 'T2', 'T3']

data = pd.DataFrame({
    'Participant': np.repeat(range(1, n+1), len(time_points)),
    'Teaching_Method': np.repeat(['A', 'B', 'C'], n),
    'Time': np.tile(time_points, n),
    'Score': np.random.randint(50, 100, size=n*len(time_points))
})

data.head()

在这里插入图片描述
2/ 假设:

A/ 正态性 : 现在,我们需要验证这些假设。我将首先使用 Shapiro-Wilk 检验检查正态性

注意:

  • 原假设 (H0) 是数据服从正态分布。
  • 如果 p 值大于所选的显著性水平,则我们无法否定原假设。这表明没有重要证据可以得出数据偏离正态分布的结论。
from scipy.stats import shapiro

for method, group_data in data.groupby('Teaching_Method')['Score']:
    stat, p = shapiro(group_data)
    print(f'Shapiro-Wilk test for {method}: p-value = {p}')


# Shapiro-Wilk test for A: p-value = 0.3026245223583117
# Shapiro-Wilk test for B: p-value = 0.5795532845153779
# Shapiro-Wilk test for C: p-value = 0.7610549007614936

由于在所有教学方法的 Shapiro-Wilk 检验中,所有 p 值都大于 0.05(我使用的显著性水平),这表明没有明显证据表明偏离正态性。因此,满足正态性假设。

B/ 方差的同质性:为了评估方差的同质性,我将采用 Levene 检验。

from scipy.stats import levene

stat, p = levene(*[group_data for method, group_data in data.groupby('Teaching_Method')['Score']])
print(f'Levene\'s test for homogeneity of variances: p-value = {p}')
# Levene's test for homogeneity of variances: p-value = 0.8937735564168452

注意:

Levene检验中的原假设(H0)是被比较组的方差相等。
由于 Levene 检验的 p 值为 0.89(大于显著性水平),因此我们无法否定原假设,表明没有显着证据表明教学方法组之间的方差存在显着差异。

C/ 协方差的齐质性:如前所述,我们可以利用 Mauchly 测试来实现此目的。

from pingouin import sphericity

sphericity_test = sphericity(data, dv='Score', subject='Participant', within='Time')

print(sphericity_test)
# SpherResults(spher=True, W=0.9298475348159647, chi2=0.9455504153256469, dof=2, pval=0.6232701617877808)

注意:

  • 原假设 (H0) 是所有可能的受试者内条件对之间的差异方差相等。
    “spher=True” 参数表示满足球形度的假设。此外,当观察 p 值(大于 alpha)时,有大量证据拒绝球形度的假设。

D/ 异常值 :我们可以采用Tukey的方法(Tukey的栅栏,Tukey的规则),它涉及以下步骤:

计算数据的四分位距 (IQR),即第三个四分位数 (Q3) 和第一个四分位数 (Q1) 之间的差值。您也可以在“参考资料”部分参考我关于它的文章。
将下围栏 (LF) 定义为 Q1–1.5 * IQR,将上围栏 (UF) 定义为 Q3 + 1.5 * IQR。任何低于下围栏或高于上围栏的数据点都被视为潜在的异常值。
注意: 对于异常值数显著的阈值,没有一般规则,因为它可能取决于多个因素。

import seaborn as sns
import matplotlib.pyplot as plt


Q1 = data['Score'].quantile(0.25)
Q3 = data['Score'].quantile(0.75)
IQR = Q3 - Q1


lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR


outliers = data[(data['Score'] < lower_bound) | (data['Score'] > upper_bound)]


print("Outliers:")
print(outliers)


plt.figure(figsize=(8, 6))
sns.boxplot(x='Teaching_Method', y='Score', data=data)
plt.title('Boxplot of Scores by Teaching Method')
plt.show()

# Outliers:
# Empty DataFrame
# Columns: [Participant, Teaching_Method, Time, Score]
# Index: []

在这里插入图片描述
3/ 让我们运行测试: 现在我们已经确认满足了假设,我们可以继续进行测试。

anova = mixed_anova(dv='Score', within='Time', between='Teaching_Method', subject='Participant', 

data=data)

print(anova)

在这里插入图片描述
让我们分析每个假设:

1/ 时间的主要影响:由于 p 值 (0.432535) 大于 0.05,我们无法否定原假设。这意味着没有重要证据表明时间对分数有重大影响。

2/ 教学方法的主要效果:同样,由于 p 值 (0.842359) 大于 0.05,我们无法否定原假设。没有重要证据表明教学方法对分数有显着影响。

3/ 交互效果:同样,由于 p 值 (0.778303) 大于 0.05,我们无法否定原假设。没有显著的证据表明教学方法和时间对分数之间存在交互作用。

注意:

效应大小 (ηp²) 和 Epsilon (ε) :

效应大小(ηp²)值较小,表明自变量解释的方差比例相对较低。
Epsilon (ε) 提供有关可能违反球形的信息。然而,由于我们已经用 Mauchly 检验证实了球形度,因此 epsilon 值在这里是补充的。
如果您希望我们涵盖特定主题,请随时告诉我!您的意见将有助于塑造我的内容的方向,并确保它保持相关性和吸引力

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python替换占位符为变量,实现读取配置文件

文章目录 背景1、定义正则表达式2、替换变量占位符3、实现功能 背景 使用python编写小工具&#xff0c;有一个配置文件&#xff0c;希望实现类似shell命令的&#xff0c;定义变量并且使用${}或者$来引用。如果有好的建议欢迎讨论。 配置文件示例内容如下: D:\project\test\pr…

word里面没有Acrobat选项

加载项被禁止&#xff0c;选择项里面&#xff0c;没有Acrobat选项 文件-》选项 加载项-》com加载项-》转到 添加Acrobat 出现Acrobat选项

阿里云部署nodejs

目录 1、安装node.js 1-1 进入opt/software 1-2 下载node.js安装包 1-3 解压 2 配置环境变量 2-1 vim中配置环境变量 2-2 命令行中保存环境变量 2-3 检查安装版本 2-3 更换镜像 3、上传node.js项目 1-1 启动项目 1-2 配置对应的安全组 ​编辑 4、pm2启动多个node项…

《PNAS》和《Nature Communications》仿章鱼和蜗牛的粘液真空吸附,赋予了机器人吸盘新的“超能力”

想象一下&#xff0c;如果机器人能够像章鱼一样牢牢吸附在粗糙崎岖的岩石上&#xff0c;或者像蜗牛那样在墙面上悠然负重爬行&#xff0c;那会是多么神奇的一幕&#xff01;近日&#xff0c;布里斯托大学机器人实验室的Jonathan Rossiter教授课题组就为我们带来了这样的“超能力…

Java_Mybatis

Mybatis是一款优秀的持久层框架&#xff0c;用户简化JDBC(使用Java语言操作关系型数据库的一套API)开发 使用Mybatis查询所有用户数据&#xff1a; 代码演示&#xff1a; UserMapper&#xff1a; Mapper //被调用时会通过动态代理自动创建实体类&#xff0c;并放入IOC容器中…

一文了解JVM面试篇(上)

Java内存区域 1、如何解释 Java 堆空间及 GC? 当通过 Java 命令启动 Java 进程的时候,会为它分配内存。内存的一部分用于创建 堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC 是 JVM 内部的一 个进程,回收无效对象的内存用于将来的分配。 2、JVM 的主要组成…

JVM学习-详解类加载器(一)

类加载器 类加载器是JVM执行类加载机制的前提 ClassLoader的作用 ClassLoader是Java的核心组件&#xff0c;所有的Class都是由ClassLoader进行加载的&#xff0c;ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部&#xff0c;转换为一个与目标类型对应的ja…

什么是TLAB?

这个得从内存申请说起。 一般而言生成对象需要向堆中的新生代申请内存空间&#xff0c;而堆又是全局共享的&#xff0c;像新生代内存又是规整的&#xff0c;是通过一个指针来划分的。 内存是紧凑的&#xff0c;新对象创建指针就右移对象大小size即可&#xff0c;这叫指针加法…

Linux 的权限

目录 Linux 的用户 root 用户 和 普通用户 如何新建普通用户&#xff1f; 如何切换用户&#xff1f; 一开始是以 root 用户登录&#xff1a; 一开始以普通用户登录&#xff1a; 如何删除用户&#xff1f; Linux文件权限 什么是读权限&#xff08; r &#xff09;&#…

数据结构学习笔记

1. 数组 (Array) 定义 数组是一种线性数据结构&#xff0c;用于存储固定大小的相同类型元素集合。每个元素都有一个索引&#xff0c;用于快速访问。 特点 优点&#xff1a;访问速度快&#xff0c;通过索引直接访问O(1)时间复杂度。缺点&#xff1a;大小固定&#xff0c;插入…

Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——自定义房间区域功能

自定义房间区域功能 效果&#xff1a; 功能&#xff1a; 能够自定义房间的大小一键生成放置区域可控的放置网格点当物体放置到区域内可自动吸附物体是否可放置&#xff0c;放置时如果与其他物体交叉则不可放置&#xff08;纯算法计算&#xff09;管理房间内的物体&#xff0c…

MySQL(二)-基础操作

一、约束 有时候&#xff0c;数据库中数据是有约束的&#xff0c;比如 性别列&#xff0c;你不能填一些奇奇怪怪的数据~ 如果靠人为的来对数据进行检索约束的话&#xff0c;肯定是不行的&#xff0c;人肯定会犯错~因此就需要让计算机对插入的数据进行约束要求&#xff01; 约…

下载HF AutoTrain 模型的配置文件

下载HF AutoTrain 模型的配置文件 一.在huggingface上创建AutoTrain项目二.通过HF用户名和autotrain项目名,拼接以下url,下载模型列表(json格式)到指定目录三.解析上面的json文件、去重、批量下载模型配置文件(权重以外的文件) 一.在huggingface上创建AutoTrain项目 二.通过HF用…

电脑没电关机,wsl和docker又挂了,附解决过程

如题&#xff0c;开了个会没带笔记本电源&#xff0c;点啊弄关机后docker打不开&#xff0c;我以为是docker坏了&#xff0c;结果docker报错&#xff1a; An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or…

植被变化趋势线性回归以及可视化

目录 植被变化线性回归ee.Reducer.linearFit().reduce()案例:天水市2004-2023年EVI线性回归趋势在该图中,使用了从红色到蓝色的渐变来表示负趋势到正趋势。红色代表在某段时间中,植被覆盖减少,绿色表示持平,蓝色表示植被覆盖增加。 植被变化线性回归 该部分参考Google…

Java(十一)---String类型

文章目录 前言1.String类的重要性2.常用方法2.1.字符串的创建2.2.字符串的比较2.2.1.比较是否引用同一个对象2.2.2.boolean equals(Object anObject) 方法&#xff1a;2.2.3.int CompareTo(String s)2.2.4.int compareToIgnoreCase(String str) 方法&#xff1a; 2.3.字符串的查…

单调栈原理+练习

首先用一道题引出单调栈 码蹄集 (matiji.net) 首先画一个图演示山的情况&#xff1a; 最暴力的做法自然是O(n方)的双循环遍历&#xff0c;这么做的思想是求出当前山右侧有多少座比它小的山&#xff0c;遇见第一个高度大于等于它的就停止。 但是对于我们所求的答案数&#xff…

能不能接受这些坑?买电车前一定要看

图片来源&#xff1a;汽车之家 文 | Auto芯球 作者 | 雷慢 刚有个朋友告诉我&#xff0c;买了电车后感觉被骗了&#xff0c; 很多“坑”都是他买车后才知道的。 不提前研究&#xff0c;不做功课&#xff0c;放着我这个老司机不请教&#xff0c; 这个大冤种他不当谁当&…

C# WinForm —— 25 ProgressBar 介绍与使用

1. 简介 用于显示某个操作的进度 2. 常用属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到,一般以 pbar 开头ContextMenuStrip右键菜单Enabled控件是否可用ForeColor用于显示进度的颜色MarqueeAnimationSpeed进度条动画更新的速度&#xff0c;以毫秒为单位M…

【Python】解决Python错误报错:IndexError: tuple index out of range

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…