R 《回归分析与线性统计模型》page141,5.2

rm(list = ls())
library(car)
library(MASS)
library(openxlsx)
A = read.xlsx("data141.xlsx")
head(A)

  

fm = lm(y~x1+x2+x3+x4 , data=A )
#判断多重共线性
vif(fm)

  

> vif(fm)
       x1        x2        x3        x4
 38.49621 254.42317  46.86839 282.51286 #具有多重共线性

  

#进行主成分回归
A.pr = princomp(~x1+x2+x3+x4 , data = A,cor=T)
summary(A.pr,loadings = T) #输出特征值和特征向量

  

> summary(A.pr,loadings = T) #输出特征值和特征向量
Importance of components:
                         Comp.1    Comp.2     Comp.3       Comp.4
Standard deviation     1.495227 1.2554147 0.43197934 0.0402957285
Proportion of Variance 0.558926 0.3940165 0.04665154 0.0004059364
Cumulative Proportion  0.558926 0.9529425 0.99959406 1.0000000000

Loadings:
   Comp.1 Comp.2 Comp.3 Comp.4
x1  0.476  0.509  0.676  0.241
x2  0.564 -0.414 -0.314  0.642
x3 -0.394 -0.605  0.638  0.268
x4 -0.548  0.451 -0.195  0.677

  

pre = predict(A.pr)  #主成分,组合向量,无实际意义
A$z1 = pre[,1]
A$z2 = pre[,2]       #根据累积贡献率,根据保留两个主成分变量

  

lm.sol = lm(y~z1 + z2,data = A) #与主成分预测变量线性回归
lm.sol
> lm.sol

Call:
lm(formula = y ~ z1 + z2, data = A)

Coefficients:
(Intercept)           z1           z2
    95.4231       9.4954      -0.1201  
> summary(lm.sol)      #模型详细

Call:
lm(formula = y ~ z1 + z2, data = A)

Residuals:
    Min      1Q  Median      3Q     Max
-3.3305 -2.1882 -0.9491  1.0998  4.4251 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  95.4231     0.8548 111.635  < 2e-16 ***
z1            9.4954     0.5717  16.610 1.31e-08 ***
z2           -0.1201     0.6809  -0.176    0.864
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.082 on 10 degrees of freedom
Multiple R-squared:  0.965,	Adjusted R-squared:  0.958
F-statistic:   138 on 2 and 10 DF,  p-value: 5.233e-08

  

beta = coef(lm.sol)  #主成分分析的预测变量的系数
beta
> beta
(Intercept)          z1          z2
 95.4230769   9.4953702  -0.1200892

  

#预测变量还原
eigen_vec = loadings(A.pr) #特征向量
x.bar =  A.pr$center #均值?
x.sd = A.pr$scale    #标准误?
xishu_1 = (beta[2]*eigen_vec[,1])/x.sd
xishu_2 = (beta[3]*eigen_vec[,2])/x.sd
coef = xishu_1 + xishu_2
coef
beta0 = beta[1] - sum(x.bar*coef)
B = c(beta0,coef)
B #还原后的回归系数

  

#岭估计
esti_ling = lm.ridge(y~x1+x2+x3+x4 , data = A, lambda = seq(0,15,0.01))
plot(esti_ling)

  

#取k=5
k = 5
X = cbind(1,as.matrix(A[,2:5]))
y = A[,6]
B_ = solve((t(X)%*%X) + k*diag(5))%*%t(X)%*%y
B_

  

> B_
         [,1]
   0.06158362
x1 2.12614307
x2 1.16796919
x3 0.71043177
x4 0.49566883

  

原文地址:https://www.cnblogs.com/jiaxinwei/p/11784831.html

时间: 2024-10-29 19:43:22

R 《回归分析与线性统计模型》page141,5.2的相关文章

R box-cox变换 《回归分析与线性统计模型》page100

> rm(list = ls()) > library(openxlsx) > electric= read.xlsx("data101.xlsx",sheet = 1) #打开文件 > electric No x y 1 1 679 0.79 2 2 292 0.44 3 3 1012 0.56 4 4 493 0.79 5 5 582 2.70 6 6 1156 3.64 7 7 997 4.73 8 8 2189 9.50 9 9 1097 5.34 10

R 《回归分析与线性统计模型》page120,4.3

#P120习题4.3 rm(list = ls()) A = read.xlsx("xiti_4.xlsx",sheet = 3) names(A) = c("ord","Y","K","L") attach(A) fm = lm(Y~log(K)+log(L))#线性回归模型 ei = resid(fm) X = cbind(1,as.matrix(A[,3:4])) t = ti(ei,X) #外部学生

R 《回归分析与线性统计模型》page140,5.1

rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data140.xlsx") head(A) attach(A) fm = lm(y~x1+x2+x3 , data=A) #建立模型 vif(fm) #查看模型是否存在共线性 > vif(fm) #查看模型是否存在共线性 x1 x2 x3 21.631451 21.894402 1.334751 结果显示存在共线性 summar

R语言 多元线性回归分析

#线性模型中有关函数#基本函数 a<-lm(模型公式,数据源) #anova(a)计算方差分析表#coef(a)提取模型系数#devinace(a)计算残差平方和#formula(a)提取模型公式#plot(a)绘制模型诊断图#predict(a)用作预测#print(a)显示#residuals()计算残差#setp()逐步回归分析#summary()提取模型资料 #多元线性回归分析 #回归系数的估计 #显著性检验: 1回归系数的显著性检验 t检验 就是检验某个变量系数是否为0 2回归方程的显

R语言基础知识学习(五):R中的线性回归分析

在R中线性回归分析的函数是lm(). (1)一元线性回归 我们可以根据以上数据来分析合金的强度是否与碳含量有关系. 首用以下命令把数据读取到R中: x <- c(seq(0.10,0.18,by = 0.01),0.20,0.21,0.23)y <- c(42.0,43.5,45.0,45.5,45.0,47.5,49.0,53.0,50.0,55.0,55.0,60.0)plot(x,y) 通过画图得到想x,y两个变量之间存在某种线性关系 所以,就可以用lm()函数来拟合直线,通过回归函数l

R语言之线性回归分析

一.建立简单线性回归模型可使用函数lm实现,函数是围绕公式展开的,lm接受一个公式对象作为试图建立的模型,可以通过?formula来查询通用格式,data.frame也可以被明确指定,它包括所需的数据> library(RSADBE)> data(IO_Time)> IO_lm = lm(CPU_Time ~ No_of_IO,data=IO_Time)> class(IO_lm)> summary(IO_lm)结果中:F-statistic: 635.4 on 1 and

利用R进行多元线性回归分析

对于一个因变量y,n个自变量x1,...,xn,要如何判断y与这n个自变量之间是否存在线性关系呢? 肯定是要利用他们的数据集,假设数据集中有m个样本,那么,每个样本都分别对应着一个因变量和一个n维的自变量: m个样本,就对应着一个m维的列向量Y,一个m×n维的矩阵X Y是X的每一列X1,...,Xn的函数 那么,Y与X1,...,Xn之间到底是什么关系呢?是满足Y=a1*X1+...+an*Xn这样的线性关系还是Y=f(X1,...,Xn)这样的非线性关系呢? 为了解决这个问题,可以首先利用多元

R语言解决最优化运营研究问题-线性优化(LP)问题

使用R中的线性编程工具来解决优化问题. 优化通常用于运营研究领域,以解决生产计划,运输网络设计,仓库位置分配和调度等问题,我们尝试最大化或最小化具有决策变量和约束数量的线性函数. 在这里,我使用了我的一个咨询项目,帮助我们的投资组合公司选择一个无线供应商,其中包含可以满足所有要求(总线数和汇总数据量)的数据计划组合,同时花费最少的金钱. 这种优化通常可以在Excel求解器中解决.但是,由于我有20个投资组合公司有2个提供商和2个方案进行分析,要在Excel中完成,我将不得不运行80次.使用R会容

R语言笔记之数据篇

R语言杂七杂八 与R语言有关的应用工具 探索性数据分析 统计推断 回归分析 机器学习-分类问题 R与Rstudio的获取与安装 包package一种扩展R基本功能的机制集成了众多函数 获取包 导入包libraryname 获取帮助 R语言特点 R语言语法基础之数据篇 R语言中的数据 R语言支持的数据类型 基本数据结构 一维数据类型 向量 vocter 1创建 2提取子集 因子 factor 1创建 2提取子集 二维数据类型 矩阵 matrix 1生成矩阵 1matrix方法 2 修改dim属性来