【发布时间】:2012-01-23 17:16:11
【问题描述】:
我在 R 中有一个使用矩阵的向量化 Q。我有 2 个列需要使用某些索引对每个列进行回归。数据是
matrix_senttoR = [ ...
0.11 0.95
0.23 0.34
0.67 0.54
0.65 0.95
0.12 0.54
0.45 0.43 ] ;
indices_forR = [ ...
1
1
1
2
2
2 ] ;
矩阵中的 Col1 是 MSFT 和 GOOG 的数据(每行 3 行),Col2 是基准 StkIndex 在相应日期的返回值。数据是矩阵格式,因为它是从 Matlab 发送的。
我现在使用
slope <- by( data.frame(matrix_senttoR), indices_forR, FUN=function(x)
{zyp.sen (X1~X2,data=x) $coeff[2] } )
betasFac <- sapply(slope , function(x) x+0)
我正在使用上面的 data.frame,因为我无法使用 cbind()。如果我使用 cbind() 那么 Matlab 会给出一个错误,因为它不理解该数据格式。我正在从 Matlab (http://www.mathworks.com/matlabcentral/fileexchange/5051) 内部运行这些命令。您可以将zyp (zyp.sen) 替换为lm。
BY 这里很慢(可能是因为数据帧?)。有更好的方法吗? 150k 行数据需要 14 秒以上。我可以在 R 中使用矩阵向量化吗?谢谢。
【问题讨论】:
-
如果您只是在运行回归,为什么还要将代码从 MATLAB 传递到 R? Stats 工具箱中的 MATLAB
regress函数可以解决问题。 -
对代码进行一些分析以查看减速的位置也是一个好主意。您需要知道
by占用了多少时间,建模函数占用了多少时间,以及在 MATLAB 和 R 之间传递数据花费了多少时间。 -
@Richie -> 这是因为我正在尝试进行非参数回归,特别是使用 zyp 库包。我所有的数据都在 Matlab 中。我唯一的选择是自己在 Matlab 中设计 Theil-Sen Regressor!
标签: r matrix dataframe vectorization regression