【问题标题】:Writing a loop for randomly selecting rows of a matrix and doing a linear regression on data from rows and storing in a matrix编写一个循环来随机选择矩阵的行并对行中的数据进行线性回归并存储在矩阵中
【发布时间】:2013-12-05 02:17:41
【问题描述】:

我需要编写一个在 R 中执行以下操作的程序:

我有一个包含 y 变量和 x 变量的数据集(42 行,2 列)。

我想从这个矩阵中随机选择 12 行,并记录随机生成的矩阵的线性回归的系数(斜率和截距)。我还想为此编写一个循环,这样我就可以重复 1000 次,这样我就可以拥有一个 1000 行和 2 列的矩阵,其中填充了从我的数据中随机选择的 12 行的 1000 个集合的斜率和截距放。

我能够做到这一点,但不知道如何将循环合并到代码中,以及将系数存储到矩阵中的方法。

#Box.Z and Box.DC.gm are columns of data used to generate my initial matrix of data

A <- matrix(c(Box.Z, Box.DC.gm), nrow=42)
B <- A[sample(42, 12), ]
C <- lm(B[,2] ~ B[,1])
D <- matrix(c(coefficients(C)), ncol =2)

【问题讨论】:

    标签: r loops random-sample


    【解决方案1】:

    可能是这样的:

    #set.seed(23)
    A <- matrix(runif(84),ncol=2)
    
    randco <- function(A) {
      B <- A[sample(42,12),]
      lm(B[,2] ~ B[,1])$coefficients
    }
    
    t(replicate(10,randco(A)))
    
    #      (Intercept)        B[, 1]
    # [1,]   0.6018459 -0.1643174222
    # [2,]   0.4411607  0.0005322798
    #...
    # [9,]   0.3201649  0.4848679516
    #[10,]   0.5413830  0.1850853748
    

    【讨论】:

    • 非常感谢您的快速回复。我在矩阵中的行中有数据,我需要对其运行回归,所以我不确定如何将其包含在代码中。我是 R 代码的初学者,所以我不太确定代码的“Set.seed(23)”部分在做什么。再次感谢!
    • @Jason - 我已更新为使用矩阵作为输入。 set.seed 位只是设置随机数生成器,以便您获得相同的结果以确保代码对您同样有效。对于其余的答案,这并不过分。
    • 非常感谢您的帮助,您的代码非常出色。我唯一的问题是,如果我有一个数据矩阵“A
    • @Jason - 只需用您的 A &lt;- matrix(c(Box.z ... 代码替换我的答案中的 A &lt;- ... 行,一切都应该正常工作。
    • 它有效。这是非常感谢的。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2013-12-22
    • 2018-03-29
    • 2018-09-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多