引导样本结果变量是否与R中回归中的x值关联

引导样本结果变量是否与R中回归中的x值关联,r,regression,linear-regression,sample,R,Regression,Linear Regression,Sample,我试图在R中的引导样本上运行回归 原始示例看起来像这个数据帧(称为df),有数百个条目。Y是结果变量,treat是0或1 y treat 3 0 5 1 2 0 4 1 我用替代品取样,从df$y生成900个观测值 set.seed(5) b1 <- sample(df$y, 900, replace = TRUE, prob = NULL) 当使用样本b1作为回归结果时,是否会自动将b1的正确值与原始数据帧中的treat值匹配?如果我希望b1中的结果值与原始数据帧中正确的t

我试图在R中的引导样本上运行回归

原始示例看起来像这个数据帧(称为df),有数百个条目。Y是结果变量,treat是0或1

y  treat
3  0
5  1
2  0
4  1
我用替代品取样,从df$y生成900个观测值

set.seed(5)
b1 <- sample(df$y, 900, replace = TRUE, prob = NULL)

当使用样本b1作为回归结果时,是否会自动将b1的正确值与原始数据帧中的treat值匹配?如果我希望b1中的结果值与原始数据帧中正确的treat值相对应,我是否需要做一些不同的事情?如何检查这是否是我正在尝试运行的回归

我们可以对行序列而不是单个列进行
sample
。在OP的代码中,它只是对“y”进行采样,而“treat”只剩下4个元素,当我们应用公式方法时,这将导致错误,因为其中一个对象的长度不同

lm(b1 ~ treat, df)   
model.frame.default中存在错误(公式=b1~treat,数据=df, drop.unused.levels=TRUE): 可变长度不同(针对“treat”找到)

相反,我们对行序列进行
sample

set.seed(5)
df1 <- df[sample(seq_len(nrow(df)), 900, replace = TRUE),]
lm(y ~ treat, df1)
set.seed(5)

现在,长度不同了。可能您需要
df1我目前运行的回归,即使没有这样做。当它运行时发生了什么?我很惊讶它跑的长度不同。编辑:原始示例恰好也是900,这解释了它为什么运行。回归是错误的,但长度是相同的。您展示的示例给出了
lm(b1~treat,df)
的错误,如果长度是相同的,那么它应该可以工作。i、 e.如果原始样本有900行,并且您只想在这种情况下采样,那么如果您在行序列上采样,它不会破坏这一点,因为您是在以行为单位的行序列上扩展基于数据的数据,@melbez
nrow
也应该工作,但存在一些边缘情况
set.seed(5)
df1 <- df[sample(seq_len(nrow(df)), 900, replace = TRUE),]
lm(y ~ treat, df1)
df <- structure(list(y = c(3L, 5L, 2L, 4L), treat = c(0L, 1L, 0L, 1L
)), class = "data.frame", row.names = c(NA, -4L))