我正在尝试使用PLS库来运行偏最小二乘回归。我用MATLAB从R.matlab'中导入了我的数据。图书馆。 我设法将一个矩阵很容易地插入到数据帧中,因为它是一维向量。它显示为
my_1d_matrix ... num [1:205,1] 124 138 38 76 155 ...
我的其他矩阵 205x4096 。它在我的工作区中显示如下:
my_2d_matrix ...大型列表(205个元素,6.5 Mb)
如何在同一数据框中插入此作为我的第二个变量?
从PLS introductory pdf,我看到'汽油'他们使用的数据集由“辛烷值”组成。 (1d矢量)和' NIR' (2D大矩阵),所以我想对我的数据做同样的事情。因此,我认为我的二维矩阵应该具有相同的格式:
> library(pls)
> data(gasoline)
> str(gasoline$NIR)
是:
>AsIs [1:60, 1:401] -0.050193 -0.044227 -0.046867 -0.046705 -0.050859 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:60] "1" "2" "3" "4" ...
..$ : chr [1:401] "900 nm" "902 nm" "904 nm" "906 nm" ...
因此,最终结果应该是类似于'汽油的数据框,其中第一个变量是 my_1d_matrix 而第二个 one是 my_2d_matrix 。
答案 0 :(得分:1)
目前您的数据被读入列表,即您的2d矩阵,响应变量是矩阵。要将两者放入数据框,您可以尝试:
myData <- data.frame(y = my_1d_matrix)
myMat <- matrix(0,205,4096)
for(i in 1:205){
myMat[i,] <- my_2d_matrix[[i]]
}
myData <- cbind(myData,myMat)
现在您应该可以致电plsr
:
myModel <- plsr(y ~ ., ncomp = 10, data = myData)
点.
只是意味着使用所有变量,因为myData
数据框中没有指定名称,可能将名称作为数字。
如果这不起作用,那很可能是因为my_2d_matrix[[i]]
包含的东西只是一个数字向量。
您可能希望在数据框中指定变量的名称,第一列是响应,其余的是大矩阵中的变量。