从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_visitors

plt.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}')

得到的结果:

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

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

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

相关文章

数学建模--特殊的图

目录 1.二部图 (1)简单认识 (2)定义 (3)判定定理 (4)定理理解 2.匹配问题 (1)匹配 (2)完备&&完美匹配 (3…

力扣20 有效的括号

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

Linux线程:线程分离

目录 一、什么是线程分离 1.1pthread_detach 1.2pthread线程库存在的意义 1.3__thread线程的局部存储 1.4系统调用clone 一、什么是线程分离 1.1pthread_detach 默认情况下,新创建的线程是joinable的,线程退出后,需要对其进行pthread_joi…

视频SK配置教程

视频SK配置教程 提供的pika接口服务(国外的,所以要反代),创建一个pika账号并开通pika套餐 反向配置教程 https://blog.csdn.net/u012241616/article/details/139391954?spm1001.2014.3001.5502 1、进入站点后台->功能->…

ubuntu使用

使用ubuntu 安装ubuntu ubuntu的镜像 : http://mirrors.aliyun.com/ubuntu-releases/ 进入 vmware https://www.vmware.com/products/workstation-player/workstation-player-evaluation.html 点击 创建 浏览 找到 系统镜像文件, 我把它放在了 vmware文件下 设置好信息 , 记…

【GIS系列】挑战千万级数据:Java和Elasticsearch在GIS中的叠加分析实践

作者:后端小肥肠 创作不易,未经允许严禁转载。 目录 1. 前言 2. 叠加分析场景方案对比 2.1. Geotools 2.2. PostGIS 2.3. Elasticsearch 3. 基于ElastcSearch实现叠加分析代码实践 3.1. 开发环境搭建 3.1.1. 所需版本和工具 3.1.2. pom依赖 3.…

基于数据驱动的自适应性小波构造(MATLAB)

以地震领域为例,时频变换能够刻画地震资料的时频特征,进而辅助地质构造解释。在各种时频分析工具中,连续小波变换CWT是描述地震资料时频特征的常用工具。选择合适的基小波是CWT的关键问题。对于不同类型的信号前人有针对性的设计了许多基小波…

Virtualbox中对SD卡进行格式化和分区

系统:Ubuntu 22.04.4 LTS 方法一:在虚拟机的ubuntu系统中使用fdisk命令方式分区,具体请参考: imx6ull - 制作烧录SD卡-CSDN博客 方法二:使用Ubuntu自带GUI工具Disks Disks相比命令行工具更加简单无脑,用…

esp8266刷micropython固件

硬件&#xff1a;ESP-01 1M FLASH 乐鑫官方刷写工具&#xff1a;https://www.espressif.com.cn/sites/default/files/tools/flash_download_tool_3.9.6_2.zip 最新micropython固件: flash<512:https://micropython.org/resources/firmware/ESP8266_GENERIC-FLASH_512K-20…

【智能制造1005】智能制造试点企业名单及工具变量数据,助力深入研究!

今天给大家分享的是国内顶级期刊金融研究2022年发表的论文《智能制造赋能企业创新了吗&#xff1f;——基于中国智能制造试点项目的准自然实验》使用到的重要数据集——智能制造试点企业名单以及该政策对应的工具变量数据。该论文以中国智能制造示范项目的推广为准自然实验&…

C语言基础:字符函数和字符串函数

重点介绍处理字符和字符串的库函数的使用和注意事项 求字符串长度&#xff08;strlen&#xff09;长度不受限制的字符串函数(strcpy strcat strcmp)长度受限制的字符串函数介绍(strncpy strncat strncmp)字符串查找(strstr strtok)错误信息报告(strerror) C语言中对字…

路由策略实验1

先把地址全部配通 对R1 对R2 对R4 对R3 对R5 对R6 对R7 然后起路由协议 对R1 对R2 对R3 对R4 对R5 对R6 对R7

Ubuntu——配置安装服务

目录 一、安装JDK 二、安装IntelliJ IDEA 三、安装Docker-ce 1.环境清理以免有遗留组件 2.安装Docker 3.测试 #检查版本 sudo cat /etc/issue 一、安装JDK Ubuntu提供了一个名为apt的软件包管理工具&#xff0c;通过它可以使用命令行的方式安装、更新和删除软件包。 使用…

C++ : 模板初阶

标题&#xff1a;C : 模板初阶 水墨不写bug 正文开始&#xff1a; C语言的问题 &#xff1a; 写不完的swap函数 在学习C语言时&#xff0c;我们有一个经常使用的函数swap函数&#xff0c;它可以将两个对象的值交换。 我们通常这样实现它&#xff1a; void swap(int t1,int t…

2024年西安交通大学程序设计竞赛校赛

2024年西安交通大学程序设计竞赛校赛 文章目录 2024年西安交通大学程序设计竞赛校赛D瑟莉姆的宴会E: 雪中楼I: 命令行(待补)J&#xff1a;最后一块石头的重量(待补)K: 崩坏&#xff1a;星穹铁道(待补)M&#xff1a;生命游戏N: 圣诞树 D瑟莉姆的宴会 解题思路&#xff1a; ​ …

基于Android Studio 实现的鲜花(购物)商城App--原创

一、高质量源码&#xff08;非开源&#xff09; 关注公众号&#xff1a;《编程乐学》 后台回复&#xff1a;24060201 二、项目演示视频 基于Android Studio 实现的鲜花商城App--原创 三、开发环境 四、设计与实现 1.启动页 启动页我们需要用到倒计时和跳转功能。 2.注册登录 …

Vue中引入elementUI中的container组件失效

1.不用修改官网中任何css或者html 2.按需引入&#xff0c;不是只是引入官网的就可以 import Vue from vue import Router from vue-router import HelloWorld from /components/HelloWorld import First from /components/views/First import Second from /components/views/…

多元联合分布建模 Copula python实例

多元联合分布建模 Copula python实例 目录 库安装 实例可视化代码 库安装 pip install copulas 实例可视化代码 import numpy as np import pandas as pd from copulas.multivariate import GaussianMultivariate# Generate some example data np.random.seed(42) data = …

反向配置教程

注意&#xff0c;Openai、Gemini、claude和pika接口在国内直连不通&#xff0c;都需要配置反向 一、配置openai反向 1、在海外宝塔添加反向 将海外宝塔升级到最新 在海外宝塔添加一个新站点&#xff08;可以解析一个域名来用&#xff0c;也可以用ip端口形式&#xff09; 打开…

大模型应用:Prompt-Engineering优化原则

1.Prompt-Engineering 随着大模型的出现及应用&#xff0c;出现了一门新兴“技术”&#xff0c;该技术被称为Prompt-Enginerring。Prompt Engineering即提示工程&#xff0c;是指在使用大语言模型时&#xff0c;编写高效、准确的Prompt(提示词)的过程。通过不同的表述、细节和…