`
cjc
  • 浏览: 673610 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用最小二乘法实现图片中多个点的一元线性回归

阅读更多

    在日常生活和科学实验中,人们会经常发现因变量y和自变量x之间存在一定线性关系设一组数据为:

   

yx的关系可以用线性方程表示:

   

 

    按最小二乘法可得:

   

 

   

 

        线性关系的程度可以用相关系数r表示

  

 

        所以,如果想在图象框中根据已知的多个存在线性关系的点描出相应的离所有的点最靠近的直线,应该利用以上一元线性回归的方法,代码如下:

 

Private Sub Command1_Click()
Picture1.Scale (0, 20)-(12, 0) '设置坐标范围
Dim p(4, 1) As Double, i As Integer
For i = 0 To 4
p(i, 0) = Choose(i + 1, 1.2, 3.7, 4.1, 5.1, 8.3)
p(i, 1) = Choose(i + 1, 2.2, 6.4, 7.8, 10.1, 15.8)
Next ' 定义五个点
drawline Picture1, p '画出过五个点的直线
End Sub
Sub drawline(ByVal pic As PictureBox, ByRef p() As Double)
Dim sigmax As Double, sigmay As Double, sigmaxx As Double, sigmaxy As Double, n As Integer
Dim i As Long
Dim a As Double, b As Double '截距斜率
Dim x0 As Double, y0 As Double, x1 As Double, y1 As Double '定义两端点
n = UBound(p) - LBound(p) + 1 '点的个数
For i = LBound(p) To UBound(p)
Picture1.Circle (p(i, 0), p(i, 1)), Picture1.ScaleWidth / 200, vbRed '描点
Picture1.CurrentX = p(i, 0)
Picture1.CurrentY = p(i, 1)
Picture1.ForeColor = vbBlue
Picture1.Print "(" & p(i, 0) & ","; p(i, 1) & ")" '数据标志
sigmax = sigmax + p(i, 0) 'Σx
sigmay = sigmay + p(i, 1) 'Σy
sigmaxx = sigmaxx + p(i, 0) ^ 2 'Σx^2
sigmaxy = sigmaxy + p(i, 0) * p(i, 1) 'Σx*y
Next

a = (sigmaxx * sigmay - sigmax * sigmaxy) / (n * sigmaxx - sigmax ^ 2) '截距
b = (n * sigmaxy - sigmax * sigmay) / (n * sigmaxx - sigmax ^ 2) '斜率
x0 = Picture1.ScaleLeft
y0 = a + b * x0 '左端点
x1 = Picture1.ScaleLeft + Picture1.ScaleWidth
y1 = a + b * x1 '右端点
Picture1.Line (x0, y0)-(x1, y1), vbGreen '回归直线
End Sub

 

结果如下图所示:

<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"> </v:shapetype> 

<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>

 

<v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock>

分享到:
评论

相关推荐

    java 实现的多元线性回归分析

    在提供的代码片段中,`SPT1` 方法实现了基于最小二乘法的一元线性回归分析。该方法接收几个参数: - `x[n]`: 自变量X的n个取值。 - `y[n]`: 与自变量X的n个取值相对应的因变量Y的观测值。 - `n`: 观测点的数量。 - ...

    C# 最小二乘线性回归计算源码

    在IT领域,线性回归是一种广泛应用的统计分析方法,用于预测和建模两个或多个变量之间的关系。在本示例中,我们关注的是C#语言实现的最小二乘线性回归算法,这是一种优化技术,旨在找到一条直线(一维情况)或超平面...

    最小二乘法,一元、多元拟合!C++版本和MATLAB版本!

    在本项目中,提供了C++和MATLAB两个版本的实现,这将帮助我们理解这两种编程环境下的最小二乘法应用。 首先,让我们深入了解一下一元和多元拟合的概念。一元线性回归是预测一个目标变量(Y)依赖于单个自变量(X)...

    MATLAB一元线性回归方程的计算和检验只是分享.pdf

    在MATLAB中,一元线性回归是一种统计分析方法,用于建立两个变量间的关系模型,通常表示为 y = ax + b,其中y是因变量,x是自变量,a是斜率,b是截距。以下是一元线性回归方程在MATLAB中的计算和检验的详细步骤: 1...

    一元线性回归系统(VFP)

    总之,一元线性回归系统在VFP中的实现涉及到数据输入、统计计算、图形绘制等多个方面,这为我们提供了一个将编程技能与统计学知识相结合的实际示例。通过对这个系统的理解和使用,不仅可以深入理解一元线性回归的...

    一元线性回归.zip

    在本压缩包中,我们关注的是如何通过MATLAB来实现一元线性回归的计算与可视化。 一元线性回归模型通常表示为y = ax + b,其中a是斜率,代表x对y的影响程度,b是截距,表示当x=0时y的值。在实际应用中,我们通常不...

    数理统计课程设计(一元线性回归).pdf

    数理统计中的线性回归分析是一种常用的数据建模方法,用于探究两个或多个变量之间的定量关系,特别是当一个变量(自变量)如何影响另一个变量(因变量)的问题。在这个具体的案例中,研究聚焦于活性炭的孔隙结构对其...

    一元线性回归的matlab实现(含R方和F分布检验).pdf

    在本示例中,我们将探讨如何使用MATLAB实现一元线性回归,并进行R方(决定系数)和F分布检验。 首先,MATLAB中的线性回归通常涉及到数据的加载、计算和拟合。在这个例子中,数据存储在一个名为"data_yyhg.mat"的...

    一元线性回归

    在这个场景中,我们使用C#编程语言来实现一元线性回归的计算和可视化。C#是微软开发的一种面向对象的编程语言,广泛应用于Windows平台的应用程序开发,包括数据分析和科学计算。 一元线性回归模型可以表示为简单的...

    一元和多元线性回归分析

    多元线性回归是对一元线性回归的扩展,它处理的是一个响应变量和多个预测变量的情况。模型可以表示为: \[ Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_pX_p + \epsilon \] 其中,\(\beta_0\)是截距,\...

    一元线性回归相关代码

    在编程实现中,Python 语言提供了许多库来执行一元线性回归,如 Numpy、Scipy 和 Scikit-learn。以 Scikit-learn 库为例,它的 `LinearRegression` 类提供了简便的接口。以下是一个简单的使用示例: ```python from...

    一元线性回归分析案例.pptx

    一元线性回归分析是统计学中的一种常见分析方法,用于研究两个变量之间的线性关系。在这个案例中,我们将学习如何使用一元线性回归分析来解决实际问题。 回归分析的定义:回归分析是一种统计分析方法,用于研究两个...

    最小二乘法所用数据.csv

    在实践中,最小二乘法不仅限于一元线性回归,也可以扩展到多元线性回归,即模型包含多个自变量。此外,当数据存在多重共线性、异方差性、非正态性或自相关性等问题时,需要采用更复杂的方法,如岭回归、套索回归、...

    营业税税收总额与社会商品零售总额的一元线性回归.zip

    一元线性回归是一种统计学方法,用于研究两个变量之间的关系,其中一个是独立变量(在此案例中可能是社会商品零售总额),另一个是因变量(即营业税税收总额)。下面我们将详细探讨这一主题。 首先,我们需要理解...

    线性回归的fortran程序

    3. **最小二乘法**:最小二乘法是确定线性回归模型参数最常用的方法。它寻找使所有观测值的残差平方和最小的β值。在Fortran中,这可以通过迭代或直接求解正规方程来完成。 4. **模型评估**:计算并输出相关系数(R...

    预测与决策课件:第四讲 一元线性回归预测法.ppt

    在很多社会经济现象中,两个变量往往呈现出大致的线性趋势,这时就可以通过一元线性回归来建立模型,进而预测未来的趋势。 一元线性回归模型通常表示为:y = b0 + b1x + μ,其中y是因变量,x是自变量,b0是截距,...

    一元线性回归模型习题与答案.docx

    ### 一元线性回归模型知识点解析 #### 一、单项选择题解析 **1、变量之间的关系可以分为两大类**。A - **解析**:变量之间的关系主要有两种类型:函数关系与相关关系。函数关系指的是两个变量之间存在确定的数学...

    线性回归及非线性回归详解PPT及代码 .rar

    一元线性回归涉及一个自变量和一个因变量,如:房价与面积的关系;而多元线性回归则包含两个或更多自变量,如:房价可能受面积、卧室数量、地理位置等多个因素影响。线性回归模型通常通过最小二乘法或梯度下降法求解...

    统计学一元线性回归PPT学习教案.pptx

    本资源提供了关于统计学一元线性回归的详细知识点总结,包括变量间关系的度量、一元线性回归分析、最小二乘法的原理、相关关系的描述与测度、相关分析、散点图、相关系数、一元线性回归模型、相关关系的类型和回归...

Global site tag (gtag.js) - Google Analytics