当前位置:   article > 正文

stats | 线性回归(二)——模型假设和模型估计

模型估计是什么意思

2 模型假设

线性模型有以下几个基本假设:

线性假设

线性假设是线性模型的一个很自然的要求,但并非是其独有的假设。它是指因变量所服从分布的均值可以使用自变量及其相关项的线性组合表示。

相关项是指自变量的非线性组合,如 等。以下表达式都是线性表达式:

正态性假设和同方差假设

正态性假设是线性模型区别于其他模型最根本的假设。它是指各样本对应的因变量都服从正态分布。同方差假设是指各样本对应的正态分布的方差相同。

结合线性假设,线性模型可以写成如下形式:

因为模型的残差 ,所以有 。正态性假设和同方差假设实际是要求各样本对应的模型残差服从同一个正态分布。

  • 不一定是正态分布序列;

  • 只有在零模型(即模型中没有自变量)的情况下,模型假设等价于所有 的正态分布均值都等于模型的截距 ,此时 是正态分布序列。

对于表达式:

不服从正态分布,则不是线性模型。

使用lm函数拟合以下表达式:

则模型假设 服从同方差的正态分布。

因变量的独立性

独立性是指各样本对应的因变量取值是相互独立的, 的取值不会影响 的取值,即要求 、...、 独立同分布。

自变量之间不存在多重共线性

3 模型估计

3.1 最小二乘估计和最大似然估计

模型估计中最常用的方法就是最大似然估计,目标是使似然函数取得最大值,而似然函数是由模型因变量的概率分布决定的。用于估计线性模型的最小二乘法实际上是最大似然估计在概率分布为同方差正态分布下的特例。

最小二乘估计的目标函数:

  • 优化方向是使 取得最小值。

最大似然估计的目标函数:

  • 表示因变量服从的概率密度函数;

  • 优化方向是使 取得最大值。

由于线性回归假设 服从正态分布 ,那么,

因为概率密度函数恒为正数,求解最大似然函数的最大值可以对其取对数。所以,

3.2 使用函数输出模型估计结果

summary函数输出的模型结果中,估计结果位于Coefficients部分:

  1. DATA <- mtcars[, c("mpg""wt""qsec")]
  2. model <- lm(mpg ~ wt, DATA)
  3. summary(model)
  4. ## 
  5. ## Call:
  6. ## lm(formula = mpg ~ wt, DATA = DATA)
  7. ## 
  8. ## Residuals:
  9. ##     Min      1Q  Median      3Q     Max 
  10. ## -4.5432 -2.3647 -0.1252  1.4096  6.8727 
  11. ## 
  12. ## Coefficients:
  13. ##             Estimate Std. Error t value Pr(>|t|)    
  14. ## (Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
  15. ## wt           -5.3445     0.5591  -9.559 1.29e-10 ***
  16. ## ---
  17. ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  18. ## 
  19. ## Residual standard error3.046 on 30 degrees of freedom
  20. ## Multiple R-squared:  0.7528, Adjusted R-squared:  0.7446 
  21. ## F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

summary函数输出的模型估计结果包括以下内容:

  • Estimate:截距和自变量的系数;

  • Std. Error:系数和截距的标准误;

coefcoefficients函数可以只输出系数和截距结果:

  1. coef(model)
  2. coefficients(model)
  3. ## (Intercept)          wt 
  4. ##   37.285126   -5.344472

confint函数可以输出系数和截距的置信区间:

confint(object, parm, level = 0.95, ...)
  • object:模型对象;

  • parm:自变量名称,缺省时默认对所有自变量的系数求置信区间;

  • level:置信水平,默认为95%置信区间。

  1. confint(model)
  2. ##                 2.5 %    97.5 %
  3. ## (Intercept) 33.450500 41.119753
  4. ## wt          -6.486308 -4.202635
  5. confint(model, "(Intercept)"0.99)
  6. ##                0.5 %   99.5 %
  7. ## (Intercept) 32.12166 42.44859

3.3 模型估计的解析解

可以求得模型估计的解析解:

据此,可以手动求解model的截距和系数估计值:

  1. X = cbind(c(rep(132)), DATA$wt)
  2. Y = DATA$mpg
  3. solve(t(X) %*% X) %*% t(X) %*% Y 
  4. ##           [,1]
  5. ## [1,] 37.285126
  6. ## [2,] -5.344472
  • solve函数可以求矩阵的逆矩阵;

  • t函数可以求矩阵的转置矩阵;

  • %*%:矩阵乘法符号。

3.3 使用迭代法进行模型估计

线性模型作为一类经典模型,其系数和截距可以通过严格的公式求得解析解,但大多数模型都只能通过迭代的方法求取数值解的。这里使用迭代法来求线性模型的数值解。

线性模型的估计其实是个数学规划问题。决策变量:

目标函数:

约束条件:

stats中的optim函数可以解决以上优化问题:

  1. optim(par, fn, gr = NULL, ...,
  2.       method = c("Nelder-Mead""BFGS""CG""L-BFGS-B""SANN",
  3.                  "Brent"),
  4.       lower = -Inf, upper = Inf,
  5.       control = list(), hessian = FALSE)
  • par:决策变量的初始值;

  • fn:目标函数。

  1. # 构建目标函数
  2. f <- function(b) sum((DATA$mpg - b[2]*DATA$wt - b[1])^2)
  3. optim(c(00), f)
  4. ## $par
  5. ## [137.275657 -5.342921
  6. ## 
  7. ## $value
  8. ## [1278.3227
  9. ## 
  10. ## $counts
  11. ## function gradient 
  12. ##       95       NA 
  13. ## 
  14. ## $convergence
  15. ## [10
  16. ## 
  17. ## $message
  18. ## NULL
  • b1和b2的优化结果分别为37.275657和-5.342921,与模型截距和系数比较接近。

截距和系数的概率分布以及标准误可以通过以下蒙特卡洛试验得到:

  1. Y <- fitted(model) # 模型拟合值
  2. E <- residuals(model) # 模型残差
  3. f <- function(b) sum((Y0 - b[2]*DATA$wt - b[1])^2)
  4. R1  <- R2 <- c(1 : 10000) # 存储每次试验结果
  5. set.seed(123)
  6. for(i in c(1 : length(R1))) {
  7.   Y0 <- Y + sample(E, 32) # 对残差进行随机排序后与拟合值相加得到新的因变量取值
  8.   R1[i] <- optim(c(00), f)$par[1] # 拟合新因变量取值与自变量的线性关系
  9.   R2[i] <- optim(c(00), f)$par[2]
  10. }
  11. library(car)
  12. densityPlot(R1, main = "截距的模拟概率密度分布")
  13. sd(R1) # 标准误
  14. ## [11.789091
  15. quantile(R1, probs = c(0.0250.975)) # 95%置信区间
  16. ##     2.5%    97.5
  17. ## 33.72962 40.74298
  18. densityPlot(R2, main = "wt系数的模拟概率密度分布")
  19. sd(R2)
  20. ## [10.5560882
  21. quantile(R1, probs = c(0.0250.975))
  22. ##     2.5%    97.5
  23. ## 33.72962 40.74298
  • 注意:以上迭代算法并不严谨,仅供参考。

car工具包中的Boot函数使用自助法对模型进行迭代估计:

  1. modelboot <- Boot(model, R = 10000)
  2. summary(modelboot)
  3. ## 
  4. ## Number of bootstrap replications R = 10000 
  5. ##             original  bootBias  bootSE bootMed
  6. ## (Intercept)  37.2851  0.174304 2.34725 37.4438
  7. ## wt           -5.3445 -0.076318 0.71313 -5.3798
  8. confint(modelboot)
  9. ## Bootstrap bca confidence intervals
  10. ## 
  11. ##                 2.5 %    97.5 %
  12. ## (Intercept) 32.709537 41.943489
  13. ## wt          -6.773288 -3.987207

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/908974
推荐阅读
相关标签
  

闽ICP备14008679号