最小二乘法多项式曲线拟合数学原理及其C++实现

article/2025/8/18 22:14:21

目录

  • 0 前言
  • 1 最小二乘法概述
  • 2 最小二乘法求解多项式曲线系数向量的数学推导
    • 2.1 代数法
    • 2.2 矩阵法
  • 3 代码实现
  • 4 总结
  • 参考

0 前言

自动驾驶开发中经常涉及到多项式曲线拟合,本文详细描述了使用最小二乘法进行多项式曲线拟合的数学原理,通过样本集构造范德蒙德矩阵,将一元 N 次多项式非线性回归问题转化为 N 元一次线性回归问题,并基于线性代数 C++ 模板库——Eigen 进行了实现,最后,比较了几种实现方法在求解速度与求解精度上的差异。

1 最小二乘法概述

最小二乘法(Least Square Method,LSM)通过最小化误差(也叫残差)的平方和寻找数据的最优函数匹配。

假设给定一组样本数据集 P ( x , y ) P(x, y) P(x,y) P P P 内各数据点 P i ( x i , y i ) ( i = 1 , 2 , 3 , . . . , m ) P_i(x_i, y_i) (i=1, 2, 3, ..., m) Pi(xi,yi)(i=1,2,3,...,m) 来自于对多项式

f ( x i ) = θ 0 + θ 1 x i + θ 2 x i 2 + ⋅ ⋅ ⋅ + θ n x i n f(x_i)=θ_0+θ_1x_i+θ_2x_i^2+···+θ_nx_i^n f(xi)=θ0+θ1xi+θ2xi2++θnxin

的多次采样,其中:

  • m m m 为样本维度
  • n n n 为多项式阶数
  • θ j ( j = 1 , 2 , 3 , . . . , n ) θ_j (j=1, 2, 3, ..., n) θj(j=1,2,3,...,n) 为多项式的各项系数

针对样本数据集 P P P 内各数据点的误差平方和为:

S = ∑ i = 1 m [ f ( x i ) − y i ] 2 S=\sum_{i=1}^m[f(x_i)-y_i]^2 S=i=1m[f(xi)yi]2

最小二乘法认为,最优函数的各项系数 θ j ( j = 1 , 2 , 3 , . . . , n ) θ_j (j=1, 2, 3, ..., n) θj(j=1,2,3,...,n) 应使得误差平方和 S S S 取得极小值。最小二乘法与极大似然估计有着密切的联系,关于最小二乘法的数学本质可参考文章《如何理解最小二乘法?》。

2 最小二乘法求解多项式曲线系数向量的数学推导

2.1 代数法

由于最优函数的各项系数 θ j ( j = 1 , 2 , 3 , . . . , n ) θ_j (j=1, 2, 3, ..., n) θj(j=1,2,3,...,n) 使得误差平方和 S S S 取得极小值,因而,对于最优函数而言,其误差平方和 S S S 对各多项式系i数 θ j ( j = 1 , 2 , 3 , . . . , n ) θ_j (j=1, 2, 3, ..., n) θj(j=1,2,3,...,n) 的偏导数应满足:

∂ S ∂ θ j = ∑ i = 1 m [ 2 ( θ 0 + θ 1 x i + θ 2 x i 2 + ⋅ ⋅ ⋅ + θ n x i n − y i ) x i j ] = 0 \frac{\partial{S}}{\partial{θ_j}}=\sum_{i=1}^{m}[2(θ_0+θ_1x_i+θ_2x_i^2+···+θ_nx_i^n-y_i)x_i^j]=0 θjS=i=1m[2(θ0+θ1xi+θ2xi2++θnxinyi)xij]=0

整理上式, j j j 分别取 0 , 1 , 2 , . . . , n 0,1,2,...,n 0,1,2,...,n 时,有:

{ m θ 0 + ( ∑ i = 1 m x i ) θ 1 + ( ∑ i = 1 m x i 2 ) θ 2 + ⋯ + ( ∑ i = 1 m x i n ) θ n = ∑ i = 1 m y i ( ∑ i = 1 m x i ) θ 0 + ( ∑ i = 1 m x i 2 ) θ 1 + ( ∑ i = 1 m x i 3 ) θ 2 + ⋯ + ( ∑ i = 1 m x i n + 1 ) θ n = ∑ i = 1 m ( x i y i ) ( ∑ i = 1 m x i 2 ) θ 0 + ( ∑ i = 1 m x i 3 ) θ 1 + ( ∑ i = 1 m x i 4 ) θ 2 + ⋯ + ( ∑ i = 1 m x i n + 2 ) θ n = ∑ i = 1 m ( x i 2 y i ) ⋯ ⋯ ( ∑ i = 1 m x i n ) θ 0 + ( ∑ i = 1 m x i n + 1 ) θ 1 + ( ∑ i = 1 m x i n + 2 ) θ 2 + ⋯ + ( ∑ i = 1 m x i 2 n ) θ n = ∑ i = 1 m ( x i n y i ) \begin{cases} mθ_0+(\sum\limits_{i=1}^{m}x_i)θ_1+(\sum\limits_{i=1}^{m}x_i^2)θ_2+\cdots+(\sum\limits_{i=1}^{m}x_i^n)θ_n=\sum\limits_{i=1}^{m}y_i \\ (\sum\limits_{i=1}^{m}x_i)θ_0+(\sum\limits_{i=1}^{m}x_i^2)θ_1+(\sum\limits_{i=1}^{m}x_i^3)θ_2+\cdots+(\sum\limits_{i=1}^{m}x_i^{n+1})θ_n=\sum\limits_{i=1}^{m}(x_iy_i) \\ (\sum\limits_{i=1}^{m}x_i^2)θ_0+(\sum\limits_{i=1}^{m}x_i^3)θ_1+(\sum\limits_{i=1}^{m}x_i^4)θ_2+\cdots+(\sum\limits_{i=1}^{m}x_i^{n+2})θ_n=\sum\limits_{i=1}^{m}(x_i^2y_i) \\ \cdots\cdots \\ (\sum\limits_{i=1}^{m}x_i^n)θ_0+(\sum\limits_{i=1}^{m}x_i^{n+1})θ_1+(\sum\limits_{i=1}^{m}x_i^{n+2})θ_2+\cdots+(\sum\limits_{i=1}^{m}x_i^{2n})θ_n=\sum\limits_{i=1}^{m}(x_i^ny_i) \end{cases} mθ0+(i=1mxi)θ1+(i=1mxi2)θ2++(i=1mxin)θn=i=1myi(i=1mxi)θ0+(i=1mxi2)θ1+(i=1mxi3)θ2++(i=1mxin+1)θn=i=1m(xiyi)(i=1mxi2)θ0+(i=1mxi3)θ1+(i=1mxi4)θ2++(i=1mxin+2)θn=i=1m(xi2yi)(i=1mxin)θ0+(i=1mxin+1)θ1+(i=1mxin+2)θ2++(i=1mxi2n)θn=i=1m(xinyi)

转化为矩阵形式,令:

X = [ m ∑ i = 1 m x i ∑ i = 1 m x i 2 ⋯ ∑ i = 1 m x i n ∑ i = 1 m x i ∑ i = 1 m x i 2 ∑ i = 1 m x i 3 ⋯ ∑ i = 1 m x i n + 1 ∑ i = 1 m x i 2 ∑ i = 1 m x i 3 ∑ i = 1 m x i 4 ⋯ ∑ i = 1 m x i n + 2 ⋮ ⋮ ⋮ ⋱ ⋮ ∑ i = 1 m x i n ∑ i = 1 m x i n + 1 ∑ i = 1 m x i n + 2 ⋯ ∑ i = 1 m x i 2 n ] , θ = [ θ 0 θ 1 θ 2 ⋮ θ n ] , Y = [ ∑ i = 1 m y i ∑ i = 1 m ( x i y i ) ∑ i = 1 m ( x i 2 y i ) ⋮ ∑ i = 1 m ( x i n y i ) ] X=\begin{bmatrix} m & \sum\limits_{i=1}^{m}x_i & \sum\limits_{i=1}^{m}x_i^2 & \cdots & \sum\limits_{i=1}^{m}x_i^n \\ \sum\limits_{i=1}^{m}x_i & \sum\limits_{i=1}^{m}x_i^2 & \sum\limits_{i=1}^{m}x_i^3 & \cdots & \sum\limits_{i=1}^{m}x_i^{n+1} \\ \sum\limits_{i=1}^{m}x_i^2 & \sum\limits_{i=1}^{m}x_i^3 & \sum\limits_{i=1}^{m}x_i^4 & \cdots & \sum\limits_{i=1}^{m}x_i^{n+2} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \sum\limits_{i=1}^{m}x_i^n & \sum\limits_{i=1}^{m}x_i^{n+1} & \sum\limits_{i=1}^{m}x_i^{n+2} & \cdots & \sum\limits_{i=1}^{m}x_i^{2n} \end{bmatrix}, \quad θ=\begin{bmatrix} θ_0 \\ θ_1 \\ θ_2 \\ \vdots \\ θ_n \\ \end{bmatrix}, \quad Y=\begin{bmatrix} \sum\limits_{i=1}^{m}y_i \\ \sum\limits_{i=1}^{m}(x_iy_i) \\ \sum\limits_{i=1}^{m}(x_i^2y_i) \\ \vdots \\ \sum\limits_{i=1}^{m}(x_i^ny_i) \end{bmatrix} X=mi=1mxii=1mxi2i=1mxini=1mxii=1mxi2i=1mxi3i=1mxin+1i=1mxi2i=1mxi3i=1mxi4i=1mxin+2i=1mxini=1mxin+1i=1mxin+2i=1mxi2n,θ=θ0θ1θ2θn,Y=i=1myii=1m(xiyi)i=1m(xi2yi)i=1m(xinyi)

则有:

X θ = Y ⇓ θ = X − 1 Y \begin{gathered} Xθ=Y \\ \Downarrow \\ θ=X^{-1}Y \end{gathered} Xθ=Yθ=X1Y

使用样本数据集构造出矩阵 X X X 和矩阵 Y Y Y 后,便可由上式解得最优函数的系数向量 θ θ θ

2.2 矩阵法

在代数法中,构造矩阵 X X X 和矩阵 Y Y Y 较为繁琐且计算量大,我们尝试直接将误差平方和 S S S 拆解为矩阵形式。令:

X v = [ 1 x 1 x 1 2 ⋯ x 1 n 1 x 2 x 2 2 ⋯ x 2 n 1 x 3 x 3 2 ⋯ x 3 n ⋮ ⋮ ⋮ ⋱ ⋮ 1 x m x m 2 ⋯ x m n ] , θ = [ θ 0 θ 1 θ 2 ⋮ θ n ] , Y r = [ y 1 y 2 y 3 ⋮ y m ] X_v=\begin{bmatrix} 1 & x_1 & x_1^2 & \cdots & x_1^n \\ 1 & x_2 & x_2^2 & \cdots & x_2^n \\ 1 & x_3 & x_3^2 & \cdots & x_3^n \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & x_m & x_m^2 & \cdots & x_m^n \\ \end{bmatrix}, \quad θ=\begin{bmatrix} θ_0 \\ θ_1 \\ θ_2 \\ \vdots \\ θ_n \\ \end{bmatrix}, \quad Y_r=\begin{bmatrix} y_1 \\ y_2 \\ y_3 \\ \vdots \\ y_m \\ \end{bmatrix} Xv=1111x1x2x3xmx12x22x32xm2x1nx2nx3nxmn,θ=θ0θ1θ2θn,Yr=y1y2y3ym

则误差平方和 S S S 可写成:

S = ( X v θ − Y r ) T ( X v θ − Y r ) S=(X_vθ-Y_r)^T(X_vθ-Y_r) S=(XvθYr)T(XvθYr)

X v X_v Xv 是一个范德蒙矩阵(Vandermonde Matrix), θ θ θ 仍然是多项式系数构成的系数向量, Y r Y_r Yr 是样本数据集的输出向量。对于最优函数,应满足:

∂ S ∂ θ = ∂ [ ( X v θ − Y r ) T ( X v θ − Y r ) ] ∂ θ = X v T X v θ − X v T Y r = 0 \begin{aligned} \frac{\partial{S}}{\partial{θ}} & =\frac{\partial{[(X_vθ-Y_r)^T(X_vθ-Y_r)]}}{\partial{θ}} \\ & =X_v^TX_vθ-X_v^TY_r \\ & =0 \\ \end{aligned} θS=θ[(XvθYr)T(XvθYr)]=XvTXvθXvTYr=0

可求得最优函数的多项式系数向量 θ θ θ 为:

θ = ( X v T X v ) − 1 X v T Y r θ=(X_v^TX_v)^{-1}X_v^TY_r θ=(XvTXv)1XvTYr

相比代数法求解中的矩阵 X X X 和矩阵 Y Y Y,矩阵法中的矩阵 X v X_v Xv 和矩阵 Y r Y_r Yr 构造起来更加简单。仔细观察,可以发现:

{ X = X v T X v Y = X v T Y r \begin{cases} X=X_v^TX_v \\ Y=X_v^TY_r \end{cases} {X=XvTXvY=XvTYr

说明两个解法是相通的。

3 代码实现

通过C++ Eigen库实现了矩阵法中的求解方式,Eigen版本为v3.3.7,运行环境为Windows10,Eigen库安装路径为 D:\eigen-3.3.7

函数声明

#ifndef LEAST_SQUARE_METHOD_H
#define LEAST_SQUARE_METHOD_H#include <D:\eigen-3.3.7\Eigen\Dense>
#include <vector>using namespace std;/*** @brief Fit polynomial using Least Square Method.* * @param X X-axis coordinate vector of sample data.* @param Y Y-axis coordinate vector of sample data.* @param orders Fitting order which should be larger than zero. * @return Eigen::VectorXf Coefficients vector of fitted polynomial.*/
Eigen::VectorXf FitterLeastSquareMethod(vector<float> &X, vector<float> &Y, uint8_t orders);#endif

函数实现

#include "LeastSquareMethod.h"/*** @brief Fit polynomial using Least Square Method.* * @param X X-axis coordinate vector of sample data.* @param Y Y-axis coordinate vector of sample data.* @param orders Fitting order which should be larger than zero. * @return Eigen::VectorXf Coefficients vector of fitted polynomial.*/
Eigen::VectorXf FitterLeastSquareMethod(vector<float> &X, vector<float> &Y, uint8_t orders)
{// abnormal input verificationif (X.size() < 2 || Y.size() < 2 || X.size() != Y.size() || orders < 1)exit(EXIT_FAILURE);// map sample data from STL vector to eigen vectorEigen::Map<Eigen::VectorXf> sampleX(X.data(), X.size());Eigen::Map<Eigen::VectorXf> sampleY(Y.data(), Y.size());Eigen::MatrixXf mtxVandermonde(X.size(), orders + 1);  // Vandermonde matrix of X-axis coordinate vector of sample dataEigen::VectorXf colVandermonde = sampleX;              // Vandermonde column// construct Vandermonde matrix column by columnfor (size_t i = 0; i < orders + 1; ++i){if (0 == i){mtxVandermonde.col(0) = Eigen::VectorXf::Constant(X.size(), 1, 1);continue;}if (1 == i){mtxVandermonde.col(1) = colVandermonde;continue;}colVandermonde = colVandermonde.array()*sampleX.array();mtxVandermonde.col(i) = colVandermonde;}// calculate coefficients vector of fitted polynomialEigen::VectorXf result = (mtxVandermonde.transpose()*mtxVandermonde).inverse()*(mtxVandermonde.transpose())*sampleY;return result;
}

在函数实现中使用了一些Eigen的小技巧:

  • 使用 Eigen::Map 直接将样本数据由 std::vector 映射到 Eigen::VectorXf 参与运算,避免了循环数据读入
  • 通过 array() 方法累乘样本数据的X向量,逐列构造范德蒙矩阵,同样避免了大量的循环数据处理

拟合测试

#include <iostream>
#include "LeastSquareMethod.h"using namespace std;int main()
{float x[5] = {1, 2, 3, 4, 5};float y[5] = {7, 35, 103, 229, 431};vector<float> X(x, x + sizeof(x) / sizeof(float));vector<float> Y(y, y + sizeof(y) / sizeof(float));Eigen::VectorXf result(FitterLeastSquareMethod(X, Y, 3));cout << "\nThe coefficients vector is: \n" << endl;for (size_t i = 0; i < result.size(); ++i)cout << "theta_" << i << ": " << result[i] << endl;return 0;
}

运行编译后的可执行程序,得到如下结果:

$ ./LSM.exeThe coefficients vector is: theta_0: 1.30698
theta_1: 0.924561
theta_2: 2.0032
theta_3: 2.99976

点击这里下载完整的工程 Demo,工程使用了 cmake 编译链,你也可以下载工程后使用其中的程序文件创建符合自己开发习惯的工程。

4 总结

本文中的矩阵法本质在于,通过样本集构造范德蒙德矩阵,将一元 N 次多项式非线性回归问题转化为 N 元一次线性回归问题(即多元线性回归)。对于线性回归问题的求解,Eigen 库中有多种实现:

  • LU 分解
  • 基于 Householder 变换的 QR 分解
  • 完全正交分解(Complete Orthogonal Decomposition,COD)
  • 标准 Cholesky 分解(LLT)
  • 改进型 Cholesky 分解(LDLT)
  • SVD 分解

不同方法在对矩阵 A A A 的需求、求解速度、求解精度上有所差异,Eigen 官网对几种方法进行了对比总结,查看原文请移步 Linear algebra and decompositions 。

Eigen 库中线性问题的几种求解方法对比

Eigen 官网在 Solving linear least squares systems 章节中讨论了 SVD 分解、QR 分解和正规方程(即使用 LDLT 解法)三种方法在求解线性最小二乘问题上的差异,并指出:SVD 分解通常精度最高但速度最慢,正规方程速度最快但精度最差,QR 分解性能介于两种方法之间。相比 SVD 分解和 QR 分解,当矩阵 A A A 病态时,正规方程解法所得结果将损失两倍精度。

利用上文所述的工程 Demo 中的小样本(三次多项式 f ( x ) = 1 + x + 2 x 2 + 3 x 3 f(x) = 1 + x + 2x^2 + 3x^3 f(x)=1+x+2x2+3x3 附近的 5 个点)构造出范德蒙德矩阵(即矩阵 A A A)后,对矩阵法(文中方法)、正规方程、householderQr 分解和 bdcSvd 分解进行了拟合实验对比:

几种求解线性最小二乘问题方法的对比

从结果可以看出,在求解速度方面:
正规方程 > householderQr分解 > 矩阵法 > bdcSvd分解 \text{正规方程}>\text{householderQr分解}>\text{矩阵法}>\text{bdcSvd分解} 正规方程>householderQr分解>矩阵法>bdcSvd分解

在求解精度方面:
bdcSvd分解 > householderQr分解 > 正规方程 > 矩阵法 \text{bdcSvd分解}>\text{householderQr分解}>\text{正规方程}>\text{矩阵法} bdcSvd分解>householderQr分解>正规方程>矩阵法

householderQr 分解综合性能较优,矩阵法综合性能较差,且有 A T A A^TA ATA 可逆的要求。

对于线性回归问题,还可通过梯度下降法进行求解,梯度下降法具体使用中还会涉及一些工程细节,例如数据的特征缩放(归一化)、步长 α \alpha α(学习率)的选择、迭代次数的设置等,具体不再展开,后面会另开一篇文章。

参考

  1. 如何理解最小二乘法?
  2. 最小二乘法拟合多项式原理以及c++实现
  3. 最小二乘法多项式曲线拟合原理与实现
  4. 最小二乘法多项式曲线拟合原理与实现(数学公式详细推导,代码方面详细注释)
  5. c++ 曲线拟合的最小二乘法 公式 二次多项式和三次多项式
  6. 最小二乘法
  7. 最小二乘法(least sqaure method)
  8. Linear algebra and decompositions
  9. Solving linear least squares systems
  10. 机器学习:用梯度下降法实现线性回归
  11. 机器学习:最小二乘法、最大似然估计、梯度下降法
  12. 最小二乘法和梯度下降法有哪些区别?
  13. 最小二乘法与梯度下降的区别
  14. 最小二乘法与梯度下降法的区别?
  15. 从线性回归到最小二乘法和梯度下降法
  16. 如何直观形象的理解方向导数与梯度以及它们之间的关系?
  17. 使用最小二乘法和梯度下降法进行线性回归分析


http://chatgpt.dhexx.cn/article/9RV8C9FS.shtml

相关文章

GB和GBDT 算法流程及分析

1、优化模型的两种策略&#xff1a; 1&#xff09;基于残差的方法 残差其实就是真实值和预测值之间的差值&#xff0c;在学习的过程中&#xff0c;首先学习一颗回归树&#xff0c;然后将“真实值-预测值”得到残差&#xff0c;再把残差作为一个学习目标&#xff0c;学习下一棵回…

机器学习和深度学习性能指标

这里写目录标题 1、声明2、机器学习评估性能指标2.1、回归&#xff08;Regression&#xff09;算法指标2.1.1、平均绝对误差 MAE2.1.2、均方误差 MSE2.1.3、均方根误差 RMSE2.1.4、决定系数R^22.1.5、解决评估指标鲁棒性问题 2.2、分类&#xff08;Classification&#xff09;算…

多模态信息融合研究

1、主要研究方向 多模态学习可以划分为以下五个研究方向&#xff1a; 多模态表示学习 Multimodal Representation&#xff1a;主要研究如何将多模态的数据所蕴含的语义信息通过embedding的方式实现向量化&#xff0c;便于后续的计算&#xff1b; 模态转化 Translation&#…

【时序】DeepGLO:可以学习全局依赖和局部信息的多时间序列预测模型

论文名称&#xff1a;Think Globally, Act Locally: A Deep Neural Network Approach to High-Dimensional Time Series Forecasting 论文下载&#xff1a;https://arxiv.org/abs/1905.03806 论文年份&#xff1a;NeurIPS 2019 论文被引&#xff1a;134&#xff08;2022/04/21&…

独立性检验(卡方检验)

独立性检验(Test for Independence)是根据频数来判断两类因子是彼此独立还是彼此相关的一种假设检验。假如对某一个数据集有X&#xff08;值域为x1, x2&#xff09;跟Y&#xff08;值域为y1, y2&#xff09;变量&#xff0c;下面是他们的频数表&#xff1a; x1 x2 汇总 y1 …

列联表分析——独立性检验(卡方检验)

第一步&#xff1a;建立原假设和备择假设 H0&#xff1a;两变量相不立&#xff1b;H1&#xff1a;u两变量相互b独立 第二步&#xff1a;计算自由度和理论频数 第三步&#xff1a;计算卡方统计量 实际观察次数与理论次数之差的平方再除以理论次数得到的统计量近似服从卡方分布…

列联表分析-独立性检验

用SPSS分析甲乙丙三名推销员的对ABC三类产品的销售数据是否独立 原假设&#xff1a;他们之间相互独立 数据如下&#xff1a; 导入数据 将销量进行加权 点击分析-描述统计–交叉表&#xff1b; 结果 当表格是2X2的时候得到结果如下&#xff1a;

第15章卡方检验:拟合优度和独立性检验

第1章统计学入门 第2章频数分布略 第3章集中趋势的测量 第4章变异性 第5章分数的位置及标准化分布 第6章概率和正态分布 第7章概率和样本&#xff1a;样本均值的分布 第8章假设检验介绍 第9章t检验介绍 第10章两个独立样本的t检验 第11章两个相关样本的t检验…

独立样本t检验、方差齐性检验

什么是独立样本t检验&#xff1f; t检验是比较两组数据之间的差异&#xff0c;有无统计学意义&#xff1b;t检验的前提是&#xff0c;两组数据来自正态分布的群体&#xff0c;数据的方差齐&#xff0c;满足独立性。 独立样本t检验&#xff08;各实验处理组之间毫无相关存在&am…

卡方列联表的独立性检验

1.列联表是按两个或多个特征分类的频数数据&#xff0c;一般以表格形式组成。 2.判断两个或多个属性之间有无关联&#xff0c;即判别属性之间是否独立。 3.检验步骤 建立原假设 H0: 两属性相互独立 H1: 两属性之间不独立 计算自由度 计算卡方统计量 拒绝域 对照卡方分布…

SPSS学习(五)独立样本t检验

参考书籍&#xff1a;《SPSS其实很简单》 应用场景&#xff1a;当对两个独立分组中感兴趣的一个连续因变量的均值进行比较时使用。 目标&#xff1a;检验两个组别中关于某些感兴趣的因变量的均值是否存在显著差异 数据要求&#xff1a;具有两个不同组别的一个自变量&#xf…

统计之 - 独立性检验

独立性检验(Testfor Independence)是根据频数来判断两类因子是彼此独立还是彼此相关的一种假设检验。假如对某一个数据集有X&#xff08;值域为x1,x2&#xff09;跟Y&#xff08;值域为y1,y2&#xff09;变量&#xff0c;下面是他们的频数表&#xff1a; x1x2汇总y1ababy2cdcd汇…

SAS学习第9章:卡方检验之适合性检验与独立性检验

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度&#xff0c;实际观测值与理论推断值之间的偏离程度就决定卡方值的大小&#xff0c;如果卡方值越大&#xff0c;二者偏差程度越大&#xff1b;反之&#xff0c;二者偏差越小&#xff1b;若两个值完全相等时&#xf…

入门必学 | R语言数据的独立性,正态性及方差齐性检验

参数分析的三大前提检验 检验数据独立性的方法Chisq检验Fisher检验Cochran-Mantel-Haenszel检验 检验数据正态性的方法shapiro.test函数qqnorm函数ksnormTest函数lillie.test函数ks.test函数 方差齐性检验的方法bartlett.test()检验leveneTest ()检验 完整代码 参数检验-显著性…

基于卡方的独立性检验

本文给出基于两种统计量的假设检验&#xff0c;来检验变量间是否独立--χ2与秩和。χ2越小说明越独立 假设检验 假设检验&#xff08;Test of Hypothesis&#xff09;又称为显著性检验&#xff08;Test of Ststistical Significance&#xff09;。 在抽样研究中&#xff0c;由于…

SPSS之双独立样本的T检验

双独立样本的T检验 是指在两个样本相互独立的前提下&#xff0c;检验两个样本的总体均数&#xff08;两个样本各自归属的总体的平均数&#xff0c;如果两样本均数不存在显著差异&#xff0c;那么可以认为两个样本来自同一个总体&#xff09;是否存在了显著性差异。它的零假设&…

概率论:相关性与独立性

文章目录 (一) X与Z是相关还是独立&#xff1f;(二) 相关性与独立性的关系1.相关性 (线性关系)相关系数 ρ X Y ρ_{XY} ρXY​ 2.独立性 (无任何关系)3.相关性与独立性的关系 (三) 独立可加性 (XY独立且同类型分布) (一) X与Z是相关还是独立&#xff1f; 1.二维正态分布&…

spss中有关独立样本T检验的详细介绍(包含操作过程和结果分析)

SPSS学习记录day2 写在前面&#xff1a; 在上一篇里我们介绍了SPSS软件中平均值和单样本T检验两种比较平均值的方法&#xff0c;今天来介绍剩下的几个比较平均值的检验操作 分析>比较平均值 3.独立样本T检验 独立样本T检验类似于单样本T检验&#xff0c;不过独立样本T检验…

R语言:独立性检验

R语言中的独立性检验包括&#xff1a;卡方检验、Fisher检验、Cochran-Mantel-Haenszel检验 原假设H0——没有发生 备择假设H1——发生了 p-value是在原假设为真 的情况下&#xff0c;得到的最大或超出所得到的检验统计量的概率 一般将p值定位到0.05。当p<0.05时&#xff0c;…

spss分析方法-多个独立样本检验(转载)

参数检验的前提是关于总体分布的假设成立&#xff0c;但很多情况下我们无法获得有关总体分布的相关信息。 非参数检验正是一类基于这种考虑&#xff0c;在总体方差未知或知道甚少的情况下&#xff0c;利用样本数据对总体分布形态等进行推断的方法。 多独立样本检验用于在总体分…