首页 > 解决方案 > 无法理解以下 R 代码中的上限和下限

问题描述

我在最后粘贴了我遇到问题的代码。它包含 R 命令行来显示观察到的正确响应在第 1 组能力得分水平上的比例。第 1 组的能力下限用 t1l 指定,表示 theta-1-lower;第 1 组的能力上限由 t1u 指定,这意味着 theta-1-upper:在此代码之前,还有另一个代码将 theta 定义如下:

theta <- seq(-3, 3, .1875)
f <- rep(21, length(theta))

然后提到了这段代码。我的理解是,这段代码在 2 个界限之间找到了一些值。但是觉得如果我想在 1 和 3 之间找到一些东西,那么我应该编写一个代码,说明我想找到小于 3 和大于 1 的值。但是,此代码为下限执行此操作

theta[g] <= t2l) { lowerg1 <- lowerg1 + 1 }

这意味着它找到小于 1 的值?小于 1 的值类似于 0 、 -1 -2 等,我们希望在 1 和 3 之间找到值。我觉得我们应该改为说 theta[g] >= t2l) 以便我可以找到大于 1 的值所以我可以找到像 2 这样介于 3 和 1 之间的值它对上限做同样的事情。但这会发现所有低于 3 的值,而不仅仅是在 3 和 1 之间

theta[g] <= t2u) 

这就是我如何可视化正在发生的事情 https://i.stack.imgur.com/uPiiS.png 这就是我觉得事情应该是 https://i.stack.imgur.com/Jyly1.png

t2l <- 1
t2u <- 3
lowerg1 <- 0
for (g in 1:length(theta)) {
if (theta[g] <= t2l) { lowerg1 <- lowerg1 + 1 }
}
upperg1 <- 0
for (g in 1:length(theta)) {
if (theta[g] <= t2u) { upperg1 <- upperg1 + 1 }
}
theta2 <- theta[lowerg1:upperg1]
p2 <- p[lowerg1:upperg1]
if (mdl == 1) { maintext <- paste("Group 2", "\n") }
if (mdl == 2) { maintext <- paste("Group 2", "\n") }
if (mdl == 3) { maintext <- paste("Group 2", "\n") }
plot(theta2, p2, xlim=c(-3,3), ylim=c(0,1),
xlab="Ability", ylab="Probability of Correct Response",
main=maintext)

标签: rstatisticsmeasurement

解决方案


您下面的代码完全按照它应该做的

t2l <- 1
t2u <- 3
lowerg1 <- 0
for (g in 1:length(theta)) {
  if (theta[g] <= t2l) { lowerg1 <- lowerg1 + 1 }
}
upperg1 <- 0
for (g in 1:length(theta)) {
  if (theta[g] <= t2u) { upperg1 <- upperg1 + 1 }
}
theta2 <- theta[lowerg1:upperg1]

最后一次theta[g] <= t2l是 when thetawas0.9375lowerg1is 22

定义 theta2 的更简单方法如下所示

theta2 <- theta %>% subset(theta>=t2l & theta<=t2u)

推荐阅读