数据分析中的数学:从基础到应用20240617

数据分析中的数学:从基础到应用

数据分析离不开数学的支持,统计学和概率论是其重要组成部分。本文将通过几个具体的实例,详细讲解数据分析中常用的数学知识,并通过Python代码演示如何应用这些知识。

1. 描述性统计

基本概念和用途

描述性统计用于总结和描述数据的特征,包括集中趋势和离散程度的度量。

  • 均值(Mean):所有数据的平均值,表示数据的中心位置。例如,在分析学生成绩时,均值可以告诉我们班级的平均成绩。
  • 中位数(Median):数据排序后中间的值,适用于有极端值的数据。例如,分析家庭收入时,中位数比均值更能代表典型收入。
  • 众数(Mode):数据中出现次数最多的值,适用于分类数据。例如,分析最常见的产品类型。
  • 方差(Variance)标准差(Standard Deviation):表示数据的离散程度,方差为数据偏离均值的程度,标准差为方差的平方根。例如,标准差可以告诉我们学生成绩的离散程度。
实例:分析班级学生的考试成绩

假设我们有一组学生的考试成绩,分别为:85, 90, 78, 92, 88, 76, 95, 89, 84, 91。我们希望了解这些成绩的集中趋势和离散程度。

Python代码示例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于Windows
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴负号显示问题# 创建数据
scores = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]# 计算描述性统计量
mean_score = np.mean(scores)
median_score = np.median(scores)
mode_score = pd.Series(scores).mode()[0]
variance_score = np.var(scores)
std_dev_score = np.std(scores)# 打印结果
print(f"均值: {mean_score}")
print(f"中位数: {median_score}")
print(f"众数: {mode_score}")
print(f"方差: {variance_score}")
print(f"标准差: {std_dev_score}")# 可视化
plt.hist(scores, bins=5, edgecolor='black')
plt.axvline(mean_score, color='r', linestyle='dashed', linewidth=1, label=f'均值: {mean_score:.2f}')
plt.axvline(median_score, color='g', linestyle='dashed', linewidth=1, label=f'中位数: {median_score}')
plt.axvline(mode_score, color='b', linestyle='dashed', linewidth=1, label=f'众数: {mode_score}')
plt.legend()
plt.title('考试成绩分布')
plt.xlabel('成绩')
plt.ylabel('频数')
plt.show()

在这里插入图片描述

2. 推断统计

基本概念和用途

推断统计通过样本数据推断总体特征,常用方法包括估计和假设检验。

  • 抽样理论:从总体中随机抽取样本,用样本统计量推断总体参数。例如,从一大群学生中抽取一小部分进行调查,以推断整个学生群体的情况。
  • 估计:使用样本数据对总体参数进行估计,包括点估计(一个值)和区间估计(一个范围)。例如,估计班级平均成绩为80分,置信区间为75-85分。
  • 假设检验:通过统计检验判断样本数据是否支持某个假设。例如,假设某班级学生的平均成绩等于80分,然后使用样本数据进行检验。
实例:检验某班级学生的平均成绩是否等于80分

假设我们有一组学生的考试成绩,分别为:85, 90, 78, 92, 88, 76, 95, 89, 84, 91。我们希望检验该班级学生的平均成绩是否等于80分。

Python代码示例
import scipy.stats as stats# 创建数据
sample_scores = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]
popmean = 80  # 假设总体均值为80# 单样本t检验
t_statistic, p_value = stats.ttest_1samp(sample_scores, popmean)# 打印结果
print(f"t统计量: {t_statistic}")
print(f"p值: {p_value}")# 检验结果
alpha = 0.05
if p_value < alpha:print("拒绝原假设:班级学生的平均成绩不等于80分")
else:print("无法拒绝原假设:班级学生的平均成绩等于80分")

在这个例子中,我们使用单样本t检验来检验班级学生的平均成绩是否等于80分。t统计量和p值帮助我们判断是否拒绝原假设。

3. 置信区间

基本概念和用途

置信区间用于估计总体参数的范围,并以一定的置信水平表示该范围包含总体参数的概率。

  • 置信区间:基于样本数据计算的总体参数的区间估计。例如,班级平均成绩的95%置信区间为75-85分,这意味着我们有95%的信心认为总体平均成绩在75到85之间。
实例:计算班级学生平均成绩的置信区间

假设我们有一组学生的考试成绩,分别为:85, 90, 78, 92, 88, 76, 95, 89, 84, 91。我们希望计算该班级学生平均成绩的95%置信区间。

Python代码示例
import numpy as np
import scipy.stats as stats# 创建数据
sample_scores = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]
sample_mean = np.mean(sample_scores)
sample_std = np.std(sample_scores, ddof=1)
n = len(sample_scores)# 计算95%置信区间
confidence_level = 0.95
alpha = 1 - confidence_level
t_critical = stats.t.ppf(1 - alpha/2, df=n-1)
margin_of_error = t_critical * (sample_std / np.sqrt(n))
confidence_interval = (sample_mean - margin_of_error, sample_mean + margin_of_error)# 打印结果
print(f"样本均值: {sample_mean}")
print(f"置信区间: {confidence_interval}")

在这个例子中,我们计算了班级学生平均成绩的95%置信区间。置信区间提供了一个范围,表示我们有95%的信心认为总体平均成绩在这个范围内。

4. 回归分析

基本概念和用途

回归分析用于研究自变量和因变量之间的关系,常用方法包括线性回归和非线性回归。

  • 线性回归:通过线性关系预测因变量。例如,使用学习时间预测考试成绩。
  • 非线性回归:通过非线性关系预测因变量。例如,使用学习时间预测考试成绩,但关系不是线性的。
  • 模型评估:R²、调整R²、残差分析等,评估模型的拟合程度。例如,R²告诉我们自变量解释了多少因变量的变异。
实例:使用学习时间预测考试成绩

假设我们有一组学生的学习时间和相应的考试成绩,学习时间(小时)分别为:2, 3, 4, 5, 6, 7, 8, 9, 10,考试成绩分别为:70, 75, 78, 82, 85, 88, 90, 92, 95。我们希望建立学习时间与考试成绩之间的线性关系模型。

Python代码示例
from sklearn.linear_model import LinearRegression# 创建数据
study_hours = np.array([2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape(-1, 1)
scores = np.array([70, 75, 78, 82, 85, 88, 90, 92, 95])# 线性回归模型
model = LinearRegression()
model.fit(study_hours, scores)# 预测
predictions = model.predict(study_hours)# 打印回归系数
print(f"回归系数: {model.coef_[0]}")
print(f"截距: {model.intercept_}")# 可视化
plt.scatter(study_hours, scores, color='blue')
plt.plot(study_hours, predictions, color='red', linewidth=2)
plt.title('学习时间与成绩之间的线性回归')
plt.xlabel('学习时间(小时)')
plt.ylabel('成绩')
plt.show()

在这里插入图片描述

在这个例子中,我们使用线性回归模型来预测学生的考试成绩。回归系数和截距帮助我们了解学习时间与考试成绩之间的关系。

5. 时间序列分析

基本概念和用途

时间序列分析用于分析时间序列数据的模式和趋势,常用方法包括平稳性检验、季节性分解和ARIMA模型。

  • 平稳性:时间序列的统计特性不随时间变化。例如,股票价格波动是否有规律。
  • 季节性:时间序列的周期性波动。例如,销售额在某些月份会更高。
  • 趋势:时间序列的长期上升或下降。例如,长期销售额的增长趋势。
实例:分析某商店的月度销售数据

假设我们有某商店的月度销售数据,从2020年1月到2021年12月。我们希望分析销售数据的趋势和季节性,并预测未来几个月的销售额。

Python代码示例
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.arima.model import ARIMA# 创建数据
dates = pd.date_range(start='2020-01', periods=24, freq='M')
sales = [265, 278, 289, 302, 310, 320, 330, 350, 370, 390, 405, 420, 430, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640]
data = pd.Series(sales, index=dates)# 时间序列分解
decomposition = seasonal_decompose(data, model='additive')
decomposition.plot()
plt.show()# ARIMA模型
model = ARIMA(data, order=(1, 1, 1))
fit_model = model.fit()# 预测
forecast = fit_model.forecast(steps=6)
print(forecast)# 可视化
data.plot(label='历史数据', legend=True)
forecast.plot(label='预测数据', legend=True)
plt.title('销售额时间序列分析与预测')
plt.xlabel('日期')
plt.ylabel('销售额')
plt.show()

在这里插入图片描述
在这里插入图片描述

在这个例子中,我们使用时间序列分解方法来分析销售数据的趋势和季节性,并使用ARIMA模型进行预测。

6. 概率论

基本概念和用途

概率论用于研究随机现象的数学理论,常用概念包括随机变量、概率分布和期望值。

  • 随机变量:取值不确定的变量。例如,掷骰子的结果。
  • 概率分布:描述随机变量取值的可能性。例如,骰子各面朝上的概率。
  • 期望值和方差:反映随机变量的平均取值和离散程度。例如,掷骰子的期望值为3.5,方差表示结果的波动性。
实例:分析掷骰子的结果

假设我们要分析掷10次骰子的结果,每次成功(掷出6)的概率为1/6。我们希望了解结果的概率分布。

Python代码示例
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats# 二项分布
n, p = 10, 1/6  # 进行10次实验,每次成功概率为1/6
binom_dist = stats.binom(n, p)# 概率质量函数(PMF)
x = np.arange(0, n+1)
pmf = binom_dist.pmf(x)# 可视化
plt.bar(x, pmf)
plt.title('二项分布的概率质量函数')
plt.xlabel('成功次数')
plt.ylabel('概率')
plt.show()# 正态分布
mu, sigma = 0, 1  # 均值为0,标准差为1
norm_dist = stats.norm(mu, sigma)# 概率密度函数(PDF)
x = np.linspace(-3, 3, 100)
pdf = norm_dist.pdf(x)# 可视化
plt.plot(x, pdf)
plt.title('正态分布的概率密度函数')
plt.xlabel('值')
plt.ylabel('概率密度')
plt.show()

在这里插入图片描述

在这里插入图片描述

在这个例子中,我们分析了掷骰子的结果,使用二项分布描述掷10次骰子成功(掷出6)的概率,并使用正态分布描述某些连续随机变量的概率密度。

通过这些具体和生动的案例,您可以更好地理解统计学知识点的概念和用途,并通过实际的Python代码示例和图形进行演示,帮助您在实际中应用这些知识。

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

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

相关文章

力扣1206--跳表

1206. 设计跳表 - 力扣&#xff08;LeetCode&#xff09; 挑战一下hard,果然难搞 参考 跳表的原理与实现 [图解]_跳表实现-CSDN博客 代码如下&#xff1a; struct Node{Node(Node* _right, Node* _down, int _val) :right(_right), down(_down), val(_val){}Node* right;No…

运营一个商城网站需要办理什么许可证?

搭建一个商城网站以下资质是必须要办理的&#xff1a;网站ICP备案以及增值电信业务经营许可证。 一、网站ICP备案 国家对提供互联网信息服务的ICP实行许可证制度。从而&#xff0c;ICP证成为网络经营的许可证&#xff0c;经营性网站必须办理ICP证&#xff0c;否则就属于非法经营…

[python日常]获取指定文件夹下,指定后缀的文件

要读取指定路径下所有以.mp3为后缀的文件名&#xff0c;并将它们存储在一个列表中 关键代码&#xff1a; os.path.splitext(“文件路径”) 分离文件名与扩展名&#xff1b;默认返回(fname,fextension)元组&#xff0c;可做分片操作filename.endswith(.mp3) 使用os.listdir…

做好六西格玛项目,效率翻倍不是事!——张驰咨询

六西格玛作为一种数据驱动、客户为中心的持续改进方法&#xff0c;旨在通过减少过程变异和缺陷&#xff0c;提升业务效率和产品质量。以下是六西格玛项目执行的专业流程&#xff1a; 1. 定义阶段&#xff08;Define&#xff09; 识别机会&#xff1a;明确项目范围和目标&#…

Stable Diffusion 3 Medium 正式开源,用户对此产品评价如何?

前两天 Stability.AI 终于开源了 Stable Diffusion 3&#xff0c;虽然只是中杯的 Medium 版本&#xff0c;没有放出当初宣布的 8B 版本[1]&#xff0c;但也在很多方面取得了进步。本想第一时间尝鲜测试&#xff0c;但这几天出差在外&#xff0c;使用颇不方便。 正好老朋友揽睿…

Web前端三大主流框架详解及应用

在现代Web开发中&#xff0c;前端框架的选择对于项目的成功至关重要。本文将介绍目前最流行的三大前端框架&#xff1a;Vue.js、React和Angular&#xff0c;分析它们的特点、优势以及如何在实际项目中应用。 1. Vue.js Vue.js 是一款轻量级、高效的前端框架&#xff0c;由尤雨…

【大分享05】动态容差归档,打通不动产登记管理“最后一公里”

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章&#xff0c;来自上海涵妍档案信息技术有限责任公司&#xff0c;作者&#xff1a;陈雪。 一、政策背景 在“互联网政务服务”的浪潮下&#xff0c;各级政府机构…

镭眸T51三维深度成像激光雷达为移动叉车导航及避障保驾护航

如今&#xff0c;移动叉车在智慧工厂里应用非常广泛&#xff0c;因此移动叉车如何做到准确导航及精准避障显得至关重要&#xff01;镭眸 T51 三维深度成像激光雷达为移动叉车的导航及避障提供了解决方案&#xff01; 镭眸 T51 三维深度成像激光雷达具有高精度、自适应自动曝光、…

ChatGPT原理及其应用场景

ChatGPT的原理及应用场景 一、ChatGPT的原理 ChatGPT&#xff0c;全名Chat Generative Pre-trained Transformer&#xff0c;是OpenAI研发的一款聊天机器人程序&#xff0c;其背后依托的是人工智能技术和自然语言处理&#xff08;NLP&#xff09;的深厚功底。其工作原理可以从…

如何使用ChatGPT等大模型翻译视频?2024最新翻译技巧分享

随着全球化的浪潮&#xff0c;跨语言沟通的需求日益增长。视频&#xff0c;作为一种生动直观的表达方式&#xff0c;也越来越需要跨越语言的障碍&#xff0c;触达更广泛的受众。因此&#xff0c;视频翻译成为了一个重要的领域&#xff0c;为不同语言背景的人们打开了理解彼此、…

MyBatis Plus Generator代码生成

一、MyBatis Plus Generator MyBatis Plus是一个功能强大的持久层框架&#xff0c;它简化了MyBatis的使用&#xff0c;提供了许多便捷的功能。其中&#xff0c;MyBatis Plus Generator是一个强大的代码生成器&#xff0c;可以帮助我们快速地根据数据库表结构生成对应的实体类、…

C语言中的预处理指令(如#include, #define等)是什么

C语言中的预处理指令是特殊的命令&#xff0c;它们在编译程序的实际编译阶段之前由预处理器&#xff08;preprocessor&#xff09;处理。这些指令用于在编译之前修改源代码&#xff0c;例如包含其他文件、定义常量或宏等。以下是C语言中常见的预处理指令&#xff1a; #include&…

Java基础-案例练习-全是干货

目录 案例&#xff1a;卖飞机票 案例&#xff1a;找质数&#xff1a; 案例&#xff1a;开发验证码 案例&#xff1a;评委打分 案例&#xff1a;卖飞机票 package anlixunlian;import java.util.Scanner;/*机票价格按照淡季旺季、头等舱和经济舱收费、 输入机票原价、月份和…

使用Ollama+OpenWebUI本地部署阿里通义千问Qwen2 AI大模型

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;AI大模型部署与应用专栏&#xff1a;点击&#xff01; &#x1f916;Ollama部署LLM专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月17日22点50分 &#x1f004;️文章质量&#xff…

探索设计模式——单例模式详解

前言&#xff1a;设计模式的作用主要是为了——利用设计方式的重用来自动地提高代码的重新利用、提高代码的灵活性、节省时间&#xff0c; 提高开发效率、低耦合&#xff0c;封装特性显著&#xff0c; 接口预留有利于扩展。 设计模式的种类有很多种&#xff0c;本篇内容主要讲解…

Git Stash的使用和进阶

git stash 是Git中一个非常实用的命令&#xff0c;它能帮助你暂时存储工作目录和索引&#xff08;也就是暂存区&#xff09;中的改动&#xff0c;从而让你可以轻松地切换到一个干净的工作状态&#xff0c;而不会丢失当前的进度。下面是关于git stash的一些基本用法和相关命令&a…

计算机网络5:运输层

概述 进程间基于网络的通信 计算机网络中实际进行通信的真正实体&#xff0c;是位于通信两端主机中的进程。 如何为运行在不同主机上的应用进程提供直接的逻辑通信服务&#xff0c;就是运输层的主要任务。运输层协议又称为端到端协议。 运输层向应用层实体屏蔽了下面网络核心…

【机器学习】机器学习重要分支——集成学习:理论、算法与实践

文章目录 引言第一章 集成学习的基本概念1.1 什么是集成学习1.2 集成学习的类型1.3 集成学习的优势 第二章 集成学习的核心算法2.1 Bagging方法2.2 Boosting方法2.3 Stacking方法 第三章 集成学习的应用实例3.1 图像分类3.2 文本分类 第四章 集成学习的未来发展与挑战4.1 模型多…

【前端项目笔记】2 主页布局

主页布局 element-ui提供的组件名称就是它的类名 ☆☆ CSS选择器&#xff1a; &#xff08;1&#xff09;基本选择器 类型选择器 p/span/div…… 类选择器 (.classname) ID选择器 (#idname) 通配选择器 ( * ) &#xff08;2&#xff09;属性选择器 选择具有特定属性或属性值的…

编程猫对孩子有什么用处:探索编程教育的多元价值

编程猫对孩子有什么用处&#xff1a;探索编程教育的多元价值 在数字化浪潮席卷全球的今天&#xff0c;编程教育逐渐成为了孩子们成长道路上不可或缺的一部分。编程猫&#xff0c;作为专注于儿童编程教育的品牌&#xff0c;以其独特的教学方式和丰富的教学内容&#xff0c;深受…