Bebac user
☆    

Egypt,
2022-01-23 11:55
(795 d 00:52 ago)

Posting: # 22738
Views: 2,293
 

 intrasubject variability [Power / Sample Size]

How can I calculate the intrasubject variability (CV) after my study was done ?
Using MSE or (POE, U, L) ?

I tried to compare them for Partially replicated study:
CV for Cmax by MSE = 51.59%
CV for Cmax by (POE, U, L) = 43.27%
So, which one is the correct ?
ElMaestro
★★★

Denmark,
2022-01-23 13:24
(794 d 23:23 ago)

@ Bebac user
Posting: # 22739
Views: 1,958
 

 intrasubject variability

Hi Bebac_user,

❝ How can I calculate the intrasubject variability (CV) after my study was done ?

❝ Using MSE or (POE, U, L) ?


Both should work and both will give the same result within the meaning of rounding.

❝ I tried to compare them for Partially replicated study:

❝ CV for Cmax by MSE = 51.59%

❝ CV for Cmax by (POE, U, L) = 43.27%

❝ So, which one is the correct ?


Well, I think you may have made a tiny mistake somewhere since you did not get the same result. But I can't tell from your post where the hickup is.
Probably the MSE is the most direct method for getting a CV, but if the design was semirepl. then the intrasubject var. associated with ref might not have come from an MSE. It really depends on the steps you took. The devil is in the detail. So kindly provide more of it :-)

Pass or fail!
ElMaestro
Helmut
★★★
avatar
Homepage
Vienna, Austria,
2022-01-23 14:12
(794 d 22:35 ago)

@ Bebac user
Posting: # 22740
Views: 2,017
 

 replicate designs: intrasubject variability

Hi Bebac user,

❝ How can I calculate the intrasubject variability (CV) after my study was done ?

❝ Using MSE or (POE, U, L) ?


❝ I tried to compare them for Partially replicated study:

❝ CV for Cmax by MSE = 51.59%

❝ CV for Cmax by (POE, U, L) = 43.27%

❝ So, which one is the correct ?


It depends on what you want and what for. From the ANOVA of replicate designs (partial and full) you get the with-subject \(\small{CV_\textrm{w}}\) by $$\small{CV_\textrm{w}=\sqrt{\exp(MSE)-1}}\tag{1}$$ To get the pooled \(\small{CV_\textrm{w}}\) from \(\small{CV_\textrm{wT}}\) and \(\small{CV_\textrm{wR}}\) you have to convert them to their associated variances $$\small{\begin{matrix}\tag{2}
s_\textrm{wT}^2=\log_{e}(CV_\textrm{wT}^2+1)\\
s_\textrm{wR}^2=\log_{e}(CV_\textrm{wR}^2+1)
\end{matrix}}$$ calculated their mean $$\small{s_\textrm{w}^2=(s_\textrm{wT}^2+s_\textrm{wR}^2)/2}\tag{3}$$ and back-transform to the \(\small{CV_\textrm{w}}\) $$\small{CV_\textrm{w}= \sqrt{\exp(s_\textrm{w}^2)-1}}\tag{4}$$ This is exact only in a full replicate design because in a partial replicate \(\small{CV_\textrm{wT}}\) is unknown. \(\small{CV_\textrm{w}}\) obtained by \(\small{(4)}\) is identical to the one obtained by \(\small{(1)}\) only if sequences are balanced. Let’s try that:

library(replicateBE)
library(PowerTOST)
# Patterson & Jones https://doi.org/10.1002/pst.498 (Table II)
# partial replicate, balanced, complete

x   <- method.A(data = rds04, verbose = TRUE, print = FALSE,
                details = TRUE)
# get subjects / sequence
n   <- as.integer(strsplit(x[["Sub/seq"]], "\\|")[[1]])
# CVw from the CI
CVw <- CI2CV(lower = x[["CL.lo(%)"]], upper = x[["CL.hi(%)"]],
             design = "2x3x3", n = n)
cat(paste0("Design: ", x[["Design"]],
    ", subjects / sequence: ", x[["Sub/seq"]], "\n"),
    sprintf("CVwR from Method A  = %.2f%%", x[["CVwR(%)"]]), "\n",
    sprintf("CVwT from Method A  = %.2f%%", x[["CVwT(%)"]]), "\n",
    sprintf("CVw  from CI        = %.2f%%", 100 * CVw), "\n",
    sprintf("CVw  from ANOVA MSE = %.2f%%", 100 * mse2CV(0.28377)), "\n")

Data set DS04: Method A by lm()
───────────────────────────────────
Type III Analysis of Variance Table

Response: log(PK)
                 Df  Sum Sq Mean Sq  F value     Pr(>F)
sequence          2  4.2619 2.13095  2.06562 0.13785915
period            2  0.0657 0.03287  0.11582 0.89075874
treatment         1  3.4031 3.40306 11.99223 0.00079058
sequence:subject 48 49.5180 1.03162  3.63540 2.9213e-08
Residuals        99 28.0935 0.28377                   

treatment T – R:
   Estimate  Std. Error     t value    Pr(>|t|)
0.316370000 0.091357800 3.462980000 0.000790582
99 Degrees of Freedom

Design: TRR|RTR|RRT, subjects / sequence: 17|17|17
 CVwR from Method A  = 61.22%
 CVwT from Method A  = NA%
 CVw  from CI        = 57.28%
 CVw  from ANOVA MSE = 57.28%

Of course, we don’t get \(\small{CV_\textrm{wT}}\) in the partial replicate design. Since the study was balanced, \(\small{CV_\textrm{w}}\) calculated from the CI is identical to the one obtained from the ANOVA’s \(\small{MSE}\).

Let’s remove the first subject from the data set and see what happens.

rds04 <- rds04[rds04$subject != 1, ] # keep all but the first -> imbalanced
x   <- method.A(data = rds04, verbose = TRUE, print = FALSE,
                details = TRUE)
n   <- as.integer(strsplit(x[["Sub/seq"]], "\\|")[[1]])
CVw <- CI2CV(lower = x[["CL.lo(%)"]], upper = x[["CL.hi(%)"]],
             design = "2x3x3", n = n)
cat(paste0("Design: ", x[["Design"]],
    ", subjects / sequence: ", x[["Sub/seq"]], "\n"),
    sprintf("CVwR from Method A  = %.2f%%", x[["CVwR(%)"]]), "\n",
    sprintf("CVwT from Method A  = %.2f%%", x[["CVwT(%)"]]), "\n",
    sprintf("CVw  from CI        = %.2f%%", 100 * CVw), "\n",
    sprintf("CVw  from ANOVA MSE = %.2f%%", 100 * mse2CV(0.28825)), "\n")

Data set DS04: Method A by lm()
───────────────────────────────────
Type III Analysis of Variance Table

Response: log(PK)
                 Df  Sum Sq Mean Sq  F value     Pr(>F)
sequence          2  2.8418 1.42092  1.43254  0.2489319
period            2  0.0461 0.02303  0.07989  0.9232771
treatment         1  3.2785 3.27853 11.37382  0.0010713
sequence:subject 47 46.6188 0.99189  3.44104 1.3845e-07
Residuals        97 27.9605 0.28825                   

treatment T – R:
  Estimate Std. Error    t value   Pr(>|t|)
0.31368000 0.09301090 3.37251000 0.00107127
97 Degrees of Freedom

Design: TRR|RTR|RRT, subjects / sequence: 17|16|17
 CVwR from Method A  = 61.60%
 CVwT from Method A  = NA%
 CVw  from CI        = 57.79%
 CVw  from ANOVA MSE = 57.80%

Not exactly the same but pretty close.

What about an imbalanced and incomplete (periods missing) full replicate design?

# The EMA's (in)famous reference data set I
x   <- method.A(data = rds01, verbose = TRUE, print = FALSE,
                details = TRUE)
n   <- as.integer(strsplit(x[["Sub/seq"]], "\\|")[[1]])
CVw <- CI2CV(lower = x[["CL.lo(%)"]], upper = x[["CL.hi(%)"]],
             design = "2x2x4", n = n)
cat(paste0("Design: ", x[["Design"]],
    ", subjects / sequence: ", x[["Sub/seq"]], "\n"),
    sprintf("CVwR from Method A  = %.2f%%", x[["CVwR(%)"]]), "\n",
    sprintf("CVwT from Method A  = %.2f%%", x[["CVwT(%)"]]), "\n",
    sprintf("CVw  from CI        = %.2f%%", 100 * CVw), "\n",
    sprintf("CVw  from ANOVA MSE = %.2f%%", 100 * mse2CV(0.159995)), "\n")

Data set DS01: Method A by lm()
───────────────────────────────────
Type III Analysis of Variance Table

Response: log(PK)
                  Df   Sum Sq  Mean Sq  F value     Pr(>F)
sequence           1   0.0077 0.007652  0.00268  0.9588496
period             3   0.6984 0.232784  1.45494  0.2278285
treatment          1   1.7681 1.768098 11.05095  0.0010405
sequence:subject  75 214.1296 2.855061 17.84467 < 2.22e-16
Residuals        217  34.7190 0.159995             

treatment T – R:
  Estimate Std. Error    t value   Pr(>|t|)
0.14547400 0.04650870 3.12788000 0.00200215
217 Degrees of Freedom

Design: TRTR|RTRT, subjects / sequence: 39|38
 CVwR from Method A  = 46.96%
 CVwT from Method A  = 35.16%
 CVw  from CI        = 42.58%
 CVw  from ANOVA MSE = 41.65%

Not so close. \(\small{(3)}\) is only correct for balanced sequences. Although it’s possible to weigh the variances by the degrees of freedom, I wouldn’t do that.

Conclusion: If you have the ANOVA and are interested in \(\small{CV_\textrm{w}}\), use \(\small{(1)}\).

Dif-tor heh smusma 🖖🏼 Довге життя Україна! [image]
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes
Bebac user
☆    

Egypt,
2022-01-23 15:03
(794 d 21:44 ago)

@ Helmut
Posting: # 22741
Views: 1,926
 

 replicate designs: intrasubject variability

Thank you my role model for this pretty answer.
Helmut
★★★
avatar
Homepage
Vienna, Austria,
2022-01-23 15:16
(794 d 21:31 ago)

@ Bebac user
Posting: # 22742
Views: 2,002
 

 OT

Hi Bebac user,

❝ Thank you my role model …


Well. On my way from قنا to سفاجا in August 1979. Note the speargun attached to my backpack.
Was before I got my first diving certification. :-D

[image]


❝ … for this pretty answer.


Welcome!

Dif-tor heh smusma 🖖🏼 Довге життя Україна! [image]
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes
Bebac user
☆    

Egypt,
2022-01-23 21:47
(794 d 15:00 ago)

@ Helmut
Posting: # 22746
Views: 1,942
 

 OT

??????????
dshah
★★  

India/United Kingdom,
2022-01-24 11:53
(794 d 00:54 ago)

@ Bebac user
Posting: # 22748
Views: 1,969
 

 intrasubject variability

Dear Bebac User!
You can try FARTSSIE to calculate ISCV.
Regards,
Dshah
UA Flag
Activity
 Admin contact
22,957 posts in 4,819 threads, 1,639 registered users;
73 visitors (0 registered, 73 guests [including 5 identified bots]).
Forum time: 12:47 CET (Europe/Vienna)

Nothing shows a lack of mathematical education more
than an overly precise calculation.    Carl Friedrich Gauß

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5