【R语言】初学者的线性回归预测法

预测回归方法都比较基础,适合初学者。

绿色部分为R语言实现的代码。


一、 样本导入

包:openxlsx  ##用来导入excel的包

选择好相关需测试的样本(以excel为例),导入。

library(openxlsx)
b<-read.xlsx("")  
##引号内为文件路径

二、OLS多元回归

包:car 

直接从多元开始,一元就变得很简单啦。

1. 检验变量间的相关性()


library(car)
cor(b)  ##相关性的文字展示。可以看到两变量间的相关系数,一般该值的绝对值>0.8时认为两变量高度相关。用这个函数的话,样本不能存在NA值。
scatterplotMatrix(b,spread = FALSE,lty.smooth=2,main="Scatter Plot Matrix") 

##相关性的图形展示。函数中的‘b’就是我导入的样本文件(仅包括自变量Xi和因变量Y),其他地方不会的话就可以直接复制粘贴就好。

嗯以上函数跑出来的表和图就如下所示(我回归的变量太多啦),讲一下图的具体看法是:对角线上的为每个变量的密度图和轴须图,非对角线的部分就是变量间的散点图,以及R自动添加的平滑和线性拟合线


嗯以上函数跑出来的表和图就如下所示(我回归的变量太多啦),讲一下图的具体看法是:对角线上的为每个变量的密度图和轴须图,非对角线的部分就是变量间的散点图,以及R自动添加的平滑和线性拟合线。

【R语言】初学者的线性回归预测法_第1张图片

【R语言】初学者的线性回归预测法_第2张图片

2. 回归

用lm() 函数进行回归,可以使用逐步增加或逐步减少变量的方式来找出合适的拟合方程(合适的方程一般为每个变量都显著、调整后的R方最接近1)。

myfit<-lm(y~x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12,data=b) ##data= 指数据源的意思,我这里的x1,x2...都是b中的列名

summary(myfit)  ##查看模型拟合的基本情况,如下图

【R语言】初学者的线性回归预测法_第3张图片

3. 回归诊断

回归诊断非常重要,因为它可以对你拟合出来的结果进行可行性的判断。一方面,可以判断是否符合OLS的回归假设,一方面,可以找出是否有离群点,因为离群点的无规律性会造成数据的无序,从而影响预测变量和响应变量间的关系。很多时候 剔除离群点后再回归R方会明显升高。

par(mfrow=c(2,2)) ##将画面分成2*2的图

plot(myfit)  ##绘制plot()函数,一共是4幅图

【R语言】初学者的线性回归预测法_第4张图片

4幅图的OLS解读(从左到右,从上到下):

     1)线性:若x与y线性相关,则残差和拟合应该没有任何系统关联,如果图1)呈现出曲线,可能要考虑给方程加二次项。

     2)正态性:当预测变量的值固定时,因变量成正态分布,因此残差也应该为均值为0的正态分布。Q-Q图是在正态分布对应的值下,标准化残差的概率图。若满足正态假设,则图上的点应落在图中的45度线上。若不是,则违反了正态分布的假设。

    3)同方差性:若满足方差不变则3)中的点应均匀分布在红色水平线两侧。

    4)离群点、杠杆值、强影响点:在4)中可以看到观测点75是个强影响点,依据是它距离cook's distance 距离较远(其实除此之外75也没满足前3个图中的假设),因此删除它可以使得拟合效果更好。不过,删变量要尽量谨慎,不能一昧追求回归效果好而删原始值(因为我们是用模型匹配数据,不是用数据去匹配模型)。

以上只是回归诊断的基本方法,之后会逐渐更新更好的方法。


三、 跨期测试

用非样本的数据跑模型,看模型预测的情况。一般可以画图或者计算残差平方和、R方来看跨期拟合的情况。

rss <-sum((actual-predict) ^ 2)  ##残差平方和,也称rss
tss <- sum((actual - mean(actual)) ^ 2)  ##总平方和,也称sst

rsq <- 1 - (rss/tss)  ## R方=1-(rss/tss),当然R方也有别的算法,比如 R方=sse/tss,其中sse即解释平方和。

多说一句,RSS,TSS,SSE以及R方的公式如下,具体理解建议参考知乎的高赞回答,和我大学老师解释的方法一样,清楚且易于理解。
         

【R语言】初学者的线性回归预测法_第5张图片         

你可能感兴趣的:(R)