我正在尝试对R中的自举样本进行回归分析。
原始样本看起来像此数据框(称为df),并且具有数百个条目。 Y是结果变量,对待是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)
然后运行以下回归。
lm(b1 ~ treat, df)
将样本b1用作回归结果时,这是否会自动将b1的正确值与原始数据框中的处理值进行匹配?如果我希望b1中的结果值与原始数据帧中的正确处理值相对应,是否需要做一些不同的事情?如何检查这是我要运行的回归?
我们可以按行的顺序而不是单列的sample
。在OP的代码中,它只是对'y'进行采样,而使'treat'仅包含4个元素,并且当我们应用公式方法时,这将导致错误,因为对象之一的长度不同。
lm(b1 ~ treat, df)
model.frame.default(formula = b1〜Treat,data = df,drop.unused.levels = TRUE):可变长度有所不同(适用于“治疗”)
相反,我们在行序列上为sample
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))