0

我遇到了一个问题,关于最小化绝对误差,这个问题被称为 LAD(最小绝对偏差),但是,由于每个回归量都是昂贵测试的结果和相关成本,所以应该避免使用不使用的回归量t 高度解释方差。它采用以下等式:

在此处输入图像描述

其中 N 是观察的总数,E 是与观察 i 相关的偏差,S 是独立变量的数量,lambda 是成本的惩罚系数,C 是与执行测试相关的成本。

到目前为止,我的方向和往常一样。为了使它成为线性的,我将绝对值转换为两个错误,e^+ 和 e^-,其中 e= y_i-(B_0+sum(B_j*X_ij) 和以下约束:

  • z_j ={0,1},关于回归量是否进入我的模型的二进制值。

  • B_i<=M_zj; B_i>=-M_zj

  • E^+, E^- >=0

我正在处理的数据的玩具子集具有以下结构:对于 y

 quality
1       5
2       5
3       5
4       6
5       7
6       5

对于回归者

fixed.acidity volatile.acidity citric.acid
1           7.5            0.610        0.26
2           5.6            0.540        0.04
3           7.4            0.965        0.00
4           6.7            0.460        0.24
5           6.1            0.400        0.16
6           9.7            0.690        0.32

而且为了成本

fixed.acidity volatile.acidity citric.acid
1          0.26              0.6        0.52

到目前为止,我的代码如下所示:

# loading the matrixes
y <- read.csv(file="PATH\\y.csv", header = TRUE, sep = ",") #dim=100*11
regresores <- read.csv(file="PATH\\regressors.csv", header = TRUE, sep = ",")#dim=100*1
cost <- read.csv(file="PATH\\cost.csv", header = TRUE, sep = ",")#dim=1*11

for  (i in seq(0, 1, by = 0.1)){#so as to have a collection of models with          different penalties
  obj.fun <- c(1,1,i*coste)
  constr <- matrix(
    c(y,regresores,-regresores),
    c(-y,-regresores,regresores),
    sum(regresores),ncol = ,byrow = TRUE)
  constr.dir <- c("<=",">=","<=","==")
  rhs<-c(regresores,-regresores,1,binary)
  sol<- lp("min", obj.fun, constr, constr.tr, rhs)
  sol$objval
  sol$solution}

我知道 R 中有一个 LAD 函数,但是为了与我的同事以及一个非常烦人的博士导师保持一致,我必须lpSolve在 R 中执行此操作。我刚刚开始使用 R 进行该项目,但我没有确切地知道为什么这不会运行。语法或我的模型表述是否有问题。知道,我的主要问题是:

“矩阵中的错误(c(y,回归量,-回归量),c(-y,-回归量,回归量),:非数字矩阵范围”。

主要是,我打算让它创建所述加权 LAD 模型并让它返回不同的 lambda 值,从 0 到 1,步长为 0.1。

在此先感谢您对任何不便深表歉意,英语和 R 都不是我的母语。

4

0 回答 0