用矩阵的方法计算回归模型参数
2017-12-24 16:28
465 查看
用矩阵的方法计算回归分析参数
计算方法参考:https://stats.idre.ucla.edu/r/library/r-library-matrices-and-matrix-computations-in-r/
d3d1
平方:σ2=∑ϵˆ2
第二种方法,是用crossprod函数,在计算大数据时有优势
112.583
116.033
119.483
122.933
126.383
115
117
120
123
126
2.32564102564103
5.93694404890295
0.0911364954662
1
112.583333333333
2
116.033333333333
3
119.483333333333
4
122.933333333333
5
126.383333333333
6
129.833333333333
1
2.41666666666676
2
0.966666666666627
3
0.516666666666641
4
0.0666666666666444
5
-0.383333333333353
6
-0.833333333333348
2.32564102564103
1.52500525429948
1.1 数据来源:来源R语言默认的数据集women
这是一个描述女性身高和体重的数据,我们以height为X变量(自变量),以weight为Y变量(因变量),进行模型的计算。计算方法参考:https://stats.idre.ucla.edu/r/library/r-library-matrices-and-matrix-computations-in-r/
1.2 查看数据
data(women) head(women)
height | weight |
---|---|
58 | 115 |
59 | 117 |
60 | 120 |
61 | 123 |
62 | 126 |
63 | 129 |
1.3 理论模型
y=Xβ+ϵ, E(ϵ)=0, Cov(ϵ)=σ2In 回归系数估计:βˆ=(X′X)−1X′y 拟合值:yˆ=Xβ 残差估计:ϵˆ=y−yˆ 残差的d3d1
平方:σ2=∑ϵˆ2
2.1 构建X矩阵
X <- as.matrix(cbind(1, women$height)) n <- dim(X)[1] p <- dim(X)[2] head(X)
1 | 58 |
1 | 59 |
1 | 60 |
1 | 61 |
1 | 62 |
1 | 63 |
2.2 构建y矩阵
y <- matrix(women$weight,,1) head(y)
115 |
117 |
120 |
123 |
126 |
129 |
2.3 计算 β 参数
第一种方法,是直接根据公式计算:beta.hat <- solve(t(X) %*% X) %*% t(X) %*% y beta.hat
-87.51667 |
3.45000 |
beta.hat1 <- solve(crossprod(X), crossprod(X,y)) # solve(A,B) == solve(A)%*%B beta.hat1
-87.51667 |
3.45000 |
2.4 计算拟合值Fitted_value
y.hat <- X %*% beta.hat round(y.hat[1:5, 1],3) # 拟合值 y[1:5, 1] #原始值
112.583
116.033
119.483
122.933
126.383
115
117
120
123
126
plot(y.hat,y)
2.5 计算残差值(residual)
residual <- y - y.hat head(residual)
2.41666667 |
0.96666667 |
0.51666667 |
0.06666667 |
-0.38333333 |
-0.83333333 |
2.6 计算残差方差组分(残差的方差)
sigma2 <- sum((y - y.hat)^2)/(n - p) sigma2
2.32564102564103
2.7 计算方差协方差矩阵(var.beta)
v <- solve(t(X) %*% X) * sigma2 v
35.247305 | -0.539880952 |
-0.539881 | 0.008305861 |
2.8 计算参数的标准误
#standard errors of the parameter estimates sqrt(diag(v))
5.93694404890295
0.0911364954662
2.9 对参数进行T检验,计算T值
t.values <- beta.hat/sqrt(diag(v)) t.values
-14.74103 |
37.85531 |
2.10 根据T值,计算p值
2 * (1 - pt(abs(t.values), n - p))
1.711082e-09 |
1.088019e-14 |
3. 用lm函数和矩阵得到的结果对比
3.1 对比参数估计
mod <- lm(weight ~ height,data=women) summary(mod)$coef
Estimate | Std. Error | t value | Pr(>|t|) | |
---|---|---|---|---|
(Intercept) | -87.51667 | 5.9369440 | -14.74103 | 1.711082e-09 |
height | 3.45000 | 0.0911365 | 37.85531 | 1.090973e-14 |
beta.hat
-87.51667 |
3.45000 |
3.2 拟合值
head(fitted(mod))
1
112.583333333333
2
116.033333333333
3
119.483333333333
4
122.933333333333
5
126.383333333333
6
129.833333333333
head(y.hat)
112.5833 |
116.0333 |
119.4833 |
122.9333 |
126.3833 |
129.8333 |
3.3 残差值
head(residuals(mod))
1
2.41666666666676
2
0.966666666666627
3
0.516666666666641
4
0.0666666666666444
5
-0.383333333333353
6
-0.833333333333348
head(residual)
2.41666667 |
0.96666667 |
0.51666667 |
0.06666667 |
-0.38333333 |
-0.83333333 |
summary(mod)
Call: lm(formula = weight ~ height, data = women) Residuals: Min 1Q Median 3Q Max -1.7333 -1.1333 -0.3833 0.7417 3.1167 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -87.51667 5.93694 -14.74 1.71e-09 *** height 3.45000 0.09114 37.85 1.09e-14 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 1.525 on 13 degrees of freedom Multiple R-squared: 0.991, Adjusted R-squared: 0.9903 F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
sigma2
2.32564102564103
sqrt(sigma2)
1.52500525429948
相关文章推荐
- Spark Mllib里决策树回归分析使用.rootMeanSquaredError方法计算出以RMSE来评估模型的准确率(图文详解)
- 写一方法计算实现任意个整数之和.在主调函数中调用该函数,实现任意个数之和。(使用params参数)
- 磁盘结构及磁盘性能参数IOPS计算方法介绍
- 回归分析的几个简单误差计算与评估参数
- Laravel 模型关联attach,save,sync方法参数类型验证
- 语音识别中声学模型得分计算优化方法
- Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型的准确率(图文详解)
- sphinx中自己提取特征参数训练声学模型参数方法探讨
- weka数据预测 分类回归 方法 参数 总结
- tensorflow 获取模型所有参数总和数量的方法
- JAVA基础——类的继承、方法重构(计算两点间距离模型)
- 在大数据回归模型方法的培训逻辑
- 模型压缩和 网络参数量计算的网页
- 逻辑回归模型的代价函数对参数的偏导数--推导过程
- MXNET:深度学习计算-模型参数
- 在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递
- 常用统计学回归模型应用场景与python实现方法
- 机器学习 —— 基础整理(一)贝叶斯决策论;二次判别函数;贝叶斯错误率;生成式模型的参数方法
- C# MVC 进入Action 方法之后怎么使用MVC参数验证模型