最小二乘原理求解线性回归方程
下面的例1 来自下面网址:
http://wenku.baidu.com/link?url=4Dlv5iuen0K9pb2rD-OICKRpXk0QrEcDjsbgJMXo0nuqIUHuq5im-HU8v6p3Q1QKvj0nEhzsV5znMH1V0Wa3WzDvvynNNd0rT8QCX8LKuwa
线性方程:y=bx+a ,r为相关系数。线性方程详情详细参考
http://baike.baidu.com/link?url=0Ob9UvB9oe01IXZj93iWNS8zbtqX1fSHdjK4JKB0w0jzmw_8C32U1H55HVWc7oYJ
例1 10名同学在高一和高二的数学成绩如下表:
74 |
71 |
72 |
68 |
76 |
73 |
67 |
70 |
65 |
74 |
|
76 |
75 |
71 |
70 |
76 |
79 |
65 |
77 |
62 |
72 |
其中x为高一数学成绩,y为高二数学成绩.
(1)y与x是否具有相关关系;
(2)如果y与x是相关关系,求回归直线方程.
c#程序实现:
using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace testxyab {class Program{static void Main(string[] args){//数据来自上面的例子double[] x = new double[10] { 74,71,72,68,76,73,67,70,65,74};double[] y = new double[10] { 76,75,71,70,76,79,65,77,62,72};int count=10;double a,b,maxerr,rr;//a b 为系数,rr 为相关系数的平方,maxerr为最大偏差CalcRegress(x, y, count, out a, out b, out maxerr, out rr);Console.WriteLine("a={0}\n b={1}\n maxerr={2}\n rr={3}", a, b, maxerr, rr);Console.ReadKey();}public static void CalcRegress(double[] x, double[] y, int count, out double a, out double b, out double maxErr, out double r){double sumX = 0;double sumY = 0;double avgX;double avgY;double r1;double r2;//数据量过少,无法计算if (count < 4){return; }for (int i = 0; i < count; i++){sumX += x[i];sumY += y[i];}avgX = sumX / count;avgY = sumY / count;double SPxy = 0;double SSx = 0;double SSy = 0;for (int i = 0; i < count; i++){SPxy += (x[i] - avgX) * (y[i] - avg_Y);SSx += (x[i] - avgX) * (x[i] - avgX);SSy += (y[i] - avg_Y) * (y[i] - avg_Y);} //如果所有点的x相同,直线平行于y轴,无法计算。//如果所有点的y相同直线为平行于x轴的直线y=k+0*xif (SSy==0){a = y[1];b = 0; rr=0; maxErr = 0;//return -1; }//y=bx+ab= SPxy / SSx;a= avgY - b* avgX;//开始计算R²值r1 = SPxy * SPxy;//分子的平方r2 = SSx * SSy;//分母的平方r = r1 / r2; //计算R²值//下面代码计算最大偏差 maxErr = 0;for (int i = 0; i < count; i++){double yi = a + b * x[i];double absErrYi = Math.Abs(yi - y[i]);//假动作if (absErrYi > maxErr){maxErr = absErrYi;}}}} }
最小二乘原理求解线性回归方程相关推荐
- 基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比
基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比目录 一.梯度下降算法的基本原理 1.梯度下降算法的基本原理 二.题 ...
- 最小二乘法求线性回归方程_规范解题第14期 利用“最小二乘法”原理解一道题...
还等什么呢?时间都过去了,话是这么说,但不至于那么快.无论走到哪里,都应该记住,过去都是假的,回忆是一条没有尽头的路,一切以往的春天都一去不复存在,就连那最坚韧而又狂乱的爱情归根结底也不过是一种转瞬即 ...
- 多元线性回归方程原理及其推导
多元线性方程原理及推导 概念 1.在统计学中,线性回归方程是利用最小二乘函数对一个或多个自变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合.只有一个自变量的情况 ...
- 求解线性最小二乘问题的奇异值分解及广义逆法的C++实现
求解线性最小二乘问题的广义逆法的C++实现 1,功能 2,方法说明 3,函数语句与形参说明 第一步,求对系数矩阵进行奇异值分解(muav函数) #include "stdlib.h" ...
- 线性回归方程参数的最小二乘估计
概述 一共两个部分,第一,线性模型和最小二乘估计方法的概括.第二, 基于最小二乘估计方法,实现线性回归方程中回归参数的估计.并且和statsmodels中的方法进行对比. 1.线性模型和最小二乘方法 ...
- 如何简单地理解最小二乘法和线性回归方程?(高中数学知识)
知识乱弹_01 1. 如何判断两个变量是否相关? 以这两个变量作为坐标轴,画出这两个变量的散点图,如果这两组散点比较集中,那么我们就可以判断这两个变量是相关的.如果这些点集中在一条直线附近,那我们就称 ...
- 线性回归_线性回归方程
你的线性回归是指被估参数是线性的回归吗?被估参数是线性是指:把参数视为变量,参数相对于x是线性的.比如:y=kx+b这是典型的线性回归还有:y=ax^2+bx+c,把x^2及x看成a,b的系数的话,a ...
- Python实现多元线性回归方程梯度下降法与求函数极值
梯度下降法 梯度下降法的基本思想可以类比为一个下山的过程. 假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷).但此时山上的浓雾很大,导致可视度很低:因此,下山的路径就无 ...
- Python基于最小二乘法的一元线性回归方程
基于最小二乘法的一元线性回归方程 要求 关于房价的,只需要一个自变量一个因变量 用到最小二乘,但不是封装好的函数,有算法的具体实现 原理 最小二乘法 我们以最简单的一元线性模型来解释最小二乘法.什么是 ...
最新文章
- Flex使用mx:Tree控件创建树(可添加和删除节点)
- 【c++】【转】如何只在heap上创建对象,如何只在stack上建立对象?
- MFC两个复选框互斥设置
- 可能是最简单易懂的人工智能入门书
- 操作12864(ST7920控制器)
- JavaScript操作大全整理(思维导图三--函数基础)
- 对几个重要问题的阐述
- android下拉弹性gif,android-pulltorefresh 下拉加载中使用gif动图
- opencv10-形态学操作
- 程序猿|上班累了么?点进来,开心一夏!
- socket编程实例_NIO之网络编程源码阅读
- Activiti 流程查询出的结果封装为 JSON 时出现的异常
- caffe学习日记--Lesson2:再看caffe的安装和使用、学习过程
- java实现秒杀系统_Java秒杀系统--4.实现秒杀接口
- 【AD】安装AD18教程
- 超级外链工具-自动添加外链都有哪些
- python录音转文字软件_录音提取转文字
- 机器学习中的数学——Nesterov Momentum
- 谈谈Python的编译和反编译
- 5个优秀设计网站,素材、灵感一步到位。
热门文章
- JavaScript小技巧总结
- python3-day4(re正则表达式,冒泡)
- 一键生成流量密码(夸张广告标题)
- 前端笔记 | CSS定位
- 数据结构笔记(四)-- 静态链表实现
- mysql seconds_behind_master_MySQL同步状态双Yes的假象及seconds_behind_master的含义
- java为table添加一行_Js实现Table动态添加一行的小例子
- python3 selenium ie 拒绝连接报错_selenium+python自动化测试--解决无法启动IE浏览器及报错问题...
- Python数据结构与算法(1.3)——Python基础之输入、输出与高阶赋值
- python如何查看类信息_关于如何查看本地python类库详细信息的方法