精华内容
下载资源
问答
  • 多元统计分析多元线性回归的R语言实现多元统计分析--multivariate statistical analysis研究客观事物中多个变量之间相互依赖的统计规律性。或从数学上说, 如果个体的观测数据能表为 P维欧几里得空间的点,那么...

    多元统计分析之多元线性回归的R语言实现

    多元统计分析--multivariate statistical analysis

    研究客观事物中多个变量之间相互依赖的统计规律性。或从数学上说, 如果个体的观测数据能表为 P维欧几里得空间的点,那么这样的数据叫做多元数据,而分析多元数据的统计方法就叫做多元统计分析 。

    重要的多元统计分析方法有:多重回归分析、判别分析、聚类分析、主成分分析、对应分析、因子分析、典型相关分析、多元方差分析等。

    多元线性回归(普通最小二乘法)

    用来确定2个或2个以上变量间关系的统计分析方法。多元线性回归的基本的分析方法与一元线性回归方法是类似的,我们首先需要对选取多元数据集并定义数学模型,然后进行参数估计,对估计出来的参数进行显著性检验,残差分析,异常点检测,最后确定回归方程进行模型预测。(1)做个简单线性回归热热身

    women#使用自带的woman数据集

    73256c5d7cb5eb7f87086b59a6eee36e.png

    fit

    summary(fit)#展示拟合模型的详细信息

    f93a81ef002ab5822e7ee66fe145d423.png

    women$weight#列出真值

    fitted(fit)#列出拟合模型的预测值

    e0faf1b0472f636e172aa8712bda180a.png

    residuals(fit)#列出拟合模型的残差值

    coefficients(fit)#列出拟合模型的模型参数

    confint(fit)#列出拟合模型参数的置信区间

    anova(fit)#生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表

    0f831a1975921a5cbbc98492840a245b.png

    vcov(fit)#列出拟合模型的协方差矩阵

    0a3d79292dc6282e3d0e0368f6c54b33.png

    par(mfrow=c(2,2))

    plot(fit)

    675e67d54477f104860cd83c14957059.png

    plot(women$height,women$weight,

         xlab="Height (in inches)",

         ylab="Weight (in pounds)")#生成观测,变量散点图

    abline(fit)#给散点图加上拟合曲线

    2fa029fce2461d7f0b16ed158834d30d.png

    (2)多项式回归

    fit2=lm(weight~height+I(height^2),data=women)#I(height^2)表示向预测等式添加一个平方项

    summary(fit2)

    plot(women$height,women$weight,

         xlab="Height (in inches)",

         ylab="Weight (in pounds)")

    lines(women$height,fitted(fit2))

    b02ba95c21a17fa09eb0e1934d43b829.png c7dbc2226bbf82ee55b5a47b379eaa7b.png

    fit3=lm(weight~height+I(height^2)+I(height^3),data=women)

    summary(fit3)

    lines(women$height,fitted(fit3),col="red")

    b43525dea3adb41fba3ffb197d84a8e3.png 87082649fe85ae4d3e19e86fbdd01fdc.png

    #使用car包的scatterplot()函数

    install.packages("car")

    library(car)

    library(carData)

    scatterplot(weight~height,data=women,

                spread=FALSE,smooth.args=list(lty=2),pch=19,

                main="Women Age 30-39",

                xlab="Height (in inches)",

                ylab="Weight (in pounds)")

    #该函数提供了身高与体重的散点图,线性拟合曲线以及平滑拟合曲线(loess),每个轴还展示了两个变量的箱线图。

    b313445f4f7457b14535b55d61cf481b.png

    (3)多元线性回归

    states

    cor(states)#检查一下各变量之间的相关性

    6c9f387aa09efadaaf3a72b327696939.png

    scatterplotMatrix(states,spread=FALSE,smooth.args=list(lty=2),pch=19,main="scatterplot matrix")

    #非对角线位置绘制变量间的散点图,并添加平滑和线性回归图

    #对角线区域绘制每个变量对应的密度图和轴须图

    ff72eb8cf2d8ab50fbcff97eb3ef7b62.png

    #使用lm函数进行没有交互项多元线性回归的拟合

    states

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    summary(fit)

    b52ccfdc2546bc10ff7ac0c02a18dcd6.png

    #使用lm函数进行有交互项多元线性回归的拟合

    fit

    summary(fit)

    e93a9eb6f4704bc44b9cb778134ea256.png

    交互项也是显著的,说明相应变量与其中一个预测变量之间的关系依赖于另一个预测变量。

    (4)回归诊断--常规方法

    fit

    par(mfrow=c(2,2))

    plot(fit)

    R vs F图:如果自变量和因变量线性相关,残差值和拟合值之间没有任何系统联系,如果是一条清楚的曲线,可能在暗示要在拟合的时候加上多次项

    正态QQ图:当自变量的值固定时,因变量应该成正态分布,残差值也应该是一个均值为0的正态分布,如果满足假设,图上的点应该都落在一条45度的直线上

    scale-location图:如果满足方差不变的假设,图中水平线周围的点应该随机分布

    Residuals vs leverage图:鉴别离群点,高杠杆值点,强影响点。

    675e67d54477f104860cd83c14957059.png

    加上多次项的拟合结果

    fit2

    par(mfrow=c(2,2))

    plot(fit2)

    879d9068a6b4f4cf39c1be79700947a5.png

    13和15是强影响点,可以去除强影响点。

    fit2

    再对数据集state.x77进行试验

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    par(mfrow=c(2,2))

    plot(fit)

    3e4544349ac2010a33a21617181aa01b.png

    (5)回归诊断--改进方法

    library(car)

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    par(mfrow=c(1,1))

    qqPlot(fit,labels=row.names(states),id.method="identify",simulate=TRUE,main="Q-Q Plot")

    states["Nevada",]

    fitted(fit)["Nevada"]

    residuals(fit)["Nevada"]

    rstudent(fit)["Nevada"]

    a1db86692e5eb2a2e6276dcd2136b67a.png c7614853096ffe75c77d2e1f7cda3bae.png

    学生化残差

    residplot

      z

      hist(z,breaks=nbreaks,freq=FALSE,

           xlab="Studentized Residual",

           main="Distribution of Errors")

      rug(jitter(z),col="brown")

     curve(dnorm(x,mean=mean(z),sd=sd(z)),add=TRUE,col="blue",lwd=2)

      lines(density(z)$x,density(z)$y,

            col="red",lwd=2,lty=2)

      legend("topright",

             legend=c("Normal Curve","Kernel Density Curve"),

             lty=1:2,col=c("blue","red"),cex=.8)

    }

    residplot(fit)

    c25bbd08dd5cf247c3e9e44a3a9aa732.png

    除了一个很明显的离群点,误差很好地服从了正态分布。

    误差的独立性

    durbinWatsonTest(fit)

    crPlots(fit)

    p值显著说明无自相关性,误差项之间独立。滞后项(lag=1)表明数据集中每个数据都是与其后一个数据进行比较。

    通过成分残差图可以看因变量和自变量之间是否成非线性关系。

    688dfebc360234a767c7fccc540f1880.png dc58e42a1e72c8b6bd2f120d55ec94f5.png

    同方差性

    ncvTest(fit)

    spreadLevelPlot(fit)

    分布水平图的点随机分布在直线的周围,如假设不正确,将看到曲线。

    下图说明P值不显著,满足方差不变假设

    d609d3435362504b718759ebe7f3c8e8.png

    线性模型假设的综合验证

    install.packages("gvlma")

    library(gvlma)

    gvmodel

    summary(gvmodel)

    下图表示P值都不显著,满足假设条件。

    5c49bb53a95f343fb597615aff0fd692.png

    多重共线性

    library(car)

    vif(fit)

    sqrt(vif(fit))#如果>2,表明存在多重共线性问题

    d5890fe2af78168a74c4e1dbebbda1fd.png

    (6)异常观测值

    a.离群点:预测效果不佳的观测,有很大的或正或负的残差值。正代表模型低估了响应值,负代表模型高估了响应值

    library(car)

    outlierTest(fit)

    返回值Nevada,P值小于0.05,判定为离群点。

           rstudent               unadjusted p-value     Bonferonni p

           Nevada 3.542929         0.00095088     0.047544

    b.高杠杆点:与其他变量相关的离群点

    hat.plot

      p

      n

      plot(hatvalues(fit),main="Index Plot of Hat Values")

      abline(h=c(2,3)*p/n,col="red",lty=2)

      identify(1:n,hatvalues(fit),names(hatvalues(fit)))

    }

    hat.plot(fit)

    5e41c6a6fdc0991d82b098e5d0f1a0d0.png

    c.强影响点:模型估计参数值影响有些比例失衡的点,方法是测量Cook距离,可通过变量添加图得出。

    一般来讲,Cook距离大于4/(n-k-1),表明是强影响点。

    n——样本量大小,K——预测变量数目

    cutoff

    plot(fit,which=4,cook,levels=cutoff)

    abline(h=cutoff,lty=2,col="red")

    下图中高于水平线的是强影响点

    d6de2a1b02945eb8095736f635ffe891.png

    d.变量添加图:三种点都可以显现出来

    library(car)

    avPlots(fit,ask=FALSE,id.method="identify")

    00ef59878d989f2c4b7f4d3a5a42e84f.png

    整合到一张图

    library(car)

    influencePlot(fit,id.method="identify",main="Influent Plot",

                  sub="Circle size is proportional to Cook's distance")

    纵坐标超过正负2的被认为是离群点,水平轴超过0.2或0.3的被认为是高杠杆点,圆圈大的被认为是强影响点。

    8d44b83dc3c51f0fa90d543607e26236.png

    (7)处理违背回归假设的问题

    a.删除变量:离群点和强影响点

    b.变量变换:当模型违反正态假设时

    library(car)

    summary(powerTransform(states$Murder))

    4ae3203ade0cd5dc426a1d48045c7e3e.png

    结果表明可以用Murder^0.6来正态化Murder,该函数使用极大似然法正态化变量

    library(car)

    boxTidwell(Murder~Population+Illiteracy,data=states)

               MLE of lambda  Score Statistic (z) Pr(>|z|)

    Population   0.86939             -0.3228   0.7468

    Illiteracy       1.35812              0.6194   0.5357

    iterations =  19 

    结果显示使用Population0.86939和Illiteracy1.35812可以大大改善线性关系。但对二者的记分检验又表明不会不需要变换。p值比较大。

    c.增删变量:改变模型的变量数目可以影响变量的拟合优度——多重共线的变量要删掉

    (8)选择最佳的回归模型

    a.模型比较:

    a1. anova()函数,需要模型嵌套

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit1=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    fit2=lm(Murder~Population+Illiteracy,data=states)

    anova(fit1,fit2)

    28adaeb8be5768a6a7d36dfdfabc182a.png

    anova将两个回归模型进行比较,p值(0.9939)不显著,所以不需要加到模型中。

    a2. AIC(赤池信息准则):考虑模型的统计拟合优度,AIC值小的要优先选择。

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit1=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    fit2=lm(Murder~Population+Illiteracy,data=states)

    AIC(fit1,fit2)

            df      AIC

    fit1  6   241.6429

    fit2  4   237.6565

    根据AIC值选择fit2,不需要模型嵌套。

    b.变量选择:

    b1. 逐步回归法:模型每次增加(向前)或者删除(向后)一个变量,直到达到某个判停条件为止。

    library(MASS)

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    fit=lm(Murder~Population+Illiteracy+Income+Frost,data=states)

    stepAIC(fit,direction = "backward")

    40a876967664111af635eb9f6176a7f8.png

    开始模型删除一个变量之后,AIC值降低,再删除一个变量之后,AIC值变低,最后剩下两个变量。弊端:不能找到最佳的

    b2. 全子集回归法:所有可能的模型都会被检验。

    install.packages("leaps")

    library(leaps)

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    leaps=regsubsets(Murder~Population+Illiteracy+Income+Frost,data=states,nbest=4)

    leaps

    plot(leaps,scale="adjr2")

    7e304e6ab60be3cd9b09d5c631c45d79.png

    图中的0.33表示截距项与income变量模型调整R平方0.33,可以看出截距项和P和I的调整模型R平方和最大,模型最佳

    or:

    library(car)

    subsets(leaps,statistic="cp",main="Cp Plot for All Subsets Regression")

    abline(1,1,lty=2,col="red")

    d0c0349844c925d836381f3fd5d189cd.png

    越好的模型离截距和斜率都为1的红线最近。

    (9)深层次分析

    a.交叉验证:最小二乘法的目的时预测误差(残差)平方和最小,响应变量解释度(R平方)最大化,交叉验证法可以评定该回归模型的泛化能力。

    定义:将一定的数据挑选出来作为训练样本,其他的数据作为保留样本,现在训练样本中做回归,再在保留样本中做预测

    install.packages("bootstrap")

    library(bootstrap)

    shrinkage

      require(bootstrap)

      theta.fit

        lsfit(x,y)

      }

      theta.predict

      x

      y

      results

      r2

      r2cv

      cat("Original R-square=",r2,"\n")

      cat(k,"Fold Cross-Validated R-square=",r2cv,"\n")

      cat("Change=",r2-r2cv,"\n")

    }

    states

    fit

    shrinkage(fit)

    结果:

    Original R-square= 0.5669502 

    10 Fold Cross-Validated R-square= 0.4642092 

    Change= 0.1027411 

    验证后的R值更客观,验证前过于乐观,R值较大。

    fit2

    shrinkage(fit2)

    验证前后R方变化不大,说明模型预测较为精确。

    b.相对重要性:比较标准化回归系数,表示当其他预测变量不变时,该预测变量一个标准差的变化可yying引起响应值的变化。

    在回归分析前,先将数据集用scale函数标准化为均值为0,标准差1的矩阵,再转化为数据框进行回归分析。

    states=as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

    zstates=as.data.frame(scale(states))

    zfit=lm(Murder~Population+Illiteracy+Income+Frost,data=ztates)

    coef(zfit)

    结果:

      (Intercept)    Population    Illiteracy        Income         Frost 

    -2.054026e-16  2.705095e-01  6.840496e-01  1.072372e-02  8.185407e-03 

    结果显示:人口和文盲率对谋杀率的影响很大,而Frost的影响率很小。

    c.相对权重法:将相对重要性看成是每个预测变量对R平方的贡献大小。

    relweight

      R

      nvar

      rxx

      rxy

      svd

      evec

      ev

      delta

      lambda

      lambdasq

      beta

      rsquare

      rawwgt

      import

      import

      row.names(import)

      names(import)

      import

      dotchart(import$Weights,labels = row.names(import),

               xlab="% of R-Square",pch=19,

               main="Relative Importance of Predictor Variables",

               sub=paste("Total R-Square=",round(rsquare,digit=3))

      )

    }

    states

    fit

    relweight(fit,col="grey")

    df64c82db953c3801711b61013dfa2ac.png

    结果显示,文盲率对谋杀率的影响最大,其次是结冰率。

    展开全文
  • spss进行多元线性回归分析表格

    万次阅读 多人点赞 2019-04-01 00:50:26
    1.如何使用spss进行多元线性回归。 2.分析生成结果,并判断回归是否可行。 一、使用spss进行多元线性回归: 1.输入数据 2. 3. 4. 5. 6. 二、表格结果分析: R方是检验回归是否成功的重要要素...

    本博客主要包含以下内容:

    1.如何使用spss进行多元线性回归。

    2.分析生成结果,并判断回归是否可行。

    一、使用spss进行多元线性回归:

    1.输入数据

    2.

    3.

    4.

    5.

    6.

    二、表格结果分析:

    R方是检验回归是否成功的重要要素之一,DW是残差独立性检验,衡量标准如下:

     再看下一个表格:

    F的值是F检验的结果,他对应的P就是表格中的sig具有重要意义,表格中p=0.015<0.05表明支持原假设,也就是说线性回归方程显著,F检验就是判断回归方程是否显著的。对应的下面的T检验就是判断回归方程的各个变量是否显著的。(就是各个变量的重要程度)

    再看下一个表格:

    Sig就是t检验的结果,<0.05表示该变量显著性强

    由上图已经可以得到回归方程了:y=3.754x1+7.101x2+12.447x3-348.280

    上面已经得到了回归方程,但是我们不禁要考虑,这些数据适合做回归吗,或者说,他们之间存在线性关系吗?

    下面继续看输出的表格图:

    因为回归的条件之一就是满足正态分布,显然,如果是对称的条形图就比较完美了,当然适当的瑕疵也是可以容忍的。

    看这个pp图,点越是集中在线上,越是符合回归的要求。

    展开全文
  • 多元线性回归分析

    2021-08-07 20:34:33
    多元线性回归分析 回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而...

    多元线性回归分析

    回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。
    常见的回归分析有五类:线性回归、0‐1回归、定序回归、计数回归和生存回归,其划分的依据是因变量Y的类型。本讲主要学习线性回归。

    多元线性回归分析

    • 相关性
      通过回归分析,研究相关关。相关性不等于因果性
    • X
      X是用来解释Y的相关变量,所以X被称为自变量。
    • Y
      Y常常是我们需要研究的那个核心变量,称为因变量。

    数据的分类

    数据类型解释举例建模方法
    横截面数据在某一时点收集的不同对象的数据我们自己发放问卷得到的数据、全国各省份2018年GDP的数据、大一新生今年体测的得到的数据多元线性回归
    时间序列数据对同一对象在不同时间连续观察所取得的数据从出生到现在,你的体重的数据(每年生日称一次)、中国历年来GDP的数据、在某地方每隔一小时测得的温度数据移动平均、指数平滑、ARIMA、GARCH、VAR、协积
    面板数据横截面数据与时间序列数据综合起来的一种数据资源2008‐2018年,我国各省份GDP的数据固定效应和随机效应、静态面板和动态面板

    回归分析的分类

    类型模型Y的特点例子
    线性回归OLS、GLS(最小二乘)连续数值型变量GDP、产量、收入
    0-1回归logistic回归二值变量是否违约、是否得病
    定序回归probit定序回归定序变量等级评定(优良差)
    计数回归泊松回归(泊松分布)计数变量每分钟车流量
    生存回归Cox等比例风险回归生存变量(截断数据)企业、产品的寿命

    一元线性回归

    • 回归模型
      只涉及一个自变量的回归称为一元回归,描述两个具有线性关系的变量之间关系的方程称为回归模型,一元线性回归模型可表示为:
      y i = β 0 + β 1 x i + μ i y_i=\beta_0+\beta_1x_i+\mu_i yi=β0+β1xi+μi

    其中 μ \mu μ是被称为误差项的随机变量,反映了变量线性关系外的随机因素对y的影响。

    上式称为理论回归模型,对它有以下假定:

    • y与x之间具有线性关系;
    • x是非随机的,在重复抽样中,x的取值是固定的;
      以上2个假定表明,对于任何一个给定的x的值,y的取值都对应着一个分布,代表一条直线。但由于单个y是从y的分布中抽出来的,可能不在这条直线上,因此,必须包含一个误差项。
    • 误差项是一个期望值为0的随机变量,因此,对于一个给定的x值,y的期望 E ( y ) = β 0 + β 2 x E(y)=\beta_0+\beta_2x E(y)=β0+β2x值。
      • 对于所有的x, μ \mu μ的方差 σ \sigma σ都相同,这意味着对于一个给定的x值,y的方差都等于 σ 2 \sigma^2 σ2
      • 误差项是一个服从正态分布的随机变量,且独立。一个特定的x值所对应的与其他x值对应的不相关。对于任何一个给定的x值,y都服从期望值为 β 0 + β 1 x \beta_0+\beta_1x β0+β1x方差为 σ 2 \sigma^2 σ2的正态分布,不同的x值,y的期望值不同,但方差相同

    扰动项需要满足的条件
    y i = β 0 + β 1 x i + μ i y_i=\beta_0+\beta_1x_i+\mu_i yi=β0+β1xi+μi
    满足球型扰动项,即满足“同方差”和“无自相关”两个条件。
    在这里插入图片描述
    这里注意,横截面数据容易出现异方差的问题,时间序列数据容易出现自相关的问题。

    • 回归方程
      描述y的期望值如何依赖自变量x的方程称为回归方程,一元线性回归方程(误差项的期望值为0)的形式为:
      E ( y ) = β 0 + β 2 x E(y)=β_0+β_2x E(y)=β0+β2x
    • 估计的回归方程
      总体回归参数 β 0 β_0 β0 β 1 β_1 β1是未知的,需要用样本数据去估计。一元线性回归的估计的回归方程形式为:

    y ^ = β ^ 0 + β ^ 1 x \hat y=\hat\beta_0+\hat\beta_1x y^=β^0+β^1x

    • 对于“线性”的理解
      不要求严格的线性,只要有线性的形式即可。
      如下,都属于“线性”。
      在这里插入图片描述

    内生性的探究

    误差 μ \mu μ包含了所有与 y y y相关,但未添加到回归模型中的变量。如果这些变量和我们已经添加的自变量相关,则存在内生性。

    蒙特卡罗模拟

    %% 蒙特卡洛模拟:内生性会造成回归系数的巨大误差
    times = 300;  % 蒙特卡洛的次数
    R = zeros(times,1);  % 用来储存扰动项u和x1的相关系数
    K = zeros(times,1);  % 用来储存遗漏了x2之后,只用y对x1回归得到的回归系数
    for i = 1: times
        n = 30;  % 样本数据量为n
        x1 = -10+rand(n,1)*20;   % x1在-1010上均匀分布,大小为30*1
        u1 = normrnd(0,5,n,1) - rand(n,1);  % 随机生成一组随机数
        x2 = 0.3*x1 + u1;   % x2与x1的相关性不确定, 因为我们设定了x2要加上u1这个随机数
        % 这里的系数0.3我随便给的,没特殊的意义,你也可以改成其他的测试。
        u = normrnd(0,1,n,1);  % 扰动项u服从标准正态分布
        y = 0.5 + 2 * x1 + 5 * x2 + u ;  % 构造y
        k = (n*sum(x1.*y)-sum(x1)*sum(y))/(n*sum(x1.*x1)-sum(x1)*sum(x1)); % y = k*x1+b 回归估计出来的k
        K(i) = k;
        u = 5 * x2 + u;  % 因为我们回归中忽略了5*x2,所以扰动项要加上5*x2
        r = corrcoef(x1,u);  % 2*2的相关系数矩阵
        R(i) = r(2,1);
    end
    plot(R,K,'*')
    xlabel("x_1和u'的相关系数")
    
    ylabel("k的估计值")
    

    在这里插入图片描述
    表明x与 μ \mu μ关系越大,内生性越强。

    核心解释变量和控制变量

    无内生性(no endogeneity)要求所有解释变量均与扰动项不相关,这个条件一般很难达到,因此我们对于变量作以下两种分类
    核心解释变量:我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于待估计参数的真值 )。
    控制变量:我们可能对于这些变量本身并无太大兴趣。而之所以把它们也放入回归方程,主要是为了 “控制住” 那些对被解释变量有影响的遗漏因素。

    在实际应用中,我们只要保证核心解释变量与𝝁不相关即可。

    回归系数的解释

    一元线性回归

    y = a + b x + μ y=a+bx+\mu y=a+bx+μ
    β 0 ^ \hat{\beta_0} β0^ : 一般不考虑(所有变量都是0才有意义)

    β m ^ ( m = 1 , 2... k ) \hat{\beta_m}(m=1,2...k) βm^(m=1,2...k) :在控制了其他变量的情况下, x m i x_{mi} xmi每增加一个单位,对 y i y_i yi造成的变化。

    半对数模型1

    y = a + b l n x + μ y=a+blnx+\mu y=a+blnx+μ

    什么时候取对数

    • 与市场价值相关的,例如,价格、销售额、工资等都可以取对数;
    • 以年度量的变量,如受教育年限、工作经历等通常不取对数;
    • 比例变量,如失业率、参与率等,两者均可;
    • 变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y);

    取对数的好处

    • 减弱数据的异方差性
    • 如果变量本身不符合正态分布,取了对数后可能渐近服从正态分布
    • 模型形式的需要,让模型具有经济学意义
      x每增加1%,y平均变化b/100个单位。

    半对数模型2

    l n y = a + b x + μ lny=a+bx+\mu lny=a+bx+μ
    x每增加1个单位,y平均变化(100b)%。

    双对数模型

    l n y = a + b l r n x + μ lny=a+blrnx+\mu lny=a+blrnx+μ
    x每增加1%,y平均变化b%

    虚拟变量

    • 如果自变量中有定性变量,例如性别、地域等,在回归中转化为0-1表示
    • 为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1。

    数据的描述性统计

    stata 实现

    • 定量数据summarize 变量1 变量2 ... 变量n
    • 定性数据tabulate 变量名,gen(A)
      返回对应的这个变量的频率分布表,并生成对应的虚拟变量(以A开头)。gen以后的不写也可以
      在这里插入图片描述
      • Freq 频数
      • Percent 频率
      • Cum 累积频率

    Excel实现

    在这里插入图片描述

    回归实现

    STATA语句 : regress y x1 x2 … xk

    • 默认使用的OLS:普通最小二乘估计法)
    • 如果假如虚拟变量 STATA会自动检测数据的完全多重共线性
    • 不带虚拟变量的
      在这里插入图片描述
      • Model + SS :SSR回归平方和
      • Residual +SS : SSE误差平方和
      • Total + SS :SST=SSR+SSE
      • df : 自由度
      • MS :ss/df
      • F&&Prob>F : 联合显著性检验。 H 0 : β 1 = β 2 = . . . β k = 0 H_0 : \beta_1=\beta_2=...\beta_k=0 H0:β1=β2=...βk=0
      • R 2 a n d a d j R 2 R^2 and adj R^2 R2andadjR2 :一般使用调整后的
      • _cons : 常数项
      • H 0 : β 1 = β 2 = . . . β k = 0 H_0 : \beta_1=\beta_2=...\beta_k=0 H0:β1=β2=...βk=0
    • 带虚拟变量的
      在这里插入图片描述
      避免多重共线性,把一个固定(为0), 其余的数值是与它作比较。

    拟合优度 R 2 R^2 R2较低怎么办

    • 回归分为解释型回归和预测型回归。
      预测型回归一般才会更看重 R 2 R^2 R2。解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可。
    • 可以对模型进行调整,例如对数据取对数或者平方后再进行回归。
    • 数据中可能有存在异常值或者数据的分布极度不均匀。
    • 我们引入的自变量越多,拟合优度会变大。但我们倾向于使用调整后的拟合优度,如果新引入的自变量对SSE的减少程度特别少,那么调整后的拟合优度反而会减小。

    标准化回归

    标准化回归系数

    为了去除量纲的影响,我们可使用标准化回归系数
    对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数。标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显著的回归系数

    Stata标准化回归命令

    regress y x1 x2 … xk,beta
    bata可简写为b

    • 常数项没有标准化回归系数
      常数的均值是其本身,经过标准化后变成了0。
      -除了多了标准化回归系数 ,和之前的回归结果完全相同。
      对数据进行标准化处理不会影响回归系数的标准误,也不会影响显著性。

    异方差

    • 危害
      当扰动项存在异方差时 :
    • OLS估计出来的回归系数是无偏、一致的。
    • 假设检验无法使用(构造的统计量失效了)。
    • OLS估计量不再是最优线性无偏估计量(BLUE)。
    • 检验(by stata)
    \\在回归结束后运行命令:
    rvfplot \\(画残差与拟合值的散点图)
    rvpplot x \\(画残差与自变量x的散点图)
    estat hettest ,rhs iid\\异方差bp检验
    


    波动比较大,表示存在异方差

    • BP检验
      • 原假设 : 扰动项不存在异方差
      • 备选假设 :扰动项存在异方差
    • 解决方案
    1. 使用OLS + 稳健的标准误
      如果发现存在异方差,一 种处理方法是,仍然进行OLS 回归,但使用稳健标准误。只要样本容量较大,即使在异方差的情况下,若使用稳健标准误,则所 有参数估计、假设检验均可照常进行。
      regress y x1 x2 … xk,robust
      在这里插入图片描述

    Stock and Watson (2011)推荐,在大多数情况下应该使用“OLS + 稳健标准误”。
    2. 广义最小二乘估计法GLS(有缺陷)

    原理:方差较小的数据包含的信息较多,我们可以给予信息量大的数据更大的权重(即方差较小的数据给予更大的权重)

    多重共线性

    多重线性回归,也即通过 X 1 X_1 X1 X 2 X_2 X2等多个自变量(解释变量)来构建线性回归模型预测因变量 Y Y Y。在多重线性回归中,当多个自变量之间存在 精确/高度 相关关系时,会导致回归系数难以估计/估计不准,这时就出现了共线性问题。

    • 检验多重共线性
      VIF,VarianceInflation Factor,方差膨胀因子。VIF指的是解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比,可以反映多重共线性导致的方差的增加程度
      V I F m VIF_m VIFm越大,说明第 m m m个变量和其他变量的相关性越大,回归模型的 V I F = m a x { V I F 1 , V I F 2 , . . . , V I F K } VIF=max\{VIF_1,VIF_2,...,VIF_K\} VIF=max{VIF1,VIF2,...,VIFK}
      一般 V I F > 10 VIF>10 VIF>10认为回归方程存在严重的多重共线性。
    \\Stata计算各自变量VIF的命令(在回归结束后使用):
    estat vif
    
    • 如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以 不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计。
    • 如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有多重共线性,则只会更加显著。
    • 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导致严重共线性的变量(不要轻易删除,因为可能会有内生性的影响),或对模型设定进行修改。
    • 逐步回归分析
      • 向前逐步回归Forward selection:将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型。
        (缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了,但是,并没有将其及时从回归方程中剔除掉。)
      • 向后逐步回归Backward elimination:与向前逐步回归相反,先将所有变量均放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的变异是否有显著变化,之后将最没有解释力的那个自变量剔除;此过程不断迭代,直到没有自变量符合剔除的条件。
        (缺点:一开始把全部变量都引入回归方程,这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了)
      • Stata实现逐步回归法
      \\向前逐步回归Forward selection:
      stepwise regress y x1 x2 … xk, pe(#1)
      
      \\向后逐步回归Backward elimination:
      stepwise regress y x1 x2 … xk, pr(#2)
      
      
      • pe(#1) specifies the significance level for addition to the model; terms with p<#1 are eligible for addition(显著才加入模型中).
      • pr(#2) specifies the significance level for removal from the model; terms with p>= #2 are eligible for removal(不显著就剔除出模型)
    • 如果你筛选后的变量仍很多,可以减小#1或者#2;如果筛选后的变量太少了,可以增加#1或者#2。
    • x 1 x 2 … x k x_1 x_2 … x_k x1x2xk之间不能有完全多重共线性(和regress不同哦)
    • 可以在后面再加参数b和r,即标准化回归系数或稳健标准误
      -向前逐步回归和向后逐步回归的结果可能不同。
    • 不要轻易使用逐步回归分析,因为剔除了自变量后很有可能会产生新的问题,例如内生性问题。
    展开全文
  • 线性回归,前面用Python从底层一步一个脚印用两种方法实现了回归拟合。在这个高级语言层出不穷的年代,这样做显然不明智,所以我考虑用优秀的数据分析工具——R语言(不敢说最...

    我的博客

    线性回归,前面用Python从底层一步一个脚印用两种方法实现了回归拟合。在这个高级语言层出不穷的年代,这样做显然不明智,所以我考虑用优秀的数据分析工具——R语言(不敢说最优秀,虽然心里是这么想的,我怕有人要骂我!)做回归分析。包括简单多变量回归、逐步回归、逻辑回归!

    多元回归分析,生活中用的很多,因为一个因素可能与很多其它因素有关!言归正传,这里考虑用R语言里面的相关函数做回归分析。

    需要的用到的知识储备:

    • 线性代数

    • 概率论与数理统计

    • 高等数学

    • R语言基础

    下面分别从普通多元线性回归、逐步回归、逻辑回归进行介绍。前面用Python实现的只是一元回归,由于R语言实现线性回归很方便,所以我会着重介绍原理。

    多元线性回归

    不论是单变量还是多元线性回归分析,他们都是直接或间接(有时候需要通过变量代换)程线性的关系。我们需要找到一个通用的线性模型来描述这种关系,在我们可以接受的误差范围内对数据进行预测或者发现规律。

    多元线性回归理论基础

    对于一组变量数据,如果我们不管是通过画散点图还是其它方法,知道了一个变量与其它变量程很强线性关系。我们就需要知道,到底是什么样的关系,关系系数是多少。通常是用经典的最小二乘法,因为这样算出的确实是最优的系数,可以保证残差平方和最小的优化目标。

    对于一个因变量y,有一组自变量X = (x1,x2,...,xk),x1,x2,...,xk,eps是列向量,考虑它们之间有如下线性关系:

    640?wx_fmt=png

    当然了,这里X = (x1,x2,...,xk),y都是给的一组数据,就像这样

    640?wx_fmt=png

    那么,对每一组(比如第一行)数据,就有如下关系:

    640?wx_fmt=png

    目标函数为残差平方和的关于系数beta0,beta1,...,betak的多元二次函数,我们希望找到一组系数使得目标函数值最小,即误差最小。目标函数如下:

    640?wx_fmt=png

    学过数学分析或者高等数学的人都知道,这只要关于beta0,beta1,...,betak分别求偏导数,得到k+1方程,再求出零点即可。

    我们用矩阵表示各个变量如下:

    640?wx_fmt=png

    那么,学过高等代数(数学专业)或者线性代数(工科)都知道,因变量与自变量关系可以表示为:

    640?wx_fmt=png

    中间推导过程这里不在赘述了,最终系数向量表达式为:

    640?wx_fmt=png

    关于多元线性回归的理论就到这里,有兴趣可以参考:线性回归导论(机械工业出版社 王辰勇 译)

    多元线性回归的R语言实现

    这里用R语言里面的常用数据集iris来说明,这个数据集包含五个指标,我们这里先只用前面四个:花萼长度、花萼宽度、花瓣长度、花瓣宽度,进行多元线性回归分析。

    数据预处理

    大家都知道,为了消除不同变量量纲或者数量级不一致,做数据标准化的数据预处理是有必要的。用到的R语言函数是scale(),这个函数的机理具体公式如下:

    640?wx_fmt=png

    R语言实现如下:

    640?wx_fmt=png

    标准化后数据选择前六行我们看一下:

    > head(sl.sc)

         Sepal.Length

    [1,]   -0.8976739

    [2,]   -1.1392005

    [3,]   -1.3807271

    [4,]   -1.5014904

    [5,]   -1.0184372

    [6,]   -0.5353840

    下面构建多元线性回归

    我们用花萼标准化后的数据sl.sc与其它三个变量做线性回归,先做有常数项的多元回归。

    lm.sc <- lm(sl.sc~sw.sc+pl.sc+pw.sc)

    summary(lm.sc)

    640?wx_fmt=png

    summary(lm.sc)给出了线性回归的相关信息,各个系数Residuals给出了残差的5分位数,Estimate、Std. Error、t value、Pr(>|t|)分别给出了自变量系数、标准误、t值和p值,Multiple R-squared:  0.8586, Adjusted R-squared:  0.8557分别给出了R方与修正的R方,这里 R-squared:  0.8557表示这个线性回归模型可以解释85.57的原数据,还是不错的,后面就不再解释这几个指标的意思了。可以看出无论是每个系数还是总体的p-value都远远小于0.05,给出了三颗星***的等级,但是如图蓝色方框是常数项的值是-1.176e-16,太小了,p值是1,告诉我们常数项可以不用,这些数据是过原点的线性关系。

    去掉常数项的多元回归,不同的是,减一表示不要常数项

    lm.sc <- lm(sl.sc~sw.sc+pl.sc+pw.sc-1)

    summary(lm.sc)

    模型详细情况:

    640?wx_fmt=png

    显然,去掉后R方,F值没有明显变换,系数等级都是三颗星,表明去掉常数项确实在不影响模型情况下简化了模型。

    我们来看一下残差图与QQ图:

    plot(lm.sc,1,col = 'orange',main = '残差图')

    plot(lm.sc,2,col = 'orange',main = 'QQ图')

    640?wx_fmt=png

    640?wx_fmt=png

    通过残差图与QQ图也可以明显看出这个不带常数项的线性回归模型是不错的。

    逐步回归

    逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的变量之前回归方程中只包含显著性变量。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优、最简单的。

    逐步回归最常用的挑选准则有修正复相关系数、预测平方和、Cp和AIC等,这里用AIC准则,对于含有P个自变量的回归方程,n为观测值(样本)个数,AIC越小越好,具体计算公式为:

    640?wx_fmt=png

    使用R语言构建逐步回归模型

    知道原理后,我们试图从三个自变量中筛选出两个,首先看一下上述模型的AIC

    step(lm.sc)

    640?wx_fmt=png

    显然,三个变量时AIC是最小的,这里为了说明问题,实在要剔除一个变量的话,当然要剔除第一个。因为我们发现剔除pw.sc时AIC为-272.06,如果剔除pl.scAIC就为-181.26,而AIC越小越好,所以就剔除变量pw.sc吧。

    lm.new <- lm(sl.sc~sw.sc+pl.sc-1)

    summary(lm.new)

    640?wx_fmt=png

    R方稍微减小了一点,因为三个变量AIC最小(即模型最优),提出后肯定会减小的。这里为了说明问题才强行提出一个。

    逻辑回归

    在介绍逻辑回归前我们先介绍什么是哑变量,其实,R语言用的多的人都知道iris这个数据集有5列,第五列是花的分类:setosa、versicolor、 virginica。那么花萼长度是否与花的分类有关呢?一般是有的。增加三列,我们考虑引入0~1变量,那么对于属于setosa的,记为1,versicolor、 virginica位置记为0,同理就多了3列,这里的0,1就是哑变量。还是为了减少变量,简化模型,我们只增加2列versicolor和 virginica,这样versicolor、 virginica位置都为0时,就属于setosa这个分类,versicolor位置为1时就为versicolor这个分类。0,1是逻辑变量,线性回归引入了逻辑变量,故称为逻辑回归。

    下面就进行R语言实现,要不看一下iris数据集长什么样:

    640?wx_fmt=png

    第五列变量就有三个水平,都是50条,正好。

    640?wx_fmt=png

    两个for()语句就是构造逻辑变量的,还是很好理解的,这样就有五个变量了。构造的应该像这样:

    640?wx_fmt=png

    这里省略了前面的,只为说明构造的逻辑变量(实际应该是s1里面51~100为1,s2里面101~150为1,其它为0)。看一下结果:

    640?wx_fmt=png

    所有变量系数p-value都小于0.05,R-squared:  0.8627,比没有增加逻辑变量的R-squared:  0.8557好一些,可见花的分类确实对花萼长度sl.sc有关系。最终表达式为:

    640?wx_fmt=png

    展开全文
  • SPSS多元线性回归结果分析

    万次阅读 多人点赞 2018-04-11 17:42:00
    对总回归方程进行F检验。显著性是sig。 结果的统计学意义,是结果真实程度(能够代表总体)的一种估计方法。专业上,p 值为结果可信程度的一个递减指标,p 值越大,我们越不能认为样本中变量的关联是 总体中各变量...
  • SPSS—回归—多元线性回归结果分析(二)

    万次阅读 多人点赞 2014-03-19 17:57:28
    SPSS—回归—多元线性回归结果分析(二) ,最近一直很忙,公司的潮起潮落,就好比人生的跌岩起伏,眼看着一步步走向衰弱,却无能为力,也许要学习“步步惊心”里面“四阿哥”的座右铭:“行到水穷处”,”坐看...
  • 原始数据在这里 1.观察数据 首先,用Pandas打开数据,并进行观察... 以上这篇关于多元线性回归分析——Python&SPSS就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。 时间: 2020-02-23
  • 本文使用 R 语言,对各个影响因素的相关性进行了筛选分析,并采用逐步回归法得到了最优的多元线性回归模型。在讨论中,对线性回归模型的回归显著性以及拟合优度进行了检验,最后使用最优的多元线性回归模型对波士顿...
  • 多元线性回归分析理论详解及SPSS结果分析

    万次阅读 多人点赞 2017-05-17 16:23:23
    当影响因变量的因素是多个时候,这种一个变量同时与多个变量的回归问题就是多元回归,分为:多元线性回归和多元非线性回归。这里直说多元线性回归。对比一元线性回归: 1.1多元回归模型: y=β0+β1x1+β2x2+…+β...
  • 单变量线性回归 绘制散点图 相关系数R 拆分训练集和测试集 多变量线性回归 数据检验(判断是否可以做线性回归) 训练线性回归模型 先甩几个典型的线性回归的模型,帮助大家捡起那些年被忘记的数学。 ● 单...
  • R语言与多元线性回归+逐步回归

    万次阅读 多人点赞 2019-11-16 12:31:12
    多元线性回归 多元线性回归的核心问题:应该选择哪些变量??? RSS(残差平方和)与R2 (相关系数的平方)选择法:遍历所有可能的组合,选出使RSS最小,R2最大的模型。 AIC(Akaike Information Criterion)准则与...
  • 基于王斌会《多元统计分析及R语言建模》第4章第4节逐步回归。主要介绍回归变量的选择方法,涉及变量选择准则,逐步回归分析的步骤,以及算例。
  • 基于王斌会《多元统计分析及R语言建模》第4章第4节逐步回归。主要介绍回归变量的选择方法,涉及变量选择准则,逐步回归分析的步骤,以及算例。
  • 机器学习算法(8)之多元线性回归分析理论详解

    万次阅读 多人点赞 2018-08-29 16:28:27
    前言:当影响因变量的因素是多个时候,这种一个变量同时与多个变量的回归问题就是多元回归,分为:多元线性回归和多元非线性回归。线性回归(Linear regressions)和逻辑回归(Logistic regressions)是人们学习算法的第...
  • 多元线性回归分析 通过研究自变量 XXX 和因变量 YYY 的相关关系,尝试去解释 YYY 的形成机制,进而达到通过 XXX 去预测 YYY 的目的 。 文章目录(1) 回归分析的简介1. 相关性2. 因变量 YYY 3. 自变量 XXX 4. 回归...
  • 多元线性回归

    千次阅读 2018-04-05 13:30:55
     在线性回归分析中,如果有两个或两个以上的自变量,就称为多元线性回归(multivariable linear regression)。如果我们要预测一套房子的价格,影响房子价格的因素可能包括:面积、卧室数量、层数以及房龄,我们用...
  • 5.1 多元线性回归分析

    2020-07-23 11:50:40
    在本章中,我们将从线性回归模型开始,它是最简单的模型之一。 数据集来自于UIC数据集中的能效数据集,该数据及用来分析建筑的供热负荷能效和制冷负荷能效,其中自变量有8个,因变量有两个,实例主要分析8个自变量和...
  • 多元线性回归建模 文章大纲 (Article Outline) Dataset description 数据集描述 Exploratory data analysis 探索性数据分析 A simple linear regression model fitting 简单的线性回归模型拟合 Model interpretation...
  • 在这种情况下可用逐步回归分析,进行x因子的筛选,这样建立的多元回归模型预测效果会更好。 可以解决的实际问题: 收入水平与受教育程度、所在行业、工作 年限、工作种类的关系。 公路客运量与人口增长量、私家...
  • #线性模型中有关函数#基本函数 a<-lm(模型公式,数据源) #anova(a)计算方差分析表#coef(a)提取模型系数#devinace(a)计算残差平方和#formula(a)提取模型公式#plot(a)绘制模型诊断图#predict...#多元线性回归分析 ...
  • 建模之多元线性回归分析

    千次阅读 2020-02-23 10:39:49
    1.回归分析用来研究变量X和Y之间的相关性 2.Y俗称因变量,即核心变量:连续数值型变量,0-1型变量,定序变量(数字代表了程度),计数变量(到访的次数),生存变量(年龄)。 X为解释变量,Y为被解释变量。 3.回归...
  • 数学建模(NO.11多元线性回归分析

    千次阅读 2021-01-13 20:45:06
    多元线性回归分析一.应用二.三个关键词三.目的四.回归模型分类五.数据分类1.三种数据2.模型与数据对应六.数据收集网址七.一元线性回归1.概念2.对“线性”理解1.纠正线性2. 预处理3.什么时候取对数?3.回归系数的解释...
  • 如何用R实现多元线性回归分析

    万次阅读 2017-03-08 11:45:59
    这里结合Statistical Learning和杜克大学的Data Analysis and Statistical Inference的章节以及《R语言实战》的OLS(Ordinary Least Square)回归模型章节来总结一下,诊断多元线性回归模型的操作分析步骤。...
  • 基于matlab的多元线性回归分析

    万次阅读 多人点赞 2020-04-23 14:41:29
    在社会生活及生产实践中会经常遇到一种...知道了这些,我们就可以对该量变化所反映的相关问题做出分析和评价,并对其未来发展趋势进行预测和控制,这里就要用到数理统计中一个非常重要而普遍的分析方法,即回归分析法。
  • 上期我们分享了,有同学留言想了解matlab多元线性回归,安排!回归分析(regressionanalysis)回归分析是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。回归分析按照涉及的变量的多少...
  • SPSS多元线性回归输出结果的详细解释

    万次阅读 多人点赞 2017-06-27 17:41:05
    最近做了一些用SPSS进行线性回归的实验,还是感觉很多细节把握不好,这里结合我的实验结果,以及网上别人的介绍总结一下,先贴几张SPSS的输出: 下面简单解释一下这三张图中的结果: 第一个表模型汇总表中,...
  • 多元线性回归总结

    万次阅读 2018-10-26 10:51:45
    1.多元线性回归模型 1.1多元线性回归形式 相对上一篇文章之中的一元线性回归,多元线性回归的主要特点是,自变量不再是一组数据,而是由多于一组以上的数据作为自变量。所以,多元线性回归的模型形式为: 其中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,468
精华内容 1,787
关键字:

多元线性回归逐步分析