无法理解以下R代码中的上限和下限

问题描述

我已经粘贴了最后遇到问题的代码。它包含R条命令行,以显示在组1的能力得分水平上观察到的正确响应的比例。 组1的能力下限由t1l规定,这意味着theta-1较低;组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)

解决方法

您的下面的代码完全可以完成

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] <= t2ltheta0.9375lowerg122的时间。

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

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