python统计分析——单因素方差分析

参考资料:用python动手学统计学

方差分析:analysis of variance,缩写为ANOVA

1、背景知识

1.1 要使用方差分析,数据的总体必须服从正态分布,而且各个水平内部的方差必须相等。

1.2 反复检验导致显著性结果更易出现的问题叫作多重假设检验问题:设显著性水平为0.05,则出现第一类错误的概率为5%。如果连续进行2次检验,则每次检验的显著性水平都为0.05,在这种情况下,出现第一类错误的概率就是1-0.95*0.95=0.0975,约为10%,超过了5%。检验次数越多,越容易拒绝零假设,也就越容易出现第一类错误。而方差分析可以有效的解决这一问题,通过一次检验完成显著性判断。

1.3 方差分析的F值=效应的方差/误差的方差。如果F值大,就认为效应比误差的影响大。当总体服从同方差正态分布,F值的样本分布就叫作F分布。通过F分布的累计分布函数计算p值,当p值小于0.05时,就拒绝零假设。

1.4 如下面的小提琴图所示:小提琴之间的高度差,即效应的大小,叫作组间差异。各个小提琴间的高度,即误差的大小,叫作组内差异。

2、导入库

# 导入库
# 用于数据计算的库
import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats
# 用于绘图的库
from matplotlib import pyplot as plt
import seaborn as sns
sns.set
# 用于估计统计模型的库
import statsmodels.formula.api as smf
import statsmodels.api as sm

3、数据准备

# 数据准备
weather=['cloudy','cloudy','rainy','rainy','sunny','sunny']
beer=[6,8,2,4,10,12]
data=pd.DataFrame({'beer':beer,
                  'weather':weather})
print(data)

4、数据展示

由于样本量很小,所以我们绘制箱线图,而非小提琴图。

箱线图和小提琴图的绘制的参数设置参考:

 python统计分析——箱线图(sns.boxplot)_python sns.boxplot-CSDN博客

python统计分析——箱线图(plt.boxplot)_python boxplot-CSDN博客

python统计分析——箱线图(df.boxplot)_df.boxplot()-CSDN博客

python统计分析——小提琴图(sns.violinplot)-CSDN博客

python统计分析——小提琴图(plt.violinplot)_plt violin-CSDN博客

sns.boxplot(x='weather',y='beer',data=data)

5、查看均值

print(data.groupby('weather').mean())

6、常规步骤进行方差分析

excel操作步骤可参考:excel统计分析——单因素方差分析_处理间平方和简化公式-CSDN博客

6.1 计算组间平方和和组内平方和

# 天气的影响
effect=[7,7,3,3,11,11]
# 组间平方和
mu_effect=np.mean(effect)
squares_model=np.sum((effect-mu_effect)**2)
print(squares_model)

# 从原始数据中减掉效应就是误差
resid=data.beer-effect
# 组内平方和
squares_resid=np.sum(resid**2)
print(squares_resid)

6.2 计算组间方差和组内方差

# 组间差异的自由度
df_model=2
# 组内差异的自由度
df_resid=6-1-2
# 组间方差
variance_model=squares_model/df_model
# 组内方差
variance_resid=squares_resid/df_resid
print('组间方差:',variance_model)
print('组内方差:',variance_resid)

6.3 计算F值和p值

f_ratio=variance_model/variance_resid
print('F值:',f_ratio)
# 用F分布的累计分布函数计算p值
p_value=1-stats.f.cdf(x=f_ratio,dfn=df_model,dfd=df_resid)
print('p值:',p_value)

p值小于0.05,认为weather对beer的影响显著。注:原则上我们应该使用容量更大的样本。

7、解释变量为分类变量的正态线性模型

本例的线性模型如下:

beer\sim N(\beta_0+\beta_1\times rainy+\beta_2\times sunny, \sigma^2)

        变量“rainy”在天气为rainy时为1,在其余天气时为0;变量sunny同理。参数β1代表rainy的影响程度,参数β2代表sunny的影响程度。当然还有cloudy天气,当rainy和sunny均为0时,只剩下β0,它代表cloudy的影响程度。

8、使用statsmodels进行方差分析

8.1 方差分析表

# 无论解释变量是连续变量还是分类变量,都要使用smf.ols定义
anova_model=smf.ols('beer~weather',data=data).fit()
# 模型拟合完成后,就可以通过sm.stats.anova_lm函数进行方差分析
print(sm.stats.anova_lm(anova_model,typ=2))

8.2 模型系数

# 输出模型的系数
anova_model.params

beer=7.0-4.0*rainy+4.0*sunny,解释为:当weather为cloudy时,beer=7.0-4.0*0+4.0*0=7.0;当weather为rainy时,beer=7.0-4.0*1+4.0*0=3.0;当weather为sunny时,beer=7.0-4*0+4*1=11。

# 输出拟合值
print('拟合值:')
print(anova_model.fittedvalues)
# 输出残差
print("残差:")
print(anova_model.resid)

8.3 回归模型的方差分析

        正态线性模型中广泛应用了方差分析。当解释变量为连续变量时,方差分析依然有效。此时组间称为回归,组内称为残差。

# 准备连续型解释变量
data=pd.DataFrame({
    'beer':np.array([45.3, 59.3, 40.4, 38. , 37. , 40.9, 60.2, 63.3, 51.1, 44.9, 47. ,
                     53.2, 43.5, 53.2, 37.4, 59.9, 41.5, 75.1, 55.6, 57.2, 46.5, 35.8,
                     51.9, 38.2, 66. , 55.3, 55.3, 43.3, 70.5, 38.8]),
    'temp':np.array([20.5, 25. , 10. , 26.9, 15.8,  4.2, 13.5, 26. , 23.3,  8.5, 26.2,
                     19.1, 24.3, 23.3,  8.4, 23.5, 13.9, 35.5, 27.2, 20.5, 10.2, 20.5,
                     21.6,  7.9, 42.2, 23.9, 36.9,  8.9, 36.4,  6.4])
})
# 估计模型
lm_model=smf.ols('beer~temp',data=data).fit()
# 打印方差分析表
print(sm.stats.anova_lm(lm_model,typ=2))

temp的归回效应显著大于残差效应,即存在线性回归关系。利用summary函数可以得到相关统计量的结果:

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

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

相关文章

相机选型介绍

摄影测量中,相机是非常重要的角色,合适的相机产出合适的图像,得到合适的重建精度,这是相机的重要性。 您也许第一反应是,摄影测量所需的理想相机,是有着超高分辨率的相机,但事实可能并非如此&a…

太阳能光伏模型的参数确定及模型应用介绍

一、太阳能光伏模型介绍 ​ 太阳能通过光伏(PV)发电系统转化为电能。通过使用新材料技术,一直致力于提高光伏系统中太阳能电池的功率转换效率。基于钙钛矿太阳能电池的冠军器件具有24.8%的认证功率转换效率,仍有很大的改进空间。…

学习 LangChain 的 Passing data through

学习 LangChain 的 Passing data through 1. Passing data through2. 示例 1. Passing data through RunnablePassthrough 允许不改变或添加额外的键来传递输入。这通常与 RunnableParallel 结合使用,将数据分配给映射中的新键。 RunnablePassthrough() 单独调用&…

ChatGPT Plus遇到订阅被拒原因与解决方案

ChatGPT Plus被广泛认为相比普通版本更快、更强,并且能最先体验新功能。 很多小伙伴再订阅时遇到图片中的问题 错误提示包括这些: Your credit card was declined.Try paying with a debit card instead.您的信用卡被拒绝了。请尝试用借记卡支付。你的…

Data-Shape制作UI节点简介

很多小伙伴对于Data-Shape制作简单的UI都是似懂非懂,群里很多小伙伴也总是询问相关的问题,那么,今天我就简单举几个例子,专门介绍下Data-Shape创建简单UI的教程。 首先,本次教程,使用的是Data-Shape 2021.…

队列基础练习(C语言实现)

目录 队列基础练习 用队列实现栈 用栈实现队列 设计循环队列 队列基础练习 用队列实现栈 题目链接:225. 用队列实现栈 - 力扣(LeetCode) 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部…

政安晨【示例演绎虚拟世界开发】(一):Cocos Creator 的 Hello World

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: AI虚拟世界大讲堂 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正。 前言 Cocos Creator是一款非常强大的游戏开发引擎,它有着优秀…

基于springboot+vue的安康旅游网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

洛谷P5723 质数口袋 题解

#题外话&#xff08;第39篇题解&#xff09;&#xff08;本题为普及-难度&#xff09; #先看题目 题目链接https://www.luogu.com.cn/problem/P5723 #思路&#xff08;看代码吧&#xff09; #代码 #include <bits/stdc.h> using namespace std; bool p(int p_i){for(i…

啊丢的刷题记录手册

1.洛谷题P1923 求第k小的数 题目描述 输入 n&#xff08;1≤n<5000000 且 n 为奇数&#xff09;个数字ai​&#xff08;1≤ai​<109&#xff09;&#xff0c;输出这些数字的第 k 小的数。最小的数是第 0 小。 请尽量不要使用 nth_element 来写本题&#xff0c;因为本题…

《优化接口设计的思路》系列:第八篇—分页接口的设计和优化

系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 第六篇—接口防抖(防重复提交)的一些方式 第七篇—接口限流策略 第八篇—分页接口的设计和优化 …

C语言实现简单选择排序

简单选择排序 简单选择排序的平均复杂度为 O(n2),但效率通常比相同平均复杂度的直接插入排序还要差。但由于选择排序是 内部排序&#xff0c;因此在内存严格受限的情况下还是可以用的。选择排序的原理很简单&#xff0c;如下图所示&#xff1a;持续从未处理元素中找到最小值并加…

虚拟机的四种网络模式对比

nat网络地址转换 nat网络 桥接 内网模式 仅主机

【数据结构(顺序表)】

一、什么是数据结构? 数据结构是由“数据”和“结构”两词组合而来。 什么是数据&#xff1f;常见的数值1、2、3、4.....、教务系统里保存的用户信息&#xff08;姓名、性别、年龄、学历等等&#xff09;、网页里肉眼可以看到的信息&#xff08;文字、图片、视频等等&#xff…

Google炸场!最强轻量级、开放模型Gemma发布,个人PC就能用,内部员工:强是强,但名字取得让我混乱

想参与根多多学术讨论&#xff0c;请加qq群 链接直达&#xff1a;00后编程交流qq群 如果想要聊天交友&#xff0c;可以加qq群 链接直达&#xff1a;00后聊天交友处cp 欢迎大家加入 不同于OpenAI的闭源大模型&#xff0c;科技巨头如Google和Meta正积极投入开放模型的开发&a…

Qt的QFileSystemModel与QTreeView、QTableView、QListView的组合使用

1.相关描述 QFileSystemModel与QTreeView、QTableView、QListView的组合&#xff0c;当QTreeView点击发生改变&#xff0c;QTableView和QListView也会发生变化 2.相关界面 3.相关代码 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h"…

Flutter开发进阶之Package

Flutter开发进阶之Package 通常我们在Flutter开发中需要将部分功能与整体项目隔离&#xff0c;一般有两种方案Plugin和Package&#xff0c;Application是作为主体项目&#xff0c;Module是作为原生项目接入Flutter模块。 当独立模块不需要与原生项目通讯只需要Plugin就可以&a…

990-05产品经理:为什么商业价值是 IT 成功的关键

In today’s digital era, CIOs must shift(转移) their priorities from cost cutting to driving revenue(收入), and from process engineering to exploiting data if they want to achieve a set of broader business outcomes. Furthermore, understanding how to measur…

讯度云网络云服务器商

讯度云网络云服务器商 讯度云服务商能够为客户提供安全、稳定、高性能的云计算服务确保数据的安全性和可靠性而且有良好的用户反馈与评价靠着良好的 高防国内云/十堰/海外/美国/G口/香港/日本/物理机/挂机宝/大量有货香港4-4 20元起 亚太scdn节点50 0.01起&#xff01;&#x…

计网 - 深入理解HTTPS:加密技术的背后

文章目录 Pre发展历史Http VS HttpsHTTPS 解决了 HTTP 的哪些问题HTTPS是如何解决上述三个风险的混合加密摘要算法 数字签名数字证书 Pre PKI - 数字签名与数字证书 PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 发展历史 HTTP&#xff08;超文本传输协…