从0开始学统计-什么是回归?

1.什么是回归?
回归(Regression)是统计学中一种用于探索变量之间关系的分析方法。它主要用于预测一个或多个自变量(输入变量)与因变量(输出变量)之间的关系。在回归分析中,我们尝试根据已知的自变量值来预测因变量的值。
回归分析通常用于以下情况:
(1) 预测:通过已知的自变量值来预测因变量的值。例如,根据房屋的面积、地理位置等因素来预测房屋的售价。
(2)关联性分析:确定自变量与因变量之间的关系强度和方向。例如,研究气温与冰淇淋销量之间的关系。
(3)控制变量:在研究中控制其他变量的影响,以便更准确地分析自变量与因变量之间的关系。
回归分析的基本思想是通过一个数学模型来描述自变量和因变量之间的关系。这个模型通常是一个线性函数,但也可以是其他形式,如多项式函数、指数函数等。常见的回归分析包括线性回归、多元线性回归、逻辑回归等。
在实际应用中,回归分析是数据科学和机器学习中的重要工具之一,广泛应用于预测、分类、控制和优化等领域。
弗朗西斯·高尔顿(Francis Galton)是19世纪的一位英国科学家,涉猎广泛,特别是在统计学、心理学和生物学方面做出了许多重要贡献。其中一个著名的贡献就是提出并发展了“回归”这一统计概念。
高尔顿在研究遗传学时,发现了一个有趣的现象,即子女的某些特征往往会回归到群体平均水平。例如,他观察到高个子父母的子女虽然也倾向于较高,但往往没有父母那么高;同样,矮个子父母的子女虽然也倾向于较矮,但往往没有父母那么矮。这一现象后来被称为“回归”或“回归均值”。
为了更好地理解这一现象,高尔顿进行了大量的数据分析和实验,并最终提出了“回归线”的概念。他的工作奠定了现代回归分析的基础,这是一种用于探讨和量化变量之间关系的重要统计方法。
具体来说,高尔顿的研究包括:
(1) 回归分析:高尔顿最初在研究身高遗传时注意到,子女的身高总是回归到平均水平。他利用散点图和回归线来描述这种趋势。这为后来的线性回归模型奠定了基础。
(2)相关系数:高尔顿还发展了相关分析的方法,用来量化两个变量之间的线性关系。卡尔·皮尔逊(Karl Pearson)进一步推广了这一概念,提出了皮尔逊相关系数。
高尔顿的贡献不仅在于他发现了这些现象,更在于他开发了统计工具和方法,使得其他科学家可以系统地研究和分析数据。这些工具和方法今天仍然广泛应用于各个科学领域。
2.回归和相关有什么区别?
回归分析和相关分析都是用于探索变量之间的关系,但它们有一些重要的区别:
(1)目标:

  • 回归分析:旨在建立一个数学模型来描述自变量与因变量之间的关系,并用这个模型进行预测。回归分析关注的是预测性能,即模型在新数据上的表现。
  • 相关分析:旨在衡量两个变量之间的相关程度,即它们的变化是否同步发生。相关分析关注的是变量之间的关联性,而不是因果关系或预测能力。
    (2)用途:
  • 回归分析:通常用于预测一个或多个因变量的值,根据已知的自变量值。它可以用于预测连续型变量,也可以用于分类问题(例如逻辑回归)。
  • 相关分析:用于描述和衡量两个变量之间的关系强度和方向。它可以帮助我们了解变量之间的相关性,但不能用于预测。
    (3)统计方法:
  • 回归分析: 通常基于最小二乘法等统计方法来拟合一个数学模型,例如线性回归、多元线性回归、逻辑回归等。
  • 相关分析: 通常使用皮尔逊相关系数或斯皮尔曼等级相关系数等统计量来衡量变量之间的相关性。
    (4)变量类型:
  • 回归分析:可以用于分析和预测连续型变量之间的关系,也可以用于分析离散型因变量的关系(例如逻辑回归)。
  • 相关分析:通常用于衡量两个连续型变量之间的关系。
    虽然回归分析和相关分析有一些区别,但它们都是探索变量之间关系的重要工具,在统计学和数据分析中都具有广泛的应用。
    3.回归的分类
    回归分析根据自变量(解释变量)和因变量(响应变量)的数量以及模型的形式可以分为多种类型。以下是常见的回归分析分类:
    (1)线性回归:
  • 简单线性回归:只有一个自变量和一个因变量的回归分析。
  • 多元线性回归:有多个自变量和一个因变量的回归分析。
    (2)非线性回归:
  • 多项式回归:自变量和因变量之间的关系可用多项式函数来描述。
  • 指数回归:因变量的对数与自变量之间存在线性关系。
  • 对数回归:自变量的对数与因变量之间存在线性关系。
  • 幂函数回归:自变量和因变量之间存在幂函数关系。
    (3)广义线性模型(Generalized Linear Models, GLM):
  • 逻辑回归:用于二分类问题,因变量是二元变量。
  • 泊松回归:用于计数数据,因变量是计数型变量。
  • 负二项分布回归:用于计数数据,对应因变量的方差大于均值的情况。
  • Gamma 回归:用于因变量为连续的正数,但不是正态分布的情况。
    (4) 岭回归和 Lasso 回归:
  • 岭回归(Ridge Regression):通过添加 L2 正则化项来解决多重共线性问题。
  • Lasso 回归(Least Absolute Shrinkage and Selection Operator):通过添加 L1 正则化项来实现特征选择和稀疏性。
    (5)弹性网络回归(Elastic Net Regression):
  • 综合了岭回归和 Lasso 回归的特点,同时使用 L1 和 L2 正则化项。
    (6)加权回归(Weighted Regression):
  • 对不同观测值赋予不同的权重,以适应不同观测值的异方差性。
    (7)非参数回归(Nonparametric Regression):
  • 不假设数据遵循特定的分布或模型形式,根据数据来拟合灵活的曲线。
    (8)稳健回归(Robust Regression):
  • 对异常值具有鲁棒性,减少异常值对回归结果的影响。
    以上是一些常见的回归分析类型,每种类型适用于不同的问题和数据特征。选择适当的回归模型是根据数据类型、假设和分析目的来决定的。
    4.回归分析的步骤
    (1)数据收集
    收集要分析的变量数据。例如,在上一篇中,我们收集了温度和游客数量。
    温度(x):20,23,26,29,30,33,35,38
    游客数量(y):80,120,270,430,540,580,680,750
    (2)数据可视化
    绘制散点图来初步观察变量之间的关系。这有助于判断是否存在线性关系或其他类型的关系。

在这里插入图片描述
(3)假设模型
选择适当的回归模型。这里我们以简单线性回归为例:

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

在这里插入图片描述
可以有很多条线来拟合这些点,那么如何判断哪条线最好呢?
在这里插入图片描述

对于简单线性回归,这些参数的计算公式如下:

在这里插入图片描述
在这里插入图片描述
(4)估计模型参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(计算结果来自chatgpt,不一定准确,只看步骤就行)

(5) 模型评估
计算决定系数 (𝑅2) 和进行残差分析

在这里插入图片描述
(残差分析这里只提一下,后面碰到再详细说)

在这里插入图片描述
(6) 假设检验
进行 t 检验以确定 𝑎和 𝑏 是否显著。

在这里插入图片描述
解释一下这里面几个要计算的量

在这里插入图片描述
在这里插入图片描述
截距和斜率标准误差的计算公式:

在这里插入图片描述在这里插入图片描述
然后计算t统计量,查找临界值就行了。

在这里插入图片描述

在这里插入图片描述

(7)预测和解释

在这里插入图片描述
(8) 报告结果
在这里插入图片描述
(计算结果来自chatgpt,不一定准确,只看过程就行了)
用代码简单一些:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats# 数据输入
temperature = np.array([20, 23, 26, 29, 30, 33, 35, 38])
visitors = np.array([80, 120, 270, 430, 540, 580, 680, 750])# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(temperature, visitors, color='blue', label='Data Points')
plt.xlabel('Temperature (°C)')
plt.ylabel('Number of Visitors')
plt.title('Scatter Plot of Temperature vs. Number of Visitors')
plt.legend()
plt.grid(True)
plt.show()# 回归模型拟合
slope, intercept, r_value, p_value, std_err = stats.linregress(temperature, visitors)
print(f'回归方程: y = {intercept:.2f} + {slope:.2f}x')# 绘制回归函数图
plt.figure(figsize=(10, 6))
plt.scatter(temperature, visitors, color='blue', label='Data Points')
plt.plot(temperature, intercept + slope * temperature, color='red', label='Regression Line')
plt.xlabel('Temperature (°C)')
plt.ylabel('Number of Visitors')
plt.title('Regression Line of Temperature vs. Number of Visitors')
plt.legend()
plt.grid(True)
plt.show()# 决定系数
r_squared = r_value**2
print(f'决定系数 (R^2): {r_squared:.4f}')# 残差分析
predicted_visitors = intercept + slope * temperature
residuals = visitors - predicted_visitorsplt.figure(figsize=(10, 6))
plt.scatter(temperature, residuals, color='purple')
plt.axhline(y=0, color='red', linestyle='--')
plt.xlabel('Temperature (°C)')
plt.ylabel('Residuals')
plt.title('Residual Plot')
plt.grid(True)
plt.show()# 残差的统计量
residuals_mean = np.mean(residuals)
residuals_std = np.std(residuals)
print(f'残差的平均值: {residuals_mean:.4f}')
print(f'残差的标准差: {residuals_std:.4f}')# 斜率和截距的t统计量
t_stat_slope = slope / std_err
t_stat_intercept = intercept / (std_err * np.sqrt(np.sum((temperature - np.mean(temperature))**2)))
print(f'斜率的 t 统计量: {t_stat_slope:.4f}')
print(f'截距的 t 统计量: {t_stat_intercept:.4f}')# 计算斜率和截距的p值
p_value_slope = 2 * (1 - stats.t.cdf(np.abs(t_stat_slope), df=len(temperature)-2))
p_value_intercept = 2 * (1 - stats.t.cdf(np.abs(t_stat_intercept), df=len(temperature)-2))
print(f'斜率的 p 值: {p_value_slope:.4f}')
print(f'截距的 p 值: {p_value_intercept:.4f}')

得到的结果:

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

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

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

相关文章

PHP质量工具系列之php-depend

php-depend是一个开源的静态代码分析工具,它的主要功能包括: 代码质量分析 复杂度度量:计算类、方法和函数的Cyclomatic Complexity(循环复杂度),帮助识别潜在的复杂代码段。 耦合度度量:分析类…

瑞鑫RK3588 画中画 OSD 效果展示

这些功能本来在1126平台都实现过 但是迁移到3588平台之后 发现 API接口变化较大 主要开始的时候会比较费时间 需要找到变动接口对应的新接口 之后 就比较好操作了 经过几天的操作 已实现 效果如下

刷代码随想录有感(95):合并区间

题干&#xff1a; 代码&#xff1a; class Solution { public:static bool cmp(vector<int>& a, vector<int>& b){return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begi…

MySQL排序操作

025排序操作 select .. from .. order by 字段 asc/descselect empno, ename, sal from emp order by sal asc;asc 不写的话&#xff0c;默认升序 多个字段排序 查询员工的编号、姓名、薪资&#xff0c;按照薪资升序排列&#xff0c;如果薪资相同的&#xff0c;再按照姓名升…

New Work-flow of Circuit Bootstrapping

参考文献&#xff1a; [CGGI17] Chillotti I, Gama N, Georgieva M, et al. Faster packed homomorphic operations and efficient circuit bootstrapping for TFHE. ASIACRYPT 2017 (1): 377-408.[CDKS21] Chen H, Dai W, Kim M, et al. Efficient homomorphic conversion be…

爬取基金收盘价并用pyecharts进行展现

爬取基金收盘价并用pyecharts进行展现 一、用到的第三方包 因为使用到了一些第三方的包&#xff0c;包还是比较大的如果直接从社区下载比较费劲&#xff0c;所以建议配置国内镜像源&#xff0c;这里以清华的镜像源为例。 pip config set global.index-url https://pypi.tuna…

uni微信小程序editor富文本组件如何插入图片

需求 在editor中插入图片&#xff0c;并对图片进行编辑&#xff0c;简略看一下组件的属性&#xff0c;官网editor 组件 | uni-app官网 解决方案 首先要使用到ready这个属性&#xff0c;然后官网有给代码粘过来&#xff0c;简单解释一下这段代码的意思&#xff08;作用是在不同…

坐实了!“神坛企业”也是草台班子

越接近真相&#xff0c;越觉得荒诞&#xff01;这次就算删稿也得说两句&#xff0c;KP基于BMC的“可信计算”&#xff0c;正在沦为业内笑柄。戳破那层保护色&#xff0c;施施然端坐神坛的某厂&#xff0c;内里可能也是个草台班子。 近期&#xff0c;网上流传着几页HW给客户洗脑…

k8s-pod参数详解

目录 概述创建Pod编写一个简单的Pod添加常用参数为Pod的容器分配资源网络相关Pod健康检查启动探针存活探针就绪探针 作用整个Pod参数配置创建docker-registry 卷挂载 结束 概述 k8s中的pod参数详解。官方文档   版本 k8s 1.27.x 、busybox:stable-musl、nginx:stable-alpine3…

EXCEL多sheet添加目录跳转

EXCEL多sheet添加目录跳转 背景 excel中有几十个sheet&#xff0c;点下方左右切换sheet太耗时&#xff0c;希望可以有根据sheet名超链接跳转相应sheet&#xff0c;处理完后再跳回原sheet。 方案一 新建目录sheet&#xff0c;在A1写sheet名&#xff0c;右键选择最下方超链接…

【免费】2021年数学建模国赛C题问题一--基于熵权法和TOPSIS法详细版附Word加代码

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

Linux进程间通信之管道

进程间通信介绍&#xff1a; 进程间通信的概念&#xff1a; 进程间通信简称IPC&#xff08;Interprocess communication&#xff09;&#xff0c;进程间通信就是在不同进程之间传播或交换信息。 进程间通信的目的&#xff1a; 数据传输&#xff1a; 一个进程需要将它的数据…

血清素是怎么产生的,其过高和过低与我们情绪和胃肠健康有哪些关联?

谷禾健康 血清素&#xff0c;5-羟色氨(5-HT)不仅充当体内系统的神经递质和激素&#xff0c;而且还是胃肠系统中的旁分泌信使。 5-HT神经元系统起源于中脑中缝核&#xff0c;下面示意图强调了血清素(5-HT)神经元与释放不同神经递质的其他神经元以及神经胶质细胞之间的解剖相互作…

pxe自动装机

概念 pxe是c/s模式。允许客户端通过网络从远程服务器&#xff08;服务端&#xff09;下载引导镜像&#xff0c;加载安装文件&#xff0c;实现自动化安装操作系统。 无人值守&#xff1a;安装选项不需要人为干预&#xff0c;可以自动化实现。 pxe的优点&#xff1a;1.规模化&…

TqdmWarning: IProgress not found. Please update jupyter and ipywidgets.

jupyter notebook报错 在pycharm的terminal中 安装完成后就不会再报错了

经典神经网络(10)PixelCNN模型、Gated PixelCNN模型及其在MNIST数据集上的应用

经典神经网络(10)PixelCNN模型、Gated PixelCNN模型及其在MNIST数据集上的应用 1 PixelCNN PixelCNN是DeepMind团队在论文Pixel Recurrent Neural Networks (16.01)提出的一种生成模型&#xff0c;实际上这篇论文共提出了两种架构&#xff1a;PixelRNN和PixelCNN&#xff0c;两…

【排序算法】快速排序

文章目录 1.什么是快速排序2.快速排序的步骤3.时间复杂度 1.什么是快速排序 快速排序算法是一种高效的排序方法&#xff0c;它的基本思想是“分而治之”&#xff0c;通过一趟排序将待排记录分隔成独立的两部分&#xff0c;其中一部分记录的关键字均比另一部分的关键字小&#x…

从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战五(引入vue-router,并给注册功能加上美丽的外衣el-form)

安装vue-router pnpm install vue-router创建router src下新增router目录&#xff0c;ruoter目录中新增index.ts import { createRouter, createWebHashHistory } from "vue-router"; const routes [{path: "/",name: "Home",component: () …

个人笔记-python生成gif

使用文件的修改时间戳进行排序 import os import re import imageio# 设置图片所在的文件夹路径 folder_path /home/czy/ACode/AMAW_20240219/9.3.x(Discrete_time_marching&#xff09;/9.3.17.11.1(Disc_concessive_CH_ZJ)/current_figures # 文件夹路径&#xff1b;linux…

网络编程: 高级IO与多路转接select,poll,epoll的使用与介绍

网络编程: 高级IO与多路转接select,poll,epoll的使用与介绍 前言一.五种IO模型1.IO的本质2.五种IO模型1.五种IO模型2.同步IO与异步IO3.IO效率 二.非阻塞IO1.系统调用介绍2.验证代码 三.select多路转接1.系统调用接口2.写代码 : 基于select的TCP服务器1.封装的Socket接口2.开始写…