On 29/09/2020 5:37 a.m., Helmut Schütz wrote:
Dear Duncan,
Duncan Murdoch wrote on 2020-09-28 21:47:
You're doing a lot of manipulation of the z matrix; I haven't followed
all of it, but that's where I'd look for problems. Generally if you
keep your calculation of the z matrix very simple you are better off.
For example, once you have xs and ys in the form you want, calculate z as
z <- outer(x,y, function(x,y) ...)
>>
>> and then plot it using contour(x, y, z, ...)
Sorry, that was a typo, should have been
z <- outer(xs,ys, function(x,y) ...)
contour(xs, ys, z)
The only tricky issue here is that the function needs to be
vectorized, so if your power.TOST function doesn't accept vectors for
CV and theta0,
you'll need to put it in a wrapper that does (perhaps using the
Vectorize function).
Here I'm lost. power.TOST(theta0, CV, ...) vectorizes properly for
theta0 _or_ CV but no _both_. Hence
library(PowerTOST)
power.TOST(theta0 = c(0.9, 0.95, 1), CV = 0.25, n = 28)
and
power.TOST(theta0 = 0.95, CV = c(0.2, 0.25, 0.3), n = 28)
work, whereas
power.TOST(theta0 = c(0.9, 0.95, 1), 0.95, CV = c(0.2, 0.25, 0.3), n = 28)
not. Of note, we will throw an error in the next release if both
arguments are vectors.
I wouldn't do that, because it doesn't fit the usual R style. It's very
common for functions to allow vector inputs in several arguments, and
match up corresponding values to form a vector result.
I tried
f <- function(x, y) {
power.TOST(theta0 = x, CV = y, n = 28)
}
x <- unique(sort(c(0.95, seq(0.95*0.95, 1, length.out = 28))))
y <- unique(sort(c(0.25, seq(0.25*0.8, 0.25*1.2, length.out = 28))))
Vectorize(f, c("x, y"), SIMPLIFY = "array")
which is obviously not correct.
If you want to use Vectorize, the command would be
power.TOST.vectorized <- Vectorize(power.TOST, c("theta0", "CV"))
A roughly equivalent version (without the recycling that Vectorize does)
would be
power.TOST.vectorized <- function(theta0, CV, ...) {
result <- length(theta0)
for (i in seq_along(theta0))
result[i] <- power.TOST(theta0[i], CV[i], ...)
result
}
Duncan Murdoch
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.