r语言中残差与回归值的残差图_用R语言做回归分析_iris数据集/longley数据集

机器学习课程2  回归分析

【题目1】

使用R对内置鸢尾花数据集iris(在R提示符下输入iris回车可看到内容)进行回归分析,自行选择因变量和自变量,注意Species这个分类变量的处理方法。

解答:

1.iris数据集介绍

鸢尾花(iris)是数据挖掘常用到的一个数据集,包含150种鸢尾花的信息,每50种取自三个鸢尾花种之一(setosa,versicolour或virginica)。每个花的特征用下面的5种属性描述萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)、类(Species)。

观察这5个变量,我们发现Species是字符变量、非连续,难以直接进行线性分析。故首先应对定义哑变量处理离散变量Species。

在这里了我参考了“练数成金”论坛数据分析与数据挖掘技术板块

“fjchenxd”的文章

http://www.dataguru.cn/forum.php?mod=viewthread&tid=265621

以及“夕阳无语”的文章

http://www.dataguru.cn/forum.php?mod=viewthread&tid=262887

2    样本多重线性检查

2.1  求方阵,并对其标准化、中心化

2.2  求方阵的条件数,即kappa值

kappa = 291.2384,易知100kappa1000,多重共线性处于可忍受范围。

2.3  求解矩阵的特征值与相应的特征根

3.   一元线性回归分析

3.1         观察散点图

通过plot(iris_demo)命令,我们目测得到Petal.Width与Petal.Length有很强的线性关系。

3.2   对Petal.Width与Petal.Length做一元线性回归分析

我们发现回归系数中,截距与因变量都有3颗*,t值很大,Pr值很小,拒绝系数不正确的假设检验。

相关系数平方:0.9271,数据相当好。

3.3   对Petal.Width与Petal.Length做一元线性回归诊断

P  = 1.68e-08 <0.05,具有统计学意义,拒绝原假设,说明自变量Petal.Width不服从正态分布。(?)

残差图正常,模型的残差服从正态分布。

结论:

综上,关于Petal.Width与Petal.Length的一元线性回归模型样本服不服从正态分布假设,误差满足独立性,等方差。线性回归模型的系数通过假设检验,相关系数平方和接近1。

此一元线性回归模型合理有效。

4 多元线性回归分析

4.1变量进行逐步回归

4.2  多元线性回归模型的探索

4.2.1 包含全部变量

回归系数中Petal.length和isVerisicolor只有一颗星,而根据step结果,如果去掉这两个,AIC值只会从-389增大到-386,所以尝试去掉这两个值:

去掉Petal.Length和 isVersicolor后,截距的假设检验效果提升至两颗*,但Petal.Width的Pr值反而增大。更严重的是,相关系数平方和从0.6352降至0.5871。效果反而变差。

4.2.2尝试加上二次项

增加了Sepal.Length^2项后,相关系数提升到了0.6365。

4.2.3 增加乘积项

在增加了乘积项后,多元线性回归模型更加合理。

4.2.4 在所有变量的基础上直接加乘积项

此模型的相关系数0.6728,相比4.2.3的模型更好,但是变量isVersicolor假设检验只有一颗* .

5. 回归诊断

对4.2.3与4.2.4的两个多元线性回归模型进行回归诊断:

5.1 变量正态分布检验

对变量进行正态分布检验,P值均小于0.05,拒绝了原假设(样本服从正态分布)。

5.2  残差图

(1)4.2.3 多元线性回归模型残差图

(2)4.2.4 多元线性回归模型残差图

由以上两幅图可知残差分布正常,服从正态分布。

结论:

综上,采用4.2.4回归模型更优。

【题目2】

使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与回归?

解答:

1.    longley数据集

1.1  longley数据集简介

Longley数据集来自J.W.Longley(1967)发表在JASA上的一篇论文,是强共线性的宏观经济数据,包含GNP deflator(GNP平减指数)、GNP(国民生产总值)、Unemployed(失业率)、ArmedForces(武装力量)、Population(人口)、year(年份),Emlpoyed(就业率)。

LongLey数据集因存在严重的多重共线性问题,在早期经常用来检验各种算法或计算机的计算精度。

1.2   观察散点图

通过散点图观察,我发现变量GNP.deflator、GNP、Population、Employed

分别与year的函数图像趋势相近,可能隐含多重共线性。

2.   样本多重共线性检查

2.1  求方阵,并对其标准化、中心化

2.2  求方阵的条件数,即kappa值

kappa = 14550.47, kappa1000,多重共线性非常严重。

2.3  求解矩阵的特征值与相应的特征根

2.4 删选变量

可以看到变量4,5,6的特征值都非常小,逐步缩小所取变量数:

故删除变量Population,Year,Employed,只选取1:4共4个变量:

3.   逐步删选变量

3.1 原始模型

可以看到此回归模型自变量Uemployed,Armed.Froces没有很好地拒绝假设检验。

3.2  使用step函数逐步回归分析

逐步回归分析显示减去Armed.Forces和Uemployed变量,对AIC的影响不大

3.3 去掉Armed.Forces和Uemployed的线性模型

以上线性回归模型截距与回归系数均有3颗*,很好的拒绝了假设检验。

同时线性相关系数平方:0.9832,模型线性程度非常高。

4.   样本回归诊断

4.1 样本正态分布假设检验

由正态假设检验可得:自变量GNP的p值>0.5接受了假设检验,符合正态分布;

因变量GNP.deflator的p值 = 0.4268<0.5,具有较强统计学意义,拒绝了假设检验。

4.2  残差分析

结论:

线性回归模型 lm(formula = GNP.deflator ~ GNP, data =long_1)符合正态分布假设,误差满足独立性,等方差,不存在多重共线性。

回归系数Pr值很小,拒绝假设检验(假设系数不正确),相关系数十分接近1。

综上,该线性模型合理。

【题目3】(可选)对课程幻灯片里的top1000 sites(数据集上传在课程资源里)分析进行改进,使到带pageviews的预测模型的检验指标比幻灯片里所显示的更加理想

1.    读入top_1000数据集

2.    定义哑变量

3.     多元线性回归分析

无截距多元线性回归模型:

formula= log(PageViews) ~ HasAdvertisingYes + HasAdvertisingNo+ log(UniqueVisitors) +InEnglishYes                      + InEnglishNo – 1

该回归模型相关系数平方:0.9969,数据令人满意。但是自变量中有多余变量。

4.  逐步回归分析

逐步回归分析结果:

根据逐步回归分析结果编写新模型:

5.    结论:

log(PageView)~1.164519*log(UniqueVisitors) + 1.006265*InEnglishNo-

0.311884*HasAdvertisingNo

各自变量拒绝系数不正确的假设检验,Multiple R-squared结果高达0.9969。

该模型相较于课堂所讲模型,更具合理性!

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

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

相关文章

Java 8————Collectors中的中的joining 方法和mapping方法

先定义好后面做示例要用的数据&#xff1a; List<User> listUser new ArrayList<>(); listUser.add(new User("李白", 20, true)); listUser.add(new User("杜甫", 40, true)); listUser.add(new User("李清照", 18, false)); lis…

BOM -- browser object model

操作浏览器窗口 一、 innerWidth / innerHeight 获取浏览器可视区的宽高(不包含开发者工具区域) window.innerWidth px window.innerHeight px二、 outerWidth / outerHeight 获取浏览器软件界面的宽高 window.outerWidth px window.outerHeight px三、 screenTop / scr…

vue 拓扑组件_vue 集成 vis-network 实现网络拓扑图的方法

vis.js 网站https://visjs.org/vs code 下安装命令npm install vis-network在vue 下引入 vis-network组件const vis require("vis-network/dist/vis-network.min.js");require("vis-network/dist/vis-network.min.css");例子代码使用let DIR "/jtop…

编译器说 Lambda 表达式中的变量必须是 final 的,我偏不信

偶尔&#xff0c;我们需要在 Lambda 表达式中修改变量的值&#xff0c;但如果直接尝试修改的话&#xff0c;编译器不会视而不见听而不闻&#xff0c;它会警告我们说&#xff1a;“variable used in lambda expression should be final or effectively final”。 这个问题发生的…

window 事件

一、 onscroll ⇒ 页面滚动是事件 // 当页面发生滚动就会触发这个事件 window.onscroll function () {console.log(我会随着鼠标滚动改变); }二、 onresize ⇒ 窗口改变事件 // 当窗口大小发生改变就会触发这个事件 window.onresize function () {console.log(我会随着窗口…

pandas series取值_【小学生级】pandas入门到精通备查表——AI未来系列3

在未来面前&#xff0c;每个人都是学生江海升月明&#xff0c;天涯共此时&#xff0c;关注江时&#xff01;引子篇为AI未来系列第三篇&#xff0c;中阶部分开始。pandas的数据分析功能比excel强太多&#xff0c;基本上学会pandas&#xff0c;走遍天下都不怕。这是我的备查字典&…

java中为final变量赋值的几种方式

java中为final变量赋值的几种方式 前言 使用final修饰变量&#xff0c;很多人第一时间想到的就是不可变。然后以为变量必须得在声明的时候就为其赋初始值&#xff0c;其实不然&#xff0c;本文将详细讲解java中使用final修改的变量的赋值问题。 被final修饰的变量的几种赋值方…

instanceof 和 对象转型

一、instanceof 判断某个对象是否属于某个类 father1 instanceof Father; // true// 如果有子类继承父类的话 son instanceof Father; // true二、对象转型 子转父 > 自动转&#xff08;向下转型&#xff09; 父转子 > 强转&#xff08;向上转型&#xff09; 三、Obj…

java类验证和装载顺序_Java JVM类加载顺序详解

首页 > 基础教程 > 基础知识 > JDK&JRE&JVMJava JVM类加载顺序详解JVM加载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这个类或是这个接口的class对象的过程&#xff0c;其中类或接口的名称是给定了的。当然名称也可以通过计算得到&am…

从lambda表达式看final关键字

Variable used in lambda expression should be final or effectively final 想必大家在开发java程序的时候应该经常见到。 这是因为在lambda的匿名表达式里需要传入final的对象&#xff0c;那么这是为什么呢&#xff1f; 因为lambda是匿名表达式&#xff0c;它是在新开的一个…

linux中负载值为多少正常_Linux系统中load average平均负载

系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中&#xff1a;1)它没有在等待I/O操作的结果2)它没有主动进入等待状态(也就是没有调用wait)3)没有被停止(例如&#xff1a;等待终止)英译文&#xff1a;http://blog…

lambda里面赋值局部变量必须是final原因

public class LambdaTest {public static void main(String ... args){int portNumber 1337;Runnable r ()-> {portNumber 1338;System.out.println(portNumber);};r.run();} }如上代码&#xff0c;lambda里面要访问局部变量会报如照片错误&#xff1a; 在介绍为什么会报…

classin安卓手机安装条件_ClassIn上课官方软件下载-ClassIn安卓版本 v3.0.7.1_5577安卓网...

ClassIn上课官方软件下载分享给大家。ClassIn在线互动教室是一对多直播互动教学平台&#xff01;培养学习能力更强大的学习者&#xff01;班级群课下互动答疑收发作业&#xff01;记录学习成长历程&#xff0c;展示学习成果&#xff01;【软件说明】欢迎使用ClassIn&#xff01…

lambda表达式或者匿名函数中为什么要求外部变量为final

1、参考博客 关于Lambda表达式里面修改外部变量问题JDK8之前&#xff0c;匿名内部类访问的局部变量为什么必须要用final修饰 2、匿名内部类 在jdk7之前&#xff0c;匿名内部类访问外部类的局部变量时&#xff0c;那么这个局部变量必须用final修饰符修饰&#xff0c;如下图1所…

location 和 history

Location 对象&#xff1a;封装了浏览器地址栏的 URL 信息 一、hash 返回 URL 中 hash(#后跟零个或者多个字符), 如果不包含, 返回空字符串 # 位置标识符 : 当前页面的位置信息, 比如: 跳转顶部 console.log(location.hash); // ""二、host : 返回服务器名称和端口…

ble芯片 全称_蓝牙芯片都有哪些厂商?一文解答

蓝牙5新标准是蓝牙技术自1999年诞生以来推出的第十个标准版本。其性能上大幅提升&#xff0c;可归结为&#xff1a;更快、更长、更给力&#xff0c;非常适合运用于无线可穿戴、工业和智能家居等领域。但蓝牙技术产品能否真正进人批量生产在于芯片制造技术能否跟得上&#xff0c…

你知道Java中final和static修饰的变量是在什么时候赋值的吗?

开始 一位朋友在群里问了这样一个问题&#xff1a; 本着乐于助人的想法&#xff0c;我当时给出的回答&#xff1a; 后来我总觉得哪里不对劲&#xff0c;仔细翻阅了《Java虚拟机规范》和《深入理解Java虚拟机》这一部分的内容&#xff0c;害&#xff01;发现自己理解的有问题。…

获取元素大小和位置的方式

一、直接获取元素样式属性值 – element.style.width console.log(div.style.width); // 500px console.log(parseInt(div.style.width)); // 500 console.log(typeof (div.style.width)); // string二、Offset 偏移量 offsetWidth width padding border offsetHeight he…

mybatis 取查询值_MyBatis-SELECT基本查询

1、返回一个LISTselect * from tbl_employee where last_name like #{lastName}2、将查询记录封装为一个Mapselect * from tbl_employee where id#{id}返回一条记录的map&#xff1b;key就是列名&#xff0c;值就是对应的值。3、多条记录封装为一个mapMapKey("id")pu…

ES6 里面的 class

ES5 对象的写法 let x 10,y 20;const obj {x: x,y: y,sum: function () {return this.x this.y;} };ES6 对象的写法 const obj {x,y,sum() {return this.x this.y;} };class 有点类似 java 的 class class Person { // 类名大写// 私有属性和方法 写在 construtor 里面…