c++多元线性回归_多元线性回归方法用于右眼视力预测

这篇博客介绍了如何使用C++进行多元线性回归分析来预测右眼视力。通过数据预处理、模型构建、变量选择、模型诊断和异常值处理,最终确定了一个包含6个显著自变量的模型,该模型具有较高的R2值和调整R2值,满足线性关系、残差正态性等统计假设。模型经过异常值处理和假设检验后,可用于右眼视力的预测。
摘要由CSDN通过智能技术生成

73fe95d67f357cfba1fe782a64371174.png

一、实验背景

回归主要关注确定一个唯一的因变量(dependent variable)(需要预测的值)和一个或多个数值型的自变量(independent variable)(预测变量)之间的关系。我们首先假设因变量和自变量之间的关系遵循一条直线,即线性关系。

关于视力的定量预测方法很多,本文主要介绍多元线性回归方法在右眼视力预测中的具体操作。

训练集及测试集结构如下:

49d2091b4285da1a21940562187daa8e.png

二、提出问题

1、在众多变量中判断哪些对预测右眼视力是有用的,得到它们的相对重要性,从而关注重要的变量。

2、根据回归所得的等式预测新的测试集里右眼的视力情况(预测变量的值已知,但是右眼视力RA值未知)。

3、我们对右眼视力预测有多准确?

4、利用对异常右眼视力的分析,获得一些意外的信息。那么研究这些“离群点”可能会有重大的发现,能够帮助理解影响右眼视力的因素。

三、实验步骤

用R函数拟合OLS回归模型、评价拟合优度、检验假设条件以及选择模型,我们首先需要对选取多元数据集并定义数学模型,然后进行参数估计,对估计出来的参数进行显著性检验,残差分析,异常点检测,最后确定回归方程进行模型预测。并用模型预测测试集中。

(一)查看数据特征

  1. 查看数据结构
> dim(testset)
[1] 2094   72

共有72个变量(其中包括71个自变量和1个因变量),2094条记录

2. 缺失值处理

(1)查看每列的缺失值比例

 colmissing <- apply(eyesight, 2, function(x) {sum(is.na(x))/length(x)*100})
 colmissing

结果:

33c9a9f45d85e75a113d4ba186e32050.png
查看每列缺失值的比例

(2)对于缺失值超过30%(>628)的变量采取删除该变量的方法

缺失值数目:CHGLASS1 1411; DRWBASE 1343; NRWBASE 1359; JNGLASS 1394 共删除4个变量,剩余68个变量

eyesight_new<-eyesight[,-match(c("CHGLASS1","DRWBASE","NRWBASE","JNGLASS"),names(eyesight))]
dim(eyesight_new)

2094 68

(3)对于缺失值未超过30%(<628)的变量采取用中位数填补的方法(若存在较大偏离的异常值,平均数不能反应大部分数据特征)

 for(i in seq(1,72)){eyesight[,i]<-impute(eyesight[,i],median)}

2. 异常值处理

  outlier.IQR <- function(x, multiple = 1.5, replace = FALSE, revalue = NA) {
  q <- quantile(x, na.rm = TRUE) #四分位间距3倍间距以外的认为是离群值
  IQR <- q[4] - q[2]
  x1 <- which(x < q[2] - multiple * IQR | x > q[4] + multiple * IQR)
  x2 <- x[x1]
  if (length(x2) > 0) outlier <- data.frame(location = x1, value = x2)
  else outlier <- data.frame(location = 0, value = 0)
  if (replace == TRUE) {
  x[x1] <- revalue
  }
  return(list(new.value = x, outlier = outlier))
 }
  
 qh_RAXISLEG<-outlier.IQR(df$RAXISLEG) qh_RANTECHA<-outlier.IQR(df$RANTECHA)#[1] 69 148 174 284 320 376 388 431 447 454 625 785 826 911 976 995 1035 1079 1123
 qh_DRNBASE<-outlier.IQR(df$DRNBASE)
 qh_RPR<-outlier.IQR(df$RPR) 
 qh_RCORCU<-outlier.IQR(df$RCORCU)
  
 x1<-union(qh_RAXISLEG$outlier$location,qh_RANTECHA$outlier$location)
 x2<-union(x1,qh_DRNBASE$outlier$location)
 x3<-union(x2,qh_YTR$outlier$location)
 x4<-union(x3,qh_RCORCU$outlier$location)
 df<-df[-x4,]
 dim(df)
 

(二)构建模型

1.确定因变量及模型形式

设右眼视力(RA)与其他变量有线性关系,那么我们建立以RA为因变量

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值