Development version.
- Fixed problems in the PDF manual created on CRAN.
- Cosmetics in man pages (HTML and LaTeX formatting) and vignette.
- Added
doi
of publication toDESCRIPTION
(suggested by Uwe Ligges).
Published on GitHub 2022-05-02, on CRAN.
- Fixed two more empty
item{}
discovered byCRAN
pretest.
Published on GitHub 2022-05-02.
- Corrected empty labels in man pages of datasets in
item{}
leading to notes onr-devel-linux
.
Published on Github 2022-02-12, on CRAN.
- Corrected example in the vignette (warning on
r-devel-linux-x86_64-fedora-gcc
andr-devel-linux-x86_64-fedora-gcc
). THX to Brian D. Ripley. - In the result data frame of
method.B(..., print = FALSE, details = TRUE)
falselyA
instead ofB
was given.
- Updated GCC and WHO guideline (comparison of variabilities no more required); changed URL of EMA GL in man pages, README, and vignette.
Published on Github 2021-06-21, on CRAN.
- If
path.out
is missing, R’s temporary folder will be used. - Added
regulator
"HC"
inmethod.B()
to support Health Canada’s approach (upper cap of scaling ~57.4%). Ifalpha = 0.5
only the PE has to lie within 80.0--125.0% (highly variable Cmax). However, bothoption = 1
(Satterthwaite) andoption = 3
(Kenward-Roger) are only approximate because Health Canada prefers a mixed-effects model. THX to Philippe Liége. - Added
swT
(full replicates),swR
(andswR.rec
if outlier(s) are detected) to the data frame of results (previously only in the result file). Referring to the columns in examples of man pages, vignette, andtestthat.R
adapted. - In
method.A()
andABE()
changed the ANOVA from ‘Type I’ (default) to ‘Type III’ in order to get the correct test for carryover. Clarified in the vignette. - Direct widening to 75.00--133.33% for Cmax according to the conditions of the Gulf Cooperation Council. New argument
regulator
"EMA"
(default) or"GCC"
inmethod.A()
andmethod.B()
. Hence, at least version 1.5.3 ofPowerTOST
is required.
On CRAN 2021-05-14.
path.out
in examples changed from"~/"
totempdir()
. CRAN policy violation noted by Brian D. Ripley.method.B.R
:options(contrasts = c("contr.treatment", "contr.poly"))
is the default. If a user has set other ones, restore them on exit.
Published on Github 2020-07-24, on CRAN.
- Stops now if
path.in
orpath.out
(ifprint = TRUE
|plot.bxp = TRUE
) is not given. Previously the user’s home folder"~/"
was automatically used. Man pages updated accordingly.
- Use
normalizePath()
inget.data.R
andinfo.env.R
for clarity (i.e., the OS-dependent full path is given in the result-file). - Removed
graphics.off()
from the beginning ofget.data.R
. Caused the error incheck()
where a PDF is created. - Checks whether the png-device is available on the system. If not, show a message and change to
plot.bxp = FALSE
. - Cosmetic changes in vignette.
Published on Github 2020-04-08, on CRAN 2020-04-09.
- Changed expected value of
DF
obtained bymethod.B(..., data = rds30, option = 1)
from 17.86418 to 17.86417 and reducedtolerance
in functionexpect_equivalent()
oftestthat
from 5e-7 to 1e-6. Prevents errors with r-devel on Linux and r-patched on Solaris. Required due to changed default tolerance settings in v.1.1-23 of packagelme4
of 2020-04-07. Not relevant because the CI passed the test already with the more strict tolerance and in practice only four to five significant digits (not seven) are required for the CI. Furthermore, all tests passed with the current release (R3.6.3) on all operating systems.
- Cosmetic changes in vignette, installation more detailed given in
README
.
Published on Github 2020-01-09, on CRAN.
- Converts
ext
to lower-case. Mixed-case threw an error. - Resolved issue 2 raised by MT. Results were correct but the message an annoyance. Now use
as.data.frame(read_excel(..., col_names = FALSE, .name_repair = "minimal"))
inget.data()
. Since the file may contain a commentary header, we needcol_names = FALSE
and construct the names later (i.e., the defaultcol_names = TRUE
is not possible).
- If
verbose = TRUE
in all methods:print(anova(...), digits = 6, signif.stars = FALSE)
. - Changed names of variables in the data frame of results. Updated man pages.
- Unified ANOVA-table and degrees of freedom if
verbose = TRUE
. Added response to verbose-output ofmethod.B
(automatically inmethod.A
). - Handles a case where a user exports one of the internal dataset as a CSV with row.names and quoted variables (i.e., instead of
write.csv(rds01, 'rds01.csv', quote = FALSE, row.names = FALSE
) naively uses justwrite.csv(rds01, 'rds01.csv')
).
Importing such a CSV-file was not possible so far. Resolved issue 3 raised by MT. - Adapted tests for
method.B()
:rds29
andrds30
instead ofrds18
. Satterthwaite DF(..., option = 1)
and Kenward-Roger(..., option = 3)
. - Added two small imbalanced and incomplete datasets:
rds29
(TRTR|TRTR, n=12),rds30
(TRR|RTR|RRT, n=14). Requested by a reviewer of the manuscript.
Published on Github 2019-11-11, on CRAN (carnival release).
- Updated CSS of vignette, fixes in
README
. - Replaced TOC-links in vignette by CSS-div (fixed background image).
- Cosmetic fix. Treats the special case in verbose output of
CV.calc.R
when at least one studentized outlier is detected but no standarized outlier. - Badges in
README
. - Added Table of Contents in
README.Rmd
and vignette (THX to Yihui Xie on r-help for the latter).
Published on Github 2019-08-25, on CRAN.
- Changed default path-variables from
NULL
to the user’s home folder"~/"
.
print(..., , digits = 7)
ifverbose = TRUE
. More significant digits not needed since given in the result data frame in full precision anyway.README.Rmd
knitted toREADME.md
.
Published on Github 2019-07-24, on CRAN.
- Seemingly the LaTeX-Installation on CRAN is corrupt (THX to Duncan Murdoch on r-package-devel). Either the file
hyperref.sty
is corrupt or missing (local rendering works on Windows and Linux). Therefore, on CRAN in the PDF-manual URLs in references are converted to truncated (i.e., wrong) URLs in footnotes. Notified Uwe Ligges.
- Stopped import when no missings according to the specifier
na
where found (THX to Igor Rubets).
README.md
included.NEWS.md
instead ofNEWS
.- Removed numbered references since CRAN converts URLs to footnotes in the PDF manual.
- Updated links to the EMA’s datasets in
info.data()
.
Published on Github 2019-07-22, on CRAN.
importFrom(pbkrtest, getKR)
since error on win-builder.r-project.org
'pbkrtest package required for Kenward-Roger's method'
(not locally!)- Forces
logtrans = TRUE
if a user asks for an internal dataset which does not have the columnlogPK
.
- Added Kenward-Roger degrees of freedom to
method.B (..., option = 3)
.
- Updated links to the EMA’s documents (again...) in man pages. Numbered references.
- More informative warning in
get.data()
if na-specifier does not match the data in columnsPK
and/orlogPK
. - Depends now on R >= 3.5.0 (since .rda saved with 3.6.0).
- Kept column
logPK
only inrds01
andrds02
because given by the EMA. Removed inrds06
,rds12
,rds14
,rds18
,rds19
,rds20
,rds21
(TRTR|RTRR) andrds03
,rds17
(TRT|RTR). Man-pages corrected. Reduces the footprint of the library by 5%. - If
path.in
and/orpath.out
not given or specified folder does not exist: Changedcat()
towarning()
. - Cosmetic changes in verbose output of
method.A()
. suppressMessages()
no more needed (vignette and testthat). Issue originating inrlang
andggplot2
resolved. Both packages don’t contain aNEWS
file. THX Hadley for leaving us out in the dark!stringsAsFactors = FALSE
in res-list of all methods.- Removed superfluous
options(ow)
after models (THX to DL). - Updated man page of
method.A()
and the vignette.
Published on Github 2019-06-14, on CRAN.
- THX to Uwe Ligges @CRAN (adding
on.exit(...)
immediately after changing an option).
Published on Github 2019-06-14, on CRAN.
- As suggested by [email protected]. Resubmitted to CRAN.
Published on Github 2019-06-12, submitted to CRAN (passed checks at R-release and R-devel).
- LaTeX problems for the PDF-manual partly fixed (THX to Duncan Murdoch on r-help). Final solution: Text between
\list{}{}
. Note that this is discouraged acc. to the R-Extension Manual 2.1.1! - Updated WHO-reference in man pages.
- Added vignette.
- Added
\tests
fortestthat()
.
- Simplified and reordered sources of man pages.
- Changed
{\eqn{foo\textsubscript}{bar}}
to the simple{\eqn{foo_{bar}}
in two man pages. StartupWarnings
seemingly unavoidable untilrlang
will be corrected.- Small correction in text of box plot of
CV.calc()
. Studentized/standardized does not exactly agree with SAS (usestype = 2
by default).
Published on GitHub 2019-05-30.
- Renaming S3 method doesn’t help.
- Updated links in man pages to reflect changes in the FDA’s and the EMA’s sites.
- Updated links to reference data in
info.data()
. - Updated links in CSV-files.
- Import from XLS with a header.
get.data()
CSV-file: Issue with characters in the header which were== sep
resolved. [MT]get.data()
Sub/seq in data frame was empty for complete sequences.info.env()
returnedpath.out
aspath.in
.- Mixed model was given in the result file of
method.A()
. - Adapt the number of subjects/sequence and number of missings/sequence to the reordered sequences in
get.data()
. Calculation was correct but output in result-files wrong. nTT
wasNA
inget.data()
for TRTR|RTRT. Now design (full/replicate) is obtained frominfo.design()
.- In
CV.calc(..., ole = TRUE)
if an outlier is detected not in both methods (studentized, standardized). method.B(option = 1)
output to file.- In package
PowerTOST
T is always first. The order is only relevant inmethod.A(..., adjust = TRUE)
and an unbalanced RTR|TRT-design. In this case the order of subjects/sequence is reversed by callingscABEL(..., n = rev(ret$Sub.Seq))
. THX to DL for discovering this bug.
- Renamed S3 methods (prefixed with
repBE
) acc. to rlang issue 669. THX to MT. - A warning in
CHECK
disappeared in R 3.6.0. Throws other ones in examples which change the working directory. Wrapped all examples in man pages in\dontrun{}
. - Rewrite of reading from file. [MT]
- The header is automatically identified (removed as an argument from the calling functions).
- The first column must no be more
subject
(any order is acceptable). Now the word ‘subject’ is allowed in the header.
- Argument
set
can be an empty string""
to support reading from CSV- files. Only required for XLS (the name of the sheet) now. - Argument
fence
for box plots instead of the hard-coded 3 as a multiplier of IQR. The default 1.5 in most (all?) software packages detects a lot of outliers. 3 seems to be too liberal. The new default 2 is a compromise. - Changed
TRTR|TRRT|RTTR|RTRT
toTRTR|RTRT|TRRT|RTTR
. More logical (stacking sequences of the other full replicates). Adapted scripts and man pages accordingly. - Changed the lexical order of sequences (T before R) in conformity with package
PowerTOST
and the EMA’s Q&A dataset II. - Resolved issue 1: Introduced aliases in man pages for all data sets. Otherwise, warnings in
CHECK
about undocumented objects. - Identify internal data sets based on their attribute. Uses now
info.data()
. THX to DL. Functionwhich.data()
removed. - Man pages reworked. [DL]
method.A(adjust = TRUE)
assesses additionally the empiric Type I Error based on the recalculatedCVwR
(if applicable).- Changed
TRR.RTT
toRTT.TRR
for consistency (R always first).
- Added dataset 27 for Balaam’s design (TR|RT|TT|RR) and dataset 28 (TTRR|RRTT); both simulated with homoscedasticy. The former only for completeness (poor power). The latter might be useful for steady state studies. Man pages for both.
- Balaam’s design implemented.
- Compare variabilites according to the FDA’s warfarin guidance, i.e., assess whether the upper confidence limit of σwT/σwR ≤2.5.
- Shows a ‘graphical’ presentation of the CI, PE, and BE-limits in the result file.
- Added datasets:
- 26 (TRTR|RTRT). One of the few where we have results for comparison (regrettably only three significant digits).
- 25 (TRTR|RTRT) simulated with heteroscedasticy.
- 24 (TRRT|RTTR|TTRR|RRTT) from the FDA. Subject 16 completely missing. Adapted
get.data()
for such a case. - 23 as an example of a 4-period 4-sequence design (though not recommended by the FDA).
- 22 for the extra-reference design (RTR|TRR).
- Calculate swT/swR (might be useful for the WHO’s scaling of AUC).
ABE()
has new argumentstheta1
andtheta2
(defaults0.80
and1.25
). Useful for NTIDs (EMA) or wider limits of Cmax (GCC).- New function
info.design()
. Sorts sequences according to the preferred order (T first) and throws a message if the design is untested. - Changed the names of result files reflecting the Method used rather the internals (
lme
/lmer
). Lazy data: true
inDESCRIPTION
allows direct access of objects withindata()
.
Released to collaborators 2017-06-24.
- CSV-files: Characters in the header which are equal to
sep
are lost. method.B(option = 1)
cann’t print to file with internal data.
- Unified data sets, updated man pages, and changed
which.data()
:ref
tords
. Warnings inCHECK
:'rdsXX' not found
.
Released to collaborators 2017-06-23.
- If a user calls
foo(path.in = path.in, ...)
but the variablepath.in
is not defined before. Throwsobject 'path.in' not found in CV.calc()
.
- If
'descr'
was read from an external file and the code stopped for data not matching the id inwhich.data()
. - Warning in man pages: Header must not contain the word
'subject'
. - If the specified file is not found in
path.in
the file browser opens on Windows (other operating systems?). - If
verbose=TRUE
the anova was not shown inABE()
.
- New function
which.data()
: returns data frame'id'
of checksum (MD5), file "DS", set ("01", ... "XX"), ref ("refXX"), descr. Used inget.data()
to obtain required variables of the currently attached internal data set based on its MD5-checksum. - Changed the default variable separator from
";"
to","
(more common). Suggested by DL.
- Removed
CV.calc
fromNAMESPACE
. Man-page not needed any more. THX to DL! - Replaced
subset()
inget.data()
andCV.calc()
by direct assignment. No need for the hacks any more. - Removed
DS.xls
and adapted man examples accordingly. CRAN policy: Data sets should not be larger than 1 MB. BTW, why is the zip so much larger than the tarball? Before removingDS.xls
their sizes were similar. - F.i.
data(ref02)
followed byprint(ABE(details = TRUE, print = FALSE, data = data))
works. Problems: The descriptive header (variabledescr
) doesn’t exist in the internal data set as well as its name. Hence, the same with the defaultprint = TRUE
in all functions gives an error. Stupid: The data set must be chosen outside of the function call.foo(data = data(ref02))
gives an error. - Added argument
data = NULL
(defaultNULL
) to top-level functions. method.B()
: Changedprint(anova.lm(modB))
toprint(anova(modB))
. [DL]- Modified imports in
NAMESPACE
. [DL] - Working on
\data
and the documentation. All data sets observe the patternrefXX.rda
in order to come last in the man page.
Released to collaborators and beta-testers 2016-06-19.
- Renamed package from
ABEL
toreplicateBE
since ABE is now supported as well. - Added function
ABE()
for conventional (unscaled) ABE.
- Added
\data\ref01.rda
(already factorized data frame) and man page. - Changed
enf.info()
: If path(s)NULL
, show the user’s home folder in the linesInput from
andOutput to
.
Released to collaborators and beta-tester Mahmoud Teaima 2016-06-19.
- New argument
plot.bxp
. IfFALSE
(default) the boxplot will be shown in the default graphics device. IfTRUE
the boxplot will be saved in PNG format (720×720 px) topath.out
. Argumentask
is also observed. - If
path.in
and/orpath.out
not given or not existing, the user’s home folder will be used. Updated the man pages accordingly.
Released to collaborators and beta-tester Mahmoud Teaima 2016-06-18.
- Argument
ask
(defaultFALSE
). IfTRUE
and a result file already exists, the user is asked whether it should be overwritten. - Removed
lme4
from listed packages inenv.inf()
.lmer
,summary
, andanova
obtained fromlmerTest
. - Changed in
get.data()
name of file from"_results_"
to"_ABEL_"
. - Changed
get.data()
:path.out
only required ifprint = TRUE
. Defaultpath.out
inmethod.A()
andmethod.B()
set toNULL
. - Improved man pages. Added an example comparing Method B with Method A.
Released to collaborators and beta-tester Mahmoud Teaima 2016-06-16.
- First version of package built.
- Simplified output in
method.A()
ifadjust = TRUE
. - Housekeeping routine removed.
- The former variable
path
(used for in- and output) substituted by variablespath.in
andpath.out
. - Functions
env.info()
,get.data()
,CV.calc()
,method.A()
,method.B()
stand-alone in order to support package-building. method.A()
: Changed
lm(foo ~ subject + period + treatment, data)
to the subject decomposition acc. to the Q&A document
lm(foo ~ sequence + subject%in%sequence + period + treatment, data)
Note: PE, MSE, DF are identical to the simple model, but less confusing if the ANOVA is shown (verbose = TRUE
). [suggested by Mahmoud Teaima]
Released to collaborators 2016-06-11.
- print corrected. Line-endings CRLF (Windows), LF (UNIXes), CR (MacOS). Tested on Windows [HS] and on macOS Sierra 10.12.5 (THX to Mahmoud).
- Reading xls(x)-files corrected. Converts the tibble-object to a data frame.
- List in
env.inf()
only the packages which are used by the respective functions. - y-axis in boxplot symmetrical around zero. I think that this is more informative than the default.
- Vector of na-strings supported since v1.0.0 of package
readxl
. Throws a message if the installed version is <1.0.0. Is there a method to automatically update a package?
Released to collaborators and beta-tester Mahmoud Teaima 2016-06-01.
- Outlier analysis to console if
verbose = TRUE
. - Moved
DF
andalpha
up after the number of subjects. More logical to me. - If outlier(s) detected,
CVwR
is recalculated and BE is additionally assessed based on the new limits. - Added optional outlier assessment (
ola = TRUE
) for the reference. Defaults toFALSE
. Studentized and standardized residuals are calculated and shown in box plots. Note: Only standardized (a.k.a internally studentized) residual are available in Phoenix WinNonlin.
Released to collaborators and beta-tester Mahmoud Teaima 2016-12-16.
- Variable and decimal separators for reading CSV-files can be specified. Defaults
";"
and"."
- Result-file UTF-8 encoded (important for OSX; THX to Mahmoud).
- Added license info and disclaimer (paranoia).
- Added a statement if
nTR <12
. Suggested by MT. - Added a statement about ’uncertain’ CV~wR if
nRR <12
in one of the full replicate 3-period designs (acc. to the EMA’s Q&A Rev. 12). - Added argument
verbose
(defaultFALSE
) tomethod.A()
/method.B()
to support detailed information without debugging. - Moved check for trailing
'/'
in the path-argument frommethod.A()
/method.B()
toget.data()
. - Restored the evaluation by
lmer
/lmerTest
from v0.83 to support comparing the performance of packages. Wish of DL.
Released to collaborators and beta-tester Mahmoud Teaima (Faculty of Pharmacy, Cairo University) 2016-12-14.
- Wrong
Miss.per
for data sets withNA = '.'
fixed. [MT]
- If
path
does not exist, R’s working directory is used with a warning. [MT]
Released to collaborators 2016-12-14.
- The line
names(Miss.per)
is removed (not used in output). [MT] - Vectorized
Miss.seq
andMiss.per
inget.data()
, unnecessary functioncomplete()
removed. [MT]
Released to collaborators 2016-12-14.
- Removed
lmer
/lmerTest
(was called byoption = 1
in previous versions), since Satterthwaite’s DF are not compliant with the EMA’s Q&A document (the SAS-code uses implicitelyDDFM = CONTAIN
). - Added
DF
of the treatment difference to the output.
Released to collaborators 2016-12-11.
- Added function
complete()
to construct a dataframe of complete data based on the subjects and design. Called byget.data()
to calculate the number of missing values independent whether the DS contains this information (NA
inPK
) or not. Not vectorized yet. - New variable
Miss.seq
: Missings / sequence. - New variable
Miss.per
: Missings / period.
Released to collaborators 2016-12-10.
- Added
na.action = na.omit
tolme()
since its default (na.fail
) stopped the model.
- Changed the default in
method.B()
fromoption = 1
tooption = 2
. No DDFM applied.lme4
/lmerTest
(option = 1
) - like Phoenix WinNonlin by default - uses Satterthwaite’s DF. - Input checking:
- Converts variable names (except
PK
andlogPK
) to lower case. Stops if variables are not coded assubject
,period
,sequence
, andtreatment
. - Stops if treatments are not coded as
R
andT
. - Stops if the number of sequences and/or periods does not match the specified design.
- Converts variable names (except
- Returns number of missings / sequence (currently only for NAs).
Released to collaborators 2016-12-09.
- Checking packages fixed. [MT]
(.)
removed before names of variables. [MT]
Released to collaborators 2016-12-09.
- Calculation of
Nsub.seq
fixed. [MT]
/
is added to the path if not present. [MT]- The name of used package is added to the file name for
method.B()
(_lmer
or_lme
). [MT] lme4
is added to the list of packages (it was an implied subroutine call fromlmerTest
). [MT]
Released to collaborators and beta-tester Jiři Hofmann 2016-12-07.
- Calculation of
Nsub.seq
in DA12 (with N=77) falsely gave 149 in both sequences. - BE-assessment corrected (testing both
res$CI
andres$GMR
instead ofunique()
.
Released to collaborators 2016-12-02.
sequence+subject%in%sequence+period according
to the EMA’s Q&A (setup in SAS) and the templates of Phoenix WinNonlin. Note that for unique coding of subjects the nested structure is superfluous / the model overspecified . The more simple modelsubject+period
gives exactly the same residual error.
Released to collaborators 2016-11-28.
- Added import format xls(x). Requires package
readxl
. Cave: If the sheet(s) contains a commentary header, in the argumentskip
the number of rows not to be used must be given.
Released to collaborators 2016-11-27.
- New function
CV.calc()
as suggested by DL. Moved the calculations fromget.data()
. Adapted calls inmethod.A()
andmethod.B()
.
- Vectorized
Nsub.seq
[MT].
Released to collaborators 2016-11-26.
- Bug corrected in selecting subjects with RR [MT].
- Added number of subjects/sequence and check for balance (not vectorized yet).
- Results of iteratively adjusted alpha printed. Throws a warning if
adjust = TRUE
for an unsupported design.
Released to collaborators 2016-11-24.
- Use package
PowerTOST
for assessment of the empiric Type I Error and (optionally) iteratively adjustment of α (onlyMethod A
). New argumentadjust
(defaultFALSE
). Results only to the console. Changed hard-coded parts to the respective functions ofPowerTOST
. - New argument
logtrans
(defaultTRUE
). IfTRUE
, the raw data (columnPK
) are internally log-transformed. IfFALSE
the already log-transformed data (columnlogPK
) are used.
- Data can now be provided without the column
logPK
. If erroneously a call is made withlogtrans = FALSE
(and the columnlogPK
is missing), the code switches to internal log-transformation (as iflogtrans = TRUE
would have been called) and throws a warning. - Added log half-width to the data frame
res
.
Released to collaborators 2016-11-23.
method.B()
has a new argumentoption
:1
(default) evaluates bylmerTest()
and2
bynlme()
.- New arguments
print
(defaultTRUE
) anddetails
(defaultFALSE
).
foo(..., print = FALSE, details = TRUE)
returns a data frame of results in full precision. - Using
intervals()
instead of a hard-coded confidence interval. [DL] - Added coding for Method B by
nlme
. [MT] - Unless stated otherwise all changes by [HS].
Released to collaborators 2016-11-22.
- New [HS].