前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自编R计算MSE(均方误差)[通俗易懂]

自编R计算MSE(均方误差)[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-27 09:53:48
5610
发布2022-09-27 09:53:48
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

基本原理

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.计算他的均方误差,计算公式

代码

代码语言:javascript
复制
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)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/187750.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本原理
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档