自编R计算MSE(均方误差)
基本原理
1.生成关于x1~N(5,3),x2~N(100,10),error~N(0,1) 2.自己定一个实际对线性回归模型,并计算得到真实的y y = 1.5+0.8x1+1.8x2+error 3.对x1,x2 进行线性拟合,当然这里也可以自写函数用最小二乘法原理,进行参数对估计 4.提取的每一个beta1,beta2 5.计算他的均方误差,
代码
k = 100000 # 定义实验次数 beta_x1 = c() # 定义空列 beta_x2 = c() for (i in 1:k) { beta1 = 0.8 # 设置真实系数 beta2 = 1.8 x1 = rnorm(100,5,3) # 产生随机数 x2 = rnorm(100,100,10) error = rnorm(100,0,1) # 产生随机误差 y = 1.5+0.8*x1+1.8*x2+error data1 = data.frame(x1,x2,y) # 构建数据框 res = lm(y~x1+x2,data = data1) res = summary(res) beta1_r = (res$coefficients[2]-beta1)^2 # 取估计的系数 beta2_r = (res$coefficients[3]-beta2)^2 beta_x1 = c(beta_x1,beta1_r) # 追加成向量 beta_x2 = c(beta_x2,beta2_r) } MSEx1 = sum(beta_x1)/length(beta_x1) # 求MES的公式 MSEx2 = sum(beta_x2)/length(beta_x2) message(x1的MES为:,MSEx1) message(x2的MES为:,MSEx2)
下一篇:
数据结构与算法——插值查找