我有一个更大的数据集,下面是该数据的子集。范畴是因变量,Day_1和Day_2是自变量。
ID <- c("e-1", "e-2", "e-3", "e-8", "e-9", "e-10", "e-13", "e-16", "e-17", "e-20")
Day_1 <- c(0.58, 0.62, 0.78, 0.18, 0.98, 0.64, 0.32, 0.54, 0.94, 0.87)
Day_2 <- c(0.58, 0.65, 0.25, 0.34, 0.17, 0.82, 0.67, 0.39, 0.49, 0.86)
Category <- c(1, 1, 0, 1, 0, 1, 1, 1, 0, 1)
df <- data.frame(ID, Day_1, Day_2, Category)由于0和1类的样本大小不同(3 -类别0和7类别1),我想进行交叉乘法。这意味着重复所有类别0数据点7次,所有类别1数据点重复3次,这样都有一个新的样本大小为7*3。最后的数据帧应该包含所有列,作为'df‘,但也包括所有增加的行。
我应该怎么在R里这么做?
发布于 2022-08-22 05:49:44
这可能是错误的方法,因为您将增加整个样本大小,从而夸大t-统计。
请参见这个带有二进制因变量的小示例。通过将样本大小加倍(而不改变"am"的比例),您将得到不同的结果。
summary(glm(am ~ mpg, mtcars, family='binomial'))
# Estimate Std. Error z value Pr(>|z|)
# mpg 0.3070 0.1148 2.673 0.00751 **
summary(glm(am ~ mpg, rbind(mtcars, mtcars), family='binomial'))
# Estimate Std. Error z value Pr(>|z|)
# mpg 0.30703 0.08121 3.781 0.000156 ***您需要的是频率w8,它是通过将总体比例(在您的情况下都是.5)除以样本比例得到的。为此您可以使用mapply。
mtcars <- transform(mtcars,
w=mapply(`/`,
c(`0`=.5, `1`=.5),
proportions(table(am)))[as.character(am)])
summary(glm(am ~ mpg, mtcars, weights=w, family='binomial'))
# Estimate Std. Error z value Pr(>|z|)
# mpg 0.3005 0.1123 2.676 0.00746 ** https://stackoverflow.com/questions/73440135
复制相似问题