R数据分析:一般线性回归的做法和解释

2024-04-14 07:32

本文主要是介绍R数据分析:一般线性回归的做法和解释,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

发现大家做分析做的最多的还是线性回归,很多人咨询的都是线性回归的问题,今天专门出一个线性回归的文章。

在R语言中我们可以非常方便地用基础包中的lm方法做出线性回归。参数的书写也和数学方程一样一样的Y~X+X2,只不过将等号换成了~。我们用summary+回归对象就可以得到回归结果,如果要看模型的残差直接$resid就可以。

还是给大家写一个活生生的例子吧:

实例描述:

我们有如图的数据集,我想要用回归分析做month, spend对sales的关系。

 

首先读入数据集(请私信“数据链接”获取)并且规定数据属性:

dataset = read.csv("data-marketing-budget-12mo.csv", header=T,
colClasses = c("numeric", "numeric", "numeric"))

简单线性回归和多元线性回归

在我们的例子中,因变量是sales,如果我只用一个自变量,比如spend来做预测,此时就是简单线性回归;如果我用两个或者两个以上的自变量来做预测就是多元线性回归,做法都很简单:

simple.fit = lm(Sales~Spend, data=dataset)
summary(simple.fit)
multi.fit = lm(Sales~Spend+Month, data=dataset)
summary(multi.fit)

两个模型的输出都给大家贴在下面:

 

对于模型,首先我们应该看整个模型的显著性,也就是模型的F检验,可以看到两个模型都有意义,然后我们再看R方和调整的R方,可以看到我们的模型贼好,然后我们再看每个变量的显著性。

输出结果的解释

首先有一个residuals:

  • Residuals: The section summarizes the residuals, the error between the prediction of the model and the actual results. Smaller residuals are better.

这个是模型的残差,就是模型预测值和实际值之间的差异,应该是越小越好。

接着就是coefficients:

  • Coefficients: For each variable and the intercept, a weight is produced and that weight has other attributes like the standard error, a t-test value and significance.

这个是模型中自变量的系数,这个系数又包含4个部分,分别是estimate,std,t和p

  • Estimate: This is the weight given to the variable. In the simple regression case (one variable plus the intercept), for every one dollar increase in Spend, the model predicts an increase of $10.6222.

estimate解释为相应的自变量改变一个单位,应变量的改变量。Std. Error为它的标准误,t value为检验系数显著性的t统计量,Pr(>|t|)为p值,通过Pr(>|t|)我们可以知道该系数是不是显著地不等于0。

还有模型整体表现的指标:

  • Residual Standard Error: This is the standard deviation of the residuals. Smaller is better.

这个是残差的变异,越小越好。

  • Multiple / Adjusted R-Square: For one variable, the distinction doesn’t really matter. R-squared shows the amount of variance explained by the model. Adjusted R-Square takes into account the number of variables and is most useful for multiple-regression.

然后是R方和调整的R方,R方为这个模型能解释的变异比例,调整的R方考虑了自变量个数。如果我们做简单线性回归的话R方和调整的R方就是一样的。

还有模型表现的F-Statistic:

  • F-Statistic: The F-test checks if at least one variable’s weight is significantly different than zero. This is a global test to help asses a model. If the p-value is not significant (e.g. greater than 0.05) than your model is essentially not doing anything.

F统计量是来看整个模型是不是有意义的,如果模型整体没意义相应的别的系数也就不用看了。

残差相关知识

对于线性模型我们有四个假设:

  • The mean of the errors is zero (and the sum of the errors is zero)(线性)
  • The distribution of the errors are normal.(正态)
  • All of the errors are independent.(独立)
  • Variance of errors is constant (Homoscedastic)(方差齐)

我们的模型满不满足这4个假设呢?我先画图看看:

layout(matrix(c(1,1,2,3),2,2,byrow=T))plot(simple.fit$resid~dataset$Spend[order(dataset$Spend)],main=" 简单线性回归的自变量和残差变化",xlab="Marketing Spend", ylab="Residuals")
abline(h=0,lty=2)hist(simple.fit$resid, main="残差的直方图",ylab="Residuals")qqnorm(simple.fit$resid)
qqline(simple.fit$resid)

 

残差是否正态?

我们可以从两个图中来判断残差是否正态:

  • If the histogram looks like a bell-curve it might be normally distributed.
  • If the QQ-plot has the vast majority of points on or very near the line, the residuals may be normally distributed.

首先是直方图,直方图是近似钟形的就为正态,QQ图中的点都和线靠得近就为正态。

但是我们数据量太少,看图似乎看不出来,我们考虑做个统计检验:

library(fBasics)
jarqueberaTest(simple.fit$resid)

 

检验结果告诉我们残差确实是正态的。

残差是否独立?

残差独立的意思就是残差之间不存在相关性,我们也需要做统计检验:

library(lmtest) #dwtest
dwtest(simple.fit)

 

检验结果告诉我们残差的自相关很大。

残差是否齐?

对于这个假设,通常情况下我们也是看残差图,如果残差图没有明显的离群值我们就可以认为残差是齐的。

这篇关于R数据分析:一般线性回归的做法和解释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902444

相关文章

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

【高等代数笔记】线性空间(一到四)

3. 线性空间 令 K n : = { ( a 1 , a 2 , . . . , a n ) ∣ a i ∈ K , i = 1 , 2 , . . . , n } \textbf{K}^{n}:=\{(a_{1},a_{2},...,a_{n})|a_{i}\in\textbf{K},i=1,2,...,n\} Kn:={(a1​,a2​,...,an​)∣ai​∈K,i=1,2,...,n

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

请解释Java Web应用中的前后端分离是什么?它有哪些好处?什么是Java Web中的Servlet过滤器?它有什么作用?

请解释Java Web应用中的前后端分离是什么?它有哪些好处? Java Web应用中的前后端分离 在Java Web应用中,前后端分离是一种开发模式,它将传统Web开发中紧密耦合的前端(用户界面)和后端(服务器端逻辑)代码进行分离,使得它们能够独立开发、测试、部署和维护。在这种模式下,前端通常通过HTTP请求与后端进行数据交换,后端则负责业务逻辑处理、数据库交互以及向前端提供RESTful

OpenStack:Glance共享与上传、Nova操作选项解释、Cinder操作技巧

目录 Glance member task Nova lock shelve rescue Cinder manage local-attach transfer backup-export 总结 原作者:int32bit,参考内容 从2013年开始折腾OpenStack也有好几年的时间了。在使用过程中,我发现有很多很有用的操作,但是却很少被提及。这里我暂不直接

OpenStack实例操作选项解释:启动和停止instance实例

关于启动和停止OpenStack实例 如果你想要启动和停止OpenStack实例时,有四种方法可以考虑。 管理员可以暂停、挂起、搁置、停止OpenStack 的计算实例。但是这些方法之间有什么不同之处? 目录 关于启动和停止OpenStack实例1.暂停和取消暂停实例2.挂起和恢复实例3.搁置(废弃)实例和取消废弃实例4.停止(删除)实例 1.暂停和取消暂停实例