nlme/0000755000176000001440000000000012242160076011235 5ustar ripleyusersnlme/po/0000755000176000001440000000000012203635654011661 5ustar ripleyusersnlme/po/R-fr.po0000644000176000001440000015700612203635654013040 0ustar ripleyusers# Translation of R-nlme.pot to French # Copyright (C) 2005 The R Foundation # This file is distributed under the same license as the nlme R package. # Philippe Grosjean 2005. # msgid "" msgstr "" "Project-Id-Version: nlme 3.1-65\n" "Report-Msgid-Bugs-To: bugs@r-project.org\n" "POT-Creation-Date: 2013-08-17 08:12\n" "PO-Revision-Date: 2012-10-03 16:45+0100\n" "Last-Translator: Philippe Grosjean \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 1.5.3\n" msgid "not implemented for \"nlme\" objects" msgstr "Pas implémenté pour des objets \"nlme\"" msgid "not implemented for multiple levels of nesting" msgstr "Pas implémenté pour des niveaux multiples d'imbrication" msgid "individual %s was not used in the fit" msgstr "l'individu %s n'a pas été utilisé dans l'ajustement" msgid "do not know how to calculate correlation matrix of %s object" msgstr "Incapable de calculer la matrice de corrélation de l'objet %s" msgid "\"corStruct\" object must have a \"fixed\" attribute" msgstr "l'objet \"corStruct\" doit avoir un attribut \"fixed\"" msgid "do not know how to obtain parameters of %s object" msgstr "incapable d'obtenir les paramètres de l'objet %s" msgid "cannot change the length of the parameter of a \"corStruct\" object" msgstr "" "impossible de changer la longueur des paramètres d'un objet \"corStruct\"" msgid "cannot change 'form'" msgstr "Impossible de changer 'form'" msgid "need data to calculate covariate of \"corStruct\" object" msgstr "" "des données sont nécessaires pour calculer les covariables d'un objet " "\"corStruct\"" msgid "cannot change the length of the parameter of a \"corSymm\" object" msgstr "" "impossible de changer la longueur des paramètres d'un objet \"corSymm\"" msgid "covariate must have unique values within groups for \"corSymm\" objects" msgstr "" "La covariable doit avoir des valeurs uniques à l'intérieur des groupes pour " "les objets \"corSymm\"" msgid "" "unique values of the covariate for \"corSymm\" objects must be a sequence " "of consecutive integers" msgstr "" "les valeurs uniques des covariables pour les objets \"corSymm\" doivent être " "des séquences d'entiers consécutifs" msgid "initial value for \"corSymm\" parameters of wrong dimension" msgstr "" "La valeur initiale pour les paramètres de \"corSymm\" n'ont pas les bonnes " "dimensions" msgid "initial values for \"corSymm\" must be between -1 and 1" msgstr "Les valeurs initiales pour \"corSymm\" doivent se situer entre -1 et 1" msgid "" "initial values for \"corSymm\" do not define a positive-definite correlation " "structure" msgstr "" "les valeurs initiales pour \"corSymm\" ne définissent pas une structure de " "corrélation positive-définie" msgid "cannot change the length of the parameter of a \"corNatural\" object" msgstr "" "impossible de changer la longueur des paramètres d'un objet \"corNatural\"" msgid "" "covariate must have unique values within groups for \"corNatural\" objects" msgstr "" "la cavariable doit avoir des valeurs uniques pour les intragroupes des " "objets 'corNatural'" msgid "" "unique values of the covariate for \"corNatural\" objects must be a sequence " "of consecutive integers" msgstr "" "les valeurs uniques pour la covariables des objets \"corNatural\" doivent " "être une séquence d'entiers consécutifs" msgid "initial value for \"corNatural\" parameters of wrong dimension" msgstr "" "La valeur initiale pour les paramètres \"corNatural\" n'a pas la bonne " "dimension" msgid "initial values for \"corNatural\" must be between -1 and 1" msgstr "" "Les valeurs initiales pour \"corNatural\" doivent se situer entre -1 et 1" msgid "" "initial values for \"corNatural\" do not define a positive-definite " "correlation structure" msgstr "" "Les valeurs initiales pour \"corNatural\" ne sont pas définies sous forme " "d'une structure de corrélation positive-définie" msgid "parameter in AR(1) structure must be between -1 and 1" msgstr "Le paramètre dans la structure AR(1) doit se situer entre - 1 et 1" msgid "cannot change the length of the parameter of a \"corAR1\" object" msgstr "Impossible de changer la longueur des paramètres d'un objet \"corAR1\"" msgid "covariate must have unique values within groups for \"corAR1\" objects" msgstr "" "La covariable doit avoir des valeurs uniques pour les intragroupes des " "objets \"corAR1\"" msgid "parameter in CAR(1) structure must be between 0 and 1" msgstr "Le paramètre dans la structure CAR(1) doit se situer entre -1 et 1" msgid "cannot change the length of the parameter of a \"corCAR1\" object" msgstr "" "Impossible de changer la longueur des paramètres d'un objet \"corCAR1\"" msgid "covariate must have unique values within groups for \"corCAR1\" objects" msgstr "" "la covariable doit avoir des valeurs uniques pour les intragroupes des " "objets \"corCAR1\"" msgid "autoregressive order must be a non-negative integer" msgstr "l'ordre autorégressif doit être un entier positif ou nul" msgid "moving average order must be a non-negative integer" msgstr "l'ordre de la moyenne mobile doit être un entier positif ou nul" msgid "initial value for parameter of wrong length" msgstr "la valeur initiale du paramètre est de la mauvaise taille" msgid "parameters in ARMA structure must be < 1 in absolute value" msgstr "les paramètres d'une structure ARMA doivent être < 1 en valeur absolue" msgid "'object' has not been Initialize()d" msgstr "'object' n'a pas été initialisé ; utilisez Initialize()" msgid "cannot change the length of the parameter of a \"corARMA\" object" msgstr "" "impossible de changer la longueur des paramètres d'un objet \"corARMA\"" msgid "covariate must have unique values within groups for \"corARMA\" objects" msgstr "" "la covariable doit avoir des valeurs uniques pour les intragroupes des " "objets \"corARMA\"" msgid "parameter in \"corCompSymm\" structure must be < 1 in absolute value" msgstr "" "les paramètres d'une structure \"corCompSymm\" doivent être < 1 en valeur " "absolue" msgid "cannot change the length of the parameter of a \"corCompSymm\" object" msgstr "" "impossible de changer la longueur des paramètres d'un objet \"corCompSymm\"" msgid "initial value in \"corCompSymm\" must be greater than %s" msgstr "La valeur initiale dans \"corCompSymm\" doit être plus grande que %s" msgid "cannot change the length of the parameter after initialization" msgstr "impossible de changer la longueur du paramètre après l'initialisation" msgid "need data to calculate covariate" msgstr "des données sont nécessaires pour calculer la covariable" msgid "cannot have zero distances in \"corSpatial\"" msgstr "distances nulles non autorisées dans \"corSpatial\"" msgid "'range' must be > 0 in \"corSpatial\" initial value" msgstr "" "l'étendue des valeurs initiales ('range') dans \"corSpatial\" doit être > 0 " msgid "initial value for \"corSpatial\" parameters of wrong dimension" msgstr "" "la valeur initiale pour les paramètres \"corSpatial\" n'ont pas la bonne " "taille" msgid "initial value of nugget ratio must be between 0 and 1" msgstr "" "la valeur initiale du coefficient de pépite doit être comprise entre 0 et 1" msgid "'range' must be > 0 in \"corLin\" initial value" msgstr "" "l'étendue ('range') doit être > 0 pour les valeurs initiales dans \"corLin\"" msgid "" "initial value for 'range' less than minimum distance. Setting it to 1.1 * min" "(distance)" msgstr "" "la valeur initiale pour l'étendue ('range') est inférieure à la distance " "minimale. Elle est fixée à 1.1 * min(distance)" msgid "initial value for \"corLin\" parameters of wrong dimension" msgstr "" "la valeur initiale pour les paramètres \"corLin\" n'ont pas la bonne taille" msgid "range must be > 0 in \"corSpher\" initial value" msgstr "l'étendue des valeurs initiales dans \"corSpher\" doit être > 0" msgid "initial value for \"corSpher\" parameters of wrong dimension" msgstr "" "la valeur initiale pour les paramètres \"corSpher\" sont de la mauvaise " "taille" msgid "negative control$nlmStepMax - using default value" msgstr "control$nlmStepMax négatif - utilisation de la valeur par défaut" msgid "model must be a formula of the form \"resp ~ pred\"" msgstr "le modèle doit être une formule de la forme \"resp ~ pred\"" msgid "no coefficients to fit" msgstr "pas de coefficients à ajuster" msgid "maximum number of iterations reached without convergence" msgstr "le nombre maximum d'itérations est atteint, mais pas la convergence" msgid "computed \"gls\" fit is singular, rank %s" msgstr "l'ajustement \"gls\" calculé est singulier, de rang %s" msgid "object must inherit from class \"gls\"" msgstr "l'objet doit hériter de la classe \"gls\"" msgid "'Terms' must be between 1 and %d" msgstr "'Terms' doivent être compris entre 1 et %d" msgid "terms can only be integers or characters" msgstr "" "Les termes peuvent être seulement des entiers ou des chaînes de caractères" msgid "data in %s call must evaluate to a data frame" msgstr "" "les données dans l'appel %s doivent être évaluées comme un tableau de " "données (\"data frame\")" msgid "" "%s without \"primary\" can only be used with fits of \"groupedData\" objects" msgstr "" "%s sans \"primary\" ne peut être utilisé avec des ajustement d'objets " "\"groupedData\"" msgid "only one level allowed for predictions" msgstr "seul un niveau est permis pour les prédictions" msgid "%s and %s must have the same group levels" msgstr "%s et %s doivent avoir les mêmes niveaux de groupes" msgid "wrong group levels" msgstr "niveaux de groupes erronés" msgid "cannot get confidence intervals on var-cov components: %s" msgstr "" "impossible de calculer un intervalle de confiance sur les composantes var-" "cov : %s" msgid "need an object with call component" msgstr "nécessite un objet avec une composante 'call'" msgid "'nint' is not consistent with 'breaks'" msgstr "'nint' n'est pas consistant avec 'breaks'" msgid "'object' must be a formula" msgstr "'object' doit être une formule" msgid "object formula must be of the form \"resp ~ pred\"" msgstr "l'objet formule doit être de la forme \"rep ~ pred\"" msgid "'data' must be given explicitly to use 'nls' to get initial estimates" msgstr "" "'data' doit être fourni de manière explicite pour utiliser 'nls' afin " "d'obtenir les estimateurs initiaux" msgid "no initial values for model parameters" msgstr "pas de valeurs initiales pour les paramètres du modèle" msgid "starting estimates must have names when 'params' is missing" msgstr "" "les estimations initiales doivent être nommés lorsque 'params' est manquant" msgid "'params' must be a formula or list of formulae" msgstr "'params' doit être une formule ou une liste de formules" msgid "formulae in 'params' must be of the form \"parameter ~ expr\"" msgstr "" "les formules dans 'params' doivent être de la forme \"parameter ~ expr\"" msgid "starting values for parameters are not of the correct length" msgstr "les valeurs initiales pour les paramètres n'ont pas la taille correcte" msgid "step halving factor reduced below minimum in NLS step" msgstr "" "le facteur de division par deux du pas est réduit en dessous du minimum dans " "un pas NLS" msgid "approximate covariance matrix for parameter estimates not of full rank" msgstr "" "matrice de covariance approximative pour les estimateurs de paramètres qui " "ne sont pas de rang complet" msgid "cannot calculate REML log-likelihood for \"gnls\" objects" msgstr "" "impossible de calculer la log-vraissemblance REML pour les objets \"gnls\"" msgid "first argument to 'groupedData' must be a two-sided formula" msgstr "" "le premier argument à 'groupedData' doit être une formule à deux membres" msgid "right-hand side of first argument must be a conditional expression" msgstr "" "le membre de droite du premier argument doit être une expression " "conditionnelle" msgid "first argument to 'nfGroupedData' must be a two-sided formula" msgstr "" "le premier argument de 'nfGroupedData' doit être une formule à deux membres" msgid "only one level of grouping allowed" msgstr "seul un niveau de regroupement est autorisé" msgid "second argument to 'groupedData' must inherit from data.frame" msgstr "le second argument de 'groupedData' doit hériter d'un data.frame" msgid "first argument to 'nmGroupedData' must be a two-sided formula" msgstr "" "le premier argument de 'nmGroupedData' doit être une formule à deux membres" msgid "'subset' ignored with single grouping factor" msgstr "" "'subset' ignoré lors de l'utilisation d'un seul facteur pour le regroupement" msgid "'subset' must be a list" msgstr "'subset' doit être une liste" msgid "undefined group declared in 'subset'" msgstr "groupe non déclaré dans 'subset'" msgid "only one display level allowed" msgstr "un seul niveau d'affichage est permis" msgid "undefined display level %s for %s" msgstr "niveau d'affichage non défini %s pour %s" msgid "undefined collapsing level %s for %s" msgstr "niveau de fusion non défini %s pour %s" msgid "" "collapsing level cannot be smaller than display level; setting it to the " "display level" msgstr "" "le niveau de fusion ne peut être plus petit que le niveau d'affichage ; il " "est fixé au niveau d'affichage" msgid "'preserve' must be a two-sided formula" msgstr "'preserve' doit être une formule à deux membres" msgid "'asTable' cannot be used with multilevel grouped data" msgstr "" "'asTable' ne peut être utilisé avec des données à groupements multiniveaux" msgid "'asTable' can only be used with balanced 'groupedData' objects" msgstr "" "'asTable' ne peut être utilisé qu'avec des objets 'groupedData' balancés" msgid "multiple levels not allowed" msgstr "niveaux multiples non permis" msgid "'data' must be a \"groupedData\" object if 'groups' argument is missing" msgstr "" "'data' doit être un objet \"groupedData\" si l'argument 'groups' est manquant" msgid "An lm fit failed, probably because a factor only had one level" msgstr "" msgid "'data' in %s call must evaluate to a data frame" msgstr "'data dans l'appel %s doit être évalué comme un data.frame" msgid "nonexistent groups requested in 'subset'" msgstr "groupes inexistants demandés dans 'subset'" msgid "'subset' can only be character or integer" msgstr "" "'subset' ne peut qu'être une chaîne de caractères ou une valeur numérique" msgid "log-likelihood not available with NULL fits" msgstr "la log-vraissemblance n'est pas disponible avec des ajustements NULL" msgid "'form' must be a formula" msgstr "'form' doit être une formule" msgid "'form' must be a one-sided formula" msgstr "'form' doit être une formule à un seul membre" msgid "covariate must be a data frame" msgstr "la covariable doit être un tableau de données (data.frame)" msgid "cannot do pairs of just one variable" msgstr "impossible d'apparier avec seulement une variable" msgid "'id' must be between 0 and 1" msgstr "'id' doit être compris entre 0 et 1" msgid "'id' can only be a formula or numeric" msgstr "'id' doit être une formule ou une valeur numérique" msgid "'idLabels' of incorrect length" msgstr "'idLabels' de longueur incorrecte" msgid "'idLabels' can only be a formula or a vector" msgstr "'idLabels' ne peut être qu'une formule ou un vecteur" msgid "covariate must be numeric" msgstr "la covariable doit être numérique" msgid "nonexistent group in 'newdata'" msgstr "groupe inexistant dans 'newdata'" msgid "nonexistent group requested in 'subset'" msgstr "groupe inexistant mais requis dans 'subset'" msgid "only residuals and random effects allowed" msgstr "seuls les résidus et les effets aléatoires sont permis" msgid "can only fit \"lmList\" objects with single grouping variable" msgstr "" "seuls les objets \"lmList\" peuvent être ajustés avec une seule variable de " "groupe" msgid "'lme.lmList' will redefine 'data'" msgstr "'lme.lmList' va redéfinir 'data'" msgid "initial value for \"reStruct\" overwritten in 'lme.lmList'" msgstr "la valeur initiale de \"reStruct\" est remplacée dans 'lme.lmList'" msgid "fixed-effects model must be a formula of the form \"resp ~ pred\"" msgstr "" "un modèle à effet fixe doit être une formule de la forme \"resp ~ pred\"" msgid "incompatible lengths for 'random' and grouping factors" msgstr "tailles incompatibles entre 'random' et les facteurs de regroupement" msgid "incompatible formulas for groups in 'random' and 'correlation'" msgstr "" "formules incompatibles entre les groupes dans 'random' et 'correlation'" msgid "" "cannot use smaller level of grouping for 'correlation' than for 'random'. " "Replacing the former with the latter." msgstr "" "impossible d'utiliser un niveau plus petit pour le regroupement de " "'correlation' par rapport à 'random'. Replacement du premier par le second." msgid "fewer observations than random effects in all level %s groups" msgstr "" "moins d'observations qu'il n'y a d'effets aléatoires dans les niveaux des " "groupes %s" msgid "object must inherit from class \"lme\"" msgstr "l'objet doit hériter de la classe \"lme\"" msgid "terms must all have the same denominator DF" msgstr "" "Les termes doivent tous avoir le même nombre de degrés de liberté au " "dénominateur" msgid "L may only involve fixed effects with the same denominator DF" msgstr "" "'L' ne peut que prendre en compte des effets fixes ayant même degré de " "liberté au dénominateur" msgid "" "objects must inherit from classes \"gls\", \"gnls\",\"lm\",\"lmList\", \"lme" "\",\"nlme\",\"nlsList\", or \"nls\"" msgstr "" "les objets doivent hériter des classes \"gls\", \"gnls\", \"lm\",\"lmList\", " "\"lme\",\"nlme\",\"nlsList\", ou \"nls\"" msgid "" "some fitted objects deleted because response differs from the first model" msgstr "" "certains objets ajustés sont éliminés parce que leur réponse diffère du " "premier modèle" msgid "first model has a different response from the rest" msgstr "le premier modèle a une réponse différente du reste" msgid "all fitted objects must have the same estimation method" msgstr "" "tous les objets ajustés doivent l'être à l'aide de la même méthode " "d'estimation" msgid "fitted objects with different fixed effects." msgstr "les objets ont été ajustés avec différents effets fixes" msgid "REML comparisons are not meaningful." msgstr "Les comparaisons REML n'ont pas de sens." msgid "objects must have a \"call\" component or attribute" msgstr "les objets doivent avoir une composante ou un attribut \"call\"" msgid "all fitted objects must use the same number of observations" msgstr "tous les objets ajustés doivent utiliser le même nombre d'observations" msgid "only single level allowed" msgstr "seul un niveau est autorisé" msgid "covariate must have a level attribute when groups are present" msgstr "" "la covariable doit avoir un attribut 'level', lorsque des groupes sont " "présents" msgid "covariate must have a level attribute when 'id' is a formula" msgstr "" "la covariable doit avoir un attribut 'level', lorsque 'id' est une formule" msgid "covariate must have a level attribute when 'idLabels' is a formula" msgstr "" "la covariable doit avoir un attribut 'level', lorsque 'idLabels' est une " "formule" msgid "'form' must be a formula when not NULL" msgstr "'form' doit être une formule, lorsqu'il n'est pas NULL." msgid "only single effects allowed in left side of 'form'" msgstr "seul un effet est permis dans le membre de gauche de 'form'" msgid "%s is not a valid effect name" msgstr "%s n'est pas un nom valide pour un effet" msgid "no effects allowed in right side of formula" msgstr "aucun effet n'est autorisé dans le membre de droite de la formule" msgid "cannot evaluate groups for desired levels on 'newdata'" msgstr "impossible d'évaluer les groupes pour les niveaux désirés de 'newdata'" msgid "'Id' must be between 0 and 1" msgstr "'id' doit être compris entre 0 et 1" msgid "augmentation of random effects only available for single level" msgstr "" "l'augmentation des effets aléatoires n'est disponible que pour un seul niveau" msgid "no condensed linear model" msgstr "aucun modèle linéaire condensé" msgid "no fitted \"lme\" object" msgstr "pas d'objet \"lme\" ajusté" msgid "objects must have coefficients with same row names" msgstr "les objets doivent avoir des coefficients qui ont mêmes noms de lignes" msgid "object must inherit from \"data.frame\"" msgstr "l'objet doit hériter de la classe \"data.frame\"" msgid "only one level allowed in 'gapply'" msgstr "seul un niveau est autorisé pour 'gapply'" msgid "'which' must be between 1 and %d" msgstr "'which' doit être compris entre 1 et %d" msgid "'which' can only be character or integer" msgstr "'which' ne peut être qu'une chaîne de caractères ou un entier" msgid "formula(object) must return a formula" msgstr "formula(object) doit renvoyer une formule" msgid "'form' must be a two-sided formula" msgstr "'formf doit être une formule à deux membres" msgid "only one level allowed in 'gsummary'" msgstr "seul un niveau est permis dans 'gsummary'" msgid "'FUN' can only be a function or a list of functions" msgstr "'FUN' ne peut qu'être une fonction ou une liste de fonctions" msgid "cannot omit grouping factor without 'form'" msgstr "le facteur utilisé pour le regroupement ne peut être omis sans 'form'" msgid "object must inherit from class \"lmList\"" msgstr "l'objet doit hériter de la classe \"lmList\"" msgid "no degrees of freedom for estimating std. dev." msgstr "aucun nombre de degrés de liberté pour l'estimation de l'écart type" msgid "" "data argument to \"data.frame\" method for 'getGroups' does not make sense" msgstr "" "l'argument 'data' pour la méthode \"data.frame\" de 'getGroups' n'a pas de " "sens" msgid "invalid formula for groups" msgstr "formule incorrecte pour les groupes" msgid "'form' must have all components as formulas" msgstr "'form' doit avoir tous ses composantes sous forme de formules" msgid "'form' can only be a formula, or a list of formulas" msgstr "'form' ne peut être qu'une formule, ou une liste de formules" msgid "level of %s does not match formula" msgstr "le niveau de %s ne correspond pas à la formule" msgid "'form' argument must be a formula" msgstr "l'argument 'form' doit être une formule" msgid "at least two coefficients are needed" msgstr "il faut au moins deux coefficients" msgid "no model variogram available with 'showModel = TRUE'" msgstr "" "aucun variogramme n'est disponible pour le modèle avec 'showModel = TRUE'" msgid "only residuals allowed" msgstr "seuls les résidus sont autorisés" msgid "'distance' and 'object' have incompatible lengths" msgstr "'distance' et 'object' ont des tailles incompatibles" msgid "'nlme.nlsList' will redefine 'fixed', 'data', and 'start'" msgstr "'nlme.nlsList' va redéfinir 'fixed', 'data', et 'start'" msgid "can only fit \"nlsList\" objects with single grouping variable" msgstr "" "seuls les objets \"nlsList\" peuvent être ajustés avec une seule variable de " "groupe" msgid "initial value for 'reStruct' overwritten in 'nlme.nlsList'" msgstr "la valeur initiale pour 'reStruct' est remplacée dans 'nlme.nlsList'" msgid "'model' must be a formula" msgstr "'model' doit être une formule" msgid "model formula must be of the form \"resp ~ pred\"" msgstr "la formule du modèle doit être de la forme \"rep ~ pred\"" msgid "'data' must be given explicitly to use 'nlsList'" msgstr "'data' doit être fourni explicitement pour utiliser 'nlsList'" msgid "'fixed' must be a formula or list of formulae" msgstr "'fixed' doit être une formule ou une liste de formules" msgid "formulae in 'fixed' must be of the form \"parameter ~ expr\"" msgstr "" "les formules dans 'fixed' doivent être de la forme \"paramètre ~ expression\"" msgid "'random' must be a formula or list of formulae" msgstr "'random' doit être une formule ou une liste de formules" msgid "formulae in 'random' must be of the form \"parameter ~ expr\"" msgstr "" "les formules dans 'random' doivent être de la forme \"paramètre ~ expression" "\"" msgid "incompatible formulas for groups in \"random\" and \"correlation\"" msgstr "" "formules incompatibles entre les groupes dans \"random\" et \"correlation\"" msgid "" "cannot use smaller level of grouping for \"correlation\" than for \"random" "\". Replacing the former with the latter." msgstr "" "impossible d'utiliser un niveau plus petit pour le regroupement de " "\"correlation\" par rapport à \"random\". Replacement du premier par le " "second." msgid "'start' must have a component called 'fixed'" msgstr "'start' doit avoir une composante nommée 'fixed'" msgid "starting values for the 'fixed' component are not the correct length" msgstr "" "les valeurs de départ pour la composante 'fixed' n'ont pas la bonne taille" msgid "starting values for random effects should be a list, or a matrix" msgstr "" "les valeurs de départ pour les effets aléatoires doivent être dans une liste " "ou dans une matrice" msgid "" "list with starting values for random effects must have names or be of length " "%d" msgstr "" "la liste contenant les valeurs de départ pour les effets aléatoires doit " "être nommées ou de longueur %d" msgid "starting values for the random components should be a list of matrices" msgstr "" "les valeurs de départ pour les composantes aléatoires devraient être un " "liste de matrices" msgid "" "number of rows in starting values for random component at level %s should be " "%d" msgstr "" "le nombre de lignes dans les valeurs de départ pour la composante aléatoire " "au niveau %s doit être %d" msgid "" "number of columns in starting values for random component at level %s should " "be %d" msgstr "" "le nombre de colonnes dans les valeurs de départ pour la composante " "aléatoire au niveau %s doit être %d" msgid "starting values for random effects must include group levels" msgstr "" "les valeurs de départ pour les effets aléatoires doivent inclure les niveaux " "de groupe" msgid "" "groups levels mismatch in 'random' and starting values for 'random' at level " "%s" msgstr "" "niveaux de groupes incohérents dans 'random' et dans les valeurs de départ " "pour 'random' au niveau %s" msgid "" "names mismatch in 'random' and starting values for 'random' at level %s" msgstr "" "incohérence de noms entre 'random' et les valeurs de départ pour 'random' au " "niveau %s" msgid "step halving factor reduced below minimum in PNLS step" msgstr "" "le facteur de réduction à chaque étape est abaissé en dessous du minimum à " "une étape PNLS" msgid "second argument must be a groupedData object" msgstr "le second argument doit être un objet 'groupedData'" msgid "cannot use an anonymous function for the model" msgstr "impossible d'utiliser une formule anonyme pour le modèle" msgid "" "'data' must be a \"groupedData\" object if 'formula' does not include groups" msgstr "" "'data' doit être dans un objet \"groupedData\" si 'formula' n'inclus pas de " "groupes" msgid "missing call attribute in \"nlsList\" object" msgstr "attribut d'appel manquant dans l'objet \"nlsList\"" msgid "cannot access the matrix of uninitialized objects" msgstr "impossible d'accéder à la matrice d'objets non initialisés" msgid "ignoring argument 'form'" msgstr "L'argument 'form' est ignoré" msgid "ignoring argument 'nam'" msgstr "L'argument 'nam' est ignoré" msgid "'value' must be a square matrix" msgstr "'value' doit être une matrice carrée" msgid "dimnames of 'value' must match or be NULL" msgstr "" "les noms de dimensions ('dimnames') des valeurs doivent correspondre ou bien " "être NULL" msgid "names of 'value' are not consistent with 'nam' argument" msgstr "Les noms de 'value' ne sont pas conformes avec l'argument 'nam'" msgid "%s is not a valid object for \"pdMat\"" msgstr "%s n'est pas un objet correct pour \"pdMat\"" msgid "all elements of 'form' list must be two-sided formulas" msgstr "" "tous les éléments de la liste 'form' doivent être des formules à double " "membres" msgid "'form' can only be a formula or a list of formulae" msgstr "'form' ne peut qu'être une formule ou une liste de formules" msgid "'form' not consistent with 'nam'" msgstr "'form' non conforme avec 'nam'" msgid "length of 'nam' not consistent with dimensions of initial value" msgstr "la longueur de 'nam' ne correspond pas aux dimensions initiales" msgid "no default method for extracting the square root of a \"pdMat\" object" msgstr "" "pas de méthode par défaut pour extraire la racine carrée de l'objet \"pdMat\"" msgid "do not know how to obtain constrained coefficients" msgstr "impossible d'obtenir les coefficients de contrainte" msgid "" "cannot access the number of columns of uninitialized objects without names" msgstr "" "impossible de changer le nombre de colonnes d'un objet non initialisé et " "sans noms" msgid "cannot extract the log of the determinant from an uninitialized object" msgstr "" "impossible d'extraire le logarithme du déterminant d'un objet non initialisé" msgid "cannot change dimensions on an initialized \"pdMat\" object" msgstr "impossible de changer les dimensions d'un objet \"pdMat\" initialisé" msgid "Length of names should be %d" msgstr "La longueur des noms devrait être %d" msgid "" "names being assigned do not correspond to a permutation of previous names" msgstr "" "les noms affecté ne correspondent pas à une permutation des noms de départ" msgid "x-y data to splom got botched somehow" msgstr "les données x-y de 'splom' ont été corrompus" msgid "cannot get the inverse of an uninitialized object" msgstr "impossible d'obtenir l'inverse d'un objet non initialisé" msgid "an object of length %d does not match the required parameter size" msgstr "" "un objet de longeur %d ne correspond pas à la taille requise du paramètre" msgid "cannot extract matrix from an uninitialized object" msgstr "impossible d'extraire une matrice pour un objet non initialisé" msgid "cannot extract the inverse from an uninitialized object" msgstr "impossible d'extraire l'inverse d'un objet non initialisé" msgid "an object of length %d does not match a Cholesky factor" msgstr "" "un objet de longueur %d ne correspond pas à une factorisation de Cholesky" msgid "cannot extract the matrix from an uninitialized object" msgstr "impossible d'extraire la matrice d'un objet non initialisé" msgid "cannot extract the matrix from an uninitialized \"pdIdent\" object" msgstr "impossible d'extraire la matrice d'un objet \"pdIdent\" non initialisé" msgid "cannot extract the matrix with uninitialized dimensions" msgstr "" "impossible d'extraire la matrice en utilisant des dimensions non initialisées" msgid "" "must give names when initializing \"pdIdent\" from parameter without a " "formula" msgstr "" "il faut fournir les noms lorsqu'un objet \"pdIdent\" est initialisé depuis " "un paramètre sans fournir de formule" msgid "cannot extract the dimensions" msgstr "impossible d'extraire les dimensions" msgid "cannot extract the matrix from an uninitialized \"pdCompSymm\" object" msgstr "" "impossible d'extraire la matrice d'un objet \"pdCompSymm\" non initialisé" msgid "initializing \"pdCompSymm\" object is not positive definite" msgstr "l'initialisation d'un objet \"pdCompSymm\" n'est pas fini et positif" msgid "" "must give names when initializing \"pdCompSymm\" from parameter without a " "formula" msgstr "" "il faut fournir les noms lors de l'initialisation de \"pdCompSymm\" depuis " "un paramètre sans fournir de formule" msgid "cannot obtain constrained coefficients with uninitialized dimensions" msgstr "" "impossible d'obtenir les coefficients de contrainte avec des dimensions non " "initialisées" msgid "cannot access the matrix of object without names" msgstr "" "impossible d'accéder à la matrice d'un objet dont les noms ne sont pas " "définis" msgid "'form' must be a list" msgstr "'form' doit être une liste" msgid "'nam' must be a list" msgstr "'nam' doit être une liste" msgid "'form' and 'nam' have incompatible lengths" msgstr "'form' et 'nam' ont des tailles incompatibles" msgid "'pdClass' must be a character vector" msgstr "'pdClass' doit être un vecteur de chaînes de caractères" msgid "'form' and 'pdClass' have incompatible lengths" msgstr "'form' et 'pdClass' ont des longueurs incompatibles" msgid "'nam' and 'pdClass' have incompatible lengths" msgstr "'nam' et 'pdClass' ont des longueurs incompatibles" msgid "LNone of the arguments specify more than one block" msgstr "Aucun des arguments ne spécifie plus d'un bloc" msgid "'object' must be a list when not missing, not a matrix, and not numeric" msgstr "" "'object' doit être une liste, lorsqu'il n'est pas manquant, pas une matrice " "ou un nombre" msgid "arguments imply different number of blocks" msgstr "les arguments impliquent des nombres différents de blocs" msgid "all elements in the argument must generate \"pdMat\" objects" msgstr "tous les éléments dans l'argument doivent générer des objets \"pdMat\"" msgid "cannot have duplicated column names in a \"pdMat\" object" msgstr "" "les noms de colonnes dupliqués ne sont pas permis dans un objet \"pdMat\"" msgid "must have formula when no names are given" msgstr "une formule est nécessaire lorsque les noms ne sont pas fournis" msgid "must give names when initializing from matrix or parameter" msgstr "" "lors de l'initialisation depuis une matrice ou un paramètre, il faut fournir " "les noms" msgid "all elements must have names when any has names" msgstr "tous les éléments doivent être nommés, lorsqu'au moins un l'est" msgid "all elements must have a non-zero size" msgstr "tous les éléments doivent avoir une taille non nulle" msgid "cannot change the parameter when length of parameters is undefined" msgstr "" "le paramètre ne peut être modifié lorsque la longueur des paramètres est " "indéfinie" msgid "cannot change parameter length of initialized \"pdMat\" object" msgstr "" "impossible de changer la longueur des paramètres dans un objet \"pdMat\" " "initialisé" msgid "all elements must have formulas when any has a formula" msgstr "" "tous les éléments doivent contenir des formules, si au moins l'un d'eux en " "contient une" msgid "" "all elements of formula must be list of two-sided formulae or two-sided " "formulae" msgstr "" "tous les éléments de type formule doivent être des listes de formules à deux " "membres ou des formules à deux membres" msgid "cannot change the number of columns on an initialized object" msgstr "impossible de changer le nombre de colonnes d'un objet initialisé" msgid "names of object and value must match" msgstr "les noms de l'objet et ses valeurs ne correspondent pas" msgid "\"pdMat\" element must have a formula" msgstr "l'élément \"pdMat\" doit contenir une formule" msgid "'object' must be a list or a formula" msgstr "'object' doit être une liste ou une formule" msgid "\"pdMat\" elements must have a formula" msgstr "les éléments de \"pdMat\" doivent contenir des formules" msgid "elements in 'object' must be formulas or \"pdMat\" objects" msgstr "" "les éléments dans 'object' doivent être des formules ou des objets \"pdMat\"" msgid "cannot change the parameter when ength of parameters is undefined" msgstr "" "le paramètre ne peut être modifié lorsque la longueur des paramètres n'est " "pas définie" msgid "cannot change parameter length of initialized objects" msgstr "" "la longueur du paramètre ne peut être modifiée dans les objets initialisés" msgid "cannot extract groups formula without a formula" msgstr "impossible d'extraire les groupes sans une formule à disposition" msgid "all elements of a \"reStruct\" object must have a non-zero size" msgstr "" "tous les éléments d'un objet \"reStruct\" doivent avoir une taille non nulle" msgid "cannot change the length of 'object'" msgstr "impossible de modifier la taille de 'object'" msgid "cannot extract model matrix without formula" msgstr "" "impossible d'extraire la matrice du modèle sans une formule à disposition" msgid "incompatible lengths for object names" msgstr "longueurs non compatibles pour les noms de l'objet" msgid "" "'data' must inherit from \"groupedData\" class if 'random' does not define " "groups" msgstr "" "'data' doit hériter de la classe \"groupedData\" si 'random' ne définit pas " "les groupes" msgid "models with \"corStruct\" and/or \"varFunc\" objects not allowed" msgstr "" "les modèles avec objets \"corStruct\" et / ou \"varFunc\" ne sont pas " "autorisés" msgid "plot method only implemented for comparing models" msgstr "la méthode 'plot' n'est implémentée que pour la comparaison de modèles" msgid "no degrees of freedom specified" msgstr "aucun degré de liberté n'est spécifié" msgid "degrees of freedom and weights must have the same length" msgstr "les degrés de liberté et les pondérations doivent avoir la même taille" msgid "negative degrees of freedom not allowed" msgstr "des degrés de liberté négatifs ne sont pas permis" msgid "more than one degree of freedom is needed when one them is zero." msgstr "" "plus d'un degré de liberté est nécessaire lorsque l'un d'entre eux vaut zéro." msgid "" "can only construct \"varFunc\" object from another \"varFunc\" object, a " "formula, or a character string" msgstr "" "un objet \"varFunc\" ne peut être construit qu'à partir d'un autre objet " "\"varFunc\", une formula ou une chaîne de caractères" msgid "cannot extract parameters of uninitialized object" msgstr "impossible d'extraire les paramètres d'objets non initialisés" msgid "do not know how to get coefficients for %s object" msgstr "impossible d'obtenir les coefficients de l'objet %s" msgid "cannot change the length of covariate in \"varFunc\" object" msgstr "" "impossible de changer la longueur de la covariable dans l'objet \"varFunc\"" msgid "'value' must be a one sided formula" msgstr "'value' doit être une formule à un seul membre" msgid "'form' must have a covariate" msgstr "'form' doit avoir une covariable" msgid "ignoring 'group' in \"varFixed\" formula" msgstr "'group' est ignoré dans la formule \"varFixed\"" msgid "all variables used in 'formula' must be in 'data'" msgstr "" "toutes les variables utilisées dans 'formula' doivent aussi se retrouver " "dans 'data'" msgid "initial values must have group names in 'varIdent'" msgstr "" "les valeurs initiales doivent avoir des noms de groupes dans 'varIdent'" msgid "initial values for 'varIdent' must be > 0" msgstr "les valeurs initiales pour 'varIdent' doivent être > 0" msgid "fixed parameters must have names in 'varIdent'" msgstr "les paramètres fixés doivent avoir leurs noms dans 'varIdent'" msgid "" "cannot change the length of the \"varIdent\" parameter after initialization" msgstr "" "impossible de changer la longueur du paramètre \"varIdent\" après " "l'initialisation" msgid "fixed parameter names in 'varIdent' must be a subset of group names" msgstr "" "les noms des paramètres fixés dans 'varIdent' doivent être un sous-ensemble " "des noms de groupes" msgid "cannot fix variances in all groups" msgstr "impossible de fixer les variances de tous les groupes" msgid "initial value for \"varIdent\" should be of length %d" msgstr "la valeur initiale de \"varIdent\" doit être de longueur %d" msgid "" "names of starting value for \"varIdent\" object must contain all but one of " "the stratum levels" msgstr "" "les noms des valeurs de départ pour \"varIdent\" doivent contenir tous les " "niveaux stratifiés sauf un" msgid "nonexistent group names for initial values in 'varIdent'" msgstr "noms de groupes inexistants pour les valeurs initiales dans 'varIdent'" msgid "initial values must have group names in 'varPower'" msgstr "" "les valeurs initiales doivent avoir des noms de groupes dans 'varPower'" msgid "fixed parameters must have group names in 'varPower'" msgstr "les paramètres fixés doivent avoir des noms de groupes dans 'varPower'" msgid "" "cannot change the length of the \"varStruct\" parameter after initialization" msgstr "" "impossible de changer la longueur du paramètre \"varStruct\" après " "l'initialisation" msgid "" "cannot change coefficients before initialization or when all parameters are " "fixed" msgstr "" "impossible de changer les coefficients avant initialisation ou lorsque tous " "les paramètres sont fixés" msgid "fixed parameters must have group names" msgstr "les paramètres fixés doivent avoir des noms de groupes" msgid "mismatch between group names and fixed values names" msgstr "incohérence entre les noms de groupes et les noms des valeurs fixées" msgid "initial value for \"varPower\" should be of length %d" msgstr "la valeur initiale pour \"varPower\" devrait être de longueur %d" msgid "nonexistent group names for initial values in \"varPower\"" msgstr "noms de groupes inexistants pour les valeurs initiales de \"varPower\"" msgid "initial value for \"varPower\" should be of length 1" msgstr "la valeur initiale pour \"varPower\" devrait être de longueur 1" msgid "initial values must have group names in 'varExp'" msgstr "les valeurs initiales doivent avoir des noms de groupes dans 'varExp'" msgid "fixed parameters must have group names in 'varExp'" msgstr "les paramètres fixes doivent avoir des noms de groupes dans 'varExp'" msgid "" "cannot change the length of the \"varExp\" parameter after initialization" msgstr "" "impossible de changer la longueur du paramètre \"varExp\" après " "l'initialisation" msgid "initial value for \"varExp\" should be of length %d" msgstr "la valeur initiale pour \"varExp\" doit être de longueur %d" msgid "nonexistent group names for initial values in \"varExp\"" msgstr "noms de groupes inexistants pour les valeurs initiales de \"varExp\"" msgid "initial value for \"varExp\" should be of length 1" msgstr "la valeur initiale pour \"varExp\" devrait être de longueur 1" msgid "%s can have at most two components" msgstr "%s peut avoir jusqu'à deux composantes" msgid "%s can only have names \"const\" and \"power\"" msgstr "%s ne peut avoir que les noms \"const\" et \"power\"" msgid "%s can only be a list or numeric" msgstr "%s ne peut qu'être une liste, ou un nombre" msgid "%s must have group names in 'varConstPower'" msgstr "%s doit avoir des noms de groupes dans 'varConstPower'" msgid "constant in \"varConstPower\" structure must be > 0" msgstr "la constante dans la structure \"varConstPower\" doit être > O" msgid "initial value should be of length %d" msgstr "la valeur initiale doit être de longueur %d" msgid "nonexistent group names for initial values" msgstr "noms de groupes inexistants pour les valeurs initiales" msgid "all arguments to 'varComb' must be of class \"varFunc\"." msgstr "tous les arguments de 'varComb' doivent être de classe \"varFunc\"." msgid "cannot change parameter length of initialized \"varComb\" object" msgstr "" "impossible de modifier la longueur du paramètre pour des objets \"varComb\" " "initialisés" msgid "term %s not matched" msgid_plural "terms %s not matched" msgstr[0] "le terme %s est incohérent" msgstr[1] "les termes %s sont incohérents" msgid "'L' must have at most %d column" msgid_plural "'L' must have at most %d columns" msgstr[0] "'L' doit avoir au moins %d colonne" msgstr[1] "'L' doit avoir au moins %d colonnes" msgid "effect %s not matched" msgid_plural "effects %s not matched" msgstr[0] "effet %s incohérent" msgstr[1] "effets %s incohérent" msgid "level %s not allowed for %s" msgid_plural "levels %s not allowed for %s" msgstr[0] "le niveau %s non autorisés pour %s" msgstr[1] "les niveaux %s sont non autorisés pour %s" msgid "%s not found in data" msgid_plural "%s not found in data" msgstr[0] "%s non trouvé dans les données" msgstr[1] "%s non trouvé dans les données" msgid "nonexistent level %s" msgid_plural "nonexistent levels %s" msgstr[0] "niveau inexistant %s" msgstr[1] "niveaux inexistants %s" msgid "%s not available for plotting" msgid_plural "%s not available for plotting" msgstr[0] "%s non disponible pour le graphe" msgstr[1] "%s non disponibles pour le graphe" msgid "%s not matched" msgid_plural "%s not matched" msgstr[0] "%s non assorti" msgstr[1] "%s non assortis" msgid "group name not matched in starting values for random effects: %s" msgid_plural "" "group names not matched in starting values for random effects: %s" msgstr[0] "" "le nom de groupe ne correspond pas aux valeurs de départ pour les effets " "aléatoires : %s" msgstr[1] "" "les noms des groupes ne correspondent pas aux valeurs de départ pour les " "effets aléatoires : %s" #~ msgid "'Terms; must be between 1 and %d" #~ msgstr "'Terms; doivent être compris entre 1 et %d" #~ msgid "at level" #~ msgstr "au niveau" #~ msgid "should be" #~ msgstr "devrait être" #~ msgid "number of columns in starting values for" #~ msgstr "le nombre de colonnes dans les valeurs de départ pour" #~ msgid "random component at level" #~ msgstr "la composante aléatoire au niveau" #, fuzzy #~ msgid "'idLabels' of incorrec ltength" #~ msgstr "\"IdLabels\" de longueur inconnue" #~ msgid "Id must be between 0 and 1" #~ msgstr "'Id' doit être compris entre 0 et 1" #, fuzzy #~ msgid "\"Id\" can only be a formula or numeric" #~ msgstr "\"Id\" doit être une formule ou une valeur numérique." #~ msgid "\"IdLabels\" of incorrect length" #~ msgstr "\"IdLabels\" de longueur inconnue" #~ msgid "\"IdLabels\" can only be a formula or a vector" #~ msgstr "\"IdLabels\" ne peut être qu'une formule ou un vecteur" #, fuzzy #~ msgid "incompatible lengths for \"random\" and grouping factors" #~ msgstr "" #~ "Tailles incompatibles entre \"random\" et les facteurs de regroupement" #, fuzzy #~ msgid "id must be between 0 and 1" #~ msgstr "'Id' doit être compris entre 0 et 1" #, fuzzy #~ msgid "cannot evaluate groups for desired levels on \"newdata\"" #~ msgstr "" #~ "Impossible d'évaluer les groupes pour les niveaux désirés de \"newdata\"" #~ msgid "a list of matrices" #~ msgstr "une liste de matrices" #~ msgid "groups levels mismatch in random and starting values" #~ msgstr "" #~ "les niveaux de groupes sont inconsistants entre les effets aléatoires et " #~ "les valeurs de départ" #~ msgid "for random at level" #~ msgstr "pour les effets aléatoires au niveau" #, fuzzy #~ msgid "nonexistent groups requested in \"subset\"" #~ msgstr "Groupes inexistants demandés dans \"subset\"" #, fuzzy #~ msgid "" #~ "cannot change the length of the 'varStruct' parameter after initialization" #~ msgstr "" #~ "Impossible de changer la longueur du paramètre après l'initialisation" #~ msgid "\"Id\" can only be a formula or numeric." #~ msgstr "\"Id\" doit être une formule ou une valeur numérique." #~ msgid "Fixed-effects model must be a formula of the form \"resp ~ pred\"" #~ msgstr "" #~ "Un modèle à effet fixe doit être une formule de la forme \"resp ~ pred\"" #~ msgid "Incompatible lengths for \"random\" and grouping factors" #~ msgstr "" #~ "Tailles incompatibles entre \"random\" et les facteurs de regroupement" #~ msgid "Cannot access the matrix of uninitialized objects" #~ msgstr "Impossible d'accéder à la matrice d'objets non initialisés" #, fuzzy #~ msgid "Cannot change the parameter when ength of parameters is undefined" #~ msgstr "Impossible de changer le paramètre lorsque" #~ msgid "Cannot change the length of the parameter after initialization" #~ msgstr "" #~ "Impossible de changer la longueur du paramètre après l'initialisation" #~ msgid "Right hand side of first argument must be a conditional expression" #~ msgstr "" #~ "Le membre de droite du premier argument doit être une expression " #~ "conditionnelle" #~ msgid "\"Form\" must be a formula" #~ msgstr "\"Form\" doit être une formule" #~ msgid "\"Form\" must be a one-sided formula" #~ msgstr "\"Form\" doit être une formule à un seul membre" #~ msgid "\"Form\" must be a two sided formula" #~ msgstr "\"Form\" doit être une formule à deux membres" #~ msgid "Covariate must be numeric" #~ msgstr "La covariable doit être numérique" #, fuzzy #~ msgid "Incompatible formulas for groups in \"random\" and \"correlation\"" #~ msgstr "Formules incompatibles entre les groupes dans \"random\"" #~ msgid "Cannot evaluate groups for desired levels on \"newdata\"" #~ msgstr "" #~ "Impossible d'évaluer les groupes pour les niveaux désirés de \"newdata\"" #~ msgid "Ignoring argument \"form\"" #~ msgstr "L'argument \"form\" est ignoré" #~ msgid "Ignoring argument \"nam\"" #~ msgstr "L'argument \"nam\" est ignoré" #~ msgid "Cannot have duplicated column names in a pdMat object" #~ msgstr "" #~ "Les noms de colonnes dupliqués ne sont pas permis dans un objet 'pdMat'" #, fuzzy #~ msgid "Level %s not allowed for %s" #~ msgid_plural "Levels %s not allowed for %s" #~ msgstr[0] "non autorisés pour" #~ msgstr[1] "non autorisés pour" #~ msgid "Multiple levels not allowed" #~ msgstr "Niveaux multiples non permis" #~ msgid "Subset can only be character or integer" #~ msgstr "" #~ "'Subset' ne peut qu'être une chaîne de caractères ou une valeur numérique" #~ msgid "Can only fit nlsList objects with single grouping variable" #~ msgstr "" #~ "Les objets 'nlsList' ne peuvent être ajustés qu'avec une seule variable " #~ "de regroupement" #~ msgid "random formula must be a formula or list of formulae" #~ msgstr "la formule 'random' doit être une formule ou une liste de formules" #~ msgid "Negative control$nlmStepMax - using default value" #~ msgstr "control$nlmStepMax négatif - utilisation de la valeur par défaut" #~ msgid "Maximum number of iterations reached without convergence" #~ msgstr "Le numbre maximum d'itérations est atteint, mais pas la convergence" #, fuzzy #~ msgid "Data in %s call must evaluate to a data frame" #~ msgstr "l'appel doit être évalué comme un tableau de données" #~ msgid "Covariate must be a data frame" #~ msgstr "La covariable doit être un tableau de données (data.frame)" #~ msgid "Cannot do pairs of just one variable" #~ msgstr "Impossible d'apparier avec seulement une variable" #~ msgid "Only residuals and random effects allowed" #~ msgstr "Seuls les résidus et les effets aléatoires sont permis" #, fuzzy #~ msgid "Fewer observations than random effects in all level %s grups" #~ msgstr "" #~ "Moins d'observations qu'il n'y a d'effets aléatoires dans tous les groupes" #~ msgid "does not include groups" #~ msgstr "qui n'inclut pas les groupes" #~ msgid "Maximum number of iterations reached without convergence." #~ msgstr "Le nombre maximum d'itérations est atteint mais pas la convergence" #, fuzzy #~ msgid "'Nint' is not consistent with 'breaks'" #~ msgstr "'nint' n'est pas consistant avec 'breaks'" #~ msgid "Only single level allowed." #~ msgstr "Un seul niveau est autorisé." #~ msgid "individual" #~ msgstr "l'individu" #~ msgid "object" #~ msgstr "objet" #~ msgid "within groups for corSymm objects" #~ msgstr "intragroupe pour les objets 'corSymm'" #~ msgid "Unique values of the covariate for \"corSymm\"" #~ msgstr "Valeurs uniques pour la covariable pour \"corSymm\"" #~ msgid "Initial values for corSymm do not define" #~ msgstr "Les valeurs initiales pour 'corSymm' ne sont pas définies" #~ msgid "Unique values of the covariate for corNatural" #~ msgstr "Valeurs uniques de la covariable pour 'corNatural'" #~ msgid "within groups for corAR1 objects" #~ msgstr "intragroupes pour des objets 'corAR1'" #~ msgid "within groups for corCAR1 objects" #~ msgstr "intragroupe pour des objets 'corCAR1'" #~ msgid "within groups for corARMA objects" #~ msgstr "intragroupes pour les objets 'corARMA'" #~ msgid "Parameter in \"corCompSymm\" structure" #~ msgstr "Le paramètre dans la structure \"corCompSymm\"" #~ msgid "must be < 1 in absolute value" #~ msgstr "doit être < 1 en valeur absolue" #~ msgid "inf" #~ msgstr "inf" #~ msgid "Setting it to 1.1 * min(distance)" #~ msgstr "La valeur est fixée à 1.1 * min(distance)" #~ msgid "Term(s)" #~ msgstr "Terme(s)" #~ msgid "," #~ msgstr "," #~ msgid "columns" #~ msgstr "colonnes" #~ msgid "Effects" #~ msgstr "Effets" #~ msgid "Data in" #~ msgstr "Données dans" #~ msgid "and" #~ msgstr "et" #~ msgid "Levels" #~ msgstr "Niveaux" #~ msgid "Nint is not consistent with breaks." #~ msgstr "'Nint' n'est pas consistant avec 'breaks'" #~ msgid "to get initial estimates" #~ msgstr "pour obtenir les estimations initiales" #~ msgid "not of full rank" #~ msgstr "n'est pas de rang plein" #~ msgid "for" #~ msgstr "pour" #~ msgid "setting it to the display level" #~ msgstr "il est modifié au même niveau que l'affichage" #~ msgid "and \"correlation\"" #~ msgstr "et \"correlation\"" #~ msgid "Cannot use smaller level of grouping for" #~ msgstr "Impossible d'utiliser des niveaux plus petits de regroupement pour" #~ msgid "\"correlation\" than for \"random\". Replacing" #~ msgstr "\"correlation\" que pour \"random\". Remplacement" #~ msgid "the former with the latter." #~ msgstr "du premier par le second." #~ msgid "groups" #~ msgstr "de niveaux" #~ msgid "Objects must inherit from classes \"gls\", \"gnls\"" #~ msgstr "Les objets doivent hériter des classes \"gls\", \"gnls\"," #~ msgid "Some fitted objects deleted because" #~ msgstr "Quelques objets ajustés sont éliminés parce que" #~ msgid "Level of" #~ msgstr "Le niveau de" #~ msgid "\"" #~ msgstr "\"" #~ msgid "level of" #~ msgstr "niveau de" #~ msgid "\"data\", and \"start\"" #~ msgstr "\"data\", et \"start\"" #~ msgid "or be of length" #~ msgstr "ou être de longueur" #~ msgid "for random effects:" #~ msgstr "pour les effets aléatoires :" #~ msgid "old-style self-starting model functions" #~ msgstr "les fonctions auto-initialisées d'un ancien style" #~ msgid "are no longer supported." #~ msgstr "ne sont plus supportées." #~ msgid "New selfStart functions are available." #~ msgstr "De nouvelles fonctions 'selfStart' sont disponibles." #~ msgid "Use" #~ msgstr "Utilisez" #~ msgid "SSfpl instead of fpl," #~ msgstr "'SSfpl' à la place de 'fpl'" #~ msgid "SSfol instead of first.order.log," #~ msgstr "'SSfol' à la place de 'first.order.log'" #~ msgid "SSbiexp instead of biexp," #~ msgstr "'SSbiexp' à la place de 'biexp'" #~ msgid "SSlogis instead of logistic." #~ msgstr "'SSlogis' à la place de 'logistic'." #~ msgid "If writing your own selfStart model, see" #~ msgstr "Si vous créez vos propres fonctions auto-initialisées," #~ msgid "\"help(selfStart)\"" #~ msgstr "voyez \"help(selfStart)\"" #~ msgid "for the new form of the \"initial\" attribute." #~ msgstr "pour la nouvelle forme de l'attribut \"initial\"." #~ msgid "with \"nam\" argument" #~ msgstr "avec l'argument \"nam\"" #~ msgid "of initial value" #~ msgstr "des valeurs initiales" #~ msgid "root of a pdMat object" #~ msgstr "racine carrée de l'objet 'pdMat'" #~ msgid "Cannot access the number of columns of" #~ msgstr "Impossible d'obtenir le nombre de colonnes des" #~ msgid "uninitialized objects without names." #~ msgstr "objets non initialisés et non nommés" #~ msgid "Cannot extract the log of the determinant" #~ msgstr "Impossible d'extraire le log du déterminant" #~ msgid "from an uninitialized object" #~ msgstr "pour un objet non initialisé" #~ msgid "of previous names" #~ msgstr "des noms antérieurs" #~ msgid "An object of length" #~ msgstr "Un objet de longueur" #~ msgid "without a formula" #~ msgstr "sans une formule" #~ msgid "uninitialized dimensions" #~ msgstr "des dimensions non initialisées" #~ msgid "not a matrix, and not numeric" #~ msgstr "ni une matrice, ni un nombre" #~ msgid "or two-sided formulae" #~ msgstr "ou des formules à double membre" #~ msgid "if random does not define groups" #~ msgstr "si l'effet aléatoire ne définit pas les groupes" #~ msgid "object, a formula, or a character string" #~ msgstr "'varFunc', d'une formule, ou d'une chaîne de caractères" #~ msgid "Cannot change the length of the varIdent" #~ msgstr "Impossible de changer la taille de 'varIdent'" #~ msgid "parameter after initialization" #~ msgstr "paramètre après initialisation" #~ msgid "Fixed parameters names in varIdent" #~ msgstr "Les noms de paramètres fixes dans 'varIdent'" #~ msgid "must be a subset of groups names" #~ msgstr "doivent être un sous-ensemble des noms de groupes" #~ msgid "Names of starting value for \"varIdent\" object" #~ msgstr "Les noms de la valeur initiale pour l'objet \"varIdent\"" #~ msgid "Cannot change the length of the varStruct" #~ msgstr "Impossible de modifier la taille de 'varStruct'" #~ msgid "when all parameters are fixed" #~ msgstr "lorsque tous les paramètres sont fixés" #~ msgid "Cannot change the length of the" #~ msgstr "Impossible de modifier la taille de" #~ msgid "Contrasts not defined for" #~ msgstr "Les contrastes ne sont pas définis pour" #~ msgid "degrees of freedom" #~ msgstr "degrés de liberté" nlme/po/de.po0000644000176000001440000000411412203635654012611 0ustar ripleyusers# Translation of nlme.pot to German # Copyright (C) 2007-2009 The R Foundation # This file is distributed under the same license as the nlme package. # Chris Leick , 2009-2012. # msgid "" msgstr "" "Project-Id-Version: R 2.15.2 / nlme 3.1-105\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-08-17 08:12+0100\n" "PO-Revision-Date: 2012-10-04 19:53+0200\n" "Last-Translator: Chris Leick \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: corStruct.c:445 msgid "All parameters must be less than 1 in absolute value" msgstr "Der Betrag aller Parameter muss kleiner 1 sein." #: corStruct.c:556 msgid "Coefficient matrix not invertible" msgstr "Koeffizientenmatrix nicht invertierbar" #: corStruct.c:908 corStruct.c:963 corStruct.c:1030 corStruct.c:1072 msgid "Unknown spatial correlation class" msgstr "Unbekannte räumliche Korrelations-Klasse" #: nlme.c:498 msgid "First observation on an individual must have a dose" msgstr "Erste Beobachtung eines Individuums muss eine Dosis haben" #: nlmefit.c:400 #, c-format msgid "Singularity in backsolve at level %ld, block %ld" msgstr "Singularität in backsolve auf Stufe %ld, Block %ld" #: nlmefit.c:557 msgid "analytic gradient is not available with matrix logarithm" msgstr "analytischer Gradient ist nicht mit Matrixlogarithmus verfügbar" #: nlmefit.c:580 msgid "analytic gradient is not available with compound symmetry" msgstr "" "analytischer Gradient ist nicht mit zusammengesetzter Symmetrie verfügbar" #: nlmefit.c:860 msgid "Unable to form eigenvalue-eigenvector decomposition" msgstr "Unfähig eine Eigenwert-Eigenvektor-Zerlegung zu bilden" #: nlmefit.c:892 msgid "Unable to form Cholesky decomposition" msgstr "Unfähig eine Cholesky-Zerlegung zu bilden" #: nlmefit.c:923 msgid "Haven't written the compound symmetry case for this yet" msgstr "" "Fall von zusammengesetzter Symmetrie wurde für dies noch nicht geschrieben" nlme/po/R-nlme.pot0000644000176000001440000005537412203635654013555 0ustar ripleyusersmsgid "" msgstr "" "Project-Id-Version: nlme 3.1-111\n" "POT-Creation-Date: 2013-08-17 08:12\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" msgid "not implemented for \"nlme\" objects" msgstr "" msgid "not implemented for multiple levels of nesting" msgstr "" msgid "individual %s was not used in the fit" msgstr "" msgid "do not know how to calculate correlation matrix of %s object" msgstr "" msgid "\"corStruct\" object must have a \"fixed\" attribute" msgstr "" msgid "do not know how to obtain parameters of %s object" msgstr "" msgid "cannot change the length of the parameter of a \"corStruct\" object" msgstr "" msgid "cannot change 'form'" msgstr "" msgid "need data to calculate covariate of \"corStruct\" object" msgstr "" msgid "cannot change the length of the parameter of a \"corSymm\" object" msgstr "" msgid "covariate must have unique values within groups for \"corSymm\" objects" msgstr "" msgid "unique values of the covariate for \"corSymm\" objects must be a sequence of consecutive integers" msgstr "" msgid "initial value for \"corSymm\" parameters of wrong dimension" msgstr "" msgid "initial values for \"corSymm\" must be between -1 and 1" msgstr "" msgid "initial values for \"corSymm\" do not define a positive-definite correlation structure" msgstr "" msgid "cannot change the length of the parameter of a \"corNatural\" object" msgstr "" msgid "covariate must have unique values within groups for \"corNatural\" objects" msgstr "" msgid "unique values of the covariate for \"corNatural\" objects must be a sequence of consecutive integers" msgstr "" msgid "initial value for \"corNatural\" parameters of wrong dimension" msgstr "" msgid "initial values for \"corNatural\" must be between -1 and 1" msgstr "" msgid "initial values for \"corNatural\" do not define a positive-definite correlation structure" msgstr "" msgid "parameter in AR(1) structure must be between -1 and 1" msgstr "" msgid "cannot change the length of the parameter of a \"corAR1\" object" msgstr "" msgid "covariate must have unique values within groups for \"corAR1\" objects" msgstr "" msgid "parameter in CAR(1) structure must be between 0 and 1" msgstr "" msgid "cannot change the length of the parameter of a \"corCAR1\" object" msgstr "" msgid "covariate must have unique values within groups for \"corCAR1\" objects" msgstr "" msgid "autoregressive order must be a non-negative integer" msgstr "" msgid "moving average order must be a non-negative integer" msgstr "" msgid "initial value for parameter of wrong length" msgstr "" msgid "parameters in ARMA structure must be < 1 in absolute value" msgstr "" msgid "'object' has not been Initialize()d" msgstr "" msgid "cannot change the length of the parameter of a \"corARMA\" object" msgstr "" msgid "covariate must have unique values within groups for \"corARMA\" objects" msgstr "" msgid "parameter in \"corCompSymm\" structure must be < 1 in absolute value" msgstr "" msgid "cannot change the length of the parameter of a \"corCompSymm\" object" msgstr "" msgid "initial value in \"corCompSymm\" must be greater than %s" msgstr "" msgid "cannot change the length of the parameter after initialization" msgstr "" msgid "need data to calculate covariate" msgstr "" msgid "cannot have zero distances in \"corSpatial\"" msgstr "" msgid "'range' must be > 0 in \"corSpatial\" initial value" msgstr "" msgid "initial value for \"corSpatial\" parameters of wrong dimension" msgstr "" msgid "initial value of nugget ratio must be between 0 and 1" msgstr "" msgid "'range' must be > 0 in \"corLin\" initial value" msgstr "" msgid "initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)" msgstr "" msgid "initial value for \"corLin\" parameters of wrong dimension" msgstr "" msgid "range must be > 0 in \"corSpher\" initial value" msgstr "" msgid "initial value for \"corSpher\" parameters of wrong dimension" msgstr "" msgid "negative control$nlmStepMax - using default value" msgstr "" msgid "model must be a formula of the form \"resp ~ pred\"" msgstr "" msgid "no coefficients to fit" msgstr "" msgid "maximum number of iterations reached without convergence" msgstr "" msgid "computed \"gls\" fit is singular, rank %s" msgstr "" msgid "object must inherit from class \"gls\"" msgstr "" msgid "'Terms' must be between 1 and %d" msgstr "" msgid "terms can only be integers or characters" msgstr "" msgid "data in %s call must evaluate to a data frame" msgstr "" msgid "%s without \"primary\" can only be used with fits of \"groupedData\" objects" msgstr "" msgid "only one level allowed for predictions" msgstr "" msgid "%s and %s must have the same group levels" msgstr "" msgid "wrong group levels" msgstr "" msgid "cannot get confidence intervals on var-cov components: %s" msgstr "" msgid "need an object with call component" msgstr "" msgid "'nint' is not consistent with 'breaks'" msgstr "" msgid "'object' must be a formula" msgstr "" msgid "object formula must be of the form \"resp ~ pred\"" msgstr "" msgid "'data' must be given explicitly to use 'nls' to get initial estimates" msgstr "" msgid "no initial values for model parameters" msgstr "" msgid "starting estimates must have names when 'params' is missing" msgstr "" msgid "'params' must be a formula or list of formulae" msgstr "" msgid "formulae in 'params' must be of the form \"parameter ~ expr\"" msgstr "" msgid "starting values for parameters are not of the correct length" msgstr "" msgid "step halving factor reduced below minimum in NLS step" msgstr "" msgid "approximate covariance matrix for parameter estimates not of full rank" msgstr "" msgid "cannot calculate REML log-likelihood for \"gnls\" objects" msgstr "" msgid "first argument to 'groupedData' must be a two-sided formula" msgstr "" msgid "right-hand side of first argument must be a conditional expression" msgstr "" msgid "first argument to 'nfGroupedData' must be a two-sided formula" msgstr "" msgid "only one level of grouping allowed" msgstr "" msgid "second argument to 'groupedData' must inherit from data.frame" msgstr "" msgid "first argument to 'nmGroupedData' must be a two-sided formula" msgstr "" msgid "'subset' ignored with single grouping factor" msgstr "" msgid "'subset' must be a list" msgstr "" msgid "undefined group declared in 'subset'" msgstr "" msgid "only one display level allowed" msgstr "" msgid "undefined display level %s for %s" msgstr "" msgid "undefined collapsing level %s for %s" msgstr "" msgid "collapsing level cannot be smaller than display level; setting it to the display level" msgstr "" msgid "'preserve' must be a two-sided formula" msgstr "" msgid "'asTable' cannot be used with multilevel grouped data" msgstr "" msgid "'asTable' can only be used with balanced 'groupedData' objects" msgstr "" msgid "multiple levels not allowed" msgstr "" msgid "'data' must be a \"groupedData\" object if 'groups' argument is missing" msgstr "" msgid "An lm fit failed, probably because a factor only had one level" msgstr "" msgid "'data' in %s call must evaluate to a data frame" msgstr "" msgid "nonexistent groups requested in 'subset'" msgstr "" msgid "'subset' can only be character or integer" msgstr "" msgid "log-likelihood not available with NULL fits" msgstr "" msgid "'form' must be a formula" msgstr "" msgid "'form' must be a one-sided formula" msgstr "" msgid "covariate must be a data frame" msgstr "" msgid "cannot do pairs of just one variable" msgstr "" msgid "'id' must be between 0 and 1" msgstr "" msgid "'id' can only be a formula or numeric" msgstr "" msgid "'idLabels' of incorrect length" msgstr "" msgid "'idLabels' can only be a formula or a vector" msgstr "" msgid "covariate must be numeric" msgstr "" msgid "nonexistent group in 'newdata'" msgstr "" msgid "nonexistent group requested in 'subset'" msgstr "" msgid "only residuals and random effects allowed" msgstr "" msgid "can only fit \"lmList\" objects with single grouping variable" msgstr "" msgid "'lme.lmList' will redefine 'data'" msgstr "" msgid "initial value for \"reStruct\" overwritten in 'lme.lmList'" msgstr "" msgid "fixed-effects model must be a formula of the form \"resp ~ pred\"" msgstr "" msgid "incompatible lengths for 'random' and grouping factors" msgstr "" msgid "incompatible formulas for groups in 'random' and 'correlation'" msgstr "" msgid "cannot use smaller level of grouping for 'correlation' than for 'random'. Replacing the former with the latter." msgstr "" msgid "fewer observations than random effects in all level %s groups" msgstr "" msgid "object must inherit from class \"lme\"" msgstr "" msgid "terms must all have the same denominator DF" msgstr "" msgid "L may only involve fixed effects with the same denominator DF" msgstr "" msgid "objects must inherit from classes \"gls\", \"gnls\",\"lm\",\"lmList\", \"lme\",\"nlme\",\"nlsList\", or \"nls\"" msgstr "" msgid "some fitted objects deleted because response differs from the first model" msgstr "" msgid "first model has a different response from the rest" msgstr "" msgid "all fitted objects must have the same estimation method" msgstr "" msgid "fitted objects with different fixed effects." msgstr "" msgid "REML comparisons are not meaningful." msgstr "" msgid "objects must have a \"call\" component or attribute" msgstr "" msgid "all fitted objects must use the same number of observations" msgstr "" msgid "only single level allowed" msgstr "" msgid "covariate must have a level attribute when groups are present" msgstr "" msgid "covariate must have a level attribute when 'id' is a formula" msgstr "" msgid "covariate must have a level attribute when 'idLabels' is a formula" msgstr "" msgid "'form' must be a formula when not NULL" msgstr "" msgid "only single effects allowed in left side of 'form'" msgstr "" msgid "%s is not a valid effect name" msgstr "" msgid "no effects allowed in right side of formula" msgstr "" msgid "cannot evaluate groups for desired levels on 'newdata'" msgstr "" msgid "'Id' must be between 0 and 1" msgstr "" msgid "augmentation of random effects only available for single level" msgstr "" msgid "no condensed linear model" msgstr "" msgid "no fitted \"lme\" object" msgstr "" msgid "objects must have coefficients with same row names" msgstr "" msgid "object must inherit from \"data.frame\"" msgstr "" msgid "only one level allowed in 'gapply'" msgstr "" msgid "'which' must be between 1 and %d" msgstr "" msgid "'which' can only be character or integer" msgstr "" msgid "formula(object) must return a formula" msgstr "" msgid "'form' must be a two-sided formula" msgstr "" msgid "only one level allowed in 'gsummary'" msgstr "" msgid "'FUN' can only be a function or a list of functions" msgstr "" msgid "cannot omit grouping factor without 'form'" msgstr "" msgid "object must inherit from class \"lmList\"" msgstr "" msgid "no degrees of freedom for estimating std. dev." msgstr "" msgid "data argument to \"data.frame\" method for 'getGroups' does not make sense" msgstr "" msgid "invalid formula for groups" msgstr "" msgid "'form' must have all components as formulas" msgstr "" msgid "'form' can only be a formula, or a list of formulas" msgstr "" msgid "level of %s does not match formula" msgstr "" msgid "'form' argument must be a formula" msgstr "" msgid "at least two coefficients are needed" msgstr "" msgid "no model variogram available with 'showModel = TRUE'" msgstr "" msgid "only residuals allowed" msgstr "" msgid "'distance' and 'object' have incompatible lengths" msgstr "" msgid "'nlme.nlsList' will redefine 'fixed', 'data', and 'start'" msgstr "" msgid "can only fit \"nlsList\" objects with single grouping variable" msgstr "" msgid "initial value for 'reStruct' overwritten in 'nlme.nlsList'" msgstr "" msgid "'model' must be a formula" msgstr "" msgid "model formula must be of the form \"resp ~ pred\"" msgstr "" msgid "'data' must be given explicitly to use 'nlsList'" msgstr "" msgid "'fixed' must be a formula or list of formulae" msgstr "" msgid "formulae in 'fixed' must be of the form \"parameter ~ expr\"" msgstr "" msgid "'random' must be a formula or list of formulae" msgstr "" msgid "formulae in 'random' must be of the form \"parameter ~ expr\"" msgstr "" msgid "incompatible formulas for groups in \"random\" and \"correlation\"" msgstr "" msgid "cannot use smaller level of grouping for \"correlation\" than for \"random\". Replacing the former with the latter." msgstr "" msgid "'start' must have a component called 'fixed'" msgstr "" msgid "starting values for the 'fixed' component are not the correct length" msgstr "" msgid "starting values for random effects should be a list, or a matrix" msgstr "" msgid "list with starting values for random effects must have names or be of length %d" msgstr "" msgid "starting values for the random components should be a list of matrices" msgstr "" msgid "number of rows in starting values for random component at level %s should be %d" msgstr "" msgid "number of columns in starting values for random component at level %s should be %d" msgstr "" msgid "starting values for random effects must include group levels" msgstr "" msgid "groups levels mismatch in 'random' and starting values for 'random' at level %s" msgstr "" msgid "names mismatch in 'random' and starting values for 'random' at level %s" msgstr "" msgid "step halving factor reduced below minimum in PNLS step" msgstr "" msgid "second argument must be a groupedData object" msgstr "" msgid "cannot use an anonymous function for the model" msgstr "" msgid "'data' must be a \"groupedData\" object if 'formula' does not include groups" msgstr "" msgid "missing call attribute in \"nlsList\" object" msgstr "" msgid "cannot access the matrix of uninitialized objects" msgstr "" msgid "ignoring argument 'form'" msgstr "" msgid "ignoring argument 'nam'" msgstr "" msgid "'value' must be a square matrix" msgstr "" msgid "dimnames of 'value' must match or be NULL" msgstr "" msgid "names of 'value' are not consistent with 'nam' argument" msgstr "" msgid "%s is not a valid object for \"pdMat\"" msgstr "" msgid "all elements of 'form' list must be two-sided formulas" msgstr "" msgid "'form' can only be a formula or a list of formulae" msgstr "" msgid "'form' not consistent with 'nam'" msgstr "" msgid "length of 'nam' not consistent with dimensions of initial value" msgstr "" msgid "no default method for extracting the square root of a \"pdMat\" object" msgstr "" msgid "do not know how to obtain constrained coefficients" msgstr "" msgid "cannot access the number of columns of uninitialized objects without names" msgstr "" msgid "cannot extract the log of the determinant from an uninitialized object" msgstr "" msgid "cannot change dimensions on an initialized \"pdMat\" object" msgstr "" msgid "Length of names should be %d" msgstr "" msgid "names being assigned do not correspond to a permutation of previous names" msgstr "" msgid "x-y data to splom got botched somehow" msgstr "" msgid "cannot get the inverse of an uninitialized object" msgstr "" msgid "an object of length %d does not match the required parameter size" msgstr "" msgid "cannot extract matrix from an uninitialized object" msgstr "" msgid "cannot extract the inverse from an uninitialized object" msgstr "" msgid "an object of length %d does not match a Cholesky factor" msgstr "" msgid "cannot extract the matrix from an uninitialized object" msgstr "" msgid "cannot extract the matrix from an uninitialized \"pdIdent\" object" msgstr "" msgid "cannot extract the matrix with uninitialized dimensions" msgstr "" msgid "must give names when initializing \"pdIdent\" from parameter without a formula" msgstr "" msgid "cannot extract the dimensions" msgstr "" msgid "cannot extract the matrix from an uninitialized \"pdCompSymm\" object" msgstr "" msgid "initializing \"pdCompSymm\" object is not positive definite" msgstr "" msgid "must give names when initializing \"pdCompSymm\" from parameter without a formula" msgstr "" msgid "cannot obtain constrained coefficients with uninitialized dimensions" msgstr "" msgid "cannot access the matrix of object without names" msgstr "" msgid "'form' must be a list" msgstr "" msgid "'nam' must be a list" msgstr "" msgid "'form' and 'nam' have incompatible lengths" msgstr "" msgid "'pdClass' must be a character vector" msgstr "" msgid "'form' and 'pdClass' have incompatible lengths" msgstr "" msgid "'nam' and 'pdClass' have incompatible lengths" msgstr "" msgid "LNone of the arguments specify more than one block" msgstr "" msgid "'object' must be a list when not missing, not a matrix, and not numeric" msgstr "" msgid "arguments imply different number of blocks" msgstr "" msgid "all elements in the argument must generate \"pdMat\" objects" msgstr "" msgid "cannot have duplicated column names in a \"pdMat\" object" msgstr "" msgid "must have formula when no names are given" msgstr "" msgid "must give names when initializing from matrix or parameter" msgstr "" msgid "all elements must have names when any has names" msgstr "" msgid "all elements must have a non-zero size" msgstr "" msgid "cannot change the parameter when length of parameters is undefined" msgstr "" msgid "cannot change parameter length of initialized \"pdMat\" object" msgstr "" msgid "all elements must have formulas when any has a formula" msgstr "" msgid "all elements of formula must be list of two-sided formulae or two-sided formulae" msgstr "" msgid "cannot change the number of columns on an initialized object" msgstr "" msgid "names of object and value must match" msgstr "" msgid "\"pdMat\" element must have a formula" msgstr "" msgid "'object' must be a list or a formula" msgstr "" msgid "\"pdMat\" elements must have a formula" msgstr "" msgid "elements in 'object' must be formulas or \"pdMat\" objects" msgstr "" msgid "cannot change the parameter when ength of parameters is undefined" msgstr "" msgid "cannot change parameter length of initialized objects" msgstr "" msgid "cannot extract groups formula without a formula" msgstr "" msgid "all elements of a \"reStruct\" object must have a non-zero size" msgstr "" msgid "cannot change the length of 'object'" msgstr "" msgid "cannot extract model matrix without formula" msgstr "" msgid "incompatible lengths for object names" msgstr "" msgid "'data' must inherit from \"groupedData\" class if 'random' does not define groups" msgstr "" msgid "models with \"corStruct\" and/or \"varFunc\" objects not allowed" msgstr "" msgid "plot method only implemented for comparing models" msgstr "" msgid "no degrees of freedom specified" msgstr "" msgid "degrees of freedom and weights must have the same length" msgstr "" msgid "negative degrees of freedom not allowed" msgstr "" msgid "more than one degree of freedom is needed when one them is zero." msgstr "" msgid "can only construct \"varFunc\" object from another \"varFunc\" object, a formula, or a character string" msgstr "" msgid "cannot extract parameters of uninitialized object" msgstr "" msgid "do not know how to get coefficients for %s object" msgstr "" msgid "cannot change the length of covariate in \"varFunc\" object" msgstr "" msgid "'value' must be a one sided formula" msgstr "" msgid "'form' must have a covariate" msgstr "" msgid "ignoring 'group' in \"varFixed\" formula" msgstr "" msgid "all variables used in 'formula' must be in 'data'" msgstr "" msgid "initial values must have group names in 'varIdent'" msgstr "" msgid "initial values for 'varIdent' must be > 0" msgstr "" msgid "fixed parameters must have names in 'varIdent'" msgstr "" msgid "cannot change the length of the \"varIdent\" parameter after initialization" msgstr "" msgid "fixed parameter names in 'varIdent' must be a subset of group names" msgstr "" msgid "cannot fix variances in all groups" msgstr "" msgid "initial value for \"varIdent\" should be of length %d" msgstr "" msgid "names of starting value for \"varIdent\" object must contain all but one of the stratum levels" msgstr "" msgid "nonexistent group names for initial values in 'varIdent'" msgstr "" msgid "initial values must have group names in 'varPower'" msgstr "" msgid "fixed parameters must have group names in 'varPower'" msgstr "" msgid "cannot change the length of the \"varStruct\" parameter after initialization" msgstr "" msgid "cannot change coefficients before initialization or when all parameters are fixed" msgstr "" msgid "fixed parameters must have group names" msgstr "" msgid "mismatch between group names and fixed values names" msgstr "" msgid "initial value for \"varPower\" should be of length %d" msgstr "" msgid "nonexistent group names for initial values in \"varPower\"" msgstr "" msgid "initial value for \"varPower\" should be of length 1" msgstr "" msgid "initial values must have group names in 'varExp'" msgstr "" msgid "fixed parameters must have group names in 'varExp'" msgstr "" msgid "cannot change the length of the \"varExp\" parameter after initialization" msgstr "" msgid "initial value for \"varExp\" should be of length %d" msgstr "" msgid "nonexistent group names for initial values in \"varExp\"" msgstr "" msgid "initial value for \"varExp\" should be of length 1" msgstr "" msgid "%s can have at most two components" msgstr "" msgid "%s can only have names \"const\" and \"power\"" msgstr "" msgid "%s can only be a list or numeric" msgstr "" msgid "%s must have group names in 'varConstPower'" msgstr "" msgid "constant in \"varConstPower\" structure must be > 0" msgstr "" msgid "initial value should be of length %d" msgstr "" msgid "nonexistent group names for initial values" msgstr "" msgid "all arguments to 'varComb' must be of class \"varFunc\"." msgstr "" msgid "cannot change parameter length of initialized \"varComb\" object" msgstr "" msgid "term %s not matched" msgid_plural "terms %s not matched" msgstr[0] "" msgstr[1] "" msgid "'L' must have at most %d column" msgid_plural "'L' must have at most %d columns" msgstr[0] "" msgstr[1] "" msgid "effect %s not matched" msgid_plural "effects %s not matched" msgstr[0] "" msgstr[1] "" msgid "level %s not allowed for %s" msgid_plural "levels %s not allowed for %s" msgstr[0] "" msgstr[1] "" msgid "%s not found in data" msgid_plural "%s not found in data" msgstr[0] "" msgstr[1] "" msgid "nonexistent level %s" msgid_plural "nonexistent levels %s" msgstr[0] "" msgstr[1] "" msgid "%s not available for plotting" msgid_plural "%s not available for plotting" msgstr[0] "" msgstr[1] "" msgid "%s not matched" msgid_plural "%s not matched" msgstr[0] "" msgstr[1] "" msgid "group name not matched in starting values for random effects: %s" msgid_plural "group names not matched in starting values for random effects: %s" msgstr[0] "" msgstr[1] "" nlme/po/pl.po0000644000176000001440000000625212203635654012641 0ustar ripleyusersmsgid "" msgstr "" "Project-Id-Version: nlme 3.1-104\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-08-17 08:12+0100\n" "PO-Revision-Date: \n" "Last-Translator: Åukasz Daniel \n" "Language-Team: Åukasz Daniel \n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "na-Revision-Date: 2012-05-29 07:55+0100\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Poedit-SourceCharset: iso-8859-1\n" "X-Generator: Poedit 1.5.3\n" # nlme/src/corStruct.c: 449 # error(_("All parameters must be less than 1 in absolute value")) #: corStruct.c:445 msgid "All parameters must be less than 1 in absolute value" msgstr "Wszystkie parametry muszÄ… być na moduÅ‚ mniejsze niż 1" # nlme/src/corStruct.c: 560 # error(_("Coefficient matrix not invertible" )) #: corStruct.c:556 msgid "Coefficient matrix not invertible" msgstr "Macierz współczynników nie jest odwracalna" # nlme/src/corStruct.c: 912 # error(_("Unknown spatial correlation class")) # nlme/src/corStruct.c: 967 # error(_("Unknown spatial correlation class")) # nlme/src/corStruct.c: 1034 # error(_("Unknown spatial correlation class")) # nlme/src/corStruct.c: 1076 # error(_("Unknown spatial correlation class")) #: corStruct.c:908 corStruct.c:963 corStruct.c:1030 corStruct.c:1072 msgid "Unknown spatial correlation class" msgstr "Nieznana klasa przestrzennej korelacji" # nlme/src/nlme.c: 498 # error(_("First observation on an individual must have a dose")) #: nlme.c:498 msgid "First observation on an individual must have a dose" msgstr "Pierwsza obserwacja jednostki musi mieć zamkniÄ™cie" # nlme/src/nlmefit.c: 400 # error(_("Singularity in backsolve at level %ld, block %ld"), # (long int) (i - (dd->Q)), j + 1L) #: nlmefit.c:400 #, c-format msgid "Singularity in backsolve at level %ld, block %ld" msgstr "Osobliwość w 'backsolve' na poziomie %ld, blok %ld" # nlme/src/nlmefit.c: 557 # error(_("analytic gradient is not available with matrix logarithm")) #: nlmefit.c:557 msgid "analytic gradient is not available with matrix logarithm" msgstr "gradient analityczny nie jest dostÄ™pny z algorytmem macierzowym" # nlme/src/nlmefit.c: 580 # error(_("analytic gradient is not available with compound symmetry")) #: nlmefit.c:580 msgid "analytic gradient is not available with compound symmetry" msgstr "gradient analityczny nie jest dostÄ™pny dla zÅ‚ożonej symetrii" # nlme/src/nlmefit.c: 860 # error(_("Unable to form eigenvalue-eigenvector decomposition")) #: nlmefit.c:860 msgid "Unable to form eigenvalue-eigenvector decomposition" msgstr "Nie można uformować dekompozycji wartość wÅ‚asna-wektor wÅ‚asny" # nlme/src/nlmefit.c: 892 # error(_("Unable to form Cholesky decomposition")) #: nlmefit.c:892 msgid "Unable to form Cholesky decomposition" msgstr "Nie można uformować dekompozycji Cholesky'ego" # nlme/src/nlmefit.c: 923 # error(_("Haven't written the compound symmetry case for this yet")) #: nlmefit.c:923 msgid "Haven't written the compound symmetry case for this yet" msgstr "Jak na razie nie zostaÅ‚a napisany przypadek dla tej zÅ‚ożonej symetrii" nlme/po/R-de.po0000644000176000001440000012543012203635654013015 0ustar ripleyusers# Translation of R-nlme.pot to German # Copyright (C) 2007-2009 The R Foundation # This file is distributed under the same license as the nlme package. # Chris Leick , 2009-2012. msgid "" msgstr "" "Project-Id-Version: R 2.15.2 / nlme-3.1-105\n" "Report-Msgid-Bugs-To: bugs@r-project.org\n" "POT-Creation-Date: 2013-08-17 08:12\n" "PO-Revision-Date: 2012-10-11 13:10+0200\n" "Last-Translator: Chris Leick \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "not implemented for \"nlme\" objects" msgstr "nicht für \"nlme\"-Objekte implementiert" msgid "not implemented for multiple levels of nesting" msgstr "nicht für mehrstufige Schachtelung implementiert" msgid "individual %s was not used in the fit" msgstr "Individuum %s wurde in der Anpassung nicht benutzt." # R/corStruct.R msgid "do not know how to calculate correlation matrix of %s object" msgstr "" "Es ist nicht bekannt, wie die Korrelationsmatrix des Objekts %s berechnet " "wird." msgid "\"corStruct\" object must have a \"fixed\" attribute" msgstr "\"corStruct\"-Objekt muss ein \"fixed\"-Attribut haben." msgid "do not know how to obtain parameters of %s object" msgstr "Es ist nicht bekannt, wie Parameter des Objekts %s abgefragt werden." msgid "cannot change the length of the parameter of a \"corStruct\" object" msgstr "" "Die Länge des Parameters eines \"corStruct\"-Objekts kann nicht geändert " "werden." msgid "cannot change 'form'" msgstr "'form' kann nicht geändert werden." msgid "need data to calculate covariate of \"corStruct\" object" msgstr "" "Zur Berechnung der Kovariate des \"corStruct\"-Objekts werden Daten benötigt." msgid "cannot change the length of the parameter of a \"corSymm\" object" msgstr "" "Die Länge des Parameters eines \"corSymm\"-Objekts kann nicht geändert " "werden." # http://www.sozpsy.uni-hannover.de/marienthal/glossar/html/k37.htm msgid "covariate must have unique values within groups for \"corSymm\" objects" msgstr "" "Kovariate muss eindeutige Werte innerhalb der Gruppen für \"corSymm\"-" "Objekte haben." msgid "" "unique values of the covariate for \"corSymm\" objects must be a sequence " "of consecutive integers" msgstr "" "Eindeutige Werte der Kovariate für \"corSymm\"-Objekte müssen eine\n" "Sequenz von aufeinander folgenden ganzen Zahlen sein." msgid "initial value for \"corSymm\" parameters of wrong dimension" msgstr "Anfangswert für \"corSymm\"-Parameter hat falsche Dimension" msgid "initial values for \"corSymm\" must be between -1 and 1" msgstr "Anfangswerte für \"corSymm\" müssen zwischen -1 und 1 liegen." msgid "" "initial values for \"corSymm\" do not define a positive-definite correlation " "structure" msgstr "" "Anfangswerte für \"corSymm\" definieren keine positiv-definite " "Korrelationsstruktur." msgid "cannot change the length of the parameter of a \"corNatural\" object" msgstr "" "Die Länge des Parameters eines \"corNatural\"-Objekts kann nicht geändert " "werden." msgid "" "covariate must have unique values within groups for \"corNatural\" objects" msgstr "" "Kovariate muss eindeutige Werte innerhalb der Gruppen für \"corNatural-" "Objekte\" haben." msgid "" "unique values of the covariate for \"corNatural\" objects must be a sequence " "of consecutive integers" msgstr "" "Eindeutige Werte der Kovariate für \"corNatural\"-Objekte müssen eine\n" "Sequenz von aufeinanderfolgenden ganzen Zahlen sein" msgid "initial value for \"corNatural\" parameters of wrong dimension" msgstr "Anfangswert für \"corNatural\"-Parameter hat falsche Dimension" msgid "initial values for \"corNatural\" must be between -1 and 1" msgstr "Anfangswerte für \"corNatural\" müssen zwischen -1 und 1 liegen." msgid "" "initial values for \"corNatural\" do not define a positive-definite " "correlation structure" msgstr "" "Anfangswerte für \"corNatural\" definieren keine positiv-definite " "Korrelationsstruktur." msgid "parameter in AR(1) structure must be between -1 and 1" msgstr "Parameter in AR(1)-Struktur muss zwischen -1 und 1 liegen" msgid "cannot change the length of the parameter of a \"corAR1\" object" msgstr "" "Die Länge des Parameters eines \"corAR1\"-Objekts kann nicht geändert werden." # http://www.sozpsy.uni-hannover.de/marienthal/glossar/html/k37.htm msgid "covariate must have unique values within groups for \"corAR1\" objects" msgstr "" "Kovariate muss eindeutige Werte innerhalb der Gruppen für \"corAR1-Objekte\" " "haben." msgid "parameter in CAR(1) structure must be between 0 and 1" msgstr "Parameter in CAR(1)-Struktur muss zwischen 0 und 1 liegen." msgid "cannot change the length of the parameter of a \"corCAR1\" object" msgstr "" "Die Länge des Parameters eines \"corCAR1\"-Objekts kann nicht geändert " "werden." # http://www.sozpsy.uni-hannover.de/marienthal/glossar/html/k37.htm msgid "covariate must have unique values within groups for \"corCAR1\" objects" msgstr "" "Kovariate muss eindeutige Werte innerhalb der Gruppen für \"corCAR1-Objekte" "\" haben." msgid "autoregressive order must be a non-negative integer" msgstr "Autoregressive Ordnung muss eine nicht-negative Ganzzahl sein." msgid "moving average order must be a non-negative integer" msgstr "" "Ordnung des gleitenden Durchschnitts muss eine nicht-negative Ganzzahl sein." msgid "initial value for parameter of wrong length" msgstr "Anfangswerte für Parameter hat falsche Länge" msgid "parameters in ARMA structure must be < 1 in absolute value" msgstr "Parameter in ARMA-Struktur müssen vom Betrag < 1 sein." msgid "'object' has not been Initialize()d" msgstr "Initialize() wurde nicht für »object« ausgeführt" msgid "cannot change the length of the parameter of a \"corARMA\" object" msgstr "" "Die Länge des Parameters eines \"corARMA\"-Objekts kann nicht geändert " "werden." # http://www.sozpsy.uni-hannover.de/marienthal/glossar/html/k37.htm msgid "covariate must have unique values within groups for \"corARMA\" objects" msgstr "" "Kovariate muss eindeutige Werte innerhalb der Gruppen für \"corARMA-Objekte" "\" haben." msgid "parameter in \"corCompSymm\" structure must be < 1 in absolute value" msgstr "Parameter in \"corCompSymm\"-Struktur muss vom Betrag < 1 sein." msgid "cannot change the length of the parameter of a \"corCompSymm\" object" msgstr "" "Die Länge des Parameters eines \"corCompSymm\"-Objekts kann nicht geändert " "werden." msgid "initial value in \"corCompSymm\" must be greater than %s" msgstr "Anfangswert in \"corCompSymm\" muss größer als %s sein." msgid "cannot change the length of the parameter after initialization" msgstr "" "Länge des Parameters kann nach der Initialisierung nicht geändert werden." msgid "need data to calculate covariate" msgstr "Um Kovariate zu berechnen, werden Daten benötigt." msgid "cannot have zero distances in \"corSpatial\"" msgstr "Es darf keine Null-Distanzen in \"corSpatial\" geben" msgid "'range' must be > 0 in \"corSpatial\" initial value" msgstr "'range' muss im \"corSpatial\"-Anfangswert > 0 sein." msgid "initial value for \"corSpatial\" parameters of wrong dimension" msgstr "Anfangswert des Parameters \"corSpatial\" hat falsche Dimension" msgid "initial value of nugget ratio must be between 0 and 1" msgstr "Anfangswert des Nugget-Anteils muss zwischen 0 und 1 liegen" msgid "'range' must be > 0 in \"corLin\" initial value" msgstr "'range' im \"corLin\"-Anfangswert muss > 0 sein" msgid "" "initial value for 'range' less than minimum distance. Setting it to 1.1 * min" "(distance)" msgstr "" "Anfangswert für 'range' kleiner als minimale Distanz. Er wird auf 1.1 * min " "(distance) gesetzt." msgid "initial value for \"corLin\" parameters of wrong dimension" msgstr "Anfangswert für Parameter \"corLin\" hat falsche Dimension." msgid "range must be > 0 in \"corSpher\" initial value" msgstr "Spannweite im \"corSpher\"-Anfangswert muss > 0 sein." msgid "initial value for \"corSpher\" parameters of wrong dimension" msgstr "Anfangswert für Parameter \"corSpher\" hat falsche Dimension" msgid "negative control$nlmStepMax - using default value" msgstr "Negativer control$nlmStepMax – Standardwert wird benutzt." msgid "model must be a formula of the form \"resp ~ pred\"" msgstr "Modell muss eine Formel der Form \"resp ~ pred\" sein." msgid "no coefficients to fit" msgstr "keine Koeffizienten anzupassen" msgid "maximum number of iterations reached without convergence" msgstr "maximale Anzahl der Iterationen ohne Konvergenz erreicht" msgid "computed \"gls\" fit is singular, rank %s" msgstr "errechneter \"gls\"-Fit ist singulär, Rang %s" msgid "object must inherit from class \"gls\"" msgstr "Objekt muss von der Klasse \"gls\" abgeleitet sein." msgid "'Terms' must be between 1 and %d" msgstr "'Terms' müssen zwischen 1 und %d liegen." msgid "terms can only be integers or characters" msgstr "Terme können nur Ganzzahlen oder Zeichen sein" msgid "data in %s call must evaluate to a data frame" msgstr "Daten im %s-Aufruf müssen einen Dataframe ergeben" msgid "" "%s without \"primary\" can only be used with fits of \"groupedData\" objects" msgstr "" "%s ohne \"primary\" kann nur für Anpassungen von \"groupedData\"-Objekten " "genutzt werden." msgid "only one level allowed for predictions" msgstr "nur eine Stufe für Vorhersagen erlaubt" msgid "%s and %s must have the same group levels" msgstr "%s und %s müssen die gleichen Gruppenstufen haben" msgid "wrong group levels" msgstr "falsche Gruppenstufen" msgid "cannot get confidence intervals on var-cov components: %s" msgstr "" "Konfidenzintervalle für var-cov-Komponenten können nicht bestimmt werden: %s" msgid "need an object with call component" msgstr "ein Objekt mit Aufruf-Komponenten wird benötigt" msgid "'nint' is not consistent with 'breaks'" msgstr "'nint' ist nicht konsistent mit 'breaks'" msgid "'object' must be a formula" msgstr "'object' muss eine Formel sein" msgid "object formula must be of the form \"resp ~ pred\"" msgstr "Objekt-Formel muss von der Form \"resp ~ pred\" sein" msgid "'data' must be given explicitly to use 'nls' to get initial estimates" msgstr "" "'data' muss explizit angegeben werden, um 'nls' zum Gewinnen von " "Initialschätzungen zu nutzen." msgid "no initial values for model parameters" msgstr "keine Anfangswerte für Modellparameter" msgid "starting estimates must have names when 'params' is missing" msgstr "Startschätzung muss Namen haben, wenn 'params' fehlt" msgid "'params' must be a formula or list of formulae" msgstr "'params' müssen eine Formel oder eine Liste von Formeln sein." msgid "formulae in 'params' must be of the form \"parameter ~ expr\"" msgstr "Formeln in 'params' müssen die Form \"parameter ~ expr\" haben." msgid "starting values for parameters are not of the correct length" msgstr "Startwerte für Parameter haben nicht die richtige Länge." msgid "step halving factor reduced below minimum in NLS step" msgstr "Schrittlängen-Halbierungsfaktor reduziert unter Minimum im NLS-Schritt" msgid "approximate covariance matrix for parameter estimates not of full rank" msgstr "" "Approximiert Kovarianzmatrix für Parameterschätzungen haben keinen " "vollständigen Rang." msgid "cannot calculate REML log-likelihood for \"gnls\" objects" msgstr "REML Log-likelihood für \"gnls\"-Objekte kann nicht berechnet werden" msgid "first argument to 'groupedData' must be a two-sided formula" msgstr "erstes Argument für 'groupedData' muss eine zweiseitige Formel sein" msgid "right-hand side of first argument must be a conditional expression" msgstr "rechte Seite des ersten Arguments muss ein bedingter Ausdruck sein" msgid "first argument to 'nfGroupedData' must be a two-sided formula" msgstr "erstes Argument für 'nfGroupedData' muss eine zweiseitige Formel sein" msgid "only one level of grouping allowed" msgstr "nur eine Stufe der Gruppierung erlaubt" msgid "second argument to 'groupedData' must inherit from data.frame" msgstr "zweites Argument für 'groupedData' muss von data.frame erben" msgid "first argument to 'nmGroupedData' must be a two-sided formula" msgstr "erstes Argument für 'nmGroupedData' muss eine zweiseitige Formel sein" msgid "'subset' ignored with single grouping factor" msgstr "'subset' mit einzelnem Gruppierungsfaktor ignoriert" msgid "'subset' must be a list" msgstr "'subset' muss eine Liste sein" msgid "undefined group declared in 'subset'" msgstr "undefinierte Gruppe in 'subset' deklariert" msgid "only one display level allowed" msgstr "nur eine Anzeigestufe erlaubt" msgid "undefined display level %s for %s" msgstr "undefinierte Anzeigestufe %s für %s" msgid "undefined collapsing level %s for %s" msgstr "Collapsing-Stufe %s für %s nicht definiert" msgid "" "collapsing level cannot be smaller than display level; setting it to the " "display level" msgstr "" "Die Collapsing-Stufe kann nicht kleiner sein, als die Anzeigestufe; sie wird " "auf die Anzeigestufe gesetzt." msgid "'preserve' must be a two-sided formula" msgstr "'preserve' muss eine zweiseitige Formel sein" msgid "'asTable' cannot be used with multilevel grouped data" msgstr "'asTable' kann nicht mit mehrstufig gruppierten Daten benutzt werden" msgid "'asTable' can only be used with balanced 'groupedData' objects" msgstr "" "'asTable' kann nur mit balancierten 'groupedData'-Objekten benutzt werden" msgid "multiple levels not allowed" msgstr "mehrere Stufen nicht erlaubt" msgid "'data' must be a \"groupedData\" object if 'groups' argument is missing" msgstr "" "'data' muss ein \"groupedData\"-Objekt sein, falls 'groups'-Argument fehlt" msgid "An lm fit failed, probably because a factor only had one level" msgstr "" msgid "'data' in %s call must evaluate to a data frame" msgstr "'data' in %s muss sich zu einem Dataframe berechnen" msgid "nonexistent groups requested in 'subset'" msgstr "nicht existierende Gruppen in 'subset' angefordert" msgid "'subset' can only be character or integer" msgstr "'subset' kann nur ein Zeichen oder eine ganze Zahl sein" msgid "log-likelihood not available with NULL fits" msgstr "Log-likelihood nicht mit NULL-Fit verfügbar" msgid "'form' must be a formula" msgstr "'form' muss eine Formel sein" msgid "'form' must be a one-sided formula" msgstr "'form' muss eine einseitige Formel sein" msgid "covariate must be a data frame" msgstr "Kovariate muss ein Dataframe sein" msgid "cannot do pairs of just one variable" msgstr "kann pairs nicht mit nur einer Variablen durchführen" msgid "'id' must be between 0 and 1" msgstr "'id' muss zwischen 0 und 1 liegen" msgid "'id' can only be a formula or numeric" msgstr "'id' kann nur eine Formel oder numerisch sein." msgid "'idLabels' of incorrect length" msgstr "'idLabels' hat falsche Länge" msgid "'idLabels' can only be a formula or a vector" msgstr "'idLabels' kann nur eine Formel oder eine Vektor sein." msgid "covariate must be numeric" msgstr "Kovariate muss numerisch sein" msgid "nonexistent group in 'newdata'" msgstr "nicht existierende Gruppe in 'newdata'" msgid "nonexistent group requested in 'subset'" msgstr "nicht existierende Gruppe in 'subset' angefordert." msgid "only residuals and random effects allowed" msgstr "nur Residuen und zufällige Effekte erlaubt" msgid "can only fit \"lmList\" objects with single grouping variable" msgstr "" "Nur \"lmList\"-Objekte mit einzelner Gruppenvariable können angepasst werden." msgid "'lme.lmList' will redefine 'data'" msgstr "'lme.lmList' wird 'data' redefinieren" msgid "initial value for \"reStruct\" overwritten in 'lme.lmList'" msgstr "Anfangswert für \"reStruct\" in 'lme.lmList' überschrieben" msgid "fixed-effects model must be a formula of the form \"resp ~ pred\"" msgstr "Feste-Effekte-Modell muss eine Formel der Form \"resp ~ pred\" sein." msgid "incompatible lengths for 'random' and grouping factors" msgstr "inkompatible Längen für 'random' und Gruppierungsfaktoren" msgid "incompatible formulas for groups in 'random' and 'correlation'" msgstr "inkompatible Formeln für Gruppen in 'random' und 'correlation'" msgid "" "cannot use smaller level of grouping for 'correlation' than for 'random'. " "Replacing the former with the latter." msgstr "" "Für die Gruppierung von 'correlation' kann keine kleinere Stufe als für " "'random' benutzt werden. Ersteres wird durch letzteres ersetzt." msgid "fewer observations than random effects in all level %s groups" msgstr "" "weniger Beobachtungen als zufällige Effekte in allen Gruppen der Stufe %s" msgid "object must inherit from class \"lme\"" msgstr "Objekt muss von der Klasse \"lme\" erben" msgid "terms must all have the same denominator DF" msgstr "Terme müssen alle den gleichen Freiheitsgrad im Nenner haben" msgid "L may only involve fixed effects with the same denominator DF" msgstr "L kann nur feste Effekte mit dem gleichen Nenner DF einschließen" msgid "" "objects must inherit from classes \"gls\", \"gnls\",\"lm\",\"lmList\", \"lme" "\",\"nlme\",\"nlsList\", or \"nls\"" msgstr "" "Objekte müssen von den Klassen \"gls\", \"gnls\", \"lm\", \"lmList\", \"lme" "\", \"nlme\", \"nlsList\" oder \"nls\" erben" msgid "" "some fitted objects deleted because response differs from the first model" msgstr "" "einige gefittete Objekte gelöscht, da Antwort vom ersten Modell abweicht" msgid "first model has a different response from the rest" msgstr "erstes Modell hat eine vom Rest abweichende Antwort" msgid "all fitted objects must have the same estimation method" msgstr "Alle gefitteten Objekte müssen die gleiche Schätzungsmethode haben." msgid "fitted objects with different fixed effects." msgstr "gefittete Objekte mit unterschiedlichen festen Effekten" msgid "REML comparisons are not meaningful." msgstr "REML-Vergleiche sind nicht sinnvoll." msgid "objects must have a \"call\" component or attribute" msgstr "Objekte müssen eine \"call\"-Komponente oder -Attribut haben." msgid "all fitted objects must use the same number of observations" msgstr "" "Alle gefitteten Objekte müssen die gleiche Zahl von Beobachtungen benutzen." msgid "only single level allowed" msgstr "nur einzelne Stufe erlaubt" msgid "covariate must have a level attribute when groups are present" msgstr "Kovariate muss ein Stufenattribut haben, wenn Gruppen vorhanden sind" msgid "covariate must have a level attribute when 'id' is a formula" msgstr "Kovariate muss ein Stufenattribut haben, wenn 'id' eine Formel ist" msgid "covariate must have a level attribute when 'idLabels' is a formula" msgstr "" "Kovariate muss ein Stufenattribut haben, wenn 'idLabels' eine Formel ist" msgid "'form' must be a formula when not NULL" msgstr "'form' muss eine Formel sein, wenn nicht NULL" msgid "only single effects allowed in left side of 'form'" msgstr "nur einzelne Effekte auf der linken Seite von 'form' erlaubt" msgid "%s is not a valid effect name" msgstr "%s ist kein gültiger Effektname" msgid "no effects allowed in right side of formula" msgstr "keine Effekte auf der rechten Seite der Formel erlaubt" msgid "cannot evaluate groups for desired levels on 'newdata'" msgstr "" "Gruppen für gewünschte Stufen auf 'newdata' können nicht ausgewertet werden" msgid "'Id' must be between 0 and 1" msgstr "'Id' muss zwischen 0 und 1 liegen" # CHECKME: augmentation? msgid "augmentation of random effects only available for single level" msgstr "" "Augmentation von zufälligen Effekten ist nur für einzelne Stufe verfügbar" msgid "no condensed linear model" msgstr "kein zusammengefasstes lineares Modell" msgid "no fitted \"lme\" object" msgstr "kein angepasstes \"lme\"-Objekt" msgid "objects must have coefficients with same row names" msgstr "Objekte müssen Koeffizienten mit gleichen Zeilennamen haben." msgid "object must inherit from \"data.frame\"" msgstr "Objekt muss von \"data.frame\" erben." msgid "only one level allowed in 'gapply'" msgstr "nur eine Stufe in 'gapply' erlaubt" msgid "'which' must be between 1 and %d" msgstr "'which' muss zwischen 1 und %d liegen." msgid "'which' can only be character or integer" msgstr "'which' kann nur ein Buchstabe oder eine Ganzzahl sein." msgid "formula(object) must return a formula" msgstr "Formel(Objekt) muss eine Formel zurückgeben." msgid "'form' must be a two-sided formula" msgstr "'form' muss eine zweiseitige Formel sein." msgid "only one level allowed in 'gsummary'" msgstr "nur eine Stufe in 'gsummary' erlaubt" msgid "'FUN' can only be a function or a list of functions" msgstr "'FUN' kann nur eine Funktion oder eine Liste von Funktionen sein." msgid "cannot omit grouping factor without 'form'" msgstr "Gruppierungsfaktor ohne 'form' kann nicht weggelassen werden." msgid "object must inherit from class \"lmList\"" msgstr "Objekt muss von der Klasse \"lmList\" erben." msgid "no degrees of freedom for estimating std. dev." msgstr "keine Freiheitsgrade für Schätzung von Standardabweichung" msgid "" "data argument to \"data.frame\" method for 'getGroups' does not make sense" msgstr "" "Datenargument für \"data.frame\"-Methode für 'getGroups' nicht sinnvoll" msgid "invalid formula for groups" msgstr "ungültige Formel für Gruppen" msgid "'form' must have all components as formulas" msgstr "'form' muss alle Komponenten als Formeln enthalten." msgid "'form' can only be a formula, or a list of formulas" msgstr "'form' kann nur eine Formel oder eine Liste von Formeln sein." # R/newMethods.R msgid "level of %s does not match formula" msgstr "Stufe von %s passt nicht zu Formel" msgid "'form' argument must be a formula" msgstr "'form'-Argument muss eine Formel sein" msgid "at least two coefficients are needed" msgstr "mindestens zwei Koeffizienten werden benötigt" msgid "no model variogram available with 'showModel = TRUE'" msgstr "kein Modell-Variogramm mit 'showModel = TRUE' verfügbar" msgid "only residuals allowed" msgstr "nur Residuen erlaubt" msgid "'distance' and 'object' have incompatible lengths" msgstr "'distance' und 'object' haben inkompatible Längen" msgid "'nlme.nlsList' will redefine 'fixed', 'data', and 'start'" msgstr "'nlme.nlsList' wird 'fixed', 'data' und 'start' neu definieren" msgid "can only fit \"nlsList\" objects with single grouping variable" msgstr "" "nur \"lmList\"-Objekte mit einzelner Gruppenvariable können angepasst werden." msgid "initial value for 'reStruct' overwritten in 'nlme.nlsList'" msgstr "Anfangswert für 'reStruct' in 'nlme.nlsList' überschrieben" msgid "'model' must be a formula" msgstr "'model' muss eine Formel sein." msgid "model formula must be of the form \"resp ~ pred\"" msgstr "Modell-Formel muss die Form \"resp ~ pred\" haben." msgid "'data' must be given explicitly to use 'nlsList'" msgstr "'data' muss explizit angegeben werden, um 'nlsList' zu benutzen." # R/nlme.R msgid "'fixed' must be a formula or list of formulae" msgstr "'fixed' muss eine Formel oder eine Liste von Formeln sein." msgid "formulae in 'fixed' must be of the form \"parameter ~ expr\"" msgstr "Formeln in 'fixed' müssen die Form \"parameter ~ expr\" haben." msgid "'random' must be a formula or list of formulae" msgstr "'random' muss eine Formel oder eine Liste von Formeln sein." msgid "formulae in 'random' must be of the form \"parameter ~ expr\"" msgstr "Formeln in 'random' müssen die Form \"parameter ~ expr\" haben." msgid "incompatible formulas for groups in \"random\" and \"correlation\"" msgstr "inkompatible Formeln für Gruppen in \"random\" und \"correlation\"" msgid "" "cannot use smaller level of grouping for \"correlation\" than for \"random" "\". Replacing the former with the latter." msgstr "" "Zur Gruppierung in \"correlation\" kann keine kleinere Stufe als für \"random" "\" benutzt werden. Ersteres wird durch letzteres ersetzt." msgid "'start' must have a component called 'fixed'" msgstr "'start' muss eine Komponente mit Namen 'fixed' haben." msgid "starting values for the 'fixed' component are not the correct length" msgstr "Startwerte für die Komponente 'fixed' haben nicht die richtige Länge." msgid "starting values for random effects should be a list, or a matrix" msgstr "" "Startwerte für Zufallseffekte sollten eine Liste oder eine Matrix sein." msgid "" "list with starting values for random effects must have names or be of length " "%d" msgstr "" "Liste mit Startwerten für Zufallseffekte muss Namen haben oder %d lang sein." msgid "starting values for the random components should be a list of matrices" msgstr "" "Startwerte für Zufallskomponenten sollten eine Liste von Matrizen sein." msgid "" "number of rows in starting values for random component at level %s should be " "%d" msgstr "" "Anzahl der Zeilen in Startwerten für Zufallskomponente auf Stufe %s sollte " "%d sein." msgid "" "number of columns in starting values for random component at level %s should " "be %d" msgstr "" "Anzahl der Spalten in Startwerten für Zufallskomponente auf Stufe %s sollte " "%d sein." msgid "starting values for random effects must include group levels" msgstr "Startwerte für Zufallseffekte müssen Gruppenstufen enthalten." msgid "" "groups levels mismatch in 'random' and starting values for 'random' at level " "%s" msgstr "" "Gruppenstufen stimmen in 'random' und in den Startwerten für 'random' auf " "Stufe %s nicht überein." msgid "" "names mismatch in 'random' and starting values for 'random' at level %s" msgstr "" "Namen in 'random' und in den Startwerten für 'random' auf Stufe %s passen " "nicht " msgid "step halving factor reduced below minimum in PNLS step" msgstr "" "Schrittlängenhalbierungsfaktor unter das Minimum in PNLS-Schritt vermindert" msgid "second argument must be a groupedData object" msgstr "zweites Argument muss ein groupedData-Objekt sein" msgid "cannot use an anonymous function for the model" msgstr "eine anonyme Funktion kann für das Modell nicht benutzt werden" msgid "" "'data' must be a \"groupedData\" object if 'formula' does not include groups" msgstr "" "'data' muss ein \"groupedData\"-Objekt sein, wenn 'formula' keine Gruppen " "enthält." msgid "missing call attribute in \"nlsList\" object" msgstr "fehlendes Aufrufattribut in \"nlsList\"-Objekt" msgid "cannot access the matrix of uninitialized objects" msgstr "" "Auf die Matrix der nicht initialisierten Objekten kann nicht zugegriffen " "werden." msgid "ignoring argument 'form'" msgstr "Argument 'form' wird ignoriert" msgid "ignoring argument 'nam'" msgstr "Argument 'nam' wird ignoriert" msgid "'value' must be a square matrix" msgstr "'value' muss eine quadratische Matrix sein" msgid "dimnames of 'value' must match or be NULL" msgstr "dimnames von 'value' müssen übereinstimmen oder NULL sein" msgid "names of 'value' are not consistent with 'nam' argument" msgstr "Namen von 'value' sind nicht mit dem Argument 'nam' konsistent" msgid "%s is not a valid object for \"pdMat\"" msgstr "%s ist kein gültiges Objekt für \"pdMat\"." msgid "all elements of 'form' list must be two-sided formulas" msgstr "Alle Elemente der 'form'-Liste müssen zweiseitige Formeln sein." msgid "'form' can only be a formula or a list of formulae" msgstr "'form' kann nur eine Formel oder eine Liste von Formeln sein." msgid "'form' not consistent with 'nam'" msgstr "'form' nicht konsistent mit 'nam'" msgid "length of 'nam' not consistent with dimensions of initial value" msgstr "Länge von 'nam' nicht konsistent mit Dimensionen des Startwerts" msgid "no default method for extracting the square root of a \"pdMat\" object" msgstr "" "keine Standardmethode, um die Quadratwurzel eines \"pdMat\"-Objekts zu " "extrahieren" msgid "do not know how to obtain constrained coefficients" msgstr "" "Es ist nicht bekannt, wie eingeschränkte Koeffizienten bestimmt werden " "können." msgid "" "cannot access the number of columns of uninitialized objects without names" msgstr "" "Auf die Spaltenanzahl nicht initialisierter Objekte kann ohne Namen nicht " "zugegriffen werden." msgid "cannot extract the log of the determinant from an uninitialized object" msgstr "" "Der Logarithmus der Determinante eines nicht initialisierten Objekts kann " "nicht extrahiert werden." msgid "cannot change dimensions on an initialized \"pdMat\" object" msgstr "" "Die Dimensionen eines initialisierten \"pdMat\"-Objekts können nicht " "geändert werden." msgid "Length of names should be %d" msgstr "Länge von names sollte %d sein" msgid "" "names being assigned do not correspond to a permutation of previous names" msgstr "Zugeordnete Namen entsprechen keiner Permutation vorheriger Namen." msgid "x-y data to splom got botched somehow" msgstr "x-y-Daten an splom wurden irgendwie verpfuscht." msgid "cannot get the inverse of an uninitialized object" msgstr "Inverse eines nicht initialisierten Objekts kann nicht bestimmt werden" msgid "an object of length %d does not match the required parameter size" msgstr "" "Ein Objekt der Länge %d entspricht nicht der benötigten Parametergröße." msgid "cannot extract matrix from an uninitialized object" msgstr "" "Matrix kann nicht von einem nicht initialisierten Objekt extrahiert werden." msgid "cannot extract the inverse from an uninitialized object" msgstr "" "Inverse eines nicht initialisierten Objekts kann nicht extrahiert werden." msgid "an object of length %d does not match a Cholesky factor" msgstr "Ein Objekt der Länge %d entspricht keinem Cholesky-Faktor" msgid "cannot extract the matrix from an uninitialized object" msgstr "" "Matrix eines nicht initialisierten Objekts kann nicht extrahiert werden." msgid "cannot extract the matrix from an uninitialized \"pdIdent\" object" msgstr "" "Matrix eines nicht initialisierten \"pdIdent\"-Objekts kann nicht extrahiert " "werden." msgid "cannot extract the matrix with uninitialized dimensions" msgstr "" "Matrix mit nicht initialisierten Dimensionen kann nicht extrahiert werden." msgid "" "must give names when initializing \"pdIdent\" from parameter without a " "formula" msgstr "" "Wenn \"pdIdent\" über Parameter ohne eine Formel initialisiert wird, müssen " "Namen gegeben werden." msgid "cannot extract the dimensions" msgstr "Dimensionen können nicht extrahiert werden." msgid "cannot extract the matrix from an uninitialized \"pdCompSymm\" object" msgstr "" "Matrix eines nicht initialisierten \"pdCompSymm\"-Objekts kann nicht " "extrahiert werden" msgid "initializing \"pdCompSymm\" object is not positive definite" msgstr "Initialisierendes \"pdCompSymm\"-Objekt ist nicht positiv-definit" msgid "" "must give names when initializing \"pdCompSymm\" from parameter without a " "formula" msgstr "" "Wenn \"pdCompSymm\" über Parameter ohne eine Formel initialisiert wird, " "müssen Namen vergeben werden." msgid "cannot obtain constrained coefficients with uninitialized dimensions" msgstr "" "Eingeschränkte Koeffizienten können nicht mit nicht initialisierten " "Dimensionen nicht erlangt werden." msgid "cannot access the matrix of object without names" msgstr "Auf die Matrix des Objekts kann ohne Namen nicht zugegriffen werden." msgid "'form' must be a list" msgstr "'form' muss eine Liste sein" msgid "'nam' must be a list" msgstr "'nam' muss eine Liste sein" msgid "'form' and 'nam' have incompatible lengths" msgstr "'form' und 'nam' haben inkompatible Längen" # http://einstein.informatik.uni-oldenburg.de/rechnernetze/neue_verfahren.htm msgid "'pdClass' must be a character vector" msgstr "'pdClass' muss ein Zeichenvektor sein" msgid "'form' and 'pdClass' have incompatible lengths" msgstr "'form' und 'pdClass' haben inkompatible Längen" msgid "'nam' and 'pdClass' have incompatible lengths" msgstr "'nam' und 'pdClass' haben inkompatible Längen" # FIXME s/LNone/None/ specifies? msgid "LNone of the arguments specify more than one block" msgstr "Keines der Argumente gibt mehr als einen Block an" # R/pdMat.R msgid "'object' must be a list when not missing, not a matrix, and not numeric" msgstr "" "'object' muss eine Liste sein, wenn es nicht fehlt, keine Matrix und nicht " "numerisch." msgid "arguments imply different number of blocks" msgstr "Argumente implizieren eine unterschiedliche Zahl von Blöcken" msgid "all elements in the argument must generate \"pdMat\" objects" msgstr "Alle Elemente des Arguments müssen \"pdMat\"-Objekte generieren." msgid "cannot have duplicated column names in a \"pdMat\" object" msgstr "In \"pdMat\"-Objekten darf es keine doppelten Spaltennamen geben." msgid "must have formula when no names are given" msgstr "muss Formel haben, wenn keine Namen gegeben sind" msgid "must give names when initializing from matrix or parameter" msgstr "" "Namen müssen vergeben werden, wenn von Matrix oder Parameter initialisiert " "wird" msgid "all elements must have names when any has names" msgstr "Alle Elemente müssen Namen habe, wenn irgendeins einen Namen hat." msgid "all elements must have a non-zero size" msgstr "Alle Elemente müssen eine Größe ungleich Null haben." msgid "cannot change the parameter when length of parameters is undefined" msgstr "" "Der Parameter kann nicht geändert werden, wenn die Länge der Parameter " "undefiniert ist." msgid "cannot change parameter length of initialized \"pdMat\" object" msgstr "" "Länge des initialisierten \"pdMat\"-Objekts kann nicht geändert werden." msgid "all elements must have formulas when any has a formula" msgstr "Alle Elemente müssen Formeln habe, wenn irgendeins eine Formel hat." msgid "" "all elements of formula must be list of two-sided formulae or two-sided " "formulae" msgstr "" "Alle Elemente der Formel müssen eine Liste zweiseitiger Formeln oder " "zweiseitige Formeln sein." msgid "cannot change the number of columns on an initialized object" msgstr "" "Die Anzahl der Spalten eines initialisierten Objekts kann nicht geändert " "werden." msgid "names of object and value must match" msgstr "Namen von Objekt und Wert müssen übereinstimmen." msgid "\"pdMat\" element must have a formula" msgstr "\"pdMat\"-Element muss eine Formel haben." msgid "'object' must be a list or a formula" msgstr "'object' muss eine Liste oder Formel sein" msgid "\"pdMat\" elements must have a formula" msgstr "\"pdMat\"-Elemente müssen eine Formel haben" msgid "elements in 'object' must be formulas or \"pdMat\" objects" msgstr "Elemente in 'object' müssen Formeln oder \"pdMat\"-Objekte sein." # FIXME s/ength/length/ msgid "cannot change the parameter when ength of parameters is undefined" msgstr "" "Der Parameter kann nicht geändert werden, wenn die Länge der Parameters " "nicht definiert ist." msgid "cannot change parameter length of initialized objects" msgstr "" "Parameterlänge von initialisierten Objekten kann nicht geändert werden." msgid "cannot extract groups formula without a formula" msgstr "Gruppenformel ohne eine Formel kann nicht extrahiert werden." msgid "all elements of a \"reStruct\" object must have a non-zero size" msgstr "" "Alle Elemente eines \"reStruct\"-Objekts müssen eine Größe ungleich Null " "haben." msgid "cannot change the length of 'object'" msgstr "Länge von 'object' kann nicht geändert werden." msgid "cannot extract model matrix without formula" msgstr "Modellmatrix kann ohne Formel nicht extrahiert werden." msgid "incompatible lengths for object names" msgstr "inkompatible Länge für Objektnamen" msgid "" "'data' must inherit from \"groupedData\" class if 'random' does not define " "groups" msgstr "" "'data' muss von der Klasse \"groupedData\" erben, falls 'random' keine " "Gruppen definiert." msgid "models with \"corStruct\" and/or \"varFunc\" objects not allowed" msgstr "Modelle mit \"corStruct\"- und/oder \"varFunc\"-Objekten nicht erlaubt" msgid "plot method only implemented for comparing models" msgstr "Plotmehtode nur für Modellvergleiche implementiert" msgid "no degrees of freedom specified" msgstr "keine Freiheitsgrade angegeben" msgid "degrees of freedom and weights must have the same length" msgstr "Freiheitsgrade und Gewichte müssen die gleiche Länge haben." msgid "negative degrees of freedom not allowed" msgstr "negative Freiheitsgrade nicht erlaubt" msgid "more than one degree of freedom is needed when one them is zero." msgstr "" "Mehr als ein Freiheitsgrad wird benötigt, wenn einer von ihnen Null ist." msgid "" "can only construct \"varFunc\" object from another \"varFunc\" object, a " "formula, or a character string" msgstr "" "\"varFunc\"-Objekt kann nur aus anderem \"varFunc\", einer Formel oder einer " "Zeichenkette erstellt werden." msgid "cannot extract parameters of uninitialized object" msgstr "" "Parameter eines nicht initialisierten Objekts können nicht extrahiert werden." msgid "do not know how to get coefficients for %s object" msgstr "nicht bekannt, wie Koeffizienten erlangt werden für %s-Objekt" msgid "cannot change the length of covariate in \"varFunc\" object" msgstr "" "Die Länge der Kovariate im \"varFunc\"-Objekt kann nicht geändert werden." msgid "'value' must be a one sided formula" msgstr "'value' muss eine einseitige Formel sein." msgid "'form' must have a covariate" msgstr "'form' muss eine Kovariate haben." msgid "ignoring 'group' in \"varFixed\" formula" msgstr "'group' in \"varFixed\"-Formel wird ignoriert." msgid "all variables used in 'formula' must be in 'data'" msgstr "Alle in 'formula' benutzten Variablen müssen in 'data' enthalten sein." msgid "initial values must have group names in 'varIdent'" msgstr "Startwerte müssen Gruppennamen in 'varIdent' haben." msgid "initial values for 'varIdent' must be > 0" msgstr "Startwerte für 'varIdent' müssen > 0 sein." msgid "fixed parameters must have names in 'varIdent'" msgstr "Feste Parameter müssen in 'varIdent' Namen haben." msgid "" "cannot change the length of the \"varIdent\" parameter after initialization" msgstr "" "Länge des Parameters \"varIdent\" kann nach der Initialisierung nicht mehr " "geändert werden." msgid "fixed parameter names in 'varIdent' must be a subset of group names" msgstr "" "Feste Parameternamen in 'varIdent' müssen eine Teilmenge von Gruppennamen " "sein." msgid "cannot fix variances in all groups" msgstr "Varianzen können nicht in allen Gruppen festgehalten werden." msgid "initial value for \"varIdent\" should be of length %d" msgstr "Startwert von \"varIndent\" sollte die Länge %d haben." msgid "" "names of starting value for \"varIdent\" object must contain all but one of " "the stratum levels" msgstr "" "Die Namen des Startwerts für ein \"varIdent\"-Objekt müssen alles außer " "einer Schichtstufe enthalten." msgid "nonexistent group names for initial values in 'varIdent'" msgstr "nicht existente Gruppennamen für Startwerte in 'varIdent'" msgid "initial values must have group names in 'varPower'" msgstr "Anfangswerte müssen Gruppennamen in 'varPower' haben." msgid "fixed parameters must have group names in 'varPower'" msgstr "Feste Parameter müssen Gruppennamen in 'varPower' haben." msgid "" "cannot change the length of the \"varStruct\" parameter after initialization" msgstr "" "Länge des Parameters \"varStruct\" kann nach der Initialisierung nicht " "geändert werden." msgid "" "cannot change coefficients before initialization or when all parameters are " "fixed" msgstr "" "Koeffizienten können nicht vor der Initialisierung oder wenn alle Parameter " "fest sind geändert werden." msgid "fixed parameters must have group names" msgstr "Feste Parameter müssen Gruppennamen haben." msgid "mismatch between group names and fixed values names" msgstr "keine Übereinstimmung zwischen Gruppennamen und festen Wertnamen" msgid "initial value for \"varPower\" should be of length %d" msgstr "Startwert von \"varPower\" sollte Länge %d haben." msgid "nonexistent group names for initial values in \"varPower\"" msgstr "nicht existierende Gruppennamen für Anfangswerte in \"varPower\"" msgid "initial value for \"varPower\" should be of length 1" msgstr "Anfangswert für \"varPower\" sollte die Länge 1 haben." msgid "initial values must have group names in 'varExp'" msgstr "Anfangswerte müssen Gruppennamen in 'varExp' haben." msgid "fixed parameters must have group names in 'varExp'" msgstr "Feste Parameter müssen Gruppennamen in 'varExp' haben." msgid "" "cannot change the length of the \"varExp\" parameter after initialization" msgstr "" "Länge des Parameters \"varExp\" kann nach der Initialisierung nicht geändert " "werden." msgid "initial value for \"varExp\" should be of length %d" msgstr "Startwert von \"varExp\" sollte Länge %d haben." msgid "nonexistent group names for initial values in \"varExp\"" msgstr "nicht existente Gruppennamen für Anfangswerte in \"varExp\"" msgid "initial value for \"varExp\" should be of length 1" msgstr "Anfangswert für \"varExp\" sollte die Länge 1 haben." msgid "%s can have at most two components" msgstr "%s kann höchstens zwei Komponenten haben." msgid "%s can only have names \"const\" and \"power\"" msgstr "%s kann nur die Namen \"const\" und \"power\" haben." msgid "%s can only be a list or numeric" msgstr "%s kann nur eine Liste oder numerisch sein." msgid "%s must have group names in 'varConstPower'" msgstr "%s muss Gruppennamen in 'varConstPower' haben." msgid "constant in \"varConstPower\" structure must be > 0" msgstr "Konstante in \"varConstPower\"-Struktur muss > 0 sein." msgid "initial value should be of length %d" msgstr "Startwert sollte Länge %d haben." msgid "nonexistent group names for initial values" msgstr "Nicht existierende Gruppenamen für Startwerte" msgid "all arguments to 'varComb' must be of class \"varFunc\"." msgstr "Alle Argumente für 'varComb' müssen von der Klasse \"varFunc\" sein." msgid "cannot change parameter length of initialized \"varComb\" object" msgstr "" "Parameterlänge eines initialisierten \"varComb\"-Objekts kann nicht geändert " "werden" msgid "term %s not matched" msgid_plural "terms %s not matched" msgstr[0] "Term %s nicht übereinstimmend" msgstr[1] "Terme %s nicht übereinstimmend" msgid "'L' must have at most %d column" msgid_plural "'L' must have at most %d columns" msgstr[0] "'L' muss zumindest %d Spalte haben:" msgstr[1] "'L' muss zumindest %d Spalten haben:" msgid "effect %s not matched" msgid_plural "effects %s not matched" msgstr[0] "Effekt %s nicht übereinstimmend" msgstr[1] "Effekte %s nicht übereinstimmend" msgid "level %s not allowed for %s" msgid_plural "levels %s not allowed for %s" msgstr[0] "Stufe %s nicht für %s erlaubt" msgstr[1] "Stufen %s nicht für %s erlaubt" msgid "%s not found in data" msgid_plural "%s not found in data" msgstr[0] "%s nicht in Daten gefunden" msgstr[1] "%s nicht in Daten gefunden" msgid "nonexistent level %s" msgid_plural "nonexistent levels %s" msgstr[0] "nicht existierende Stufe %s" msgstr[1] "nicht existierende Stufen %s" msgid "%s not available for plotting" msgid_plural "%s not available for plotting" msgstr[0] "%s nicht verfügbar für grafische Darstellung" msgstr[1] "%s nicht verfügbar für grafische Darstellung" msgid "%s not matched" msgid_plural "%s not matched" msgstr[0] "%s nicht übereinstimmend" msgstr[1] "%s nicht übereinstimmend" msgid "group name not matched in starting values for random effects: %s" msgid_plural "" "group names not matched in starting values for random effects: %s" msgstr[0] "Gruppenname nicht zu Startwerten für Zufallseffekte passend: %s" msgstr[1] "Gruppennamen nicht zu Startwerten für Zufallseffekte passend: %s" # FIXME 'Terms; #~ msgid "'Terms; must be between 1 and %d" #~ msgstr "'Terms' müssen zwischen 1 und %d liegen" nlme/po/fr.po0000644000176000001440000000416012203635654012631 0ustar ripleyusers# Translation of nlme.pot to French # Copyright (C) 2005 The R Foundation # This file is distributed under the same license as the nlme R package. # Philippe Grosjean , 2005. # msgid "" msgstr "" "Project-Id-Version: nlme 3.1-65\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-08-17 08:12+0100\n" "PO-Revision-Date: 2005-12-08 01:00+0100\n" "Last-Translator: Philippe Grosjean \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: corStruct.c:445 msgid "All parameters must be less than 1 in absolute value" msgstr "Tous les paramètres doivent être inférieurs à 1 en valeur absolue" #: corStruct.c:556 msgid "Coefficient matrix not invertible" msgstr "Matrice de coefficient non inversible" #: corStruct.c:908 corStruct.c:963 corStruct.c:1030 corStruct.c:1072 msgid "Unknown spatial correlation class" msgstr "Classes de corrélation spatiale inconnues" #: nlme.c:498 msgid "First observation on an individual must have a dose" msgstr "La première observation sur un individu doit avoir une dose" #: nlmefit.c:400 #, c-format msgid "Singularity in backsolve at level %ld, block %ld" msgstr "Singularité rencontrée en résolution inverse au niveau %ld, bloc %ld" #: nlmefit.c:557 msgid "analytic gradient is not available with matrix logarithm" msgstr "" "un gradient analytique n'est pas disponible avec une matrice logarithmique" #: nlmefit.c:580 msgid "analytic gradient is not available with compound symmetry" msgstr "un gradient analytique n'est pas disponible avec une symétrie composée" #: nlmefit.c:860 msgid "Unable to form eigenvalue-eigenvector decomposition" msgstr "" "Incapable de former la décomposition valeurs propres - vecteurs propres" #: nlmefit.c:892 msgid "Unable to form Cholesky decomposition" msgstr "Incapable de former la décomposition de Cholesky" #: nlmefit.c:923 msgid "Haven't written the compound symmetry case for this yet" msgstr "Les cas de symétrie composée n'ont pas encore été écrits" nlme/po/ko.po0000644000176000001440000000457712203635654012647 0ustar ripleyusers# Korean translation for R nlme package # Recommended/nlme/po/ko.po # Maintainer: R Core Team # Sent to Brian Ripley # Copyright (C) 1995-2013 The R Core Team # This file is distributed under the same license as the R nlme package. # R Development Translation Team - Korean # Chel Hee Lee , 2013. # Chel Hee Lee , 2013. # msgid "" msgstr "" "Project-Id-Version: nlme 3.1-105\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-08-17 08:12+0100\n" "PO-Revision-Date: 2013-08-16 18:27-0600\n" "Last-Translator: Chel Hee Lee \n" "Language-Team: R Development Translation Teams (Korean) \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: Poedit 1.5.4\n" #: corStruct.c:445 msgid "All parameters must be less than 1 in absolute value" msgstr "모든 파ë¼ë¯¸í„°ë“¤ì˜ ì ˆëŒ€ê°’ì´ ë°˜ë“œì‹œ 1 보다 작아야 합니다" #: corStruct.c:556 msgid "Coefficient matrix not invertible" msgstr "가역ì ì´ì§€ ì•Šì€ ê³„ìˆ˜í–‰ë ¬ìž…ë‹ˆë‹¤" #: corStruct.c:908 corStruct.c:963 corStruct.c:1030 corStruct.c:1072 msgid "Unknown spatial correlation class" msgstr "알 수 없는 spatial correlation í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤" #: nlme.c:498 msgid "First observation on an individual must have a dose" msgstr "ê°œì¸ì˜ 첫번째 ê´€ì¸¡ê°’ì€ ë°˜ë“œì‹œ dose ì´ì–´ì•¼ 합니다" #: nlmefit.c:400 #, c-format msgid "Singularity in backsolve at level %ld, block %ld" msgstr "" #: nlmefit.c:557 msgid "analytic gradient is not available with matrix logarithm" msgstr "analytic gradient는 matrix logarithmê³¼ 함께 사용할 수 없습니다" #: nlmefit.c:580 msgid "analytic gradient is not available with compound symmetry" msgstr "analytic gradient는 compound symmetry와 함께 사용할 수 없습니다" #: nlmefit.c:860 msgid "Unable to form eigenvalue-eigenvector decomposition" msgstr "고유값-고유벡터 분해를 í•  수 없습니다" #: nlmefit.c:892 msgid "Unable to form Cholesky decomposition" msgstr "콜레스키 분해를 í•  수 없습니다" #: nlmefit.c:923 msgid "Haven't written the compound symmetry case for this yet" msgstr "ì´ê²ƒì— 대하여 compound symmetryì˜ ê²½ìš°ëŠ” ì•„ì§ ìž‘ì„±ë˜ì§€ 않았습니다" nlme/po/nlme.pot0000644000176000001440000000271712203635654013347 0ustar ripleyusers# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: nlme 3.1-111\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-08-17 08:12+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: corStruct.c:445 msgid "All parameters must be less than 1 in absolute value" msgstr "" #: corStruct.c:556 msgid "Coefficient matrix not invertible" msgstr "" #: corStruct.c:908 corStruct.c:963 corStruct.c:1030 corStruct.c:1072 msgid "Unknown spatial correlation class" msgstr "" #: nlme.c:498 msgid "First observation on an individual must have a dose" msgstr "" #: nlmefit.c:400 #, c-format msgid "Singularity in backsolve at level %ld, block %ld" msgstr "" #: nlmefit.c:557 msgid "analytic gradient is not available with matrix logarithm" msgstr "" #: nlmefit.c:580 msgid "analytic gradient is not available with compound symmetry" msgstr "" #: nlmefit.c:860 msgid "Unable to form eigenvalue-eigenvector decomposition" msgstr "" #: nlmefit.c:892 msgid "Unable to form Cholesky decomposition" msgstr "" #: nlmefit.c:923 msgid "Haven't written the compound symmetry case for this yet" msgstr "" nlme/po/R-pl.po0000644000176000001440000026032412203635654013042 0ustar ripleyusersmsgid "" msgstr "" "Project-Id-Version: nlme 3.1-104\n" "Report-Msgid-Bugs-To: bugs@r-project.org\n" "POT-Creation-Date: 2013-08-17 08:12\n" "PO-Revision-Date: 2012-10-06 16:10+0100\n" "Last-Translator: Åukasz Daniel \n" "Language-Team: Åukasz Daniel \n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Poedit-SourceCharset: iso-8859-1\n" "X-Generator: Poedit 1.5.3\n" # nlme/R/VarCov.R: 26 # stop("not implemented for \"nlme\" objects") msgid "not implemented for \"nlme\" objects" msgstr "niezaimplementowane dla obiektów \"nlme\"" # nlme/R/VarCov.R: 28 # stop("not implemented for multiple levels of nesting") msgid "not implemented for multiple levels of nesting" msgstr "niezaimplementowane dla wielu poziomów zagnieżdżenia" # nlme/R/VarCov.R: 47 # stop(gettextf("individual %s was not used in the fit", # sQuote(individ)), domain = NA) # nlme/R/VarCov.R: 50 # stop(gettextf("individual %s was not used in the fit", # sQuote(individ)), domain = NA) msgid "individual %s was not used in the fit" msgstr "jednostka %s nie zostaÅ‚a użyta w dopasowaniu" # nlme/R/corStruct.R: 60 # stop(gettextf("do not know how to calculate correlation matrix of %s object", # dQuote(class(object)[1])), domain = NA) msgid "do not know how to calculate correlation matrix of %s object" msgstr "nie wiadomo jak policzyć macierz korelacji obiektu %s" # nlme/R/corStruct.R: 108 # stop("\"corStruct\" object must have a \"fixed\" attribute") msgid "\"corStruct\" object must have a \"fixed\" attribute" msgstr "obiekt \"corStruct\" musi posiadać atrybut \"fixed\"." # nlme/R/corStruct.R: 116 # stop(gettextf("do not know how to obtain parameters of %s object", # dQuote(class(object)[1])), domain = NA) msgid "do not know how to obtain parameters of %s object" msgstr "nie wiadomo jak uzyskać parametry obiektu %s" # nlme/R/corStruct.R: 127 # stop("cannot change the length of the parameter of a \"corStruct\" object") msgid "cannot change the length of the parameter of a \"corStruct\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru obiektu \"corStruct\"" # nlme/R/corStruct.R: 162 # warning("cannot change 'form'") msgid "cannot change 'form'" msgstr "Nie można zmienić 'form'." # nlme/R/corStruct.R: 166 # stop("need data to calculate covariate of \"corStruct\" object") msgid "need data to calculate covariate of \"corStruct\" object" msgstr "" "potrzeba danych do obliczenia zmiennej wyjaÅ›niajÄ…cej obiektu \"corStruct\"" # nlme/R/corStruct.R: 420 # stop("cannot change the length of the parameter of a \"corSymm\" object") msgid "cannot change the length of the parameter of a \"corSymm\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru obiektu \"corStruct\"" # nlme/R/corStruct.R: 450 # stop("covariate must have unique values within groups for \"corSymm\" objects") msgid "covariate must have unique values within groups for \"corSymm\" objects" msgstr "" "zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów " "\"corSymm\"" # nlme/R/corStruct.R: 455 # stop("unique values of the covariate for \"corSymm\" objects must be a sequence of consecutive integers") msgid "" "unique values of the covariate for \"corSymm\" objects must be a sequence " "of consecutive integers" msgstr "" "unikalne wartoÅ›ci zmiennej wyjaÅ›niajÄ…cej dla obiektów \"corSymm\" muszÄ… być " "ciÄ…giem kolejnych liczb caÅ‚kowitych" # nlme/R/corStruct.R: 467 # stop("initial value for \"corSymm\" parameters of wrong dimension") msgid "initial value for \"corSymm\" parameters of wrong dimension" msgstr "" "poczÄ…tkowe wartoÅ›ci dla parametrów \"corSymm\" posiadajÄ… niepoprawne wymiary" # nlme/R/corStruct.R: 470 # stop("initial values for \"corSymm\" must be between -1 and 1") msgid "initial values for \"corSymm\" must be between -1 and 1" msgstr "poczÄ…tkowe wartoÅ›ci dla \"corSymm\" muszÄ… być pomiÄ™dzy -1 a 1" # nlme/R/corStruct.R: 477 # stop("initial values for \"corSymm\" do not define a positive-definite correlation structure") msgid "" "initial values for \"corSymm\" do not define a positive-definite correlation " "structure" msgstr "" "poczÄ…tkowe wartoÅ›ci dla \"corSymm\" nie definiujÄ… dodatnio okreÅ›lonej " "struktury korelacji" # nlme/R/corStruct.R: 660 # stop("cannot change the length of the parameter of a \"corNatural\" object") msgid "cannot change the length of the parameter of a \"corNatural\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru obiektu \"corStruct\"" # nlme/R/corStruct.R: 690 # stop("covariate must have unique values within groups for \"corNatural\" objects") msgid "" "covariate must have unique values within groups for \"corNatural\" objects" msgstr "" "zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów " "\"corNatural\"" # nlme/R/corStruct.R: 695 # stop("unique values of the covariate for \"corNatural\" objects must be a sequence of consecutive integers") msgid "" "unique values of the covariate for \"corNatural\" objects must be a sequence " "of consecutive integers" msgstr "" "unikalne wartoÅ›ci zmiennej wyjaÅ›niajÄ…cej dla obiektów \"corNatural\" muszÄ… " "być ciÄ…giem kolejnych liczb caÅ‚kowitych" # nlme/R/corStruct.R: 707 # stop("initial value for \"corNatural\" parameters of wrong dimension") msgid "initial value for \"corNatural\" parameters of wrong dimension" msgstr "" "poczÄ…tkowe wartoÅ›ci dla parametrów \"corNatural\" posiadajÄ… niepoprawne " "wymiary" # nlme/R/corStruct.R: 710 # stop("initial values for \"corNatural\" must be between -1 and 1") msgid "initial values for \"corNatural\" must be between -1 and 1" msgstr "poczÄ…tkowe wartoÅ›ci dla \"corNatural\" muszÄ… być pomiÄ™dzy -1 a 1" # nlme/R/corStruct.R: 717 # stop("initial values for \"corNatural\" do not define a positive-definite correlation structure") msgid "" "initial values for \"corNatural\" do not define a positive-definite " "correlation structure" msgstr "" "poczÄ…tkowe wartoÅ›ci dla \"corNatural\" nie definiujÄ… dodatnio okreÅ›lonej " "strukture korelacji" # nlme/R/corStruct.R: 858 # stop("parameter in AR(1) structure must be between -1 and 1") msgid "parameter in AR(1) structure must be between -1 and 1" msgstr "parametr w strukturze AR(1) musi być pomiÄ™dzy -1 a 1" # nlme/R/corStruct.R: 948 # stop("cannot change the length of the parameter of a \"corAR1\" object") msgid "cannot change the length of the parameter of a \"corAR1\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru obiektu \"corStruct\"" # nlme/R/corStruct.R: 973 # stop("covariate must have unique values within groups for \"corAR1\" objects") msgid "covariate must have unique values within groups for \"corAR1\" objects" msgstr "" "zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów " "\"corAR1\"" # nlme/R/corStruct.R: 1020 # stop("parameter in CAR(1) structure must be between 0 and 1") msgid "parameter in CAR(1) structure must be between 0 and 1" msgstr "parametr w strukturze AR(1) musi być pomiÄ™dzy 0 a 1" # nlme/R/corStruct.R: 1114 # stop("cannot change the length of the parameter of a \"corCAR1\" object") msgid "cannot change the length of the parameter of a \"corCAR1\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru obiektu \"corStruct\"" # nlme/R/corStruct.R: 1141 # stop("covariate must have unique values within groups for \"corCAR1\" objects") msgid "covariate must have unique values within groups for \"corCAR1\" objects" msgstr "" "zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów " "\"corCAR1\"" # nlme/R/corStruct.R: 1179 # stop("autoregressive order must be a non-negative integer") msgid "autoregressive order must be a non-negative integer" msgstr "rzÄ…d autoregresji musi być nieujemnÄ… liczbÄ… caÅ‚kowitÄ…" # nlme/R/corStruct.R: 1182 # stop("moving average order must be a non-negative integer") msgid "moving average order must be a non-negative integer" msgstr "rzÄ…d Å›redniej ruchomej musi być nieujemnÄ… liczbÄ… caÅ‚kowitÄ…" # nlme/R/corStruct.R: 1188 # stop("initial value for parameter of wrong length") msgid "initial value for parameter of wrong length" msgstr "poczÄ…tkowa wartość parametru posiada niepoprawnÄ… dÅ‚ugość" # nlme/R/corStruct.R: 1191 # stop("parameters in ARMA structure must be < 1 in absolute value") msgid "parameters in ARMA structure must be < 1 in absolute value" msgstr "parametry w strukturze ARMA muszÄ… mieć wartość na moduÅ‚ < 1" # nlme/R/corStruct.R: 1210 # stop("'object' has not been Initialize()d") # nlme/R/corStruct.R: 1243 # stop("'object' has not been Initialize()d") # nlme/R/corStruct.R: 1313 # stop("'object' has not been Initialize()d") # nlme/R/corStruct.R: 1366 # stop("'object' has not been Initialize()d") msgid "'object' has not been Initialize()d" msgstr "'object' nie zostaÅ‚ zainicjalizowany metodÄ… 'Initialize()'" # nlme/R/corStruct.R: 1315 # stop("cannot change the length of the parameter of a \"corARMA\" object") msgid "cannot change the length of the parameter of a \"corARMA\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru obiektu \"corStruct\"" # nlme/R/corStruct.R: 1346 # stop("covariate must have unique values within groups for \"corARMA\" objects") msgid "covariate must have unique values within groups for \"corARMA\" objects" msgstr "" "zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów " "\"corARMA\"" # nlme/R/corStruct.R: 1399 # stop("parameter in \"corCompSymm\" structure must be < 1 in absolute value") msgid "parameter in \"corCompSymm\" structure must be < 1 in absolute value" msgstr "parametr w strukturze \"corCompSymm\" musi mieć wartość na moduÅ‚ < 1" # nlme/R/corStruct.R: 1491 # stop("cannot change the length of the parameter of a \"corCompSymm\" object") msgid "cannot change the length of the parameter of a \"corCompSymm\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru obiektu \"corStruct\"" # nlme/R/corStruct.R: 1518 # stop(gettextf("initial value in \"corCompSymm\" must be greater than %s", # attr(object, "inf")), domain = NA) msgid "initial value in \"corCompSymm\" must be greater than %s" msgstr "poczÄ…tkowa wartość w \"corCompSymm\" musi być wiÄ™ksza niż %s" # nlme/R/corStruct.R: 1854 # stop("cannot change the length of the parameter after initialization") # nlme/R/pdMat.R: 257 # stop("cannot change the length of the parameter after initialization") # nlme/R/varFunc.R: 1007 # stop("cannot change the length of the parameter after initialization") msgid "cannot change the length of the parameter after initialization" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru po jego zainicjowaniu" # nlme/R/corStruct.R: 1892 # stop("need data to calculate covariate") msgid "need data to calculate covariate" msgstr "potrzeba danych aby wyliczyć zmiennÄ… wyjaÅ›niajÄ…cÄ…" # nlme/R/corStruct.R: 1934 # stop("cannot have zero distances in \"corSpatial\"") msgid "cannot have zero distances in \"corSpatial\"" msgstr "nie można mieć zerowych odlegÅ‚oÅ›ci w \"corSpatial\"" # nlme/R/corStruct.R: 1952 # stop("'range' must be > 0 in \"corSpatial\" initial value") msgid "'range' must be > 0 in \"corSpatial\" initial value" msgstr "'range' musi być > 0 w poczÄ…tkowej wartoÅ›ci \"corSpatial\"" # nlme/R/corStruct.R: 1959 # stop("initial value for \"corSpatial\" parameters of wrong dimension") # nlme/R/corStruct.R: 1967 # stop("initial value for \"corSpatial\" parameters of wrong dimension") msgid "initial value for \"corSpatial\" parameters of wrong dimension" msgstr "poczÄ…tkowa wartość parametrów \"corSpatial\" ma niepoprawny wymiar" # nlme/R/corStruct.R: 1963 # stop("initial value of nugget ratio must be between 0 and 1") # nlme/R/corStruct.R: 2137 # stop("initial value of nugget ratio must be between 0 and 1") # nlme/R/corStruct.R: 2258 # stop("initial value of nugget ratio must be between 0 and 1") msgid "initial value of nugget ratio must be between 0 and 1" msgstr "poczÄ…tkowa wartość proporcji samorodka musi być pomiÄ™dzy 0 a 1" # nlme/R/corStruct.R: 2122 # stop("'range' must be > 0 in \"corLin\" initial value") msgid "'range' must be > 0 in \"corLin\" initial value" msgstr "'range' musi być > 0 w poczÄ…tkowej wartoÅ›ci \"corLin\"" # nlme/R/corStruct.R: 2125 # warning("initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)") # nlme/R/corStruct.R: 2246 # warning("initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)") msgid "" "initial value for 'range' less than minimum distance. Setting it to 1.1 * min" "(distance)" msgstr "" "poczÄ…tkowa wartość 'range' mniejsza niż minimalna odlegÅ‚ość. Ustawianie jej " "na '1.1 * min(distance)'" # nlme/R/corStruct.R: 2133 # stop("initial value for \"corLin\" parameters of wrong dimension") # nlme/R/corStruct.R: 2141 # stop("initial value for \"corLin\" parameters of wrong dimension") msgid "initial value for \"corLin\" parameters of wrong dimension" msgstr "poczÄ…tkowa wartość parametrów \"corLin\" ma niepoprawny wymiar" # nlme/R/corStruct.R: 2243 # stop("range must be > 0 in \"corSpher\" initial value") msgid "range must be > 0 in \"corSpher\" initial value" msgstr "zakres musi być > 0 w poczÄ…tkowej wartoÅ›ci \"corShere\"" # nlme/R/corStruct.R: 2254 # stop("initial value for \"corSpher\" parameters of wrong dimension") # nlme/R/corStruct.R: 2262 # stop("initial value for \"corSpher\" parameters of wrong dimension") msgid "initial value for \"corSpher\" parameters of wrong dimension" msgstr "poczÄ…tkowa wartość parametrów \"corSpher\" ma niepoprawny wymiar" # nlme/R/gls.R: 38 # warning("negative control$nlmStepMax - using default value") # nlme/R/gnls.R: 62 # warning("negative control$nlmStepMax - using default value") # nlme/R/lme.R: 145 # warning("negative control$nlmStepMax - using default value") # nlme/R/nlme.R: 177 # warning("negative control$nlmStepMax - using default value") msgid "negative control$nlmStepMax - using default value" msgstr "ujemna wartość 'control$nlmStepMax' - używanie wartoÅ›ci domyÅ›lnej" msgid "model must be a formula of the form \"resp ~ pred\"" msgstr "" "model musi być formułą o formie \"zmienna zależna ~ zmienna niezależna\"" # nlme/R/gls.R: 93 # stop("no coefficients to fit") msgid "no coefficients to fit" msgstr "brak współczynników do dopasowania" # nlme/R/gls.R: 173 # stop("maximum number of iterations reached without convergence") # nlme/R/gnls.R: 466 # warning("maximum number of iterations reached without convergence") # nlme/R/gnls.R: 469 # stop("maximum number of iterations reached without convergence") # nlme/R/nlme.R: 951 # warning("maximum number of iterations reached without convergence") # nlme/R/nlme.R: 954 # stop("maximum number of iterations reached without convergence") msgid "maximum number of iterations reached without convergence" msgstr "maksymalna liczba iteracji zostaÅ‚a osiÄ…gniÄ™ta bez uzyskania zbieżnoÅ›ci" # nlme/R/gls.R: 323 # stop(gettextf("computed \"gls\" fit is singular, rank %s", rnk), # domain = NA) msgid "computed \"gls\" fit is singular, rank %s" msgstr "obliczone dopasowanie \"gls\" jest osobliwe, ranga %s" # nlme/R/gls.R: 412 # stop("object must inherit from class \"gls\"") msgid "object must inherit from class \"gls\"" msgstr "obiekt musi dziedziczyć z klasy \"gls\"" # nlme/R/gls.R: 456 # stop(gettextf("'Terms' must be between 1 and %d", # nTerms), domain = NA) msgid "'Terms' must be between 1 and %d" msgstr "'Terms' muszÄ… być pomiÄ™dzy 1 a %d" # nlme/R/gls.R: 469 # stop("terms can only be integers or characters") # nlme/R/lme.R: 893 # stop("terms can only be integers or characters") msgid "terms can only be integers or characters" msgstr "czÅ‚ony mogÄ… być tylko liczbami caÅ‚kowitymi lub tekstami" # nlme/R/gls.R: 546 # stop(gettextf("data in %s call must evaluate to a data frame", # sQuote(substitute(object))), domain = NA) # nlme/R/lme.R: 1075 # stop(gettextf("data in %s call must evaluate to a data frame", # sQuote(substitute(object))), domain = NA) msgid "data in %s call must evaluate to a data frame" msgstr "dane w wywoÅ‚aniu %s muszÄ… wyliczać siÄ™ do ramki danych" # nlme/R/gls.R: 551 # stop(gettextf("%s without \"primary\" can only be used with fits of \"groupedData\" objects", # sys.call()[[1]]), domain = NA) # nlme/R/lme.R: 1080 # stop(gettextf("%s without \"primary\" can only be used with fits of \"groupedData\" objects", # sys.call()[[1]]), domain = NA) # nlme/R/lmList.R: 113 # stop(gettextf("%s without \"primary\" can only be used with fits of \"groupedData\" objects", # sys.call()[[1]]), domain = NA) msgid "" "%s without \"primary\" can only be used with fits of \"groupedData\" objects" msgstr "" "%s bez \"primary\" może być użyte jedynie z dopasowaniami obiektów " "\"groupedData\"" # nlme/R/gls.R: 635 # stop("only one level allowed for predictions") msgid "only one level allowed for predictions" msgstr "tylko jeden poziom jest dozwolony dla przewidywaÅ„" # nlme/R/gls.R: 664 # stop(gettextf("%s and %s must have the same group levels", c1, c2), # domain = NA) msgid "%s and %s must have the same group levels" msgstr "%s oraz %s muszÄ… mieć te same poziomy grup" # nlme/R/gls.R: 678 # stop("wrong group levels") # nlme/R/gls.R: 692 # stop("wrong group levels") msgid "wrong group levels" msgstr "błędne poziomy grupy" # nlme/R/gls.R: 779 # stop(gettextf("cannot get confidence intervals on var-cov components: %s", # aV), domain = NA) # nlme/R/lme.R: 1295 # stop(gettextf("cannot get confidence intervals on var-cov components: %s", # aV), domain = NA) msgid "cannot get confidence intervals on var-cov components: %s" msgstr "nie można uzyskać przedziałów ufnoÅ›ci na komponentach var-cov: %s" # nlme/R/gls.R: 1097 # stop("need an object with call component") # nlme/R/gnls.R: 770 # stop("need an object with call component") # nlme/R/lme.R: 2613 # stop("need an object with call component") # nlme/R/lmList.R: 1418 # stop("need an object with call component") # nlme/R/nlme.R: 1336 # stop("need an object with call component") msgid "need an object with call component" msgstr "potrzeba obiektu z komponentem wywoÅ‚ania" # nlme/R/gls.R: 1221 # stop("'nint' is not consistent with 'breaks'") # nlme/R/lme.R: 2749 # stop("'nint' is not consistent with 'breaks'") msgid "'nint' is not consistent with 'breaks'" msgstr "'nint' jest niespójne z 'breaks'" # nlme/R/gnls.R: 71 # stop("'object' must be a formula") msgid "'object' must be a formula" msgstr "'object' musi być formułą" # nlme/R/gnls.R: 73 # stop("object formula must be of the form \"resp ~ pred\"") msgid "object formula must be of the form \"resp ~ pred\"" msgstr "" "formuÅ‚a obiektu musi mieć formÄ™ \"zmienna zależna ~ zmienna niezależna\"" # nlme/R/gnls.R: 85 # stop("'data' must be given explicitly to use 'nls' to get initial estimates") msgid "'data' must be given explicitly to use 'nls' to get initial estimates" msgstr "" "'data' musi być podane bezpoÅ›rednio aby użyć 'nls' w celu uzyskania " "poczÄ…tkowych oszacowaÅ„" # nlme/R/gnls.R: 89 # stop("no initial values for model parameters") msgid "no initial values for model parameters" msgstr "brak poczÄ…tkowych wartoÅ›ci dla parametrów modelu" # nlme/R/gnls.R: 102 # stop("starting estimates must have names when 'params' is missing") msgid "starting estimates must have names when 'params' is missing" msgstr "poczÄ…tkowe oszacowania muszÄ… mieć nazwy gdy brakuje 'params'" # nlme/R/gnls.R: 126 # stop ("'params' must be a formula or list of formulae") msgid "'params' must be a formula or list of formulae" msgstr "'params' muszÄ… być formułą lub listÄ… formuÅ‚" # nlme/R/gnls.R: 128 # stop ("formulae in 'params' must be of the form \"parameter ~ expr\"") # nlme/R/gnls.R: 130 # stop ("formulae in 'params' must be of the form \"parameter ~ expr\"") msgid "formulae in 'params' must be of the form \"parameter ~ expr\"" msgstr "formuÅ‚y w 'params' muszÄ… mieć formÄ™ \"parametr ~ wyrażenie\"." # nlme/R/gnls.R: 273 # stop ("starting values for parameters are not of the correct length") msgid "starting values for parameters are not of the correct length" msgstr "wartoÅ›ci poczÄ…tkowe parametrów nie majÄ… poprawnej dÅ‚ugoÅ›ci" # nlme/R/gnls.R: 419 # warning("step halving factor reduced below minimum in NLS step") # nlme/R/gnls.R: 421 # stop("step halving factor reduced below minimum in NLS step") msgid "step halving factor reduced below minimum in NLS step" msgstr "czynnik skracajÄ…cy krok zostaÅ‚ zredukowany poniżej minimum w kroku NLS" # nlme/R/gnls.R: 483 # stop("approximate covariance matrix for parameter estimates not of full rank") msgid "approximate covariance matrix for parameter estimates not of full rank" msgstr "" "przybliżona macierz kowariancji dla szacunkowych parametrów nie jest peÅ‚nej " "rangi" # nlme/R/gnls.R: 655 # stop("cannot calculate REML log-likelihood for \"gnls\" objects") msgid "cannot calculate REML log-likelihood for \"gnls\" objects" msgstr "" "nie można obliczyć REML logarytmu funkcji wiarygodnoÅ›ci dla obiektów \"gnls\"" # nlme/R/groupedData.R: 31 # stop("first argument to 'groupedData' must be a two-sided formula") msgid "first argument to 'groupedData' must be a two-sided formula" msgstr "" "pierwszy argument przekazywany do 'groupedData' musi być dwustronnÄ… formułą" # nlme/R/groupedData.R: 34 # stop("right-hand side of first argument must be a conditional expression") # nlme/R/groupedData.R: 55 # stop("right-hand side of first argument must be a conditional expression") # nlme/R/groupedData.R: 155 # stop("right-hand side of first argument must be a conditional expression") msgid "right-hand side of first argument must be a conditional expression" msgstr "prawa strona pierwszego argumentu musi być wyrażeniem warunkowym" # nlme/R/groupedData.R: 51 # stop("first argument to 'nfGroupedData' must be a two-sided formula") msgid "first argument to 'nfGroupedData' must be a two-sided formula" msgstr "" "pierwszy argument przekazywany do 'nfGroupedData' musi być dwustronnÄ… formułą" # nlme/R/groupedData.R: 58 # stop("only one level of grouping allowed") msgid "only one level of grouping allowed" msgstr "tylko jeden poziom grupowania jest dozwolony" # nlme/R/groupedData.R: 68 # stop("second argument to 'groupedData' must inherit from data.frame") # nlme/R/groupedData.R: 177 # stop("second argument to 'groupedData' must inherit from data.frame") msgid "second argument to 'groupedData' must inherit from data.frame" msgstr "" "drugi argument przekazywany do 'groupedData' musi dziedziczyć z klasy \"data." "frame\"" # nlme/R/groupedData.R: 151 # stop("first argument to 'nmGroupedData' must be a two-sided formula") msgid "first argument to 'nmGroupedData' must be a two-sided formula" msgstr "" "pierwszy argument przekazywany do 'nmGroupedData' musi być dwustronnÄ… formułą" # nlme/R/groupedData.R: 220 # warning("'subset' ignored with single grouping factor") msgid "'subset' ignored with single grouping factor" msgstr "'subset' zostaÅ‚o zignorowane z jednym czynnikem grupujÄ…cym" # nlme/R/groupedData.R: 228 # stop("'subset' must be a list") msgid "'subset' must be a list" msgstr "'subset' musi być listÄ…" # nlme/R/groupedData.R: 235 # stop("undefined group declared in 'subset'") msgid "undefined group declared in 'subset'" msgstr "niezdefiniowana grupa zadeklarowana w 'subset'" # nlme/R/groupedData.R: 246 # stop("only one display level allowed") msgid "only one display level allowed" msgstr "tylko jeden poziom wyÅ›wietlenia jest dozwolony" # nlme/R/groupedData.R: 249 # stop(gettextf("undefined display level %s for %s", # displayLevel, sQuote(substitute(object))), domain = NA) msgid "undefined display level %s for %s" msgstr "niezdefiniowany poziom %s wyÅ›wietlenia dla %s" # nlme/R/groupedData.R: 275 # stop(gettextf("undefined collapsing level %s for %s", # collapseLevel, sQuote(substitute(object))), domain = NA) msgid "undefined collapsing level %s for %s" msgstr "niezdefiniowany poziom %s zapadania dla %s" # nlme/R/groupedData.R: 285 # warning("collapsing level cannot be smaller than display level; setting it to the display level") msgid "" "collapsing level cannot be smaller than display level; setting it to the " "display level" msgstr "" "poziom zapadania nie może być mniejszy niż poziom wyÅ›wietlania; ustawianie " "go do poziomu wyÅ›wietlania" # nlme/R/groupedData.R: 296 # stop("'preserve' must be a two-sided formula") msgid "'preserve' must be a two-sided formula" msgstr "'preserve' musi być dwustronnÄ… formułą" # nlme/R/groupedData.R: 629 # stop("'asTable' cannot be used with multilevel grouped data") msgid "'asTable' cannot be used with multilevel grouped data" msgstr "'asTable' nie może być użyte z wielopoziomowymi zgrupowanymi danymi" # nlme/R/groupedData.R: 633 # stop("'asTable' can only be used with balanced 'groupedData' objects") msgid "'asTable' can only be used with balanced 'groupedData' objects" msgstr "" "'asTable' może być użyte jedynie ze zbalansowanymi obiektami 'groupedData'" # nlme/R/lmList.R: 56 # stop("multiple levels not allowed") # nlme/R/lmList.R: 71 # stop("multiple levels not allowed") # nlme/R/nlsList.R: 63 # stop("multiple levels not allowed") # nlme/R/nlsList.R: 74 # stop("multiple levels not allowed") msgid "multiple levels not allowed" msgstr "wielokrotne poziomy nie sÄ… dozwolone" # nlme/R/lmList.R: 65 # stop ("'data' must be a \"groupedData\" object if 'groups' argument is missing") msgid "'data' must be a \"groupedData\" object if 'groups' argument is missing" msgstr "" "'data' musi być obiektem \"groupedData\" jeÅ›li brakuje argumentu 'groups' " msgid "An lm fit failed, probably because a factor only had one level" msgstr "" # nlme/R/lmList.R: 108 # stop(gettextf("'data' in %s call must evaluate to a data frame", # sQuote(substitute(object))), domain = NA) msgid "'data' in %s call must evaluate to a data frame" msgstr "'data' w wywoÅ‚aniu %s musi wyliczać siÄ™ do ramki danych" # nlme/R/lmList.R: 221 # stop("nonexistent groups requested in 'subset'") # nlme/R/lmList.R: 226 # stop("nonexistent groups requested in 'subset'") # nlme/R/lmList.R: 1257 # stop("nonexistent groups requested in 'subset'") # nlme/R/lmList.R: 1262 # stop("nonexistent groups requested in 'subset'") msgid "nonexistent groups requested in 'subset'" msgstr "zażądano nieistniejÄ…cych grup w 'subset'" # nlme/R/lmList.R: 229 # stop("'subset' can only be character or integer") # nlme/R/lmList.R: 1265 # stop("'subset' can only be character or integer") msgid "'subset' can only be character or integer" msgstr "'subset' może być jedynie znakiem lub liczbÄ… caÅ‚kowitÄ…" # nlme/R/lmList.R: 334 # stop("log-likelihood not available with NULL fits") msgid "log-likelihood not available with NULL fits" msgstr "logarytm funkcji wiarygodnoÅ›ci nie jest dostÄ™pny z dopasowaniami NULL" # nlme/R/lme.R: 1421 # stop("'form' must be a formula") # nlme/R/lme.R: 2223 # stop("'form' must be a formula") # nlme/R/lmList.R: 376 # stop("'form' must be a formula") # nlme/R/lmList.R: 638 # stop("'form' must be a formula") # nlme/R/lmList.R: 1025 # stop("'form' must be a formula") # nlme/R/newFunc.R: 139 # stop("'form' must be a formula") # nlme/R/newFunc.R: 220 # stop("'form' must be a formula") # nlme/R/newMethods.R: 15 # stop("'form' must be a formula") # nlme/R/newMethods.R: 275 # stop("'form' must be a formula") # nlme/R/newMethods.R: 695 # stop("'form' must be a formula") msgid "'form' must be a formula" msgstr "'form' musi być formułą" # nlme/R/lme.R: 1424 # stop("'form' must be a one-sided formula") # nlme/R/lmList.R: 379 # stop("'form' must be a one-sided formula") msgid "'form' must be a one-sided formula" msgstr "'form' musi być jednostronnÄ… formułą" # nlme/R/lme.R: 1456 # stop("covariate must be a data frame") # nlme/R/lmList.R: 411 # stop("covariate must be a data frame") msgid "covariate must be a data frame" msgstr "zmienna niezależna musi być ramkÄ… danych" # nlme/R/lme.R: 1467 # stop("cannot do pairs of just one variable") # nlme/R/lmList.R: 421 # stop("cannot do pairs of just one variable") msgid "cannot do pairs of just one variable" msgstr "nie można zrobić par tylko jednej zmiennej" # nlme/R/lme.R: 1510 # stop("'id' must be between 0 and 1") # nlme/R/lme.R: 2340 # stop("'id' must be between 0 and 1") # nlme/R/lmList.R: 462 # stop("'id' must be between 0 and 1") # nlme/R/lmList.R: 734 # stop("'id' must be between 0 and 1") # nlme/R/lmList.R: 1083 # stop("'id' must be between 0 and 1") # nlme/R/lmList.R: 1136 # stop("'id' must be between 0 and 1") # nlme/R/newMethods.R: 372 # stop("'id' must be between 0 and 1") # nlme/R/newMethods.R: 747 # stop("'id' must be between 0 and 1") msgid "'id' must be between 0 and 1" msgstr "'id' musi być pomiÄ™dzy 0 a 1" # nlme/R/lme.R: 1522 # stop("'id' can only be a formula or numeric") # nlme/R/lme.R: 2293 # stop("'id' can only be a formula or numeric") # nlme/R/lme.R: 2346 # stop("'id' can only be a formula or numeric") # nlme/R/lmList.R: 471 # stop("'id' can only be a formula or numeric") # nlme/R/lmList.R: 739 # stop("'id' can only be a formula or numeric") # nlme/R/lmList.R: 1089 # stop("'id' can only be a formula or numeric") # nlme/R/lmList.R: 1142 # stop("'id' can only be a formula or numeric") # nlme/R/newMethods.R: 378 # stop("'id' can only be a formula or numeric") # nlme/R/newMethods.R: 758 # stop("'id' can only be a formula or numeric") msgid "'id' can only be a formula or numeric" msgstr "'id' może być jedynie formułą lub liczbÄ…" # nlme/R/lme.R: 1540 # stop("'idLabels' of incorrect length") # nlme/R/lme.R: 2305 # stop("'idLabels' of incorrect length") # nlme/R/lme.R: 2361 # stop("'idLabels' of incorrect length") # nlme/R/lmList.R: 486 # stop("'idLabels' of incorrect length") # nlme/R/lmList.R: 751 # stop("'idLabels' of incorrect length") # nlme/R/lmList.R: 1101 # stop("'idLabels' of incorrect length") # nlme/R/lmList.R: 1157 # stop("'idLabels' of incorrect length") # nlme/R/newMethods.R: 390 # stop("'idLabels' of incorrect length") # nlme/R/newMethods.R: 770 # stop("'idLabels' of incorrect length") msgid "'idLabels' of incorrect length" msgstr "'IdLabels' ma niepoprawnÄ… dÅ‚ugość" # nlme/R/lme.R: 1544 # stop("'idLabels' can only be a formula or a vector") # nlme/R/lme.R: 2309 # stop("'idLabels' can only be a formula or a vector") # nlme/R/lme.R: 2365 # stop("'idLabels' can only be a formula or a vector") # nlme/R/lmList.R: 490 # stop("'idLabels' can only be a formula or a vector") # nlme/R/lmList.R: 755 # stop("'idLabels' can only be a formula or a vector") # nlme/R/lmList.R: 1105 # stop("'idLabels' can only be a formula or a vector") # nlme/R/lmList.R: 1161 # stop("'idLabels' can only be a formula or a vector") # nlme/R/newMethods.R: 394 # stop("'idLabels' can only be a formula or a vector") # nlme/R/newMethods.R: 774 # stop("'idLabels' can only be a formula or a vector") msgid "'idLabels' can only be a formula or a vector" msgstr "'IdLabels' może być jedynie formułą lub wektorem" # nlme/R/lmList.R: 685 # stop("covariate must be numeric") # nlme/R/newMethods.R: 319 # stop("covariate must be numeric") msgid "covariate must be numeric" msgstr "zmienna niezależna musi być liczbÄ…" # nlme/R/lmList.R: 850 # stop("nonexistent group in 'newdata'") msgid "nonexistent group in 'newdata'" msgstr "nieistniejÄ…ca grupa w 'newdata'" # nlme/R/lmList.R: 859 # stop("nonexistent group requested in 'subset'") msgid "nonexistent group requested in 'subset'" msgstr "zażądano nieistniejÄ…cej grupy w 'subset'." # nlme/R/lme.R: 2264 # stop("only residuals and random effects allowed") # nlme/R/lmList.R: 1065 # stop("only residuals and random effects allowed") msgid "only residuals and random effects allowed" msgstr "tylko reszty oraz efekty losowe sÄ… dozwolone" # nlme/R/lme.R: 67 # stop("can only fit \"lmList\" objects with single grouping variable") # nlme/R/lme.R: 107 # stop("can only fit \"lmList\" objects with single grouping variable") msgid "can only fit \"lmList\" objects with single grouping variable" msgstr "" "można dopasować jedynie obiekty \"lmList\" z pojedynczÄ… zmiennÄ… grupujÄ…cÄ…" # nlme/R/lme.R: 72 # warning("'lme.lmList' will redefine 'data'") msgid "'lme.lmList' will redefine 'data'" msgstr "'lme.lmList' przedefiniuje 'data'" # nlme/R/lme.R: 112 # warning("initial value for \"reStruct\" overwritten in 'lme.lmList'") msgid "initial value for \"reStruct\" overwritten in 'lme.lmList'" msgstr "poczÄ…tkowa wartość dla \"reStruct\" zostaÅ‚a nadpisana w 'lme.lmList'" msgid "fixed-effects model must be a formula of the form \"resp ~ pred\"" msgstr "" "model staÅ‚ych efektów musi być formułą o formie \"zmienna zależna ~ zmienna " "niezależna\"" # nlme/R/lme.R: 168 # stop("incompatible lengths for 'random' and grouping factors") # nlme/R/nlme.R: 206 # stop("incompatible lengths for 'random' and grouping factors") # nlme/R/simulate.R: 39 # stop("incompatible lengths for 'random' and grouping factors") msgid "incompatible lengths for 'random' and grouping factors" msgstr "niespójne dÅ‚ugoÅ›ci dla 'random' oraz czynników grupujÄ…cych" # nlme/R/lme.R: 196 # stop("incompatible formulas for groups in 'random' and 'correlation'") # nlme/R/lme.R: 207 # stop("incompatible formulas for groups in 'random' and 'correlation'") msgid "incompatible formulas for groups in 'random' and 'correlation'" msgstr "niespójne formuÅ‚y dla grup w 'random' oraz 'correlation'" # nlme/R/lme.R: 199 # warning("cannot use smaller level of grouping for 'correlation' than for 'random'. Replacing the former with the latter.") msgid "" "cannot use smaller level of grouping for 'correlation' than for 'random'. " "Replacing the former with the latter." msgstr "" "nie można użyć mniejszego poziomu grupowania dla 'correlation' niż dla " "'random'. ZastÄ™powanie pierwszego drugim." # nlme/R/lme.R: 292 # warning(gettextf("fewer observations than random effects in all level %s grups", # Q), domain = NA) # nlme/R/nlme.R: 559 # warning(gettextf("fewer observations than random effects in all level %s grups", # Q), domain = NA) msgid "fewer observations than random effects in all level %s groups" msgstr "" "mniej obserwacji niż losowych efektów we wszystkich grupach w poziomie %s" # nlme/R/lme.R: 843 # stop("object must inherit from class \"lme\" ") msgid "object must inherit from class \"lme\"" msgstr "obiekt musi dziedziczyć z klasy \"lme\"" # nlme/R/lme.R: 898 # stop("terms must all have the same denominator DF") msgid "terms must all have the same denominator DF" msgstr "wszystkie czÅ‚ony muszÄ… mieć ten sam mianownik DF" # nlme/R/lme.R: 941 # stop("L may only involve fixed effects with the same denominator DF") msgid "L may only involve fixed effects with the same denominator DF" msgstr "'L' może zawierać jedynie staÅ‚e efekty z tym samym mianownikem DF" # nlme/R/lme.R: 971 # stop("objects must inherit from classes \"gls\", \"gnls\" \"lm\",\"lmList\", \"lme\",\"nlme\",\"nlsList\", or \"nls\"") msgid "" "objects must inherit from classes \"gls\", \"gnls\",\"lm\",\"lmList\", \"lme" "\",\"nlme\",\"nlsList\", or \"nls\"" msgstr "" "obiekty muszÄ… dziedziczyć z klas \"lm\",\"lmList\", \"lme\",\"nlme\"," "\"nlsList\", lub \"nls\"" # nlme/R/lme.R: 978 # warning("some fitted objects deleted because response differs from the first model") msgid "" "some fitted objects deleted because response differs from the first model" msgstr "" "niektóre dopasowane obiekty zostaÅ‚y usuniÄ™te ponieważ zmienne zależne różniÄ… " "siÄ™ od pierwszego modelu" # nlme/R/lme.R: 980 # stop("first model has a different response from the rest") msgid "first model has a different response from the rest" msgstr "pierwszy model ma innÄ… zmiennÄ… zależnÄ… od reszty" # nlme/R/lme.R: 992 # stop("all fitted objects must have the same estimation method") msgid "all fitted objects must have the same estimation method" msgstr "wszystkie dopasowane obiekty muszÄ… mieć tÄ™ samÄ… metodÄ™ oszacowania" # nlme/R/lme.R: 1009 # warning("fitted objects with different fixed effects.", " ", # "REML comparisons are not meaningful.") msgid "fitted objects with different fixed effects." msgstr "dopasowane obiekty z różnymi staÅ‚ymi efektami." # nlme/R/lme.R: 1009 # warning("fitted objects with different fixed effects.", " ", # "REML comparisons are not meaningful.") msgid "REML comparisons are not meaningful." msgstr "Porównania REML nie majÄ… sensu." # nlme/R/lme.R: 1017 # stop("objects must have a \"call\" component or attribute") msgid "objects must have a \"call\" component or attribute" msgstr "obiekty muszÄ… mieć komponent \"call\" lub atrybut" # nlme/R/lme.R: 1027 # stop("all fitted objects must use the same number of observations") msgid "all fitted objects must use the same number of observations" msgstr "wszystkie dopasowane obiekty muszÄ… używać tej samej liczby obserwacji" # nlme/R/lme.R: 1152 # stop("only single level allowed") # nlme/R/lme.R: 1649 # stop("only single level allowed") msgid "only single level allowed" msgstr "jedynie pojedynczy poziom jest dozwolony" # nlme/R/lme.R: 1513 # stop("covariate must have a level attribute when groups are present") msgid "covariate must have a level attribute when groups are present" msgstr "zmienna niezależna musi mieć atrybut poziomu, gdy grupy sÄ… obecne" # nlme/R/lme.R: 1527 # stop("covariate must have a level attribute when 'id' is a formula") msgid "covariate must have a level attribute when 'id' is a formula" msgstr "zmienna niezależna musi mieć atrybut poziomu, gdy 'id' jest formułą" # nlme/R/lme.R: 1550 # stop("covariate must have a level attribute when 'idLabels' is a formula") msgid "covariate must have a level attribute when 'idLabels' is a formula" msgstr "" "zmienna niezależna musi mieć atrybut poziomu, gdy 'idLabels' jest formułą" # nlme/R/lme.R: 1722 # stop("'form' must be a formula when not NULL") msgid "'form' must be a formula when not NULL" msgstr "'form' musi być formułą, gdy nie jest wartoÅ›ciÄ… NULL" # nlme/R/lme.R: 1728 # stop("only single effects allowed in left side of 'form'") msgid "only single effects allowed in left side of 'form'" msgstr "tylko pojedynczy efekt jest dozwolony po lewej stronie 'form'" # nlme/R/lme.R: 1732 # stop(gettextf("%s is not a valid effect name", sQuote(reName)), # domain = NA) msgid "%s is not a valid effect name" msgstr "%s nie jest poprawnÄ… nazwÄ… efektu" # nlme/R/lme.R: 1737 # stop("no effects allowed in right side of formula") msgid "no effects allowed in right side of formula" msgstr "nie sÄ… dozwolone żadne efekty po prawej stronie fomuÅ‚y" # nlme/R/lme.R: 1867 # stop("cannot evaluate groups for desired levels on 'newdata'") # nlme/R/nlme.R: 1112 # stop("cannot evaluate groups for desired levels on 'newdata'") msgid "cannot evaluate groups for desired levels on 'newdata'" msgstr "nie można wyznaczyć grup dla pożądanych poziomów w 'newdata'" # nlme/R/lme.R: 2282 # stop("'Id' must be between 0 and 1") msgid "'Id' must be between 0 and 1" msgstr "'Id' musi być pomiÄ™dzy 0 a 1" # nlme/R/lme.R: 2456 # stop("augmentation of random effects only available for single level") msgid "augmentation of random effects only available for single level" msgstr "" "rozszerzenie efektów losowych dostÄ™pne jedynie dla pojedynczego poziomu" # nlme/R/lme.R: 2819 # stop("no condensed linear model") msgid "no condensed linear model" msgstr "brak skondensowanego modelu liniowego" # nlme/R/lme.R: 2822 # stop("no fitted \"lme\" object") msgid "no fitted \"lme\" object" msgstr "brak dopasowanego obiektu \"lme\"" # nlme/R/newFunc.R: 82 # stop("objects must have coefficients with same row names") msgid "objects must have coefficients with same row names" msgstr "obiekty muszÄ… mieć współczynniki z tymi samymi nazwami wierszy" # nlme/R/newFunc.R: 134 # stop("object must inherit from \"data.frame\"") # nlme/R/newFunc.R: 216 # stop("object must inherit from \"data.frame\"") msgid "object must inherit from \"data.frame\"" msgstr "obiekt musi dziedziczyć z \"data.frame\"" # nlme/R/newFunc.R: 147 # stop("only one level allowed in 'gapply'") msgid "only one level allowed in 'gapply'" msgstr "tylko jeden poziom jest dozwolony w 'gapply'" # nlme/R/newFunc.R: 165 # stop(gettextf("'which' must be between 1 and %d", # ncol(object)), domain = NA) msgid "'which' must be between 1 and %d" msgstr "'which' musi być pomiÄ™dzy 1 a %d" # nlme/R/newFunc.R: 169 # stop("'which' can only be character or integer") msgid "'which' can only be character or integer" msgstr "'which' może być jedynie tekstem lub liczbÄ… caÅ‚kowitÄ…" # nlme/R/newFunc.R: 186 # stop("formula(object) must return a formula") msgid "formula(object) must return a formula" msgstr "'formuÅ‚a(obiekt)' musi zwracać formułę" # nlme/R/newFunc.R: 201 # stop("'form' must be a two-sided formula") # nlme/R/newMethods.R: 123 # stop("'form' must be a two-sided formula") msgid "'form' must be a two-sided formula" msgstr "'form' musi być dwustronnÄ… formułą" # nlme/R/newFunc.R: 228 # stop("only one level allowed in 'gsummary'") msgid "only one level allowed in 'gsummary'" msgstr "tylko jeden poziom jest dostÄ™pny w 'gsummary'" # nlme/R/newFunc.R: 253 # stop("'FUN' can only be a function or a list of functions") msgid "'FUN' can only be a function or a list of functions" msgstr "'FUN' może być jedynie funkcjÄ… lub listÄ… funkcji" # nlme/R/newFunc.R: 282 # stop("cannot omit grouping factor without 'form'") msgid "cannot omit grouping factor without 'form'" msgstr "nie można pominąć czynnika grupujÄ…cego bez 'form'" # nlme/R/newFunc.R: 301 # stop("object must inherit from class \"lmList\"") msgid "object must inherit from class \"lmList\"" msgstr "obiekt musi dziedziczyć z klasy \"lmList\"" # nlme/R/newFunc.R: 313 # stop("no degrees of freedom for estimating std. dev.") msgid "no degrees of freedom for estimating std. dev." msgstr "brak stopni swobody na potrzeby oszacowania odchylenia standardowego" # nlme/R/newMethods.R: 52 # stop( "data argument to \"data.frame\" method for 'getGroups' does not make sense" ) msgid "" "data argument to \"data.frame\" method for 'getGroups' does not make sense" msgstr "" "argument danych przekazywany do metody \"data.frame\" dla 'getGroups' nie ma " "sensu" # nlme/R/newMethods.R: 66 # stop("invalid formula for groups") msgid "invalid formula for groups" msgstr "niepoprawna formuÅ‚a dla grup" # nlme/R/newMethods.R: 71 # stop("'form' must have all components as formulas") msgid "'form' must have all components as formulas" msgstr "'form' musi mieć wszystkie komponenty przedstawione jako formuÅ‚y" # nlme/R/newMethods.R: 74 # stop("'form' can only be a formula, or a list of formulas") msgid "'form' can only be a formula, or a list of formulas" msgstr "'form' może być jedynie formułą lub listÄ… formuÅ‚" # nlme/R/newMethods.R: 92 # stop(gettextf("level of %s does not match formula ", # level[aux], sQuote(deparse(form))), domain = NA) # nlme/R/newMethods.R: 98 # stop(gettextf("level of %s does not match formula ", # level[aux], sQuote(deparse(form))), domain = NA) msgid "level of %s does not match formula" msgstr "poziom %s nie zgadza siÄ™ z formułą" # nlme/R/newMethods.R: 136 # stop("'form' argument must be a formula") msgid "'form' argument must be a formula" msgstr "argument 'form' musi być formułą" # nlme/R/newMethods.R: 211 # stop("at least two coefficients are needed") msgid "at least two coefficients are needed" msgstr "przynajmniej dwa współczynniki sÄ… potrzebne" # nlme/R/newMethods.R: 621 # stop("no model variogram available with 'showModel = TRUE'") msgid "no model variogram available with 'showModel = TRUE'" msgstr "brak dostÄ™pnego modelu wariogramu w 'showModel = TRUE'" # nlme/R/newMethods.R: 731 # stop("only residuals allowed") msgid "only residuals allowed" msgstr "jedynie reszty sÄ… dozwolone" # nlme/R/newMethods.R: 816 # stop("'distance' and 'object' have incompatible lengths") msgid "'distance' and 'object' have incompatible lengths" msgstr "'distance' oraz 'object' majÄ… niespójne dÅ‚ugoÅ›ci" # nlme/R/nlme.R: 63 # warning("'nlme.nlsList' will redefine 'fixed', 'data', and 'start'") msgid "'nlme.nlsList' will redefine 'fixed', 'data', and 'start'" msgstr "'nlme.nlsList' ponownie przedefiniuje 'fixed', 'data' oraz 'start'" # nlme/R/nlme.R: 90 # stop("can only fit \"nlsList\" objects with single grouping variable") msgid "can only fit \"nlsList\" objects with single grouping variable" msgstr "" "można dopasować jedynie obiekty \"nlsList\" z pojedynczÄ… zmiennÄ… grupujÄ…cÄ…" # nlme/R/nlme.R: 122 # warning("initial value for 'reStruct' overwritten in 'nlme.nlsList'") msgid "initial value for 'reStruct' overwritten in 'nlme.nlsList'" msgstr "poczÄ…tkowa wartość dla 'reStruct' nadpisana w 'nlme.nlsList'" # nlme/R/nlme.R: 186 # stop("'model' must be a formula") msgid "'model' must be a formula" msgstr "'model' musi być formułą" # nlme/R/nlme.R: 188 # stop("model formula must be of the form \"resp ~ pred\"") msgid "model formula must be of the form \"resp ~ pred\"" msgstr "" "formuÅ‚a modelu musi mieć formÄ™ \"zmienna zależna ~ zmienna niezależna\"" # nlme/R/nlme.R: 239 # stop("'data' must be given explicitly to use 'nlsList'") msgid "'data' must be given explicitly to use 'nlsList'" msgstr "'data' musi być podane bezpoÅ›rednio aby użyć 'nlsList'" # nlme/R/nlme.R: 275 # stop ("'fixed' must be a formula or list of formulae") msgid "'fixed' must be a formula or list of formulae" msgstr "'fixed' musi być formułą lub listÄ… formuÅ‚" # nlme/R/nlme.R: 277 # stop ("formulae in 'fixed' must be of the form \"parameter ~ expr\"") # nlme/R/nlme.R: 279 # stop ("formulae in 'fixed' must be of the form \"parameter ~ expr\"") msgid "formulae in 'fixed' must be of the form \"parameter ~ expr\"" msgstr "formuÅ‚y w 'fixed' muszÄ… mieć formÄ™ \"parametr ~ wyrażenie\"." # nlme/R/nlme.R: 294 # stop ("'random' must be a formula or list of formulae") msgid "'random' must be a formula or list of formulae" msgstr "'random' musi być formułą lub listÄ… formuÅ‚" # nlme/R/nlme.R: 296 # stop ("formulae in 'random' must be of the form \"parameter ~ expr\"") # nlme/R/nlme.R: 298 # stop ("formulae in 'random' must be of the form \"parameter ~ expr\"") msgid "formulae in 'random' must be of the form \"parameter ~ expr\"" msgstr "formuÅ‚y w 'random' muszÄ… mieć formÄ™ \"parametr ~ wyrażenie\"" # nlme/R/nlme.R: 329 # stop("incompatible formulas for groups in \"random\" and \"correlation\"") # nlme/R/nlme.R: 340 # stop("incompatible formulas for groups in \"random\" and \"correlation\"") msgid "incompatible formulas for groups in \"random\" and \"correlation\"" msgstr "niespójne formuÅ‚y dla grup w \"random\" oraz \"correlation\"" # nlme/R/nlme.R: 332 # warning("cannot use smaller level of grouping for \"correlation\" than for \"random\". Replacing the former with the latter.") msgid "" "cannot use smaller level of grouping for \"correlation\" than for \"random" "\". Replacing the former with the latter." msgstr "" "nie można użyć mniejszego poziomu grupowania dla \"correlation\" niż dla " "\"random\". ZastÄ™powanie pierwszego drugim." # nlme/R/nlme.R: 481 # stop ("'start' must have a component called 'fixed'") msgid "'start' must have a component called 'fixed'" msgstr "'start' musi mieć komponent o nazwie 'fixed'" # nlme/R/nlme.R: 521 # stop ("starting values for the 'fixed' component are not the correct length") msgid "starting values for the 'fixed' component are not the correct length" msgstr "poczÄ…tkowe wartoÅ›ci dla komponentu 'fixed' nie majÄ… poprawnej dÅ‚ugoÅ›ci" # nlme/R/nlme.R: 570 # stop("starting values for random effects should be a list, or a matrix") msgid "starting values for random effects should be a list, or a matrix" msgstr "" "poczÄ…tkowe wartoÅ›ci dla efektów losowych powinny być listÄ… lub macierzÄ…" # nlme/R/nlme.R: 577 # stop(gettextf("list with starting values for random effects must have names or be of length %d", # Q), domain = NA) msgid "" "list with starting values for random effects must have names or be of length " "%d" msgstr "" "lista z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych musi zawierać nazwy " "lub być dÅ‚ugoÅ›ci %d" # nlme/R/nlme.R: 596 # stop("starting values for the random components should be a list of matrices") msgid "starting values for the random components should be a list of matrices" msgstr "" "wartoÅ›ci poczÄ…tkowe dla losowych komponentów powinny być listÄ… macierzy" # nlme/R/nlme.R: 599 # stop(gettextf("number of rows in starting values for random component at level %s should be %d", # namGrp[i], Dims$ngrps[i]), domain = NA) msgid "" "number of rows in starting values for random component at level %s should be " "%d" msgstr "" "liczba wierszy w wartoÅ›ciach poczÄ…tkowych dla losowego komponentu na " "poziomie %s powinna wynosić %d" # nlme/R/nlme.R: 603 # stop(gettextf("number of columns in starting values for random component at level %s should be %d", # namGrp[i], rlength[i]), domain = NA) msgid "" "number of columns in starting values for random component at level %s should " "be %d" msgstr "" "liczba kolumn w wartoÅ›ciach poczÄ…tkowych dla losowego komponentu na poziomie " "%s powinna wynosić %d" # nlme/R/nlme.R: 608 # stop("starting values for random effects must include group levels") msgid "starting values for random effects must include group levels" msgstr "" "wartoÅ›ci poczÄ…tkowe dla losowych efektów muszÄ… zawierać w sobie poziomy grup" # nlme/R/nlme.R: 612 # stop(gettextf("groups levels mismatch in 'random' and starting values for 'random' at level %s", # namGrp[i]), domain = NA) msgid "" "groups levels mismatch in 'random' and starting values for 'random' at level " "%s" msgstr "" "poziomy grup nie zgadzajÄ… siÄ™ w 'random' oraz poczÄ…tkowych wartoÅ›ciach " "'random' na poziomie %s" # nlme/R/nlme.R: 631 # stop (gettextf("names mismatch in 'random' and starting values for 'random' at level %s", # namGrp[i]), domain = NA) msgid "" "names mismatch in 'random' and starting values for 'random' at level %s" msgstr "" "nazwy nie zgadzajÄ… siÄ™ w 'random' oraz poczÄ…tkowych wartoÅ›ciach dla 'random' " "na poziomie %s" # nlme/R/nlme.R: 881 # warning("step halving factor reduced below minimum in PNLS step") # nlme/R/nlme.R: 883 # stop("step halving factor reduced below minimum in PNLS step") msgid "step halving factor reduced below minimum in PNLS step" msgstr "" "czynnik skracajÄ…cy krok zostaÅ‚ zredukowany poniżej minimum w kroku PNLS" # nlme/R/nlsList.R: 31 # stop("second argument must be a groupedData object") msgid "second argument must be a groupedData object" msgstr "drugi argument musi być obiektem \"groupedData\"" # nlme/R/nlsList.R: 35 # stop("cannot use an anonymous function for the model") msgid "cannot use an anonymous function for the model" msgstr "nie można użyć anonimowej funkcji dla modelu" # nlme/R/nlsList.R: 68 # stop("'data' must be a \"groupedData\" object if 'formula' does not include groups") msgid "" "'data' must be a \"groupedData\" object if 'formula' does not include groups" msgstr "" "'data' musi być obiektem \"groupedData\" jeÅ›li 'fomula' nie zawiera grup" # nlme/R/nlsList.R: 159 # stop("missing call attribute in \"nlsList\" object") msgid "missing call attribute in \"nlsList\" object" msgstr "brakuje wywoÅ‚ywanego atrybutu w obiekcie \"nlsList\"" # nlme/R/pdMat.R: 53 # stop("cannot access the matrix of uninitialized objects") # nlme/R/pdMat.R: 227 # stop("cannot access the matrix of uninitialized objects") # nlme/R/pdMat.R: 1707 # stop("cannot access the matrix of uninitialized objects") # nlme/R/pdMat.R: 1946 # stop("cannot access the matrix of uninitialized objects") # nlme/R/reStruct.R: 154 # stop("cannot access the matrix of uninitialized objects") # nlme/R/reStruct.R: 169 # stop("cannot access the matrix of uninitialized objects") msgid "cannot access the matrix of uninitialized objects" msgstr "nie można uzyskać dostÄ™pu do macierzy niezainicjalizowanych obiektów" # nlme/R/pdMat.R: 90 # warning("ignoring argument 'form'") # nlme/R/pdMat.R: 133 # warning("ignoring argument 'form'") msgid "ignoring argument 'form'" msgstr "ignorowanie argumentu 'form'" # nlme/R/pdMat.R: 98 # warning("ignoring argument 'nam'") msgid "ignoring argument 'nam'" msgstr "ignorowanie argumentu 'nam'" # nlme/R/pdMat.R: 104 # stop("'value' must be a square matrix") msgid "'value' must be a square matrix" msgstr "'value' musi być kwadratowÄ… macierzÄ…" # nlme/R/pdMat.R: 109 # stop("dimnames of 'value' must match or be NULL") msgid "dimnames of 'value' must match or be NULL" msgstr "nazwy wymiarów 'value' muszÄ… siÄ™ zgadzać lub być wartoÅ›ciÄ… NULL" # nlme/R/pdMat.R: 114 # stop("names of 'value' are not consistent with 'nam' argument") msgid "names of 'value' are not consistent with 'nam' argument" msgstr "nazwy 'value' nie sÄ… spójne z argumentem 'nam'" # nlme/R/pdMat.R: 137 # stop(gettextf("%s is not a valid object for \"pdMat\"", # sQuote(deparse(object))), domain = NA) msgid "%s is not a valid object for \"pdMat\"" msgstr "%s nie jest poprawnym obiektem dla \"pdMat\"" # nlme/R/pdMat.R: 151 # stop("all elements of 'form' list must be two-sided formulas") msgid "all elements of 'form' list must be two-sided formulas" msgstr "wszystkie elementy listy 'form' muszÄ… być dwustronnymi formuÅ‚ami" # nlme/R/pdMat.R: 171 # stop("'form' can only be a formula or a list of formulae") msgid "'form' can only be a formula or a list of formulae" msgstr "'form' może być jedynie formułą lub listÄ… formuÅ‚" # nlme/R/pdMat.R: 201 # stop("'form' not consistent with 'nam'") msgid "'form' not consistent with 'nam'" msgstr "'form' nie jest spójne z 'nam'" # nlme/R/pdMat.R: 209 # stop("length of 'nam' not consistent with dimensions of initial value") msgid "length of 'nam' not consistent with dimensions of initial value" msgstr "dÅ‚ugość 'nam' nie jest spójna z wymiarami poczÄ…tkowej wartoÅ›ci" # nlme/R/pdMat.R: 230 # stop("no default method for extracting the square root of a \"pdMat\" object") msgid "no default method for extracting the square root of a \"pdMat\" object" msgstr "brak domyÅ›lnej metody dla uzyskania pierwiastka z obiektu \"pdMat\"" # nlme/R/pdMat.R: 247 # stop("do not know how to obtain constrained coefficients") msgid "do not know how to obtain constrained coefficients" msgstr "nie wiadomo jak uzyskać ograniczone współczynniki" # nlme/R/pdMat.R: 275 # stop("cannot access the number of columns of uninitialized objects without names") msgid "" "cannot access the number of columns of uninitialized objects without names" msgstr "" "nie można uzyskać liczby kolumn niezainicjalizowanych obiektów bez nazw" # nlme/R/pdMat.R: 291 # stop("cannot extract the log of the determinant from an uninitialized object") # nlme/R/pdMat.R: 681 # stop("cannot extract the log of the determinant from an uninitialized object") # nlme/R/pdMat.R: 1215 # stop("cannot extract the log of the determinant from an uninitialized object") # nlme/R/pdMat.R: 1366 # stop("cannot extract the log of the determinant from an uninitialized object") msgid "cannot extract the log of the determinant from an uninitialized object" msgstr "" "nie można wyodrÄ™bnić logarytmu macierzy z niezainicjalizowanego obiektu" # nlme/R/pdMat.R: 302 # stop("cannot change dimensions on an initialized \"pdMat\" object") msgid "cannot change dimensions on an initialized \"pdMat\" object" msgstr "nie można zmienić wymiarów zainicjalizowanego obiektu \"pdMat\"" # nlme/R/pdMat.R: 324 # stop(gettextf("Length of names should be %d", aux), domain = NA) # nlme/R/pdMat.R: 331 # stop(gettextf("Length of names should be %d", length(dn)), domain = NA) msgid "Length of names should be %d" msgstr "DÅ‚ugość nazw powinna wynosić %d" # nlme/R/pdMat.R: 369 # stop("names being assigned do not correspond to a permutation of previous names") msgid "" "names being assigned do not correspond to a permutation of previous names" msgstr "przypisane nazwy nie odpowiadajÄ… permutacji poprzednich nazw" # nlme/R/pdMat.R: 420 # stop("x-y data to splom got botched somehow") msgid "x-y data to splom got botched somehow" msgstr "dane x-y przekazywane do 'splom' zostaÅ‚y jakoÅ› uszkodzone" # nlme/R/pdMat.R: 528 # stop("cannot get the inverse of an uninitialized object") # nlme/R/pdMat.R: 763 # stop("cannot get the inverse of an uninitialized object") # nlme/R/pdMat.R: 847 # stop("cannot get the inverse of an uninitialized object") # nlme/R/pdMat.R: 1225 # stop("cannot get the inverse of an uninitialized object") # nlme/R/pdMat.R: 2092 # stop("cannot get the inverse of an uninitialized object") msgid "cannot get the inverse of an uninitialized object" msgstr "nie można uzyskać odwrotnoÅ›ci niezainicjalizowanego obiektu" # nlme/R/pdMat.R: 614 # stop(gettextf("an object of length %d does not match the required parameter size", # length(val)), domain = NA) # nlme/R/pdMat.R: 1146 # stop(gettextf("an object of length %d does not match the required parameter size", # length(val)), domain = NA) # nlme/R/pdMat.R: 1308 # stop(gettextf("an object of length %d does not match the required parameter size", # length(val)), domain = NA) # nlme/R/pdMat.R: 1449 # stop(gettextf("an object of length %d does not match the required parameter size", # length(val)), domain = NA) # nlme/R/pdMat.R: 1600 # stop(gettextf("an object of length %d does not match the required parameter size", # length(val)), domain = NA) msgid "an object of length %d does not match the required parameter size" msgstr "obiekt o dÅ‚ugoÅ›ci %d nie zgadza siÄ™ z wymaganym rozmiarem parametru" # nlme/R/pdMat.R: 635 # stop("cannot extract matrix from an uninitialized object") # nlme/R/pdMat.R: 1167 # stop("cannot extract matrix from an uninitialized object") msgid "cannot extract matrix from an uninitialized object" msgstr "nie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektu" # nlme/R/pdMat.R: 690 # stop("cannot extract the inverse from an uninitialized object") # nlme/R/pdMat.R: 995 # stop("cannot extract the inverse from an uninitialized object") # nlme/R/pdMat.R: 1375 # stop("cannot extract the inverse from an uninitialized object") # nlme/R/pdMat.R: 1517 # stop("cannot extract the inverse from an uninitialized object") msgid "cannot extract the inverse from an uninitialized object" msgstr "nie można wyodrÄ™bnić odwrotnoÅ›ci z niezainicjalizowanego obiektu" # nlme/R/pdMat.R: 740 # stop(gettextf("an object of length %d does not match a Cholesky factor", # length(val)), domain = NA) msgid "an object of length %d does not match a Cholesky factor" msgstr "obiekt o dÅ‚ugoÅ›ci %d nie zgadza siÄ™ z czynnikiem Cholesky'ego" # nlme/R/pdMat.R: 1325 # stop("cannot extract the matrix from an uninitialized object") msgid "cannot extract the matrix from an uninitialized object" msgstr "nie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektu" # nlme/R/pdMat.R: 1409 # stop("cannot extract the matrix from an uninitialized \"pdIdent\" object") # nlme/R/pdMat.R: 1471 # stop("cannot extract the matrix from an uninitialized \"pdIdent\" object") msgid "cannot extract the matrix from an uninitialized \"pdIdent\" object" msgstr "" "nie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektu \"pdIdent\"" # nlme/R/pdMat.R: 1412 # stop("cannot extract the matrix with uninitialized dimensions") # nlme/R/pdMat.R: 1474 # stop("cannot extract the matrix with uninitialized dimensions") # nlme/R/pdMat.R: 1551 # stop("cannot extract the matrix with uninitialized dimensions") # nlme/R/pdMat.R: 1628 # stop("cannot extract the matrix with uninitialized dimensions") msgid "cannot extract the matrix with uninitialized dimensions" msgstr "nie można wyodrÄ™bnić macierzy z niezainicjalizowanymi wymiarami" # nlme/R/pdMat.R: 1453 # stop("must give names when initializing \"pdIdent\" from parameter without a formula") msgid "" "must give names when initializing \"pdIdent\" from parameter without a " "formula" msgstr "" "potrzeba podać nazwy gdy wystÄ™puje inicjalizowanie \"pdIdent\" z parametru " "bez formuÅ‚y" # nlme/R/pdMat.R: 1503 # stop("cannot extract the dimensions") # nlme/R/pdMat.R: 1671 # stop("cannot extract the dimensions") msgid "cannot extract the dimensions" msgstr "nie można wyodrÄ™bnić wymiarów" # nlme/R/pdMat.R: 1548 # stop("cannot extract the matrix from an uninitialized \"pdCompSymm\" object") # nlme/R/pdMat.R: 1625 # stop("cannot extract the matrix from an uninitialized \"pdCompSymm\" object") msgid "cannot extract the matrix from an uninitialized \"pdCompSymm\" object" msgstr "" "nie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektu \"pdCompSymm\"" # nlme/R/pdMat.R: 1591 # warning("initializing \"pdCompSymm\" object is not positive definite") msgid "initializing \"pdCompSymm\" object is not positive definite" msgstr "inicjalizowany obiektu \"pdCompSymm\" nie jest dodatnio okreÅ›lony" # nlme/R/pdMat.R: 1604 # stop("must give names when initializing \"pdCompSymm\" from parameter without a formula") msgid "" "must give names when initializing \"pdCompSymm\" from parameter without a " "formula" msgstr "" "potrzeba dostarczyć nazw podczas inicjalizowania \"pdCompSymm\" z parametru " "bez formuÅ‚y" # nlme/R/pdMat.R: 1655 # stop("cannot obtain constrained coefficients with uninitialized dimensions") msgid "cannot obtain constrained coefficients with uninitialized dimensions" msgstr "" "nie można uzyskać ograniczonych współczynników z niezainicjalizowanych " "wymiarów" # nlme/R/pdMat.R: 1710 # stop("cannot access the matrix of object without names") # nlme/R/pdMat.R: 1949 # stop("cannot access the matrix of object without names") msgid "cannot access the matrix of object without names" msgstr "nie można uzyskać dostÄ™pu do macierzy obiektu bez nazw" # nlme/R/pdMat.R: 1748 # stop("'form' must be a list") msgid "'form' must be a list" msgstr "'form' musi być listÄ…" # nlme/R/pdMat.R: 1757 # stop("'nam' must be a list") msgid "'nam' must be a list" msgstr "'nam' musi być listÄ…" # nlme/R/pdMat.R: 1761 # stop("'form' and 'nam' have incompatible lengths") msgid "'form' and 'nam' have incompatible lengths" msgstr "'form' oraz 'nam' majÄ… niezgodne dÅ‚ugoÅ›ci" # nlme/R/pdMat.R: 1769 # stop("'pdClass' must be a character vector") msgid "'pdClass' must be a character vector" msgstr "'pdClass' musi być wektorem tekstowym" # nlme/R/pdMat.R: 1774 # stop("'form' and 'pdClass' have incompatible lengths") msgid "'form' and 'pdClass' have incompatible lengths" msgstr "'form' oraz 'pdClass' majÄ… niezgodne dÅ‚ugoÅ›ci" # nlme/R/pdMat.R: 1777 # stop("'nam' and 'pdClass' have incompatible lengths") msgid "'nam' and 'pdClass' have incompatible lengths" msgstr "'nam' oraz 'pdClass' majÄ… niezgodne dÅ‚ugoÅ›ci" # nlme/R/pdMat.R: 1789 # stop("LNone of the arguments specify more than one block") msgid "LNone of the arguments specify more than one block" msgstr "żaden z argumentów nie okreÅ›la wiÄ™cej niż jednego bloku" # nlme/R/pdMat.R: 1795 # stop("'object' must be a list when not missing, not a matrix, and not numeric") msgid "'object' must be a list when not missing, not a matrix, and not numeric" msgstr "" "'object' musi być listÄ…, gdy nie jest brakujÄ…cy, nie jest macierzÄ…, ani też " "liczbÄ…" # nlme/R/pdMat.R: 1799 # stop("arguments imply different number of blocks") msgid "arguments imply different number of blocks" msgstr "argumenty sugerujÄ… różnÄ… liczbÄ™ bloków" # nlme/R/pdMat.R: 1871 # stop("all elements in the argument must generate \"pdMat\" objects") msgid "all elements in the argument must generate \"pdMat\" objects" msgstr "wszystkie elementy w argumencie muszÄ… tworzyć obiekty klasy \"pdMat\"" # nlme/R/pdMat.R: 1894 # stop("cannot have duplicated column names in a \"pdMat\" object") # nlme/R/pdMat.R: 1913 # stop("cannot have duplicated column names in a \"pdMat\" object") msgid "cannot have duplicated column names in a \"pdMat\" object" msgstr "nie można mieć powtórzonych nazw kolumn w obiekcie klasy \"pdMat\"" # nlme/R/pdMat.R: 1900 # stop("must have formula when no names are given") msgid "must have formula when no names are given" msgstr "potrzeba mieć formułę, gdy nie podano nazw" # nlme/R/pdMat.R: 1903 # stop("must give names when initializing from matrix or parameter") msgid "must give names when initializing from matrix or parameter" msgstr "" "potrzeba podać nazwy gdy nastÄ™puje inicjowanie z macierzy lub parametru" # nlme/R/pdMat.R: 1908 # stop("all elements must have names when any has names") msgid "all elements must have names when any has names" msgstr "wszystkie elementy muszÄ… mieć nazwy, gdy którykolwiek posiada" # nlme/R/pdMat.R: 1925 # stop("all elements must have a non-zero size") msgid "all elements must have a non-zero size" msgstr "wszystkie elementy muszÄ… mieć niezerowy rozmiar" # nlme/R/pdMat.R: 1978 # stop("cannot change the parameter when length of parameters is undefined") msgid "cannot change the parameter when length of parameters is undefined" msgstr "nie można zmienić parametru gdy dÅ‚ugość parametru jest nieokreÅ›lona" # nlme/R/pdMat.R: 1981 # stop("cannot change parameter length of initialized \"pdMat\" object") msgid "cannot change parameter length of initialized \"pdMat\" object" msgstr "" "nie można zmienić dÅ‚ugoÅ›ci parametru zainicjowanego obiektu klasy \"pdMat\"" # nlme/R/pdMat.R: 1998 # stop("all elements must have formulas when any has a formula") msgid "all elements must have formulas when any has a formula" msgstr "wszystkie elementy muszÄ… mieć formułę, gdy którykolwiek posiada" # nlme/R/pdMat.R: 2016 # stop("all elements of formula must be list of two-sided formulae or two-sided formulae") msgid "" "all elements of formula must be list of two-sided formulae or two-sided " "formulae" msgstr "" "wszystkie elementy formuÅ‚y muszÄ… być listÄ… dwustronnych formuÅ‚ lub " "dwustronnymi formuÅ‚ami" # nlme/R/pdMat.R: 2048 # stop("cannot change the number of columns on an initialized object") msgid "cannot change the number of columns on an initialized object" msgstr "nie można zmienić liczby kolumn zainicjowanego obiektu" # nlme/R/pdMat.R: 2055 # stop("names of object and value must match") msgid "names of object and value must match" msgstr "nazwy obiektu oraz wartoÅ›ci muszÄ… siÄ™ zgadzać" # nlme/R/reStruct.R: 66 # stop("\"pdMat\" element must have a formula") msgid "\"pdMat\" element must have a formula" msgstr "element \"pdMat\" musi posiadać formułę" # nlme/R/reStruct.R: 71 # stop("'object' must be a list or a formula") msgid "'object' must be a list or a formula" msgstr "'object' musi być listÄ… lub formułą" # nlme/R/reStruct.R: 84 # stop("\"pdMat\" elements must have a formula") msgid "\"pdMat\" elements must have a formula" msgstr "elementy \"pdMat\" muszÄ… posiadać formułę" # nlme/R/reStruct.R: 101 # stop("elements in 'object' must be formulas or \"pdMat\" objects") msgid "elements in 'object' must be formulas or \"pdMat\" objects" msgstr "elementy w 'object' muszÄ… być formuÅ‚ami lub obiektami klasy \"pdMat\"" # nlme/R/reStruct.R: 189 # stop("cannot change the parameter when ength of parameters is undefined") msgid "cannot change the parameter when ength of parameters is undefined" msgstr "nie można zmienić parametru gdy dÅ‚ugość parametru jest nieokreÅ›lona" # nlme/R/reStruct.R: 192 # stop("cannot change parameter length of initialized objects") msgid "cannot change parameter length of initialized objects" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru zainicjowanych obiektów" # nlme/R/reStruct.R: 212 # stop("cannot extract groups formula without a formula") msgid "cannot extract groups formula without a formula" msgstr "nie można wyodrÄ™bnić formuÅ‚ grup bez formuÅ‚y" # nlme/R/reStruct.R: 253 # stop("all elements of a \"reStruct\" object must have a non-zero size") msgid "all elements of a \"reStruct\" object must have a non-zero size" msgstr "wszystkie elementy obiektu \"reStruct\" muszÄ… mieć niezerowy rozmiar" # nlme/R/reStruct.R: 303 # stop("cannot change the length of 'object'") msgid "cannot change the length of 'object'" msgstr "nie można zmienić dÅ‚ugoÅ›ci 'object'" # nlme/R/reStruct.R: 316 # stop("cannot extract model matrix without formula") msgid "cannot extract model matrix without formula" msgstr "nie można wyodrÄ™bnić macierzy modelu bez formuÅ‚y" # nlme/R/reStruct.R: 374 # stop("incompatible lengths for object names") msgid "incompatible lengths for object names" msgstr "niezgodne dÅ‚ugoÅ›ci dla nazw obiektu" # nlme/R/simulate.R: 51 # stop("'data' must inherit from \"groupedData\" class if 'random' does not define groups") msgid "" "'data' must inherit from \"groupedData\" class if 'random' does not define " "groups" msgstr "" "'data' musi dziedziczyć z klasy \"groupedData\" jeÅ›li 'random' nie okreÅ›la " "grup" # nlme/R/simulate.R: 162 # stop("models with \"corStruct\" and/or \"varFunc\" objects not allowed") # nlme/R/simulate.R: 228 # stop("models with \"corStruct\" and/or \"varFunc\" objects not allowed") msgid "models with \"corStruct\" and/or \"varFunc\" objects not allowed" msgstr "modele z obiektami \"corStruct\" oraz/lub \"varFunc\" nie sÄ… dozwolone" # nlme/R/simulate.R: 358 # stop("plot method only implemented for comparing models") # nlme/R/simulate.R: 364 # stop("plot method only implemented for comparing models") msgid "plot method only implemented for comparing models" msgstr "" "metoda rysujÄ…ca wykres zostaÅ‚a zaimplementowana jedynie do porównywania " "modeli" # nlme/R/simulate.R: 369 # stop("no degrees of freedom specified") msgid "no degrees of freedom specified" msgstr "nie okreÅ›lono stopni swobody" # nlme/R/simulate.R: 377 # stop("degrees of freedom and weights must have the same length") msgid "degrees of freedom and weights must have the same length" msgstr "stopnie swobody oraz wagi muszÄ… mieć tÄ™ samÄ… dÅ‚ugość" # nlme/R/simulate.R: 385 # stop("negative degrees of freedom not allowed") msgid "negative degrees of freedom not allowed" msgstr "ujemne stopnie swobody nie sÄ… dozwolone" # nlme/R/simulate.R: 388 # stop("more than one degree of freedom is needed when one them is zero.") msgid "more than one degree of freedom is needed when one them is zero." msgstr "" "wiÄ™cej niż jeden stopieÅ„ swobody jest potrzebny jeÅ›li jeden czÅ‚on wynosi " "zero." # nlme/R/varFunc.R: 46 # stop("can only construct \"varFunc\" object from another \"varFunc\" object, a formula, or a character string") msgid "" "can only construct \"varFunc\" object from another \"varFunc\" object, a " "formula, or a character string" msgstr "" "można stworzyć jedynie obiekt \"varFunc\" z innego obiektu \"varFunc\", " "formuÅ‚y lub Å‚aÅ„cucha tekstowego" # nlme/R/varFunc.R: 64 # stop("cannot extract parameters of uninitialized object") msgid "cannot extract parameters of uninitialized object" msgstr "nie można wyodrÄ™bnić parametrów niezainicjowanego obiektu" # nlme/R/varFunc.R: 80 # stop(gettextf("do not know how to get coefficients for %s object", # dQuote(class(object)[1])), domain = NA) msgid "do not know how to get coefficients for %s object" msgstr "nie wiadomo jak uzyskać współczynniki dla obiektu %s" # nlme/R/varFunc.R: 91 # stop("cannot change the length of covariate in \"varFunc\" object") msgid "cannot change the length of covariate in \"varFunc\" object" msgstr "nie można zmienić dÅ‚ugoÅ›ci zmiennej niezależnej w obiekcie \"varFunc\"" # nlme/R/varFunc.R: 202 # stop("'value' must be a one sided formula") msgid "'value' must be a one sided formula" msgstr "'value' musi być jednostronnÄ… formułą" # nlme/R/varFunc.R: 206 # stop("'form' must have a covariate") # nlme/R/varFunc.R: 468 # stop("'form' must have a covariate") # nlme/R/varFunc.R: 682 # stop("'form' must have a covariate") # nlme/R/varFunc.R: 938 # stop("'form' must have a covariate") msgid "'form' must have a covariate" msgstr "'form' musi posiadać zmiennÄ… niezależnÄ…" # nlme/R/varFunc.R: 210 # warning("ignoring 'group' in \"varFixed\" formula") msgid "ignoring 'group' in \"varFixed\" formula" msgstr "Ignorowanie 'group' w formule \"varFixed\"" # nlme/R/varFunc.R: 232 # stop("all variables used in 'formula' must be in 'data'") msgid "all variables used in 'formula' must be in 'data'" msgstr "wszystkie zmienne użyte w 'formula' muszÄ… być w 'data'" # nlme/R/varFunc.R: 270 # stop("initial values must have group names in 'varIdent'") msgid "initial values must have group names in 'varIdent'" msgstr "poczÄ…tkowe wartoÅ›ci muszÄ… posiadać nazwy grupy w 'varIdent'" # nlme/R/varFunc.R: 274 # stop("initial values for 'varIdent' must be > 0") msgid "initial values for 'varIdent' must be > 0" msgstr "poczÄ…tkowe wartoÅ›ci dla 'varIdent' muszÄ… być > 0" # nlme/R/varFunc.R: 282 # stop("fixed parameters must have names in 'varIdent'") msgid "fixed parameters must have names in 'varIdent'" msgstr "ustalone parametry muszÄ… posiadać nazwy w 'varIdent'" # nlme/R/varFunc.R: 339 # stop("cannot change the length of the \"varIdent\" parameter after initialization") msgid "" "cannot change the length of the \"varIdent\" parameter after initialization" msgstr "" "nie można zmienić dÅ‚ugoÅ›ci parametru \"varIdent\" po jego zainicjowaniu" # nlme/R/varFunc.R: 368 # stop("fixed parameter names in 'varIdent' must be a subset of group names") msgid "fixed parameter names in 'varIdent' must be a subset of group names" msgstr "ustalone nazwy parametrów w 'varIdent' muszÄ… być podzbiorem nazw grup" # nlme/R/varFunc.R: 376 # stop("cannot fix variances in all groups") msgid "cannot fix variances in all groups" msgstr "nie można ustalić wariancji we wszystkich grupach" # nlme/R/varFunc.R: 391 # stop(gettextf("initial value for \"varIdent\" should be of length %d", # len), domain = NA) msgid "initial value for \"varIdent\" should be of length %d" msgstr "poczÄ…tkowa wartość dla \"varIdent\" powinna być dÅ‚ugoÅ›ci %d" # nlme/R/varFunc.R: 397 # stop("names of starting value for \"varIdent\" object must contain all but one of the stratum levels") msgid "" "names of starting value for \"varIdent\" object must contain all but one of " "the stratum levels" msgstr "" "nazwy wartoÅ›ci poczÄ…tkowych dla obiektu \"varIdent\" muszÄ… zawierać " "wszystkie oprócz jednego z poziomów warstwy" # nlme/R/varFunc.R: 402 # stop("nonexistent group names for initial values in 'varIdent'") msgid "nonexistent group names for initial values in 'varIdent'" msgstr "nieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›ci w 'varIdent'" # nlme/R/varFunc.R: 472 # stop("initial values must have group names in 'varPower'") msgid "initial values must have group names in 'varPower'" msgstr "poczÄ…tkowe wartoÅ›ci muszÄ… posiadać nazwy grup w 'varPower'" # nlme/R/varFunc.R: 476 # stop("fixed parameters must have group names in 'varPower'") msgid "fixed parameters must have group names in 'varPower'" msgstr "ustalone parametry muszÄ… posiadać nazwy grup w 'varPower'" # nlme/R/varFunc.R: 523 # stop("cannot change the length of the \"varStruct\" parameter after initialization") msgid "" "cannot change the length of the \"varStruct\" parameter after initialization" msgstr "" "nie można zmienić dÅ‚ugoÅ›ci parametru \"varStruct\" po jego zainicjowaniu" # nlme/R/varFunc.R: 535 # stop("cannot change coefficients before initialization or when all parameters are fixed") # nlme/R/varFunc.R: 746 # stop("cannot change coefficients before initialization or when all parameters are fixed") # nlme/R/varFunc.R: 1024 # stop("cannot change coefficients before initialization or when all parameters are fixed") msgid "" "cannot change coefficients before initialization or when all parameters are " "fixed" msgstr "" "nie można zmienić współczynników przed zainicjowaniem lub gdy wszystkie " "parametry sÄ… ustalone" # nlme/R/varFunc.R: 561 # stop("fixed parameters must have group names") # nlme/R/varFunc.R: 772 # stop("fixed parameters must have group names") # nlme/R/varFunc.R: 1054 # stop("fixed parameters must have group names") msgid "fixed parameters must have group names" msgstr "ustalone parametry muszÄ… posiadać nazwy grup" # nlme/R/varFunc.R: 564 # stop("mismatch between group names and fixed values names") # nlme/R/varFunc.R: 775 # stop("mismatch between group names and fixed values names") # nlme/R/varFunc.R: 1057 # stop("mismatch between group names and fixed values names") msgid "mismatch between group names and fixed values names" msgstr "niezgodność pomiÄ™dzy nazwami grup oraz nazwami ustalonych wartoÅ›ci" # nlme/R/varFunc.R: 587 # stop(gettextf("initial value for \"varPower\" should be of length %d", # nStratVar), domain = NA) msgid "initial value for \"varPower\" should be of length %d" msgstr "poczÄ…tkowa wartość dla \"varPower\" powinna być dÅ‚ugoÅ›ci %d" # nlme/R/varFunc.R: 593 # stop("nonexistent group names for initial values in \"varPower\"") msgid "nonexistent group names for initial values in \"varPower\"" msgstr "nieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›ci w \"varPower\"" # nlme/R/varFunc.R: 630 # stop("initial value for \"varPower\" should be of length 1") msgid "initial value for \"varPower\" should be of length 1" msgstr "poczÄ…tkowa wartość dla \"varPower\" powinna być dÅ‚ugoÅ›ci 1" # nlme/R/varFunc.R: 686 # stop("initial values must have group names in 'varExp'") msgid "initial values must have group names in 'varExp'" msgstr "poczÄ…tkowe wartoÅ›ci muszÄ… posiadać nazwy grupy w 'varExp'" # nlme/R/varFunc.R: 690 # stop("fixed parameters must have group names in 'varExp'") msgid "fixed parameters must have group names in 'varExp'" msgstr "ustalone parametry muszÄ… posiadać nazwy grup w 'varExp'" # nlme/R/varFunc.R: 736 # stop("cannot change the length of the \"varExp\" parameter after initialization") msgid "" "cannot change the length of the \"varExp\" parameter after initialization" msgstr "nie można zmienić dÅ‚ugoÅ›ci parametru \"varExp\" po jego zainicjowaniu" # nlme/R/varFunc.R: 798 # stop(gettextf("initial value for \"varExp\" should be of length %d", # nStratVar), domain = NA) msgid "initial value for \"varExp\" should be of length %d" msgstr "poczÄ…tkowa wartość dla \"varExp\" powinna być dÅ‚ugoÅ›ci %d" # nlme/R/varFunc.R: 804 # stop("nonexistent group names for initial values in \"varExp\"") msgid "nonexistent group names for initial values in \"varExp\"" msgstr "nieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›ci w \"varExp\"" # nlme/R/varFunc.R: 841 # stop("initial value for \"varExp\" should be of length 1") msgid "initial value for \"varExp\" should be of length 1" msgstr "poczÄ…tkowa wartość dla \"varExp\" powinna być dÅ‚ugoÅ›ci 1" # nlme/R/varFunc.R: 896 # stop(gettextf("%s can have at most two components", nam), domain = NA) msgid "%s can have at most two components" msgstr "%s może posiadać najwyżej dwa komponenty" # nlme/R/varFunc.R: 902 # stop(gettextf("%s can only have names \"const\" and \"power\"", nam), # domain = NA) msgid "%s can only have names \"const\" and \"power\"" msgstr "%s może posiadać jedynie nazwy \"const\" oraz \"power\"" # nlme/R/varFunc.R: 912 # stop(gettextf("%s can only be a list or numeric", nam), domain = NA) msgid "%s can only be a list or numeric" msgstr "%s może być jedynie listÄ… lub liczbÄ…" # nlme/R/varFunc.R: 922 # stop(gettextf("%s must have group names in 'varConstPower'", nam), # domain = NA) msgid "%s must have group names in 'varConstPower'" msgstr "%s musi posiadać nazwy grup w 'varConstPower'" # nlme/R/varFunc.R: 929 # stop("constant in \"varConstPower\" structure must be > 0") msgid "constant in \"varConstPower\" structure must be > 0" msgstr "staÅ‚a w strukturze \"varConstPower\" musi być > 0" # nlme/R/varFunc.R: 1079 # stop(gettext("initial value should be of length %d", # nStratVar), domain = NA) # nlme/R/varFunc.R: 1128 # stop(gettext("initial value should be of length %d", aux), domain = NA) msgid "initial value should be of length %d" msgstr "poczÄ…tkowa wartość powinna być dÅ‚ugoÅ›ci %d" # nlme/R/varFunc.R: 1085 # stop("nonexistent group names for initial values") msgid "nonexistent group names for initial values" msgstr "nieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›ci" # nlme/R/varFunc.R: 1169 # stop("all arguments to 'varComb' must be of class \"varFunc\".") msgid "all arguments to 'varComb' must be of class \"varFunc\"." msgstr "" "wszystkie argumenty przekazywane do 'varComb' muszÄ… być klasy \"varFunc\"" # nlme/R/varFunc.R: 1201 # stop("cannot change parameter length of initialized \"varComb\" object") msgid "cannot change parameter length of initialized \"varComb\" object" msgstr "" "nie można zmienić dÅ‚ugoÅ›ci parametru zainicjalizowanego obiektu \"varComb\"" # nlme/R/gls.R: 462 # stop(sprintf(ngettext(sum(noMatch), # "term %s not matched", # "terms %s not matched"), # paste(Terms[noMatch], collapse = ", ")), # domain = NA) # nlme/R/lme.R: 886 # stop(sprintf(ngettext(sum(noMatch), # "term %s not matched", # "terms %s not matched"), # paste(Terms[noMatch], collapse = ", ")), # domain = NA) msgid "term %s not matched" msgid_plural "terms %s not matched" msgstr[0] "czÅ‚on %s nie zostaÅ‚ dopasowany" msgstr[1] "czÅ‚ony %s nie zostaÅ‚y dopasowane" msgstr[2] "czÅ‚ony %s nie zostaÅ‚y dopasowane" # nlme/R/gls.R: 482 # stop(sprintf(ngettext(ncol(L), # "'L' must have at most %d column", # "'L' must have at most %d columns"), # ncol(L)), domain = NA) # nlme/R/lme.R: 909 # stop(sprintf(ngettext(nX, # "'L' must have at most %d column", # "'L' must have at most %d columns"), # nX), domain = NA) msgid "'L' must have at most %d column" msgid_plural "'L' must have at most %d columns" msgstr[0] "'L' musi mieć co najwyzej %d kolumnÄ™" msgstr[1] "'L' musi mieć co najwyzej %d kolumny" msgstr[2] "'L' musi mieć co najwyzej %d kolumn" # nlme/R/gls.R: 494 # stop(sprintf(ngettext(sum(noMatch), # "effect %s not matched", # "effects %s not matched"), # paste(dmsL2[noMatch],collapse=", ")), # domain = NA) # nlme/R/lme.R: 921 # stop(sprintf(ngettext(sum(noMatch), # "effect %s not matched", # "effects %s not matched"), # paste(dmsL2[noMatch],collapse=", ")), # domain = NA) msgid "effect %s not matched" msgid_plural "effects %s not matched" msgstr[0] "efekt %s nie zostaÅ‚ dopasowany" msgstr[1] "efekty %s nie zostaÅ‚y dopasowane" msgstr[2] "efekty %s nie zostaÅ‚y dopasowane" # nlme/R/gls.R: 890 # stop(sprintf(ngettext(sum(wch), # "level %s not allowed for %s", # "levels %s not allowed for %s"), # paste(levs[wch], collapse = ",")), # domain = NA) # nlme/R/gnls.R: 696 # stop(sprintf(ngettext(sum(wch), # "level %s not allowed for %s", # "levels %s not allowed for %s"), # paste(levs[wch], collapse = ",")), domain = NA) # nlme/R/lme.R: 1929 # stop(sprintf(ngettext(sum(wch), # "level %s not allowed for %s", # "levels %s not allowed for %s"), # paste(levs[wch], collapse = ",")), # domain = NA) # nlme/R/nlme.R: 1181 # stop(sprintf(ngettext(sum(wch), # "level %s not allowed for %s", # "levels %s not allowed for %s"), # paste(levs[wch], collapse = ",")), # domain = NA) msgid "level %s not allowed for %s" msgid_plural "levels %s not allowed for %s" msgstr[0] "poziom %s nie jest dozwolony dla %s" msgstr[1] "poziomy %s nie sÄ… dozwolone dla %s" msgstr[2] "poziomy %s nie sÄ… dozwolone dla %s" # nlme/R/lme.R: 1439 # stop(sprintf(ngettext(sum(naV), # "%s not found in data", # "%s not found in data"), # allV[naV]), domain = NA) # nlme/R/lme.R: 2238 # stop(sprintf(ngettext(sum(naV), # "%s not found in data", # "%s not found in data"), # allV[naV]), domain = NA) # nlme/R/lmList.R: 394 # stop(sprintf(ngettext(sum(naV), # "%s not found in data", # "%s not found in data"), # allV[naV]), domain = NA) # nlme/R/lmList.R: 654 # stop(sprintf(ngettext(sum(naV), # "%s not found in data", # "%s not found in data"), # allV[naV]), domain = NA) # nlme/R/lmList.R: 1040 # stop(sprintf(ngettext(sum(naV), # "%s not found in data", # "%s not found in data"), # allV[naV]), domain = NA) # nlme/R/newMethods.R: 290 # stop(sprintf(ngettext(sum(naV), # "%s not found in data", # "%s not found in data"), # allV[naV]), domain = NA) # nlme/R/newMethods.R: 710 # stop(sprintf(ngettext(sum(naV), # "%s not found in data", # "%s not found in data"), # allV[naV]), domain = NA) msgid "%s not found in data" msgid_plural "%s not found in data" msgstr[0] "%s nie zostaÅ‚ znaleziony w danych" msgstr[1] "%s nie zostaÅ‚y znalezione w danych" msgstr[2] "%s nie zostaÅ‚y znalezione w danych" # nlme/R/lme.R: 1215 # stop(sprintf(ngettext(sum(aux), # "nonexistent level %s", # "nonexistent levels %s"), # level[aux]), domain = NA) # nlme/R/lme.R: 2519 # stop(sprintf(ngettext(sum(aux), # "nonexistent level %s", # "nonexistent levels %s"), # level[aux]), domain = NA) msgid "nonexistent level %s" msgid_plural "nonexistent levels %s" msgstr[0] "nieistniejÄ…cy poziom %s" msgstr[1] "nieistniejÄ…ce poziomy %s" msgstr[2] "nieistniejÄ…ce poziomy %s" # nlme/R/lme.R: 1682 # stop(sprintf(ngettext(sum(whichNA), # "%s not available for plotting", # "%s not available for plotting"), # onames[whichNA], collapse = ", "), domain = NA) # nlme/R/lme.R: 1740 # stop(sprintf(ngettext(sum(whichNA), # "%s not available for plotting", # "%s not available for plotting"), # onames[whichNA], collapse = ", "), domain = NA) msgid "%s not available for plotting" msgid_plural "%s not available for plotting" msgstr[0] "%s nie jest dostÄ™pne do rysowania" msgstr[1] "%s nie sÄ… dostÄ™pne do rysowania" msgstr[2] "%s nie sÄ… dostÄ™pne do rysowania" # nlme/R/newFunc.R: 156 # stop(sprintf(ngettext(sum(wchNot), # "%s not matched", # "%s not matched"), # paste(which[wchNot], collapse = ",")), # domain = NA) msgid "%s not matched" msgid_plural "%s not matched" msgstr[0] "%s nie zostaÅ‚ dopasowany" msgstr[1] "%s nie zostaÅ‚y dopasowane" msgstr[2] "%s nie zostaÅ‚y dopasowane" # nlme/R/nlme.R: 583 # stop(sprintf(ngettext(sum(noMatch), # "group name not matched in starting values for random effects: %s", # "group names not matched in starting values for random effects: %s"), # paste(namSran[noMatch], collapse=", ")), domain = NA) msgid "group name not matched in starting values for random effects: %s" msgid_plural "" "group names not matched in starting values for random effects: %s" msgstr[0] "" "nazwa grupy nie zgadza siÄ™ z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych: " "%s" msgstr[1] "" "nazwy grup nie zgadzajÄ… siÄ™ z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych: " "%s" msgstr[2] "" "nazwy grup nie zgadzajÄ… siÄ™ z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych: " "%s" # nlme/R/lme.R: 880 # stop(gettextf("'Terms; must be between 1 and %d", nTerms), # domain = NA) #~ msgid "'Terms; must be between 1 and %d" #~ msgstr "'Terms' muszÄ… być pomiÄ™dzy 1 a %d" nlme/po/R-ko.po0000644000176000001440000006277212203635654013047 0ustar ripleyusers# Korean translation for R nlme package # Recommended/nlme/po/R-ko.po # Maintainer: R Core Team # Sent to Brian Ripley # Copyright (C) 1995-2013 The R Core Team # This file is distributed under the same license as the R nlme package. # R Development Translation Team - Korean # Chel Hee Lee , 2013. # Chel Hee Lee , 2013. # msgid "" msgstr "" "Project-Id-Version: nlme 3.1-105\n" "POT-Creation-Date: 2013-08-17 08:12\n" "PO-Revision-Date: 2013-08-16 18:52-0600\n" "Last-Translator: Chel Hee Lee \n" "Language-Team: R Development Translation Teams (Korean) \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: Poedit 1.5.4\n" msgid "not implemented for \"nlme\" objects" msgstr "\"nlme\" ê°ì²´ë“¤ì— 대하여 구현ë˜ì§€ 않았습니다" msgid "not implemented for multiple levels of nesting" msgstr "" msgid "individual %s was not used in the fit" msgstr "" msgid "do not know how to calculate correlation matrix of %s object" msgstr "%s ê°ì²´ì˜ ìƒê´€í–‰ë ¬ì„ 어떻게 계산해야 í•  ì§€ 알 수 없습니다" msgid "\"corStruct\" object must have a \"fixed\" attribute" msgstr "\"corStruct\" ê°ì²´ëŠ” 반드시 \"fixed\" ì†ì„±ì„ 가지고 있어야 합니다" msgid "do not know how to obtain parameters of %s object" msgstr "%s ê°ì²´ì˜ 파ë¼ë¯¸í„°ë“¤ì„ 어떻게 얻어야 í• ì§€ 알 수 없습니다" msgid "cannot change the length of the parameter of a \"corStruct\" object" msgstr "\"corStruct\" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다" msgid "cannot change 'form'" msgstr "'form'를 변경할 수 없습니다" msgid "need data to calculate covariate of \"corStruct\" object" msgstr "\"corStruct\" ê°ì²´ì˜ ê³µë³€ëŸ‰ì„ ê³„ì‚°í•˜ê¸° 위한 ë°ì´í„°ê°€ 필요합니다" msgid "cannot change the length of the parameter of a \"corSymm\" object" msgstr "\"corSymm\" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다" msgid "covariate must have unique values within groups for \"corSymm\" objects" msgstr "" msgid "" "unique values of the covariate for \"corSymm\" objects must be a sequence " "of consecutive integers" msgstr "" msgid "initial value for \"corSymm\" parameters of wrong dimension" msgstr "" msgid "initial values for \"corSymm\" must be between -1 and 1" msgstr "" msgid "" "initial values for \"corSymm\" do not define a positive-definite correlation " "structure" msgstr "" msgid "cannot change the length of the parameter of a \"corNatural\" object" msgstr "\"corNatural\" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다" msgid "" "covariate must have unique values within groups for \"corNatural\" objects" msgstr "" msgid "" "unique values of the covariate for \"corNatural\" objects must be a sequence " "of consecutive integers" msgstr "" msgid "initial value for \"corNatural\" parameters of wrong dimension" msgstr "" msgid "initial values for \"corNatural\" must be between -1 and 1" msgstr "" msgid "" "initial values for \"corNatural\" do not define a positive-definite " "correlation structure" msgstr "" msgid "parameter in AR(1) structure must be between -1 and 1" msgstr "" msgid "cannot change the length of the parameter of a \"corAR1\" object" msgstr "\"corAR1\" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다" msgid "covariate must have unique values within groups for \"corAR1\" objects" msgstr "" msgid "parameter in CAR(1) structure must be between 0 and 1" msgstr "" msgid "cannot change the length of the parameter of a \"corCAR1\" object" msgstr "" msgid "covariate must have unique values within groups for \"corCAR1\" objects" msgstr "" msgid "autoregressive order must be a non-negative integer" msgstr "" msgid "moving average order must be a non-negative integer" msgstr "" msgid "initial value for parameter of wrong length" msgstr "" msgid "parameters in ARMA structure must be < 1 in absolute value" msgstr "" msgid "'object' has not been Initialize()d" msgstr "'object'ê°€ 초기화 ë˜ì§€ 않았습니다" msgid "cannot change the length of the parameter of a \"corARMA\" object" msgstr "" msgid "covariate must have unique values within groups for \"corARMA\" objects" msgstr "" msgid "parameter in \"corCompSymm\" structure must be < 1 in absolute value" msgstr "" msgid "cannot change the length of the parameter of a \"corCompSymm\" object" msgstr "\"corCompSymm\" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다" msgid "initial value in \"corCompSymm\" must be greater than %s" msgstr "\"corCompSymm\" ë‚´ì˜ ì´ˆê¸°ê°’ì€ ë°˜ë“œì‹œ %s 보다 커야 합니다" msgid "cannot change the length of the parameter after initialization" msgstr "초기화 ì´í›„ì—는 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다" msgid "need data to calculate covariate" msgstr "ê³µë³€ëŸ‰ì„ ê³„ì‚°í•  ë°ì´í„°ê°€ 필요합니다" msgid "cannot have zero distances in \"corSpatial\"" msgstr "" msgid "'range' must be > 0 in \"corSpatial\" initial value" msgstr "" msgid "initial value for \"corSpatial\" parameters of wrong dimension" msgstr "" msgid "initial value of nugget ratio must be between 0 and 1" msgstr "nugget ratioì˜ ì´ˆê¸°ê°’ì€ ë°˜ë“œì‹œ 0ê³¼ 1 사ì´ì— 있어야 합니다" msgid "'range' must be > 0 in \"corLin\" initial value" msgstr "" msgid "" "initial value for 'range' less than minimum distance. Setting it to 1.1 * min" "(distance)" msgstr "" msgid "initial value for \"corLin\" parameters of wrong dimension" msgstr "" msgid "range must be > 0 in \"corSpher\" initial value" msgstr "" msgid "initial value for \"corSpher\" parameters of wrong dimension" msgstr "" msgid "negative control$nlmStepMax - using default value" msgstr "" msgid "model must be a formula of the form \"resp ~ pred\"" msgstr "" msgid "no coefficients to fit" msgstr "ì í•©í•  계수가 없습니다" msgid "maximum number of iterations reached without convergence" msgstr "수렴하지 않고 ì§€ì •ëœ ìµœëŒ€ ë°˜ë³µìˆ˜ì— ë„달하였습니다" msgid "computed \"gls\" fit is singular, rank %s" msgstr "" msgid "object must inherit from class \"gls\"" msgstr "" msgid "'Terms' must be between 1 and %d" msgstr "'Terms'는 반드시 1ê³¼ %d 사ì´ì— 있어야 합니다" msgid "terms can only be integers or characters" msgstr "" msgid "data in %s call must evaluate to a data frame" msgstr "" msgid "" "%s without \"primary\" can only be used with fits of \"groupedData\" objects" msgstr "" msgid "only one level allowed for predictions" msgstr "" msgid "%s and %s must have the same group levels" msgstr "%s와 %sì€ ë°˜ë“œì‹œ ê°™ì€ ê·¸ë£¹ ìˆ˜ì¤€ë“¤ì„ ê°€ì ¸ì•¼ 합니다" msgid "wrong group levels" msgstr "" msgid "cannot get confidence intervals on var-cov components: %s" msgstr "" msgid "need an object with call component" msgstr "" msgid "'nint' is not consistent with 'breaks'" msgstr "" msgid "'object' must be a formula" msgstr "'object'는 반드시 formulaì´ì–´ì•¼ 합니다" msgid "object formula must be of the form \"resp ~ pred\"" msgstr "" msgid "'data' must be given explicitly to use 'nls' to get initial estimates" msgstr "" msgid "no initial values for model parameters" msgstr "" msgid "starting estimates must have names when 'params' is missing" msgstr "" msgid "'params' must be a formula or list of formulae" msgstr "" msgid "formulae in 'params' must be of the form \"parameter ~ expr\"" msgstr "" msgid "starting values for parameters are not of the correct length" msgstr "파ë¼ë¯¸í„°ë“¤ì— 대한 ì‹œìž‘ê°’ë“¤ì— ëŒ€í•œ 길ì´ê°€ 올바르지 않습니다" msgid "step halving factor reduced below minimum in NLS step" msgstr "" msgid "approximate covariance matrix for parameter estimates not of full rank" msgstr "" msgid "cannot calculate REML log-likelihood for \"gnls\" objects" msgstr "" msgid "first argument to 'groupedData' must be a two-sided formula" msgstr "" msgid "right-hand side of first argument must be a conditional expression" msgstr "" msgid "first argument to 'nfGroupedData' must be a two-sided formula" msgstr "" msgid "only one level of grouping allowed" msgstr "" msgid "second argument to 'groupedData' must inherit from data.frame" msgstr "" msgid "first argument to 'nmGroupedData' must be a two-sided formula" msgstr "" msgid "'subset' ignored with single grouping factor" msgstr "" msgid "'subset' must be a list" msgstr "'subset'ì€ ë°˜ë“œì‹œ 리스트ì´ì–´ì•¼ 합니다" msgid "undefined group declared in 'subset'" msgstr "" msgid "only one display level allowed" msgstr "" msgid "undefined display level %s for %s" msgstr "" msgid "undefined collapsing level %s for %s" msgstr "" msgid "" "collapsing level cannot be smaller than display level; setting it to the " "display level" msgstr "" msgid "'preserve' must be a two-sided formula" msgstr "" msgid "'asTable' cannot be used with multilevel grouped data" msgstr "" msgid "'asTable' can only be used with balanced 'groupedData' objects" msgstr "" msgid "multiple levels not allowed" msgstr "" msgid "'data' must be a \"groupedData\" object if 'groups' argument is missing" msgstr "" msgid "An lm fit failed, probably because a factor only had one level" msgstr "" msgid "'data' in %s call must evaluate to a data frame" msgstr "" msgid "nonexistent groups requested in 'subset'" msgstr "" msgid "'subset' can only be character or integer" msgstr "" msgid "log-likelihood not available with NULL fits" msgstr "" msgid "'form' must be a formula" msgstr "'form'ì€ ë°˜ë“œì‹œ formula ì´ì–´ì•¼ 합니다" msgid "'form' must be a one-sided formula" msgstr "" msgid "covariate must be a data frame" msgstr "ê³µë³€ëŸ‰ì€ ë°˜ë“œì‹œ ë°ì´í„°í”„레임ì´ì–´ì•¼ 합니다" msgid "cannot do pairs of just one variable" msgstr "" msgid "'id' must be between 0 and 1" msgstr "'id'는 반드시 0ê³¼ 1 사ì´ì— 있어야 합니다" msgid "'id' can only be a formula or numeric" msgstr "" msgid "'idLabels' of incorrect length" msgstr "" msgid "'idLabels' can only be a formula or a vector" msgstr "" msgid "covariate must be numeric" msgstr "" msgid "nonexistent group in 'newdata'" msgstr "" msgid "nonexistent group requested in 'subset'" msgstr "" msgid "only residuals and random effects allowed" msgstr "" msgid "can only fit \"lmList\" objects with single grouping variable" msgstr "" msgid "'lme.lmList' will redefine 'data'" msgstr "" msgid "initial value for \"reStruct\" overwritten in 'lme.lmList'" msgstr "" msgid "fixed-effects model must be a formula of the form \"resp ~ pred\"" msgstr "" msgid "incompatible lengths for 'random' and grouping factors" msgstr "" msgid "incompatible formulas for groups in 'random' and 'correlation'" msgstr "" msgid "" "cannot use smaller level of grouping for 'correlation' than for 'random'. " "Replacing the former with the latter." msgstr "" msgid "fewer observations than random effects in all level %s groups" msgstr "" msgid "object must inherit from class \"lme\"" msgstr "" msgid "terms must all have the same denominator DF" msgstr "" msgid "L may only involve fixed effects with the same denominator DF" msgstr "" msgid "" "objects must inherit from classes \"gls\", \"gnls\",\"lm\",\"lmList\", \"lme" "\",\"nlme\",\"nlsList\", or \"nls\"" msgstr "" msgid "" "some fitted objects deleted because response differs from the first model" msgstr "" msgid "first model has a different response from the rest" msgstr "" msgid "all fitted objects must have the same estimation method" msgstr "모든 ê°ì²´ë“¤ì´ ê°™ì€ ì¶”ì •ë°©ë²•ì„ ì´ìš©í•˜ì—¬ ì í•©ë˜ì–´ì•¼ 합니다" msgid "fitted objects with different fixed effects." msgstr "" msgid "REML comparisons are not meaningful." msgstr "" msgid "objects must have a \"call\" component or attribute" msgstr "" msgid "all fitted objects must use the same number of observations" msgstr "" msgid "only single level allowed" msgstr "" msgid "covariate must have a level attribute when groups are present" msgstr "" msgid "covariate must have a level attribute when 'id' is a formula" msgstr "" msgid "covariate must have a level attribute when 'idLabels' is a formula" msgstr "" msgid "'form' must be a formula when not NULL" msgstr "" msgid "only single effects allowed in left side of 'form'" msgstr "" msgid "%s is not a valid effect name" msgstr "" msgid "no effects allowed in right side of formula" msgstr "" msgid "cannot evaluate groups for desired levels on 'newdata'" msgstr "" msgid "'Id' must be between 0 and 1" msgstr "'Id'는 반드시 0ê³¼ 1 사ì´ì— 있어야 합니다" msgid "augmentation of random effects only available for single level" msgstr "" msgid "no condensed linear model" msgstr "" msgid "no fitted \"lme\" object" msgstr "ì í•©ëœ \"lme\" ê°ì²´ê°€ 없습니다" msgid "objects must have coefficients with same row names" msgstr "" msgid "object must inherit from \"data.frame\"" msgstr "" msgid "only one level allowed in 'gapply'" msgstr "" msgid "'which' must be between 1 and %d" msgstr "'which'는 반드시 1ê³¼ %d 사ì´ì— 있어야 합니다" msgid "'which' can only be character or integer" msgstr "" msgid "formula(object) must return a formula" msgstr "" msgid "'form' must be a two-sided formula" msgstr "" msgid "only one level allowed in 'gsummary'" msgstr "" msgid "'FUN' can only be a function or a list of functions" msgstr "" msgid "cannot omit grouping factor without 'form'" msgstr "" msgid "object must inherit from class \"lmList\"" msgstr "" msgid "no degrees of freedom for estimating std. dev." msgstr "" msgid "" "data argument to \"data.frame\" method for 'getGroups' does not make sense" msgstr "" msgid "invalid formula for groups" msgstr "" msgid "'form' must have all components as formulas" msgstr "" msgid "'form' can only be a formula, or a list of formulas" msgstr "" msgid "level of %s does not match formula" msgstr "" msgid "'form' argument must be a formula" msgstr "" msgid "at least two coefficients are needed" msgstr "" msgid "no model variogram available with 'showModel = TRUE'" msgstr "" msgid "only residuals allowed" msgstr "" msgid "'distance' and 'object' have incompatible lengths" msgstr "" msgid "'nlme.nlsList' will redefine 'fixed', 'data', and 'start'" msgstr "" msgid "can only fit \"nlsList\" objects with single grouping variable" msgstr "" msgid "initial value for 'reStruct' overwritten in 'nlme.nlsList'" msgstr "" msgid "'model' must be a formula" msgstr "" msgid "model formula must be of the form \"resp ~ pred\"" msgstr "" msgid "'data' must be given explicitly to use 'nlsList'" msgstr "" msgid "'fixed' must be a formula or list of formulae" msgstr "" msgid "formulae in 'fixed' must be of the form \"parameter ~ expr\"" msgstr "" msgid "'random' must be a formula or list of formulae" msgstr "" msgid "formulae in 'random' must be of the form \"parameter ~ expr\"" msgstr "" msgid "incompatible formulas for groups in \"random\" and \"correlation\"" msgstr "" msgid "" "cannot use smaller level of grouping for \"correlation\" than for \"random" "\". Replacing the former with the latter." msgstr "" msgid "'start' must have a component called 'fixed'" msgstr "" msgid "starting values for the 'fixed' component are not the correct length" msgstr "" msgid "starting values for random effects should be a list, or a matrix" msgstr "" msgid "" "list with starting values for random effects must have names or be of length " "%d" msgstr "" msgid "starting values for the random components should be a list of matrices" msgstr "" msgid "" "number of rows in starting values for random component at level %s should be " "%d" msgstr "" msgid "" "number of columns in starting values for random component at level %s should " "be %d" msgstr "" msgid "starting values for random effects must include group levels" msgstr "" msgid "" "groups levels mismatch in 'random' and starting values for 'random' at level " "%s" msgstr "" msgid "" "names mismatch in 'random' and starting values for 'random' at level %s" msgstr "" msgid "step halving factor reduced below minimum in PNLS step" msgstr "" msgid "second argument must be a groupedData object" msgstr "" msgid "cannot use an anonymous function for the model" msgstr "" msgid "" "'data' must be a \"groupedData\" object if 'formula' does not include groups" msgstr "" msgid "missing call attribute in \"nlsList\" object" msgstr "" msgid "cannot access the matrix of uninitialized objects" msgstr "" msgid "ignoring argument 'form'" msgstr "" msgid "ignoring argument 'nam'" msgstr "" msgid "'value' must be a square matrix" msgstr "" msgid "dimnames of 'value' must match or be NULL" msgstr "" msgid "names of 'value' are not consistent with 'nam' argument" msgstr "" msgid "%s is not a valid object for \"pdMat\"" msgstr "" msgid "all elements of 'form' list must be two-sided formulas" msgstr "" msgid "'form' can only be a formula or a list of formulae" msgstr "" msgid "'form' not consistent with 'nam'" msgstr "" msgid "length of 'nam' not consistent with dimensions of initial value" msgstr "" msgid "no default method for extracting the square root of a \"pdMat\" object" msgstr "" msgid "do not know how to obtain constrained coefficients" msgstr "" msgid "" "cannot access the number of columns of uninitialized objects without names" msgstr "" msgid "cannot extract the log of the determinant from an uninitialized object" msgstr "" msgid "cannot change dimensions on an initialized \"pdMat\" object" msgstr "ì´ˆê¸°í™”ëœ \"pdMat\" ê°ì²´ì˜ ì°¨ì›ì •보를 변경할 수 없습니다" msgid "Length of names should be %d" msgstr "" msgid "" "names being assigned do not correspond to a permutation of previous names" msgstr "" msgid "x-y data to splom got botched somehow" msgstr "" msgid "cannot get the inverse of an uninitialized object" msgstr "" msgid "an object of length %d does not match the required parameter size" msgstr "" msgid "cannot extract matrix from an uninitialized object" msgstr "" msgid "cannot extract the inverse from an uninitialized object" msgstr "" msgid "an object of length %d does not match a Cholesky factor" msgstr "" msgid "cannot extract the matrix from an uninitialized object" msgstr "" msgid "cannot extract the matrix from an uninitialized \"pdIdent\" object" msgstr "" msgid "cannot extract the matrix with uninitialized dimensions" msgstr "" msgid "" "must give names when initializing \"pdIdent\" from parameter without a " "formula" msgstr "" msgid "cannot extract the dimensions" msgstr "" msgid "cannot extract the matrix from an uninitialized \"pdCompSymm\" object" msgstr "" msgid "initializing \"pdCompSymm\" object is not positive definite" msgstr "" msgid "" "must give names when initializing \"pdCompSymm\" from parameter without a " "formula" msgstr "" msgid "cannot obtain constrained coefficients with uninitialized dimensions" msgstr "" msgid "cannot access the matrix of object without names" msgstr "" msgid "'form' must be a list" msgstr "'form'ì€ ë°˜ë“œì‹œ 리스트ì´ì–´ì•¼ 합니다" msgid "'nam' must be a list" msgstr "'nam'ì€ ë°˜ë“œì‹œ 리스트ì´ì–´ì•¼ 합니다" msgid "'form' and 'nam' have incompatible lengths" msgstr "" msgid "'pdClass' must be a character vector" msgstr "'pdClass'는 반드시 문ìží˜• 벡터ì´ì–´ì•¼ 합니다" msgid "'form' and 'pdClass' have incompatible lengths" msgstr "" msgid "'nam' and 'pdClass' have incompatible lengths" msgstr "" msgid "LNone of the arguments specify more than one block" msgstr "" msgid "'object' must be a list when not missing, not a matrix, and not numeric" msgstr "" msgid "arguments imply different number of blocks" msgstr "" msgid "all elements in the argument must generate \"pdMat\" objects" msgstr "" msgid "cannot have duplicated column names in a \"pdMat\" object" msgstr "" msgid "must have formula when no names are given" msgstr "" msgid "must give names when initializing from matrix or parameter" msgstr "" msgid "all elements must have names when any has names" msgstr "" msgid "all elements must have a non-zero size" msgstr "" msgid "cannot change the parameter when length of parameters is undefined" msgstr "" msgid "cannot change parameter length of initialized \"pdMat\" object" msgstr "" msgid "all elements must have formulas when any has a formula" msgstr "" msgid "" "all elements of formula must be list of two-sided formulae or two-sided " "formulae" msgstr "" msgid "cannot change the number of columns on an initialized object" msgstr "" msgid "names of object and value must match" msgstr "" msgid "\"pdMat\" element must have a formula" msgstr "" msgid "'object' must be a list or a formula" msgstr "" msgid "\"pdMat\" elements must have a formula" msgstr "" msgid "elements in 'object' must be formulas or \"pdMat\" objects" msgstr "" msgid "cannot change the parameter when ength of parameters is undefined" msgstr "" msgid "cannot change parameter length of initialized objects" msgstr "" msgid "cannot extract groups formula without a formula" msgstr "" msgid "all elements of a \"reStruct\" object must have a non-zero size" msgstr "" msgid "cannot change the length of 'object'" msgstr "" msgid "cannot extract model matrix without formula" msgstr "" msgid "incompatible lengths for object names" msgstr "" msgid "" "'data' must inherit from \"groupedData\" class if 'random' does not define " "groups" msgstr "" msgid "models with \"corStruct\" and/or \"varFunc\" objects not allowed" msgstr "" msgid "plot method only implemented for comparing models" msgstr "" msgid "no degrees of freedom specified" msgstr "" msgid "degrees of freedom and weights must have the same length" msgstr "" msgid "negative degrees of freedom not allowed" msgstr "" msgid "more than one degree of freedom is needed when one them is zero." msgstr "" msgid "" "can only construct \"varFunc\" object from another \"varFunc\" object, a " "formula, or a character string" msgstr "" msgid "cannot extract parameters of uninitialized object" msgstr "" msgid "do not know how to get coefficients for %s object" msgstr "" msgid "cannot change the length of covariate in \"varFunc\" object" msgstr "" msgid "'value' must be a one sided formula" msgstr "" msgid "'form' must have a covariate" msgstr "" msgid "ignoring 'group' in \"varFixed\" formula" msgstr "" msgid "all variables used in 'formula' must be in 'data'" msgstr "" msgid "initial values must have group names in 'varIdent'" msgstr "" msgid "initial values for 'varIdent' must be > 0" msgstr "" msgid "fixed parameters must have names in 'varIdent'" msgstr "" msgid "" "cannot change the length of the \"varIdent\" parameter after initialization" msgstr "" msgid "fixed parameter names in 'varIdent' must be a subset of group names" msgstr "" msgid "cannot fix variances in all groups" msgstr "" msgid "initial value for \"varIdent\" should be of length %d" msgstr "" msgid "" "names of starting value for \"varIdent\" object must contain all but one of " "the stratum levels" msgstr "" msgid "nonexistent group names for initial values in 'varIdent'" msgstr "" msgid "initial values must have group names in 'varPower'" msgstr "" msgid "fixed parameters must have group names in 'varPower'" msgstr "" msgid "" "cannot change the length of the \"varStruct\" parameter after initialization" msgstr "" msgid "" "cannot change coefficients before initialization or when all parameters are " "fixed" msgstr "" msgid "fixed parameters must have group names" msgstr "" msgid "mismatch between group names and fixed values names" msgstr "" msgid "initial value for \"varPower\" should be of length %d" msgstr "" msgid "nonexistent group names for initial values in \"varPower\"" msgstr "" msgid "initial value for \"varPower\" should be of length 1" msgstr "" msgid "initial values must have group names in 'varExp'" msgstr "" msgid "fixed parameters must have group names in 'varExp'" msgstr "" msgid "" "cannot change the length of the \"varExp\" parameter after initialization" msgstr "" msgid "initial value for \"varExp\" should be of length %d" msgstr "" msgid "nonexistent group names for initial values in \"varExp\"" msgstr "" msgid "initial value for \"varExp\" should be of length 1" msgstr "" msgid "%s can have at most two components" msgstr "" msgid "%s can only have names \"const\" and \"power\"" msgstr "" msgid "%s can only be a list or numeric" msgstr "" msgid "%s must have group names in 'varConstPower'" msgstr "" msgid "constant in \"varConstPower\" structure must be > 0" msgstr "" msgid "initial value should be of length %d" msgstr "" msgid "nonexistent group names for initial values" msgstr "" msgid "all arguments to 'varComb' must be of class \"varFunc\"." msgstr "" msgid "cannot change parameter length of initialized \"varComb\" object" msgstr "" msgid "term %s not matched" msgid_plural "terms %s not matched" msgstr[0] "" msgstr[1] "" msgid "'L' must have at most %d column" msgid_plural "'L' must have at most %d columns" msgstr[0] "" msgstr[1] "" msgid "effect %s not matched" msgid_plural "effects %s not matched" msgstr[0] "" msgstr[1] "" msgid "level %s not allowed for %s" msgid_plural "levels %s not allowed for %s" msgstr[0] "" msgstr[1] "" msgid "%s not found in data" msgid_plural "%s not found in data" msgstr[0] "ë°ì´í„°ë¡œë¶€í„° %s를 ì°¾ì„ ìˆ˜ 없습니다" msgid "nonexistent level %s" msgid_plural "nonexistent levels %s" msgstr[0] "" msgstr[1] "" msgid "%s not available for plotting" msgid_plural "%s not available for plotting" msgstr[0] "" msgstr[1] "" msgid "%s not matched" msgid_plural "%s not matched" msgstr[0] "" msgstr[1] "" msgid "group name not matched in starting values for random effects: %s" msgid_plural "" "group names not matched in starting values for random effects: %s" msgstr[0] "" msgstr[1] "" nlme/inst/0000755000176000001440000000000012164302040012202 5ustar ripleyusersnlme/inst/po/0000755000176000001440000000000012203635654012636 5ustar ripleyusersnlme/inst/po/pl/0000755000176000001440000000000012131311354013235 5ustar ripleyusersnlme/inst/po/pl/LC_MESSAGES/0000755000176000001440000000000012203635654015036 5ustar ripleyusersnlme/inst/po/pl/LC_MESSAGES/R-nlme.mo0000644000176000001440000012443512203635654016536 0ustar ripleyusersÞ•:ì £¼H0I#z$ž)Ã"í *1\$z+Ÿ;Ë)1HO3˜Ì@é *>K5Š/ÀJðE;E0ÇOø1H-z*¨.Ó! 2$ 3W ‹ &¤ Ë "á "!'!+D! p!%‘!·!,Ô!"! "B"-\"Š"&Ÿ"9Æ"##$#$?#Gd#.¬#$Û#&$.'$-V$1„$,¶$)ã$, %:%#R%v%(–% ¿%=à%2&Q&$n&6“&:Ê&&'6,'/c'6“'=Ê'P(7Y(;‘(1Í(7ÿ(A7)Fy)*À)$ë)>*3O*cƒ*;ç*<#+0`+1‘+JÃ+7,F,Q[,9­,<ç,>$-5c-$™-9¾-Gø-I@.JŠ.>Õ.>/?S/?“/CÓ/B0AZ0?œ0<Ü0A1B[1$ž16Ã1/ú12*2+]21‰2»27Ù2F3CX3@œ36Ý374"L49o41©47Û4*5D>5*ƒ5.®5oÝ5oM6V½6'71<7n77<§7Bä7='8De8Eª8Eð8H69E9HÅ9-:8<:)u:<Ÿ:1Ü:2;1A;,s;8 ;=Ù;;<=S<=‘<2Ï<,=C/=&s=2š=4Í=.>?1>%q>:—>;Ò>;?‚J?OÍ?&@D@]@>u@>´@6ó@%*A%PA8vA<¯A<ìA:)B9dB8žB1×B0 C3:C3nC2¢CWÕC:-D+hD6”D5ËD$EW&E8~ET·E5 F)BF0lF2F2ÐF9G=G?XG8˜G"ÑGOôG+DH8pH3©H*ÝH/I18I<jI@§I3èIJO8JLˆJ:ÕJ)KI:KH„K7ÍK$L\*L"‡L ªL6ËL1M'4M\MsMDM.ÒMN+!NMN&dN4‹NÀN*ßN6 O8AO8zO'³O(ÛO*P"/P.RPRPOÔP0$Q%UQ${Q' Q$ÈQ1íQ2R_RR²R&ÑR"øR$S"@ScS)zS2¤S×SBñS54T5jT: T1ÛT- UB;U,~U=«UIéU;3V<oV<¬V@éVD*WFoW5¶W6ìW(#X(LX+uX$¡X!ÆX$èX` YbnYÑY%äY Z2\(R\+{\,§\+Ô\(]5)]#_]*ƒ].®]fÝ]jD^O¯^Rÿ^4R_‡_q¦_$`M=`F‹`:Ò`H aJVa`¡a:bP=b4Žb.Ãb,òb0c#Pc6tc6«câc9ýc7d(Od&xd+ŸdBËde-.e\e4{e%°e!Öeøe/fDf![fB}f<Àfýf'gXBg1›g&Íg*ôg/h7Oh;‡h-Ãh;ñh<-iji)„i'®i:Öi"jD4j<yj#¶j!ÚjIüjEFk1ŒkD¾k@lCDlDˆl_ÍlG-mHum9¾m@ømF9nT€n,Õn.oI1o;{oh·oM pNnp9½pH÷pJ@qO‹qÛqc÷q@[rMœrMêrA8s'zsI¢sGìsI4tJ~t>Ét<u<Eu<‚u<¿u<üu<9v<vv8³vIìvI6w,€wA­w1ïw@!x4bx=—x!ÕxD÷xJ{C^{5¢{UØ{5.|/d|u”|u }j€}3ë}1~+Q~%}~G£~Më~D9[~\Ú\7€_”€\ô€PQ:¢;ÝF‚6`‚7—‚4Ï‚-ƒc2ƒF–ƒK݃O)„Qy„QË„4…1R…H„….Í…9ü…;6†6r†]©†*‡?2‡@r‡?³‡üó‡bðˆ(S‰|‰™‰:µ‰:ð‰?+Š%kŠ.‘Š@ÀŠQ‹DS‹B˜‹NÛ‹F*Œ=qŒ<¯Œ?ìŒ?,>lk«?Ž?WŽ@—ŽCØŽ0^MC¬[ð@L4=Â?‘>@‘@‘À‘DÞ‘k#’%’dµ’G“Kb“F®“3õ“J)”Kt”CÀ”S•AX•%š•WÀ•W–Ip–-º–=è–_&—0†—1·—sé—)]˜6‡˜J¾˜F ™(P™%y™%Ÿ™BÅ™DšMš9kš¥š3Åš7ùš 1›5R›@ˆ›BÉ›B œ,Oœ+|œL¨œ(õœ7eVf¼K#ž'ož&—ž)¾ž&èž1ŸBAŸS„Ÿ/ØŸ2 ,; .h ,— Ä -á =¡(M¡Fv¡6½¡5ô¡@*¢Qk¢8½¢Bö¢/9£Si£n½£?,¤@l¤Q­¤Mÿ¤KM¥L™¥Iæ¥J0¦f{¦;â¦3§*R§.}§.¬§uÛ§xQ¨ʨ;á¨ê”u‘½‹˜ÑäÅbü¦Aß&Ÿ:eñ’L#,òÍð `?hÄ\°. ·Çþ0Ë~Àœ—â¤nXŠ%×1 ô>ý ™‚)jT‰…3m}©¥*/H® wMžCƒ±i ¨õ KU1È{É«*¹v=:ìÓ ØqSÙ+´çÖ³ˆyxr@5á2š/¿pî<+ܵzP970­JÁ-5] íù 6€oN3-' ºè¾ÿ#Ì–úÚ(Ô²¶ÎàgI‡¯§ë„ïdå.Æ“a¬4Z$,öf&ÞŒ9ÒG!kã'Ž(!æDóР¸^|÷B›ª•Q$Ý2 4tûÛÕ8c»_;6%sÏ"8Vé[W"7ÃR¢OÂ)lÊøF†E¡£Y¼"corStruct" object must have a "fixed" attribute"pdMat" element must have a formula"pdMat" elements must have a formula%s and %s must have the same group levels%s can have at most two components%s can only be a list or numeric%s can only have names "const" and "power"%s is not a valid effect name%s is not a valid object for "pdMat"%s must have group names in 'varConstPower'%s not available for plotting%s not available for plotting%s not found in data%s not found in data%s not matched%s not matched%s without "primary" can only be used with fits of "groupedData" objects'FUN' can only be a function or a list of functions'Id' must be between 0 and 1'L' must have at most %d column'L' must have at most %d columns'Terms' must be between 1 and %d'asTable' can only be used with balanced 'groupedData' objects'asTable' cannot be used with multilevel grouped data'data' in %s call must evaluate to a data frame'data' must be a "groupedData" object if 'formula' does not include groups'data' must be a "groupedData" object if 'groups' argument is missing'data' must be given explicitly to use 'nls' to get initial estimates'data' must be given explicitly to use 'nlsList''data' must inherit from "groupedData" class if 'random' does not define groups'distance' and 'object' have incompatible lengths'fixed' must be a formula or list of formulae'form' and 'nam' have incompatible lengths'form' and 'pdClass' have incompatible lengths'form' argument must be a formula'form' can only be a formula or a list of formulae'form' can only be a formula, or a list of formulas'form' must be a formula'form' must be a formula when not NULL'form' must be a list'form' must be a one-sided formula'form' must be a two-sided formula'form' must have a covariate'form' must have all components as formulas'form' not consistent with 'nam''id' can only be a formula or numeric'id' must be between 0 and 1'idLabels' can only be a formula or a vector'idLabels' of incorrect length'lme.lmList' will redefine 'data''model' must be a formula'nam' and 'pdClass' have incompatible lengths'nam' must be a list'nint' is not consistent with 'breaks''nlme.nlsList' will redefine 'fixed', 'data', and 'start''object' has not been Initialize()d'object' must be a formula'object' must be a list or a formula'object' must be a list when not missing, not a matrix, and not numeric'params' must be a formula or list of formulae'pdClass' must be a character vector'preserve' must be a two-sided formula'random' must be a formula or list of formulae'range' must be > 0 in "corLin" initial value'range' must be > 0 in "corSpatial" initial value'start' must have a component called 'fixed''subset' can only be character or integer'subset' ignored with single grouping factor'subset' must be a list'value' must be a one sided formula'value' must be a square matrix'which' can only be character or integer'which' must be between 1 and %dL may only involve fixed effects with the same denominator DFLNone of the arguments specify more than one blockLength of names should be %dREML comparisons are not meaningful.all arguments to 'varComb' must be of class "varFunc".all elements in the argument must generate "pdMat" objectsall elements must have a non-zero sizeall elements must have formulas when any has a formulaall elements must have names when any has namesall elements of 'form' list must be two-sided formulasall elements of a "reStruct" object must have a non-zero sizeall elements of formula must be list of two-sided formulae or two-sided formulaeall fitted objects must have the same estimation methodall fitted objects must use the same number of observationsall variables used in 'formula' must be in 'data'an object of length %d does not match a Cholesky factoran object of length %d does not match the required parameter sizeapproximate covariance matrix for parameter estimates not of full rankarguments imply different number of blocksat least two coefficients are neededaugmentation of random effects only available for single levelautoregressive order must be a non-negative integercan only construct "varFunc" object from another "varFunc" object, a formula, or a character stringcan only fit "lmList" objects with single grouping variablecan only fit "nlsList" objects with single grouping variablecannot access the matrix of object without namescannot access the matrix of uninitialized objectscannot access the number of columns of uninitialized objects without namescannot calculate REML log-likelihood for "gnls" objectscannot change 'form'cannot change coefficients before initialization or when all parameters are fixedcannot change dimensions on an initialized "pdMat" objectcannot change parameter length of initialized "pdMat" objectcannot change parameter length of initialized "varComb" objectcannot change parameter length of initialized objectscannot change the length of 'object'cannot change the length of covariate in "varFunc" objectcannot change the length of the "varExp" parameter after initializationcannot change the length of the "varIdent" parameter after initializationcannot change the length of the "varStruct" parameter after initializationcannot change the length of the parameter after initializationcannot change the length of the parameter of a "corAR1" objectcannot change the length of the parameter of a "corARMA" objectcannot change the length of the parameter of a "corCAR1" objectcannot change the length of the parameter of a "corCompSymm" objectcannot change the length of the parameter of a "corNatural" objectcannot change the length of the parameter of a "corStruct" objectcannot change the length of the parameter of a "corSymm" objectcannot change the number of columns on an initialized objectcannot change the parameter when ength of parameters is undefinedcannot change the parameter when length of parameters is undefinedcannot do pairs of just one variablecannot evaluate groups for desired levels on 'newdata'cannot extract groups formula without a formulacannot extract matrix from an uninitialized objectcannot extract model matrix without formulacannot extract parameters of uninitialized objectcannot extract the dimensionscannot extract the inverse from an uninitialized objectcannot extract the log of the determinant from an uninitialized objectcannot extract the matrix from an uninitialized "pdCompSymm" objectcannot extract the matrix from an uninitialized "pdIdent" objectcannot extract the matrix from an uninitialized objectcannot extract the matrix with uninitialized dimensionscannot fix variances in all groupscannot get confidence intervals on var-cov components: %scannot get the inverse of an uninitialized objectcannot have duplicated column names in a "pdMat" objectcannot have zero distances in "corSpatial"cannot obtain constrained coefficients with uninitialized dimensionscannot omit grouping factor without 'form'cannot use an anonymous function for the modelcannot use smaller level of grouping for "correlation" than for "random". Replacing the former with the latter.cannot use smaller level of grouping for 'correlation' than for 'random'. Replacing the former with the latter.collapsing level cannot be smaller than display level; setting it to the display levelcomputed "gls" fit is singular, rank %sconstant in "varConstPower" structure must be > 0covariate must be a data framecovariate must be numericcovariate must have a level attribute when 'id' is a formulacovariate must have a level attribute when 'idLabels' is a formulacovariate must have a level attribute when groups are presentcovariate must have unique values within groups for "corAR1" objectscovariate must have unique values within groups for "corARMA" objectscovariate must have unique values within groups for "corCAR1" objectscovariate must have unique values within groups for "corNatural" objectscovariate must have unique values within groups for "corSymm" objectsdata argument to "data.frame" method for 'getGroups' does not make sensedata in %s call must evaluate to a data framedegrees of freedom and weights must have the same lengthdimnames of 'value' must match or be NULLdo not know how to calculate correlation matrix of %s objectdo not know how to get coefficients for %s objectdo not know how to obtain constrained coefficientsdo not know how to obtain parameters of %s objecteffect %s not matchedeffects %s not matchedelements in 'object' must be formulas or "pdMat" objectsfewer observations than random effects in all level %s groupsfirst argument to 'groupedData' must be a two-sided formulafirst argument to 'nfGroupedData' must be a two-sided formulafirst argument to 'nmGroupedData' must be a two-sided formulafirst model has a different response from the restfitted objects with different fixed effects.fixed parameter names in 'varIdent' must be a subset of group namesfixed parameters must have group namesfixed parameters must have group names in 'varExp'fixed parameters must have group names in 'varPower'fixed parameters must have names in 'varIdent'fixed-effects model must be a formula of the form "resp ~ pred"formula(object) must return a formulaformulae in 'fixed' must be of the form "parameter ~ expr"formulae in 'params' must be of the form "parameter ~ expr"formulae in 'random' must be of the form "parameter ~ expr"group name not matched in starting values for random effects: %sgroup names not matched in starting values for random effects: %sgroups levels mismatch in 'random' and starting values for 'random' at level %signoring 'group' in "varFixed" formulaignoring argument 'form'ignoring argument 'nam'incompatible formulas for groups in "random" and "correlation"incompatible formulas for groups in 'random' and 'correlation'incompatible lengths for 'random' and grouping factorsincompatible lengths for object namesindividual %s was not used in the fitinitial value for "corLin" parameters of wrong dimensioninitial value for "corNatural" parameters of wrong dimensioninitial value for "corSpatial" parameters of wrong dimensioninitial value for "corSpher" parameters of wrong dimensioninitial value for "corSymm" parameters of wrong dimensioninitial value for "reStruct" overwritten in 'lme.lmList'initial value for "varExp" should be of length %dinitial value for "varExp" should be of length 1initial value for "varIdent" should be of length %dinitial value for "varPower" should be of length %dinitial value for "varPower" should be of length 1initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)initial value for 'reStruct' overwritten in 'nlme.nlsList'initial value for parameter of wrong lengthinitial value in "corCompSymm" must be greater than %sinitial value of nugget ratio must be between 0 and 1initial value should be of length %dinitial values for "corNatural" do not define a positive-definite correlation structureinitial values for "corNatural" must be between -1 and 1initial values for "corSymm" do not define a positive-definite correlation structureinitial values for "corSymm" must be between -1 and 1initial values for 'varIdent' must be > 0initial values must have group names in 'varExp'initial values must have group names in 'varIdent'initial values must have group names in 'varPower'initializing "pdCompSymm" object is not positive definiteinvalid formula for groupslength of 'nam' not consistent with dimensions of initial valuelevel %s not allowed for %slevels %s not allowed for %slevel of %s does not match formulalist with starting values for random effects must have names or be of length %dlog-likelihood not available with NULL fitsmaximum number of iterations reached without convergencemismatch between group names and fixed values namesmissing call attribute in "nlsList" objectmodel formula must be of the form "resp ~ pred"model must be a formula of the form "resp ~ pred"models with "corStruct" and/or "varFunc" objects not allowedmore than one degree of freedom is needed when one them is zero.moving average order must be a non-negative integermultiple levels not allowedmust give names when initializing "pdCompSymm" from parameter without a formulamust give names when initializing "pdIdent" from parameter without a formulamust give names when initializing from matrix or parametermust have formula when no names are givennames being assigned do not correspond to a permutation of previous namesnames mismatch in 'random' and starting values for 'random' at level %snames of 'value' are not consistent with 'nam' argumentnames of object and value must matchnames of starting value for "varIdent" object must contain all but one of the stratum levelsneed an object with call componentneed data to calculate covariateneed data to calculate covariate of "corStruct" objectnegative control$nlmStepMax - using default valuenegative degrees of freedom not allowedno coefficients to fitno condensed linear modelno default method for extracting the square root of a "pdMat" objectno degrees of freedom for estimating std. dev.no degrees of freedom specifiedno effects allowed in right side of formulano fitted "lme" objectno initial values for model parametersno model variogram available with 'showModel = TRUE'nonexistent group in 'newdata'nonexistent group names for initial valuesnonexistent group names for initial values in "varExp"nonexistent group names for initial values in "varPower"nonexistent group names for initial values in 'varIdent'nonexistent group requested in 'subset'nonexistent groups requested in 'subset'nonexistent level %snonexistent levels %snot implemented for "nlme" objectsnot implemented for multiple levels of nestingnumber of columns in starting values for random component at level %s should be %dnumber of rows in starting values for random component at level %s should be %dobject formula must be of the form "resp ~ pred"object must inherit from "data.frame"object must inherit from class "gls"object must inherit from class "lmList"object must inherit from class "lme"objects must have a "call" component or attributeobjects must have coefficients with same row namesobjects must inherit from classes "gls", "gnls","lm","lmList", "lme","nlme","nlsList", or "nls"only one display level allowedonly one level allowed for predictionsonly one level allowed in 'gapply'only one level allowed in 'gsummary'only one level of grouping allowedonly residuals allowedonly residuals and random effects allowedonly single effects allowed in left side of 'form'only single level allowedparameter in "corCompSymm" structure must be < 1 in absolute valueparameter in AR(1) structure must be between -1 and 1parameter in CAR(1) structure must be between 0 and 1parameters in ARMA structure must be < 1 in absolute valueplot method only implemented for comparing modelsrange must be > 0 in "corSpher" initial valueright-hand side of first argument must be a conditional expressionsecond argument must be a groupedData objectsecond argument to 'groupedData' must inherit from data.framesome fitted objects deleted because response differs from the first modelstarting estimates must have names when 'params' is missingstarting values for parameters are not of the correct lengthstarting values for random effects must include group levelsstarting values for random effects should be a list, or a matrixstarting values for the 'fixed' component are not the correct lengthstarting values for the random components should be a list of matricesstep halving factor reduced below minimum in NLS stepstep halving factor reduced below minimum in PNLS stepterm %s not matchedterms %s not matchedterms can only be integers or charactersterms must all have the same denominator DFundefined collapsing level %s for %sundefined display level %s for %sundefined group declared in 'subset'unique values of the covariate for "corSymm" objects must be a sequence of consecutive integersunique values of the covariate for "corNatural" objects must be a sequence of consecutive integerswrong group levelsx-y data to splom got botched somehowProject-Id-Version: nlme 3.1-104 Report-Msgid-Bugs-To: bugs@r-project.org POT-Creation-Date: 2013-08-17 08:12 PO-Revision-Date: 2012-10-06 16:10+0100 Last-Translator: Åukasz Daniel Language-Team: Åukasz Daniel Language: pl_PL MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Poedit-SourceCharset: iso-8859-1 X-Generator: Poedit 1.5.3 obiekt "corStruct" musi posiadać atrybut "fixed".element "pdMat" musi posiadać formułęelementy "pdMat" muszÄ… posiadać formułę%s oraz %s muszÄ… mieć te same poziomy grup%s może posiadać najwyżej dwa komponenty%s może być jedynie listÄ… lub liczbÄ…%s może posiadać jedynie nazwy "const" oraz "power"%s nie jest poprawnÄ… nazwÄ… efektu%s nie jest poprawnym obiektem dla "pdMat"%s musi posiadać nazwy grup w 'varConstPower'%s nie jest dostÄ™pne do rysowania%s nie sÄ… dostÄ™pne do rysowania%s nie sÄ… dostÄ™pne do rysowania%s nie zostaÅ‚ znaleziony w danych%s nie zostaÅ‚y znalezione w danych%s nie zostaÅ‚y znalezione w danych%s nie zostaÅ‚ dopasowany%s nie zostaÅ‚y dopasowane%s nie zostaÅ‚y dopasowane%s bez "primary" może być użyte jedynie z dopasowaniami obiektów "groupedData"'FUN' może być jedynie funkcjÄ… lub listÄ… funkcji'Id' musi być pomiÄ™dzy 0 a 1'L' musi mieć co najwyzej %d kolumnÄ™'L' musi mieć co najwyzej %d kolumny'L' musi mieć co najwyzej %d kolumn'Terms' muszÄ… być pomiÄ™dzy 1 a %d'asTable' może być użyte jedynie ze zbalansowanymi obiektami 'groupedData''asTable' nie może być użyte z wielopoziomowymi zgrupowanymi danymi'data' w wywoÅ‚aniu %s musi wyliczać siÄ™ do ramki danych'data' musi być obiektem "groupedData" jeÅ›li 'fomula' nie zawiera grup'data' musi być obiektem "groupedData" jeÅ›li brakuje argumentu 'groups' 'data' musi być podane bezpoÅ›rednio aby użyć 'nls' w celu uzyskania poczÄ…tkowych oszacowaÅ„'data' musi być podane bezpoÅ›rednio aby użyć 'nlsList''data' musi dziedziczyć z klasy "groupedData" jeÅ›li 'random' nie okreÅ›la grup'distance' oraz 'object' majÄ… niespójne dÅ‚ugoÅ›ci'fixed' musi być formułą lub listÄ… formuÅ‚'form' oraz 'nam' majÄ… niezgodne dÅ‚ugoÅ›ci'form' oraz 'pdClass' majÄ… niezgodne dÅ‚ugoÅ›ciargument 'form' musi być formułą'form' może być jedynie formułą lub listÄ… formuÅ‚'form' może być jedynie formułą lub listÄ… formuÅ‚'form' musi być formułą'form' musi być formułą, gdy nie jest wartoÅ›ciÄ… NULL'form' musi być listÄ…'form' musi być jednostronnÄ… formułą'form' musi być dwustronnÄ… formułą'form' musi posiadać zmiennÄ… niezależnÄ…'form' musi mieć wszystkie komponenty przedstawione jako formuÅ‚y'form' nie jest spójne z 'nam''id' może być jedynie formułą lub liczbÄ…'id' musi być pomiÄ™dzy 0 a 1'IdLabels' może być jedynie formułą lub wektorem'IdLabels' ma niepoprawnÄ… dÅ‚ugość'lme.lmList' przedefiniuje 'data''model' musi być formułą'nam' oraz 'pdClass' majÄ… niezgodne dÅ‚ugoÅ›ci'nam' musi być listÄ…'nint' jest niespójne z 'breaks''nlme.nlsList' ponownie przedefiniuje 'fixed', 'data' oraz 'start''object' nie zostaÅ‚ zainicjalizowany metodÄ… 'Initialize()''object' musi być formułą'object' musi być listÄ… lub formułą'object' musi być listÄ…, gdy nie jest brakujÄ…cy, nie jest macierzÄ…, ani też liczbÄ…'params' muszÄ… być formułą lub listÄ… formuÅ‚'pdClass' musi być wektorem tekstowym'preserve' musi być dwustronnÄ… formułą'random' musi być formułą lub listÄ… formuÅ‚'range' musi być > 0 w poczÄ…tkowej wartoÅ›ci "corLin"'range' musi być > 0 w poczÄ…tkowej wartoÅ›ci "corSpatial"'start' musi mieć komponent o nazwie 'fixed''subset' może być jedynie znakiem lub liczbÄ… caÅ‚kowitÄ…'subset' zostaÅ‚o zignorowane z jednym czynnikem grupujÄ…cym'subset' musi być listÄ…'value' musi być jednostronnÄ… formułą'value' musi być kwadratowÄ… macierzÄ…'which' może być jedynie tekstem lub liczbÄ… caÅ‚kowitÄ…'which' musi być pomiÄ™dzy 1 a %d'L' może zawierać jedynie staÅ‚e efekty z tym samym mianownikem DFżaden z argumentów nie okreÅ›la wiÄ™cej niż jednego blokuDÅ‚ugość nazw powinna wynosić %dPorównania REML nie majÄ… sensu.wszystkie argumenty przekazywane do 'varComb' muszÄ… być klasy "varFunc"wszystkie elementy w argumencie muszÄ… tworzyć obiekty klasy "pdMat"wszystkie elementy muszÄ… mieć niezerowy rozmiarwszystkie elementy muszÄ… mieć formułę, gdy którykolwiek posiadawszystkie elementy muszÄ… mieć nazwy, gdy którykolwiek posiadawszystkie elementy listy 'form' muszÄ… być dwustronnymi formuÅ‚amiwszystkie elementy obiektu "reStruct" muszÄ… mieć niezerowy rozmiarwszystkie elementy formuÅ‚y muszÄ… być listÄ… dwustronnych formuÅ‚ lub dwustronnymi formuÅ‚amiwszystkie dopasowane obiekty muszÄ… mieć tÄ™ samÄ… metodÄ™ oszacowaniawszystkie dopasowane obiekty muszÄ… używać tej samej liczby obserwacjiwszystkie zmienne użyte w 'formula' muszÄ… być w 'data'obiekt o dÅ‚ugoÅ›ci %d nie zgadza siÄ™ z czynnikiem Cholesky'egoobiekt o dÅ‚ugoÅ›ci %d nie zgadza siÄ™ z wymaganym rozmiarem parametruprzybliżona macierz kowariancji dla szacunkowych parametrów nie jest peÅ‚nej rangiargumenty sugerujÄ… różnÄ… liczbÄ™ blokówprzynajmniej dwa współczynniki sÄ… potrzebnerozszerzenie efektów losowych dostÄ™pne jedynie dla pojedynczego poziomurzÄ…d autoregresji musi być nieujemnÄ… liczbÄ… caÅ‚kowitÄ…można stworzyć jedynie obiekt "varFunc" z innego obiektu "varFunc", formuÅ‚y lub Å‚aÅ„cucha tekstowegomożna dopasować jedynie obiekty "lmList" z pojedynczÄ… zmiennÄ… grupujÄ…cÄ…można dopasować jedynie obiekty "nlsList" z pojedynczÄ… zmiennÄ… grupujÄ…cÄ…nie można uzyskać dostÄ™pu do macierzy obiektu bez nazwnie można uzyskać dostÄ™pu do macierzy niezainicjalizowanych obiektównie można uzyskać liczby kolumn niezainicjalizowanych obiektów bez nazwnie można obliczyć REML logarytmu funkcji wiarygodnoÅ›ci dla obiektów "gnls"Nie można zmienić 'form'.nie można zmienić współczynników przed zainicjowaniem lub gdy wszystkie parametry sÄ… ustalonenie można zmienić wymiarów zainicjalizowanego obiektu "pdMat"nie można zmienić dÅ‚ugoÅ›ci parametru zainicjowanego obiektu klasy "pdMat"nie można zmienić dÅ‚ugoÅ›ci parametru zainicjalizowanego obiektu "varComb"nie można zmienić dÅ‚ugoÅ›ci parametru zainicjowanych obiektównie można zmienić dÅ‚ugoÅ›ci 'object'nie można zmienić dÅ‚ugoÅ›ci zmiennej niezależnej w obiekcie "varFunc"nie można zmienić dÅ‚ugoÅ›ci parametru "varExp" po jego zainicjowaniunie można zmienić dÅ‚ugoÅ›ci parametru "varIdent" po jego zainicjowaniunie można zmienić dÅ‚ugoÅ›ci parametru "varStruct" po jego zainicjowaniunie można zmienić dÅ‚ugoÅ›ci parametru po jego zainicjowaniunie można zmienić dÅ‚ugoÅ›ci parametru obiektu "corStruct"nie można zmienić dÅ‚ugoÅ›ci parametru obiektu "corStruct"nie można zmienić dÅ‚ugoÅ›ci parametru obiektu "corStruct"nie można zmienić dÅ‚ugoÅ›ci parametru obiektu "corStruct"nie można zmienić dÅ‚ugoÅ›ci parametru obiektu "corStruct"nie można zmienić dÅ‚ugoÅ›ci parametru obiektu "corStruct"nie można zmienić dÅ‚ugoÅ›ci parametru obiektu "corStruct"nie można zmienić liczby kolumn zainicjowanego obiektunie można zmienić parametru gdy dÅ‚ugość parametru jest nieokreÅ›lonanie można zmienić parametru gdy dÅ‚ugość parametru jest nieokreÅ›lonanie można zrobić par tylko jednej zmiennejnie można wyznaczyć grup dla pożądanych poziomów w 'newdata'nie można wyodrÄ™bnić formuÅ‚ grup bez formuÅ‚ynie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektunie można wyodrÄ™bnić macierzy modelu bez formuÅ‚ynie można wyodrÄ™bnić parametrów niezainicjowanego obiektunie można wyodrÄ™bnić wymiarównie można wyodrÄ™bnić odwrotnoÅ›ci z niezainicjalizowanego obiektunie można wyodrÄ™bnić logarytmu macierzy z niezainicjalizowanego obiektunie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektu "pdCompSymm"nie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektu "pdIdent"nie można wyodrÄ™bnić macierzy z niezainicjalizowanego obiektunie można wyodrÄ™bnić macierzy z niezainicjalizowanymi wymiaraminie można ustalić wariancji we wszystkich grupachnie można uzyskać przedziałów ufnoÅ›ci na komponentach var-cov: %snie można uzyskać odwrotnoÅ›ci niezainicjalizowanego obiektunie można mieć powtórzonych nazw kolumn w obiekcie klasy "pdMat"nie można mieć zerowych odlegÅ‚oÅ›ci w "corSpatial"nie można uzyskać ograniczonych współczynników z niezainicjalizowanych wymiarównie można pominąć czynnika grupujÄ…cego bez 'form'nie można użyć anonimowej funkcji dla modelunie można użyć mniejszego poziomu grupowania dla "correlation" niż dla "random". ZastÄ™powanie pierwszego drugim.nie można użyć mniejszego poziomu grupowania dla 'correlation' niż dla 'random'. ZastÄ™powanie pierwszego drugim.poziom zapadania nie może być mniejszy niż poziom wyÅ›wietlania; ustawianie go do poziomu wyÅ›wietlaniaobliczone dopasowanie "gls" jest osobliwe, ranga %sstaÅ‚a w strukturze "varConstPower" musi być > 0zmienna niezależna musi być ramkÄ… danychzmienna niezależna musi być liczbÄ…zmienna niezależna musi mieć atrybut poziomu, gdy 'id' jest formułązmienna niezależna musi mieć atrybut poziomu, gdy 'idLabels' jest formułązmienna niezależna musi mieć atrybut poziomu, gdy grupy sÄ… obecnezmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów "corAR1"zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów "corARMA"zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów "corCAR1"zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów "corNatural"zmienna wyjaÅ›niajÄ…ca musi mieć unikalne wartoÅ›ci w obrÄ™bie grup dla obiektów "corSymm"argument danych przekazywany do metody "data.frame" dla 'getGroups' nie ma sensudane w wywoÅ‚aniu %s muszÄ… wyliczać siÄ™ do ramki danychstopnie swobody oraz wagi muszÄ… mieć tÄ™ samÄ… dÅ‚ugośćnazwy wymiarów 'value' muszÄ… siÄ™ zgadzać lub być wartoÅ›ciÄ… NULLnie wiadomo jak policzyć macierz korelacji obiektu %snie wiadomo jak uzyskać współczynniki dla obiektu %snie wiadomo jak uzyskać ograniczone współczynnikinie wiadomo jak uzyskać parametry obiektu %sefekt %s nie zostaÅ‚ dopasowanyefekty %s nie zostaÅ‚y dopasowaneefekty %s nie zostaÅ‚y dopasowaneelementy w 'object' muszÄ… być formuÅ‚ami lub obiektami klasy "pdMat"mniej obserwacji niż losowych efektów we wszystkich grupach w poziomie %spierwszy argument przekazywany do 'groupedData' musi być dwustronnÄ… formułąpierwszy argument przekazywany do 'nfGroupedData' musi być dwustronnÄ… formułąpierwszy argument przekazywany do 'nmGroupedData' musi być dwustronnÄ… formułąpierwszy model ma innÄ… zmiennÄ… zależnÄ… od resztydopasowane obiekty z różnymi staÅ‚ymi efektami.ustalone nazwy parametrów w 'varIdent' muszÄ… być podzbiorem nazw grupustalone parametry muszÄ… posiadać nazwy grupustalone parametry muszÄ… posiadać nazwy grup w 'varExp'ustalone parametry muszÄ… posiadać nazwy grup w 'varPower'ustalone parametry muszÄ… posiadać nazwy w 'varIdent'model staÅ‚ych efektów musi być formułą o formie "zmienna zależna ~ zmienna niezależna"'formuÅ‚a(obiekt)' musi zwracać formułęformuÅ‚y w 'fixed' muszÄ… mieć formÄ™ "parametr ~ wyrażenie".formuÅ‚y w 'params' muszÄ… mieć formÄ™ "parametr ~ wyrażenie".formuÅ‚y w 'random' muszÄ… mieć formÄ™ "parametr ~ wyrażenie"nazwa grupy nie zgadza siÄ™ z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych: %snazwy grup nie zgadzajÄ… siÄ™ z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych: %snazwy grup nie zgadzajÄ… siÄ™ z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych: %spoziomy grup nie zgadzajÄ… siÄ™ w 'random' oraz poczÄ…tkowych wartoÅ›ciach 'random' na poziomie %sIgnorowanie 'group' w formule "varFixed"ignorowanie argumentu 'form'ignorowanie argumentu 'nam'niespójne formuÅ‚y dla grup w "random" oraz "correlation"niespójne formuÅ‚y dla grup w 'random' oraz 'correlation'niespójne dÅ‚ugoÅ›ci dla 'random' oraz czynników grupujÄ…cychniezgodne dÅ‚ugoÅ›ci dla nazw obiektujednostka %s nie zostaÅ‚a użyta w dopasowaniupoczÄ…tkowa wartość parametrów "corLin" ma niepoprawny wymiarpoczÄ…tkowe wartoÅ›ci dla parametrów "corNatural" posiadajÄ… niepoprawne wymiarypoczÄ…tkowa wartość parametrów "corSpatial" ma niepoprawny wymiarpoczÄ…tkowa wartość parametrów "corSpher" ma niepoprawny wymiarpoczÄ…tkowe wartoÅ›ci dla parametrów "corSymm" posiadajÄ… niepoprawne wymiarypoczÄ…tkowa wartość dla "reStruct" zostaÅ‚a nadpisana w 'lme.lmList'poczÄ…tkowa wartość dla "varExp" powinna być dÅ‚ugoÅ›ci %dpoczÄ…tkowa wartość dla "varExp" powinna być dÅ‚ugoÅ›ci 1poczÄ…tkowa wartość dla "varIdent" powinna być dÅ‚ugoÅ›ci %dpoczÄ…tkowa wartość dla "varPower" powinna być dÅ‚ugoÅ›ci %dpoczÄ…tkowa wartość dla "varPower" powinna być dÅ‚ugoÅ›ci 1poczÄ…tkowa wartość 'range' mniejsza niż minimalna odlegÅ‚ość. Ustawianie jej na '1.1 * min(distance)'poczÄ…tkowa wartość dla 'reStruct' nadpisana w 'nlme.nlsList'poczÄ…tkowa wartość parametru posiada niepoprawnÄ… dÅ‚ugośćpoczÄ…tkowa wartość w "corCompSymm" musi być wiÄ™ksza niż %spoczÄ…tkowa wartość proporcji samorodka musi być pomiÄ™dzy 0 a 1poczÄ…tkowa wartość powinna być dÅ‚ugoÅ›ci %dpoczÄ…tkowe wartoÅ›ci dla "corNatural" nie definiujÄ… dodatnio okreÅ›lonej strukture korelacjipoczÄ…tkowe wartoÅ›ci dla "corNatural" muszÄ… być pomiÄ™dzy -1 a 1poczÄ…tkowe wartoÅ›ci dla "corSymm" nie definiujÄ… dodatnio okreÅ›lonej struktury korelacjipoczÄ…tkowe wartoÅ›ci dla "corSymm" muszÄ… być pomiÄ™dzy -1 a 1poczÄ…tkowe wartoÅ›ci dla 'varIdent' muszÄ… być > 0poczÄ…tkowe wartoÅ›ci muszÄ… posiadać nazwy grupy w 'varExp'poczÄ…tkowe wartoÅ›ci muszÄ… posiadać nazwy grupy w 'varIdent'poczÄ…tkowe wartoÅ›ci muszÄ… posiadać nazwy grup w 'varPower'inicjalizowany obiektu "pdCompSymm" nie jest dodatnio okreÅ›lonyniepoprawna formuÅ‚a dla grupdÅ‚ugość 'nam' nie jest spójna z wymiarami poczÄ…tkowej wartoÅ›cipoziom %s nie jest dozwolony dla %spoziomy %s nie sÄ… dozwolone dla %spoziomy %s nie sÄ… dozwolone dla %spoziom %s nie zgadza siÄ™ z formułąlista z poczÄ…tkowymi wartoÅ›ciami dla efektów losowych musi zawierać nazwy lub być dÅ‚ugoÅ›ci %dlogarytm funkcji wiarygodnoÅ›ci nie jest dostÄ™pny z dopasowaniami NULLmaksymalna liczba iteracji zostaÅ‚a osiÄ…gniÄ™ta bez uzyskania zbieżnoÅ›ciniezgodność pomiÄ™dzy nazwami grup oraz nazwami ustalonych wartoÅ›cibrakuje wywoÅ‚ywanego atrybutu w obiekcie "nlsList"formuÅ‚a modelu musi mieć formÄ™ "zmienna zależna ~ zmienna niezależna"model musi być formułą o formie "zmienna zależna ~ zmienna niezależna"modele z obiektami "corStruct" oraz/lub "varFunc" nie sÄ… dozwolonewiÄ™cej niż jeden stopieÅ„ swobody jest potrzebny jeÅ›li jeden czÅ‚on wynosi zero.rzÄ…d Å›redniej ruchomej musi być nieujemnÄ… liczbÄ… caÅ‚kowitÄ…wielokrotne poziomy nie sÄ… dozwolonepotrzeba dostarczyć nazw podczas inicjalizowania "pdCompSymm" z parametru bez formuÅ‚ypotrzeba podać nazwy gdy wystÄ™puje inicjalizowanie "pdIdent" z parametru bez formuÅ‚ypotrzeba podać nazwy gdy nastÄ™puje inicjowanie z macierzy lub parametrupotrzeba mieć formułę, gdy nie podano nazwprzypisane nazwy nie odpowiadajÄ… permutacji poprzednich nazwnazwy nie zgadzajÄ… siÄ™ w 'random' oraz poczÄ…tkowych wartoÅ›ciach dla 'random' na poziomie %snazwy 'value' nie sÄ… spójne z argumentem 'nam'nazwy obiektu oraz wartoÅ›ci muszÄ… siÄ™ zgadzaćnazwy wartoÅ›ci poczÄ…tkowych dla obiektu "varIdent" muszÄ… zawierać wszystkie oprócz jednego z poziomów warstwypotrzeba obiektu z komponentem wywoÅ‚aniapotrzeba danych aby wyliczyć zmiennÄ… wyjaÅ›niajÄ…cÄ…potrzeba danych do obliczenia zmiennej wyjaÅ›niajÄ…cej obiektu "corStruct"ujemna wartość 'control$nlmStepMax' - używanie wartoÅ›ci domyÅ›lnejujemne stopnie swobody nie sÄ… dozwolonebrak współczynników do dopasowaniabrak skondensowanego modelu liniowegobrak domyÅ›lnej metody dla uzyskania pierwiastka z obiektu "pdMat"brak stopni swobody na potrzeby oszacowania odchylenia standardowegonie okreÅ›lono stopni swobodynie sÄ… dozwolone żadne efekty po prawej stronie fomuÅ‚ybrak dopasowanego obiektu "lme"brak poczÄ…tkowych wartoÅ›ci dla parametrów modelubrak dostÄ™pnego modelu wariogramu w 'showModel = TRUE'nieistniejÄ…ca grupa w 'newdata'nieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›cinieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›ci w "varExp"nieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›ci w "varPower"nieistniejÄ…ce nazwy grup dla poczÄ…tkowych wartoÅ›ci w 'varIdent'zażądano nieistniejÄ…cej grupy w 'subset'.zażądano nieistniejÄ…cych grup w 'subset'nieistniejÄ…cy poziom %snieistniejÄ…ce poziomy %snieistniejÄ…ce poziomy %sniezaimplementowane dla obiektów "nlme"niezaimplementowane dla wielu poziomów zagnieżdżenialiczba kolumn w wartoÅ›ciach poczÄ…tkowych dla losowego komponentu na poziomie %s powinna wynosić %dliczba wierszy w wartoÅ›ciach poczÄ…tkowych dla losowego komponentu na poziomie %s powinna wynosić %dformuÅ‚a obiektu musi mieć formÄ™ "zmienna zależna ~ zmienna niezależna"obiekt musi dziedziczyć z "data.frame"obiekt musi dziedziczyć z klasy "gls"obiekt musi dziedziczyć z klasy "lmList"obiekt musi dziedziczyć z klasy "lme"obiekty muszÄ… mieć komponent "call" lub atrybutobiekty muszÄ… mieć współczynniki z tymi samymi nazwami wierszyobiekty muszÄ… dziedziczyć z klas "lm","lmList", "lme","nlme","nlsList", lub "nls"tylko jeden poziom wyÅ›wietlenia jest dozwolonytylko jeden poziom jest dozwolony dla przewidywaÅ„tylko jeden poziom jest dozwolony w 'gapply'tylko jeden poziom jest dostÄ™pny w 'gsummary'tylko jeden poziom grupowania jest dozwolonyjedynie reszty sÄ… dozwolonetylko reszty oraz efekty losowe sÄ… dozwolonetylko pojedynczy efekt jest dozwolony po lewej stronie 'form'jedynie pojedynczy poziom jest dozwolonyparametr w strukturze "corCompSymm" musi mieć wartość na moduÅ‚ < 1parametr w strukturze AR(1) musi być pomiÄ™dzy -1 a 1parametr w strukturze AR(1) musi być pomiÄ™dzy 0 a 1parametry w strukturze ARMA muszÄ… mieć wartość na moduÅ‚ < 1metoda rysujÄ…ca wykres zostaÅ‚a zaimplementowana jedynie do porównywania modelizakres musi być > 0 w poczÄ…tkowej wartoÅ›ci "corShere"prawa strona pierwszego argumentu musi być wyrażeniem warunkowymdrugi argument musi być obiektem "groupedData"drugi argument przekazywany do 'groupedData' musi dziedziczyć z klasy "data.frame"niektóre dopasowane obiekty zostaÅ‚y usuniÄ™te ponieważ zmienne zależne różniÄ… siÄ™ od pierwszego modelupoczÄ…tkowe oszacowania muszÄ… mieć nazwy gdy brakuje 'params'wartoÅ›ci poczÄ…tkowe parametrów nie majÄ… poprawnej dÅ‚ugoÅ›ciwartoÅ›ci poczÄ…tkowe dla losowych efektów muszÄ… zawierać w sobie poziomy gruppoczÄ…tkowe wartoÅ›ci dla efektów losowych powinny być listÄ… lub macierzÄ…poczÄ…tkowe wartoÅ›ci dla komponentu 'fixed' nie majÄ… poprawnej dÅ‚ugoÅ›ciwartoÅ›ci poczÄ…tkowe dla losowych komponentów powinny być listÄ… macierzyczynnik skracajÄ…cy krok zostaÅ‚ zredukowany poniżej minimum w kroku NLSczynnik skracajÄ…cy krok zostaÅ‚ zredukowany poniżej minimum w kroku PNLSczÅ‚on %s nie zostaÅ‚ dopasowanyczÅ‚ony %s nie zostaÅ‚y dopasowaneczÅ‚ony %s nie zostaÅ‚y dopasowaneczÅ‚ony mogÄ… być tylko liczbami caÅ‚kowitymi lub tekstamiwszystkie czÅ‚ony muszÄ… mieć ten sam mianownik DFniezdefiniowany poziom %s zapadania dla %sniezdefiniowany poziom %s wyÅ›wietlenia dla %sniezdefiniowana grupa zadeklarowana w 'subset'unikalne wartoÅ›ci zmiennej wyjaÅ›niajÄ…cej dla obiektów "corSymm" muszÄ… być ciÄ…giem kolejnych liczb caÅ‚kowitychunikalne wartoÅ›ci zmiennej wyjaÅ›niajÄ…cej dla obiektów "corNatural" muszÄ… być ciÄ…giem kolejnych liczb caÅ‚kowitychbłędne poziomy grupydane x-y przekazywane do 'splom' zostaÅ‚y jakoÅ› uszkodzonenlme/inst/po/pl/LC_MESSAGES/nlme.mo0000644000176000001440000000350612203635654016332 0ustar ripleyusersÞ• tÌ4!F3h7œ0Ô%3+!_98»ô9-I4wH¬4õ/*CZ&ž?Å@  All parameters must be less than 1 in absolute valueCoefficient matrix not invertibleFirst observation on an individual must have a doseHaven't written the compound symmetry case for this yetSingularity in backsolve at level %ld, block %ldUnable to form Cholesky decompositionUnable to form eigenvalue-eigenvector decompositionUnknown spatial correlation classanalytic gradient is not available with compound symmetryanalytic gradient is not available with matrix logarithmProject-Id-Version: nlme 3.1-104 Report-Msgid-Bugs-To: POT-Creation-Date: 2013-08-17 08:12+0100 PO-Revision-Date: Last-Translator: Åukasz Daniel Language-Team: Åukasz Daniel Language: pl_PL MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit na-Revision-Date: 2012-05-29 07:55+0100 Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Poedit-SourceCharset: iso-8859-1 X-Generator: Poedit 1.5.3 Wszystkie parametry muszÄ… być na moduÅ‚ mniejsze niż 1Macierz współczynników nie jest odwracalnaPierwsza obserwacja jednostki musi mieć zamkniÄ™cieJak na razie nie zostaÅ‚a napisany przypadek dla tej zÅ‚ożonej symetriiOsobliwość w 'backsolve' na poziomie %ld, blok %ldNie można uformować dekompozycji Cholesky'egoNie można uformować dekompozycji wartość wÅ‚asna-wektor wÅ‚asnyNieznana klasa przestrzennej korelacjigradient analityczny nie jest dostÄ™pny dla zÅ‚ożonej symetriigradient analityczny nie jest dostÄ™pny z algorytmem macierzowymnlme/inst/po/en@quot/0000755000176000001440000000000012131311354014235 5ustar ripleyusersnlme/inst/po/en@quot/LC_MESSAGES/0000755000176000001440000000000012203635654016036 5ustar ripleyusersnlme/inst/po/en@quot/LC_MESSAGES/R-nlme.mo0000644000176000001440000011665112203635654017537 0ustar ripleyusersÞ•;ô ¥Ì`0a#’$¶)Û" (*It$’+·;ã)IHg3°ä@ B>c5¢/ØJESE™0ßO1`-’*À.ë! 2< 3o £ &¼ ã "ù "!?!+\! ˆ!%©!Ï!,ì!"!8"Z"-t"¢"&·"9Þ"##<#$W#G|#.Ä#$ó#&$.?$-n$1œ$,Î$)û$,%%R%#j%Ž%(®% ×%>ø%=7&2u&¨&$Å&6ê&:!'&\'6ƒ'/º'6ê'=!(P_(7°(;è(1$)7V)AŽ)FÐ)**$B*>g*3¦*cÚ*;>+<z+0·+1è+J,7e,,Q²,9-<>->{-5º-$ð-9.GO.I—.Já.>,/>k/?ª/?ê/C*0Bn0A±0?ó0<31Ap1B²1$õ162/Q222+´21à23703Fh3C¯3@ó36447k4"£49Æ415725*j5D•5*Ú5.6o46o¤6V7'k71“7Å7ä7<þ7B;8=~8D¼8E9EG9H9EÖ9H:-e:8“:)Ì:<ö:13;2e;1˜;,Ê;8÷;=0<;n<=ª<=è<2&=,Y=C†=&Ê=2ñ=4$>.Y>?ˆ>%È>:î>;)?;e?‚¡?O$@&t@›@´@>Ì@> A6JA%A%§A8ÍA<B<CB:€B9»B8õB1.C0`C3‘C3ÅC2ùCW,D:„D+¿D6ëD5"E$XEW}E8ÕETF5cF)™F0ÃF2ôF2'G9ZG”G?¯G8ïG"(HOKH+›H8ÇH3I*4I/_I1I<ÁI@þI3?JsJOJLßJ:,K)gKI‘KHÛK7$L$\L\L"ÞL M6"M1YM'‹M³MÊMDäM.)NXN+xN¤N&»N4âNO*6O6aO8˜O8ÑO' P(2P*[P"†P.©PRØPO+Q0{Q%¬Q$ÒQ'÷Q$R1DR2vR_©R S&(S"OS$rS"—SºS)ÑS2ûS.TBHT5‹T5ÁT:÷T12U-dUB’U,ÕU=VI@V;ŠV<ÆV<W@@WDWFÆW5 X6CX(zX(£X+ÌX$øX!Y$?Y`dYbÅY(Z%;Z7aZ0™[#Ê[$î[)\"=\ `\*\¬\$Ê\/ï\;])[]…]H£]7ì] $^HE^$Ž^F³^9ú^34_Rh_M»_M `8W`W`9è`1"a2Ta6‡a%¾a6äa7bSb*pb›b&µb&Üb c/$c(Tc)}c §c0Èc"ùc)dFd5ddšd.³dIâd',eTe(seKœe2èe(f*Df2of1¢f5Ôf4 g-?g0mgžg'ºg#âg,h$3h>Xh=—h2Õhi$%i:Ji:…i&Ài6çi/j:Nj=‰jPÇj7k;Pk9Œk7ÆkAþkF@l*‡l$²l>×l3mcJm;®m<êm0'n1XnJŠn7Õn oQ&o9xo<²o>ïo5.p(dp9pGÇpIqJYq>¤q>ãq?"r?brC¢rBærA)s?ks<«sAèsB*t$mt:’t/Ít2ýt+0u1\uŽu7¬uFäuC+v@ov6°v7çv"w9Bw1|w7®w*æwDx.Vx.…xo´xw$yVœy'óy1zMzlz@†zFÇz={DL{E‘{E×{H|Ef|L¬|-ù|8'}-`}<Ž}1Ë}2ý}10~,b~<~=Ì~? AJAŒ2Î,€G.€&v€6€8Ô€2 ?@%€>¦?å?%‚‚e‚Wè‚*@ƒkƒˆƒ>¤ƒFãƒ:*„%e„%‹„8±„<ê„<'…:d…9Ÿ…<Ù…1†0H†3y†3­†2á†[‡Bp‡+³‡6߇5ˆ$LˆWqˆ8ɈT‰5W‰-‰4»‰6ð‰6'Š9^Š˜ŠC³Š8÷Š"0‹OS‹+£‹8Ï‹3Œ*<Œ/gŒ1—Œ<ÉŒ@3G{O—Lç:4Ž)oŽI™ŽPãŽ?4$t\™"ö 6:1q'£ËâDü.A‘p‘+‘¼‘&Ó‘8ú‘"3’*V’6’8¸’<ñ’+.“,Z“*‡“"²“.Õ“R”OW”0§”%Ø”$þ”'#•$K•1p•2¢•_Õ•5–&T–&{–(¢–"Ë–î–)—6/—f—B€—5×5ù—:/˜1j˜-œ˜Bʘ, ™A:™I|™?Æ™<š<Cš@€šHÁšF ›5Q›6‡›(¾›(ç›+œ$<œ!aœ(ƒœ`¬œb p%ƒ¢Ý Ipr{5º. %ƒPã ûÙáVÑÊn~–’Ú  Æ4sö> F_Â/Ë9‘°ò".êØ<@ëa9žþ6DÁ3ÍXEˆHj‡ ¦§æ\Wc2ýÒw=¶T-ex kð,Ã)z1ß'ôY·&;tâvQÿ²¸ä¬uÇ5)K]-®èiü»8—/ÀZ÷“Õ˜4‰#çÄR¼("ÌoÓÏ0íÅ10Ÿd*¥ ”A|:U(£úŠ‹­¯M½J×^*Þ}¤G‚„[ LÛOb:´3'2…È7%¡±ì€Éà#m6Œfï+ñ7œg8ù! `¨õµÔøBÐS«h峪ly!ó&¿?îC$N†;Îq ™›Ž$¹š¾©Öé,+Ü•"corStruct" object must have a "fixed" attribute"pdMat" element must have a formula"pdMat" elements must have a formula%s and %s must have the same group levels%s can have at most two components%s can only be a list or numeric%s can only have names "const" and "power"%s is not a valid effect name%s is not a valid object for "pdMat"%s must have group names in 'varConstPower'%s not available for plotting%s not available for plotting%s not found in data%s not found in data%s not matched%s not matched%s without "primary" can only be used with fits of "groupedData" objects'FUN' can only be a function or a list of functions'Id' must be between 0 and 1'L' must have at most %d column'L' must have at most %d columns'Terms' must be between 1 and %d'asTable' can only be used with balanced 'groupedData' objects'asTable' cannot be used with multilevel grouped data'data' in %s call must evaluate to a data frame'data' must be a "groupedData" object if 'formula' does not include groups'data' must be a "groupedData" object if 'groups' argument is missing'data' must be given explicitly to use 'nls' to get initial estimates'data' must be given explicitly to use 'nlsList''data' must inherit from "groupedData" class if 'random' does not define groups'distance' and 'object' have incompatible lengths'fixed' must be a formula or list of formulae'form' and 'nam' have incompatible lengths'form' and 'pdClass' have incompatible lengths'form' argument must be a formula'form' can only be a formula or a list of formulae'form' can only be a formula, or a list of formulas'form' must be a formula'form' must be a formula when not NULL'form' must be a list'form' must be a one-sided formula'form' must be a two-sided formula'form' must have a covariate'form' must have all components as formulas'form' not consistent with 'nam''id' can only be a formula or numeric'id' must be between 0 and 1'idLabels' can only be a formula or a vector'idLabels' of incorrect length'lme.lmList' will redefine 'data''model' must be a formula'nam' and 'pdClass' have incompatible lengths'nam' must be a list'nint' is not consistent with 'breaks''nlme.nlsList' will redefine 'fixed', 'data', and 'start''object' has not been Initialize()d'object' must be a formula'object' must be a list or a formula'object' must be a list when not missing, not a matrix, and not numeric'params' must be a formula or list of formulae'pdClass' must be a character vector'preserve' must be a two-sided formula'random' must be a formula or list of formulae'range' must be > 0 in "corLin" initial value'range' must be > 0 in "corSpatial" initial value'start' must have a component called 'fixed''subset' can only be character or integer'subset' ignored with single grouping factor'subset' must be a list'value' must be a one sided formula'value' must be a square matrix'which' can only be character or integer'which' must be between 1 and %dAn lm fit failed, probably because a factor only had one levelL may only involve fixed effects with the same denominator DFLNone of the arguments specify more than one blockLength of names should be %dREML comparisons are not meaningful.all arguments to 'varComb' must be of class "varFunc".all elements in the argument must generate "pdMat" objectsall elements must have a non-zero sizeall elements must have formulas when any has a formulaall elements must have names when any has namesall elements of 'form' list must be two-sided formulasall elements of a "reStruct" object must have a non-zero sizeall elements of formula must be list of two-sided formulae or two-sided formulaeall fitted objects must have the same estimation methodall fitted objects must use the same number of observationsall variables used in 'formula' must be in 'data'an object of length %d does not match a Cholesky factoran object of length %d does not match the required parameter sizeapproximate covariance matrix for parameter estimates not of full rankarguments imply different number of blocksat least two coefficients are neededaugmentation of random effects only available for single levelautoregressive order must be a non-negative integercan only construct "varFunc" object from another "varFunc" object, a formula, or a character stringcan only fit "lmList" objects with single grouping variablecan only fit "nlsList" objects with single grouping variablecannot access the matrix of object without namescannot access the matrix of uninitialized objectscannot access the number of columns of uninitialized objects without namescannot calculate REML log-likelihood for "gnls" objectscannot change 'form'cannot change coefficients before initialization or when all parameters are fixedcannot change dimensions on an initialized "pdMat" objectcannot change parameter length of initialized "pdMat" objectcannot change parameter length of initialized "varComb" objectcannot change parameter length of initialized objectscannot change the length of 'object'cannot change the length of covariate in "varFunc" objectcannot change the length of the "varExp" parameter after initializationcannot change the length of the "varIdent" parameter after initializationcannot change the length of the "varStruct" parameter after initializationcannot change the length of the parameter after initializationcannot change the length of the parameter of a "corAR1" objectcannot change the length of the parameter of a "corARMA" objectcannot change the length of the parameter of a "corCAR1" objectcannot change the length of the parameter of a "corCompSymm" objectcannot change the length of the parameter of a "corNatural" objectcannot change the length of the parameter of a "corStruct" objectcannot change the length of the parameter of a "corSymm" objectcannot change the number of columns on an initialized objectcannot change the parameter when ength of parameters is undefinedcannot change the parameter when length of parameters is undefinedcannot do pairs of just one variablecannot evaluate groups for desired levels on 'newdata'cannot extract groups formula without a formulacannot extract matrix from an uninitialized objectcannot extract model matrix without formulacannot extract parameters of uninitialized objectcannot extract the dimensionscannot extract the inverse from an uninitialized objectcannot extract the log of the determinant from an uninitialized objectcannot extract the matrix from an uninitialized "pdCompSymm" objectcannot extract the matrix from an uninitialized "pdIdent" objectcannot extract the matrix from an uninitialized objectcannot extract the matrix with uninitialized dimensionscannot fix variances in all groupscannot get confidence intervals on var-cov components: %scannot get the inverse of an uninitialized objectcannot have duplicated column names in a "pdMat" objectcannot have zero distances in "corSpatial"cannot obtain constrained coefficients with uninitialized dimensionscannot omit grouping factor without 'form'cannot use an anonymous function for the modelcannot use smaller level of grouping for "correlation" than for "random". Replacing the former with the latter.cannot use smaller level of grouping for 'correlation' than for 'random'. Replacing the former with the latter.collapsing level cannot be smaller than display level; setting it to the display levelcomputed "gls" fit is singular, rank %sconstant in "varConstPower" structure must be > 0covariate must be a data framecovariate must be numericcovariate must have a level attribute when 'id' is a formulacovariate must have a level attribute when 'idLabels' is a formulacovariate must have a level attribute when groups are presentcovariate must have unique values within groups for "corAR1" objectscovariate must have unique values within groups for "corARMA" objectscovariate must have unique values within groups for "corCAR1" objectscovariate must have unique values within groups for "corNatural" objectscovariate must have unique values within groups for "corSymm" objectsdata argument to "data.frame" method for 'getGroups' does not make sensedata in %s call must evaluate to a data framedegrees of freedom and weights must have the same lengthdimnames of 'value' must match or be NULLdo not know how to calculate correlation matrix of %s objectdo not know how to get coefficients for %s objectdo not know how to obtain constrained coefficientsdo not know how to obtain parameters of %s objecteffect %s not matchedeffects %s not matchedelements in 'object' must be formulas or "pdMat" objectsfewer observations than random effects in all level %s groupsfirst argument to 'groupedData' must be a two-sided formulafirst argument to 'nfGroupedData' must be a two-sided formulafirst argument to 'nmGroupedData' must be a two-sided formulafirst model has a different response from the restfitted objects with different fixed effects.fixed parameter names in 'varIdent' must be a subset of group namesfixed parameters must have group namesfixed parameters must have group names in 'varExp'fixed parameters must have group names in 'varPower'fixed parameters must have names in 'varIdent'fixed-effects model must be a formula of the form "resp ~ pred"formula(object) must return a formulaformulae in 'fixed' must be of the form "parameter ~ expr"formulae in 'params' must be of the form "parameter ~ expr"formulae in 'random' must be of the form "parameter ~ expr"group name not matched in starting values for random effects: %sgroup names not matched in starting values for random effects: %sgroups levels mismatch in 'random' and starting values for 'random' at level %signoring 'group' in "varFixed" formulaignoring argument 'form'ignoring argument 'nam'incompatible formulas for groups in "random" and "correlation"incompatible formulas for groups in 'random' and 'correlation'incompatible lengths for 'random' and grouping factorsincompatible lengths for object namesindividual %s was not used in the fitinitial value for "corLin" parameters of wrong dimensioninitial value for "corNatural" parameters of wrong dimensioninitial value for "corSpatial" parameters of wrong dimensioninitial value for "corSpher" parameters of wrong dimensioninitial value for "corSymm" parameters of wrong dimensioninitial value for "reStruct" overwritten in 'lme.lmList'initial value for "varExp" should be of length %dinitial value for "varExp" should be of length 1initial value for "varIdent" should be of length %dinitial value for "varPower" should be of length %dinitial value for "varPower" should be of length 1initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)initial value for 'reStruct' overwritten in 'nlme.nlsList'initial value for parameter of wrong lengthinitial value in "corCompSymm" must be greater than %sinitial value of nugget ratio must be between 0 and 1initial value should be of length %dinitial values for "corNatural" do not define a positive-definite correlation structureinitial values for "corNatural" must be between -1 and 1initial values for "corSymm" do not define a positive-definite correlation structureinitial values for "corSymm" must be between -1 and 1initial values for 'varIdent' must be > 0initial values must have group names in 'varExp'initial values must have group names in 'varIdent'initial values must have group names in 'varPower'initializing "pdCompSymm" object is not positive definiteinvalid formula for groupslength of 'nam' not consistent with dimensions of initial valuelevel %s not allowed for %slevels %s not allowed for %slevel of %s does not match formulalist with starting values for random effects must have names or be of length %dlog-likelihood not available with NULL fitsmaximum number of iterations reached without convergencemismatch between group names and fixed values namesmissing call attribute in "nlsList" objectmodel formula must be of the form "resp ~ pred"model must be a formula of the form "resp ~ pred"models with "corStruct" and/or "varFunc" objects not allowedmore than one degree of freedom is needed when one them is zero.moving average order must be a non-negative integermultiple levels not allowedmust give names when initializing "pdCompSymm" from parameter without a formulamust give names when initializing "pdIdent" from parameter without a formulamust give names when initializing from matrix or parametermust have formula when no names are givennames being assigned do not correspond to a permutation of previous namesnames mismatch in 'random' and starting values for 'random' at level %snames of 'value' are not consistent with 'nam' argumentnames of object and value must matchnames of starting value for "varIdent" object must contain all but one of the stratum levelsneed an object with call componentneed data to calculate covariateneed data to calculate covariate of "corStruct" objectnegative control$nlmStepMax - using default valuenegative degrees of freedom not allowedno coefficients to fitno condensed linear modelno default method for extracting the square root of a "pdMat" objectno degrees of freedom for estimating std. dev.no degrees of freedom specifiedno effects allowed in right side of formulano fitted "lme" objectno initial values for model parametersno model variogram available with 'showModel = TRUE'nonexistent group in 'newdata'nonexistent group names for initial valuesnonexistent group names for initial values in "varExp"nonexistent group names for initial values in "varPower"nonexistent group names for initial values in 'varIdent'nonexistent group requested in 'subset'nonexistent groups requested in 'subset'nonexistent level %snonexistent levels %snot implemented for "nlme" objectsnot implemented for multiple levels of nestingnumber of columns in starting values for random component at level %s should be %dnumber of rows in starting values for random component at level %s should be %dobject formula must be of the form "resp ~ pred"object must inherit from "data.frame"object must inherit from class "gls"object must inherit from class "lmList"object must inherit from class "lme"objects must have a "call" component or attributeobjects must have coefficients with same row namesobjects must inherit from classes "gls", "gnls","lm","lmList", "lme","nlme","nlsList", or "nls"only one display level allowedonly one level allowed for predictionsonly one level allowed in 'gapply'only one level allowed in 'gsummary'only one level of grouping allowedonly residuals allowedonly residuals and random effects allowedonly single effects allowed in left side of 'form'only single level allowedparameter in "corCompSymm" structure must be < 1 in absolute valueparameter in AR(1) structure must be between -1 and 1parameter in CAR(1) structure must be between 0 and 1parameters in ARMA structure must be < 1 in absolute valueplot method only implemented for comparing modelsrange must be > 0 in "corSpher" initial valueright-hand side of first argument must be a conditional expressionsecond argument must be a groupedData objectsecond argument to 'groupedData' must inherit from data.framesome fitted objects deleted because response differs from the first modelstarting estimates must have names when 'params' is missingstarting values for parameters are not of the correct lengthstarting values for random effects must include group levelsstarting values for random effects should be a list, or a matrixstarting values for the 'fixed' component are not the correct lengthstarting values for the random components should be a list of matricesstep halving factor reduced below minimum in NLS stepstep halving factor reduced below minimum in PNLS stepterm %s not matchedterms %s not matchedterms can only be integers or charactersterms must all have the same denominator DFundefined collapsing level %s for %sundefined display level %s for %sundefined group declared in 'subset'unique values of the covariate for "corSymm" objects must be a sequence of consecutive integersunique values of the covariate for "corNatural" objects must be a sequence of consecutive integerswrong group levelsx-y data to splom got botched somehowProject-Id-Version: nlme 3.1-111 POT-Creation-Date: 2013-08-17 08:12 PO-Revision-Date: 2013-08-17 08:12 Last-Translator: Automatically generated Language-Team: none MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: en Plural-Forms: nplurals=2; plural=(n != 1); "corStruct" object must have a "fixed" attribute"pdMat" element must have a formula"pdMat" elements must have a formula%s and %s must have the same group levels%s can have at most two components%s can only be a list or numeric%s can only have names "const" and "power"%s is not a valid effect name%s is not a valid object for "pdMat"%s must have group names in ‘varConstPower’%s not available for plotting%s not available for plotting%s not found in data%s not found in data%s not matched%s not matched%s without "primary" can only be used with fits of "groupedData" objects‘FUN’ can only be a function or a list of functions‘Id’ must be between 0 and 1‘L’ must have at most %d column‘L’ must have at most %d columns‘Terms’ must be between 1 and %d‘asTable’ can only be used with balanced ‘groupedData’ objects‘asTable’ cannot be used with multilevel grouped data‘data’ in %s call must evaluate to a data frame‘data’ must be a "groupedData" object if ‘formula’ does not include groups‘data’ must be a "groupedData" object if ‘groups’ argument is missing‘data’ must be given explicitly to use ‘nls’ to get initial estimates‘data’ must be given explicitly to use ‘nlsList’‘data’ must inherit from "groupedData" class if ‘random’ does not define groups‘distance’ and ‘object’ have incompatible lengths‘fixed’ must be a formula or list of formulae‘form’ and ‘nam’ have incompatible lengths‘form’ and ‘pdClass’ have incompatible lengths‘form’ argument must be a formula‘form’ can only be a formula or a list of formulae‘form’ can only be a formula, or a list of formulas‘form’ must be a formula‘form’ must be a formula when not NULL‘form’ must be a list‘form’ must be a one-sided formula‘form’ must be a two-sided formula‘form’ must have a covariate‘form’ must have all components as formulas‘form’ not consistent with ‘nam’‘id’ can only be a formula or numeric‘id’ must be between 0 and 1‘idLabels’ can only be a formula or a vector‘idLabels’ of incorrect length‘lme.lmList’ will redefine ‘data’‘model’ must be a formula‘nam’ and ‘pdClass’ have incompatible lengths‘nam’ must be a list‘nint’ is not consistent with ‘breaks’‘nlme.nlsList’ will redefine ‘fixed’, ‘data’, and ‘start’‘object’ has not been Initialize()d‘object’ must be a formula‘object’ must be a list or a formula‘object’ must be a list when not missing, not a matrix, and not numeric‘params’ must be a formula or list of formulae‘pdClass’ must be a character vector‘preserve’ must be a two-sided formula‘random’ must be a formula or list of formulae‘range’ must be > 0 in "corLin" initial value‘range’ must be > 0 in "corSpatial" initial value‘start’ must have a component called ‘fixed’‘subset’ can only be character or integer‘subset’ ignored with single grouping factor‘subset’ must be a list‘value’ must be a one sided formula‘value’ must be a square matrix‘which’ can only be character or integer‘which’ must be between 1 and %dAn lm fit failed, probably because a factor only had one levelL may only involve fixed effects with the same denominator DFLNone of the arguments specify more than one blockLength of names should be %dREML comparisons are not meaningful.all arguments to ‘varComb’ must be of class "varFunc".all elements in the argument must generate "pdMat" objectsall elements must have a non-zero sizeall elements must have formulas when any has a formulaall elements must have names when any has namesall elements of ‘form’ list must be two-sided formulasall elements of a "reStruct" object must have a non-zero sizeall elements of formula must be list of two-sided formulae or two-sided formulaeall fitted objects must have the same estimation methodall fitted objects must use the same number of observationsall variables used in ‘formula’ must be in ‘data’an object of length %d does not match a Cholesky factoran object of length %d does not match the required parameter sizeapproximate covariance matrix for parameter estimates not of full rankarguments imply different number of blocksat least two coefficients are neededaugmentation of random effects only available for single levelautoregressive order must be a non-negative integercan only construct "varFunc" object from another "varFunc" object, a formula, or a character stringcan only fit "lmList" objects with single grouping variablecan only fit "nlsList" objects with single grouping variablecannot access the matrix of object without namescannot access the matrix of uninitialized objectscannot access the number of columns of uninitialized objects without namescannot calculate REML log-likelihood for "gnls" objectscannot change ‘form’cannot change coefficients before initialization or when all parameters are fixedcannot change dimensions on an initialized "pdMat" objectcannot change parameter length of initialized "pdMat" objectcannot change parameter length of initialized "varComb" objectcannot change parameter length of initialized objectscannot change the length of ‘object’cannot change the length of covariate in "varFunc" objectcannot change the length of the "varExp" parameter after initializationcannot change the length of the "varIdent" parameter after initializationcannot change the length of the "varStruct" parameter after initializationcannot change the length of the parameter after initializationcannot change the length of the parameter of a "corAR1" objectcannot change the length of the parameter of a "corARMA" objectcannot change the length of the parameter of a "corCAR1" objectcannot change the length of the parameter of a "corCompSymm" objectcannot change the length of the parameter of a "corNatural" objectcannot change the length of the parameter of a "corStruct" objectcannot change the length of the parameter of a "corSymm" objectcannot change the number of columns on an initialized objectcannot change the parameter when ength of parameters is undefinedcannot change the parameter when length of parameters is undefinedcannot do pairs of just one variablecannot evaluate groups for desired levels on ‘newdata’cannot extract groups formula without a formulacannot extract matrix from an uninitialized objectcannot extract model matrix without formulacannot extract parameters of uninitialized objectcannot extract the dimensionscannot extract the inverse from an uninitialized objectcannot extract the log of the determinant from an uninitialized objectcannot extract the matrix from an uninitialized "pdCompSymm" objectcannot extract the matrix from an uninitialized "pdIdent" objectcannot extract the matrix from an uninitialized objectcannot extract the matrix with uninitialized dimensionscannot fix variances in all groupscannot get confidence intervals on var-cov components: %scannot get the inverse of an uninitialized objectcannot have duplicated column names in a "pdMat" objectcannot have zero distances in "corSpatial"cannot obtain constrained coefficients with uninitialized dimensionscannot omit grouping factor without ‘form’cannot use an anonymous function for the modelcannot use smaller level of grouping for "correlation" than for "random". Replacing the former with the latter.cannot use smaller level of grouping for ‘correlation’ than for ‘random’. Replacing the former with the latter.collapsing level cannot be smaller than display level; setting it to the display levelcomputed "gls" fit is singular, rank %sconstant in "varConstPower" structure must be > 0covariate must be a data framecovariate must be numericcovariate must have a level attribute when ‘id’ is a formulacovariate must have a level attribute when ‘idLabels’ is a formulacovariate must have a level attribute when groups are presentcovariate must have unique values within groups for "corAR1" objectscovariate must have unique values within groups for "corARMA" objectscovariate must have unique values within groups for "corCAR1" objectscovariate must have unique values within groups for "corNatural" objectscovariate must have unique values within groups for "corSymm" objectsdata argument to "data.frame" method for ‘getGroups’ does not make sensedata in %s call must evaluate to a data framedegrees of freedom and weights must have the same lengthdimnames of ‘value’ must match or be NULLdo not know how to calculate correlation matrix of %s objectdo not know how to get coefficients for %s objectdo not know how to obtain constrained coefficientsdo not know how to obtain parameters of %s objecteffect %s not matchedeffects %s not matchedelements in ‘object’ must be formulas or "pdMat" objectsfewer observations than random effects in all level %s groupsfirst argument to ‘groupedData’ must be a two-sided formulafirst argument to ‘nfGroupedData’ must be a two-sided formulafirst argument to ‘nmGroupedData’ must be a two-sided formulafirst model has a different response from the restfitted objects with different fixed effects.fixed parameter names in ‘varIdent’ must be a subset of group namesfixed parameters must have group namesfixed parameters must have group names in ‘varExp’fixed parameters must have group names in ‘varPower’fixed parameters must have names in ‘varIdent’fixed-effects model must be a formula of the form "resp ~ pred"formula(object) must return a formulaformulae in ‘fixed’ must be of the form "parameter ~ expr"formulae in ‘params’ must be of the form "parameter ~ expr"formulae in ‘random’ must be of the form "parameter ~ expr"group name not matched in starting values for random effects: %sgroup names not matched in starting values for random effects: %sgroups levels mismatch in ‘random’ and starting values for ‘random’ at level %signoring ‘group’ in "varFixed" formulaignoring argument ‘form’ignoring argument ‘nam’incompatible formulas for groups in "random" and "correlation"incompatible formulas for groups in ‘random’ and ‘correlation’incompatible lengths for ‘random’ and grouping factorsincompatible lengths for object namesindividual %s was not used in the fitinitial value for "corLin" parameters of wrong dimensioninitial value for "corNatural" parameters of wrong dimensioninitial value for "corSpatial" parameters of wrong dimensioninitial value for "corSpher" parameters of wrong dimensioninitial value for "corSymm" parameters of wrong dimensioninitial value for "reStruct" overwritten in ‘lme.lmList’initial value for "varExp" should be of length %dinitial value for "varExp" should be of length 1initial value for "varIdent" should be of length %dinitial value for "varPower" should be of length %dinitial value for "varPower" should be of length 1initial value for ‘range’ less than minimum distance. Setting it to 1.1 * min(distance)initial value for ‘reStruct’ overwritten in ‘nlme.nlsList’initial value for parameter of wrong lengthinitial value in "corCompSymm" must be greater than %sinitial value of nugget ratio must be between 0 and 1initial value should be of length %dinitial values for "corNatural" do not define a positive-definite correlation structureinitial values for "corNatural" must be between -1 and 1initial values for "corSymm" do not define a positive-definite correlation structureinitial values for "corSymm" must be between -1 and 1initial values for ‘varIdent’ must be > 0initial values must have group names in ‘varExp’initial values must have group names in ‘varIdent’initial values must have group names in ‘varPower’initializing "pdCompSymm" object is not positive definiteinvalid formula for groupslength of ‘nam’ not consistent with dimensions of initial valuelevel %s not allowed for %slevels %s not allowed for %slevel of %s does not match formulalist with starting values for random effects must have names or be of length %dlog-likelihood not available with NULL fitsmaximum number of iterations reached without convergencemismatch between group names and fixed values namesmissing call attribute in "nlsList" objectmodel formula must be of the form "resp ~ pred"model must be a formula of the form "resp ~ pred"models with "corStruct" and/or "varFunc" objects not allowedmore than one degree of freedom is needed when one them is zero.moving average order must be a non-negative integermultiple levels not allowedmust give names when initializing "pdCompSymm" from parameter without a formulamust give names when initializing "pdIdent" from parameter without a formulamust give names when initializing from matrix or parametermust have formula when no names are givennames being assigned do not correspond to a permutation of previous namesnames mismatch in ‘random’ and starting values for ‘random’ at level %snames of ‘value’ are not consistent with ‘nam’ argumentnames of object and value must matchnames of starting value for "varIdent" object must contain all but one of the stratum levelsneed an object with call componentneed data to calculate covariateneed data to calculate covariate of "corStruct" objectnegative control$nlmStepMax - using default valuenegative degrees of freedom not allowedno coefficients to fitno condensed linear modelno default method for extracting the square root of a "pdMat" objectno degrees of freedom for estimating std. dev.no degrees of freedom specifiedno effects allowed in right side of formulano fitted "lme" objectno initial values for model parametersno model variogram available with ‘showModel = TRUE’nonexistent group in ‘newdata’nonexistent group names for initial valuesnonexistent group names for initial values in "varExp"nonexistent group names for initial values in "varPower"nonexistent group names for initial values in ‘varIdent’nonexistent group requested in ‘subset’nonexistent groups requested in ‘subset’nonexistent level %snonexistent levels %snot implemented for "nlme" objectsnot implemented for multiple levels of nestingnumber of columns in starting values for random component at level %s should be %dnumber of rows in starting values for random component at level %s should be %dobject formula must be of the form "resp ~ pred"object must inherit from "data.frame"object must inherit from class "gls"object must inherit from class "lmList"object must inherit from class "lme"objects must have a "call" component or attributeobjects must have coefficients with same row namesobjects must inherit from classes "gls", "gnls","lm","lmList", "lme","nlme","nlsList", or "nls"only one display level allowedonly one level allowed for predictionsonly one level allowed in ‘gapply’only one level allowed in ‘gsummary’only one level of grouping allowedonly residuals allowedonly residuals and random effects allowedonly single effects allowed in left side of ‘form’only single level allowedparameter in "corCompSymm" structure must be < 1 in absolute valueparameter in AR(1) structure must be between -1 and 1parameter in CAR(1) structure must be between 0 and 1parameters in ARMA structure must be < 1 in absolute valueplot method only implemented for comparing modelsrange must be > 0 in "corSpher" initial valueright-hand side of first argument must be a conditional expressionsecond argument must be a groupedData objectsecond argument to ‘groupedData’ must inherit from data.framesome fitted objects deleted because response differs from the first modelstarting estimates must have names when ‘params’ is missingstarting values for parameters are not of the correct lengthstarting values for random effects must include group levelsstarting values for random effects should be a list, or a matrixstarting values for the ‘fixed’ component are not the correct lengthstarting values for the random components should be a list of matricesstep halving factor reduced below minimum in NLS stepstep halving factor reduced below minimum in PNLS stepterm %s not matchedterms %s not matchedterms can only be integers or charactersterms must all have the same denominator DFundefined collapsing level %s for %sundefined display level %s for %sundefined group declared in ‘subset’unique values of the covariate for "corSymm" objects must be a sequence of consecutive integersunique values of the covariate for "corNatural" objects must be a sequence of consecutive integerswrong group levelsx-y data to splom got botched somehownlme/inst/po/en@quot/LC_MESSAGES/nlme.mo0000644000176000001440000000306012203635654017325 0ustar ripleyusersÞ• tÌ4!F3h7œ0Ô%3+!_98»Xô4M!‚3¤7Ø0%A3g!›9½8÷  All parameters must be less than 1 in absolute valueCoefficient matrix not invertibleFirst observation on an individual must have a doseHaven't written the compound symmetry case for this yetSingularity in backsolve at level %ld, block %ldUnable to form Cholesky decompositionUnable to form eigenvalue-eigenvector decompositionUnknown spatial correlation classanalytic gradient is not available with compound symmetryanalytic gradient is not available with matrix logarithmProject-Id-Version: nlme 3.1-111 Report-Msgid-Bugs-To: POT-Creation-Date: 2013-08-17 08:12+0100 PO-Revision-Date: 2013-08-17 08:12+0100 Last-Translator: Automatically generated Language-Team: none Language: en MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); All parameters must be less than 1 in absolute valueCoefficient matrix not invertibleFirst observation on an individual must have a doseHaven't written the compound symmetry case for this yetSingularity in backsolve at level %ld, block %ldUnable to form Cholesky decompositionUnable to form eigenvalue-eigenvector decompositionUnknown spatial correlation classanalytic gradient is not available with compound symmetryanalytic gradient is not available with matrix logarithmnlme/inst/po/ko/0000755000176000001440000000000012203635654013247 5ustar ripleyusersnlme/inst/po/ko/LC_MESSAGES/0000755000176000001440000000000012203635654015034 5ustar ripleyusersnlme/inst/po/ko/LC_MESSAGES/R-nlme.mo0000644000176000001440000001156112203635654016527 0ustar ripleyusersÞ•$<5\001)b)Œ¶ Óô #@#Uy$”¹ Ñ7ò*9?>y>¸C÷B;A~?À<1\6Ž5Å8û 46UŒ£"º<Ý´ OÏ D 0d 6• :Ì / 07 6h /Ÿ ,Ï 0ü :- 2h :› QÖ $(IMK—GãL+KxJÄH<XP•OæF6K}GÉ3SE ™&º:áT   #$ " !"corStruct" object must have a "fixed" attribute%s and %s must have the same group levels%s not found in data%s not found in data'Id' must be between 0 and 1'Terms' must be between 1 and %d'form' must be a formula'form' must be a list'id' must be between 0 and 1'nam' must be a list'object' has not been Initialize()d'object' must be a formula'pdClass' must be a character vector'subset' must be a list'which' must be between 1 and %dall fitted objects must have the same estimation methodcannot change 'form'cannot change dimensions on an initialized "pdMat" objectcannot change the length of the parameter after initializationcannot change the length of the parameter of a "corAR1" objectcannot change the length of the parameter of a "corCompSymm" objectcannot change the length of the parameter of a "corNatural" objectcannot change the length of the parameter of a "corStruct" objectcannot change the length of the parameter of a "corSymm" objectcovariate must be a data framedo not know how to calculate correlation matrix of %s objectdo not know how to obtain parameters of %s objectinitial value in "corCompSymm" must be greater than %sinitial value of nugget ratio must be between 0 and 1maximum number of iterations reached without convergenceneed data to calculate covariateneed data to calculate covariate of "corStruct" objectno coefficients to fitno fitted "lme" objectnot implemented for "nlme" objectsstarting values for parameters are not of the correct lengthProject-Id-Version: nlme 3.1-105 POT-Creation-Date: 2013-08-17 08:12 PO-Revision-Date: 2013-08-16 18:52-0600 Last-Translator: Chel Hee Lee Language-Team: R Development Translation Teams (Korean) Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Poedit-SourceCharset: utf-8 X-Generator: Poedit 1.5.4 "corStruct" ê°ì²´ëŠ” 반드시 "fixed" ì†ì„±ì„ 가지고 있어야 합니다%s와 %sì€ ë°˜ë“œì‹œ ê°™ì€ ê·¸ë£¹ ìˆ˜ì¤€ë“¤ì„ ê°€ì ¸ì•¼ 합니다ë°ì´í„°ë¡œë¶€í„° %s를 ì°¾ì„ ìˆ˜ 없습니다'Id'는 반드시 0ê³¼ 1 사ì´ì— 있어야 합니다'Terms'는 반드시 1ê³¼ %d 사ì´ì— 있어야 합니다'form'ì€ ë°˜ë“œì‹œ formula ì´ì–´ì•¼ 합니다'form'ì€ ë°˜ë“œì‹œ 리스트ì´ì–´ì•¼ 합니다'id'는 반드시 0ê³¼ 1 사ì´ì— 있어야 합니다'nam'ì€ ë°˜ë“œì‹œ 리스트ì´ì–´ì•¼ 합니다'object'ê°€ 초기화 ë˜ì§€ 않았습니다'object'는 반드시 formulaì´ì–´ì•¼ 합니다'pdClass'는 반드시 문ìží˜• 벡터ì´ì–´ì•¼ 합니다'subset'ì€ ë°˜ë“œì‹œ 리스트ì´ì–´ì•¼ 합니다'which'는 반드시 1ê³¼ %d 사ì´ì— 있어야 합니다모든 ê°ì²´ë“¤ì´ ê°™ì€ ì¶”ì •ë°©ë²•ì„ ì´ìš©í•˜ì—¬ ì í•©ë˜ì–´ì•¼ 합니다'form'를 변경할 수 ì—†ìŠµë‹ˆë‹¤ì´ˆê¸°í™”ëœ "pdMat" ê°ì²´ì˜ ì°¨ì›ì •보를 변경할 수 없습니다초기화 ì´í›„ì—는 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다"corAR1" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다"corCompSymm" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다"corNatural" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다"corStruct" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 없습니다"corSymm" ê°ì²´ì˜ 파ë¼ë¯¸í„°ì˜ 길ì´ë¥¼ 변경할 수 ì—†ìŠµë‹ˆë‹¤ê³µë³€ëŸ‰ì€ ë°˜ë“œì‹œ ë°ì´í„°í”„레임ì´ì–´ì•¼ 합니다%s ê°ì²´ì˜ ìƒê´€í–‰ë ¬ì„ 어떻게 계산해야 í•  ì§€ 알 수 없습니다%s ê°ì²´ì˜ 파ë¼ë¯¸í„°ë“¤ì„ 어떻게 얻어야 í• ì§€ 알 수 없습니다"corCompSymm" ë‚´ì˜ ì´ˆê¸°ê°’ì€ ë°˜ë“œì‹œ %s 보다 커야 합니다nugget ratioì˜ ì´ˆê¸°ê°’ì€ ë°˜ë“œì‹œ 0ê³¼ 1 사ì´ì— 있어야 합니다수렴하지 않고 ì§€ì •ëœ ìµœëŒ€ ë°˜ë³µìˆ˜ì— ë„ë‹¬í•˜ì˜€ìŠµë‹ˆë‹¤ê³µë³€ëŸ‰ì„ ê³„ì‚°í•  ë°ì´í„°ê°€ 필요합니다"corStruct" ê°ì²´ì˜ ê³µë³€ëŸ‰ì„ ê³„ì‚°í•˜ê¸° 위한 ë°ì´í„°ê°€ 필요합니다ì í•©í•  계수가 없습니다ì í•©ëœ "lme" ê°ì²´ê°€ 없습니다"nlme" ê°ì²´ë“¤ì— 대하여 구현ë˜ì§€ 않았습니다파ë¼ë¯¸í„°ë“¤ì— 대한 ì‹œìž‘ê°’ë“¤ì— ëŒ€í•œ 길ì´ê°€ 올바르지 않습니다nlme/inst/po/ko/LC_MESSAGES/nlme.mo0000644000176000001440000000327112203635654016327 0ustar ripleyusersÞ• l ¼ð4ñ!&3H7|%´3Ú!908jУMt,ÂCïV3+Š5¶5ìK"Jn  All parameters must be less than 1 in absolute valueCoefficient matrix not invertibleFirst observation on an individual must have a doseHaven't written the compound symmetry case for this yetUnable to form Cholesky decompositionUnable to form eigenvalue-eigenvector decompositionUnknown spatial correlation classanalytic gradient is not available with compound symmetryanalytic gradient is not available with matrix logarithmProject-Id-Version: nlme 3.1-105 Report-Msgid-Bugs-To: POT-Creation-Date: 2013-08-17 08:12+0100 PO-Revision-Date: 2013-08-16 18:27-0600 Last-Translator: Chel Hee Lee Language-Team: R Development Translation Teams (Korean) Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Poedit-SourceCharset: utf-8 X-Generator: Poedit 1.5.4 모든 파ë¼ë¯¸í„°ë“¤ì˜ ì ˆëŒ€ê°’ì´ ë°˜ë“œì‹œ 1 보다 작아야 합니다가역ì ì´ì§€ ì•Šì€ ê³„ìˆ˜í–‰ë ¬ìž…ë‹ˆë‹¤ê°œì¸ì˜ 첫번째 ê´€ì¸¡ê°’ì€ ë°˜ë“œì‹œ dose ì´ì–´ì•¼ 합니다ì´ê²ƒì— 대하여 compound symmetryì˜ ê²½ìš°ëŠ” ì•„ì§ ìž‘ì„±ë˜ì§€ 않았습니다콜레스키 분해를 í•  수 없습니다고유값-고유벡터 분해를 í•  수 없습니다알 수 없는 spatial correlation í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤analytic gradient는 compound symmetry와 함께 사용할 수 없습니다analytic gradient는 matrix logarithmê³¼ 함께 사용할 수 없습니다nlme/inst/po/fr/0000755000176000001440000000000012131311354013231 5ustar ripleyusersnlme/inst/po/fr/LC_MESSAGES/0000755000176000001440000000000012203635654015032 5ustar ripleyusersnlme/inst/po/fr/LC_MESSAGES/R-nlme.mo0000644000176000001440000012560512203635654016532 0ustar ripleyusersÞ•:ì £¼H0I#z$ž)Ã"í *1\$z+Ÿ;Ë)1HO3˜Ì@é *>K5Š/ÀJðE;E0ÇOø1H-z*¨.Ó! 2$ 3W ‹ &¤ Ë "á "!'!+D! p!%‘!·!,Ô!"! "B"-\"Š"&Ÿ"9Æ"##$#$?#Gd#.¬#$Û#&$.'$-V$1„$,¶$)ã$, %:%#R%v%(–% ¿%=à%2&Q&$n&6“&:Ê&&'6,'/c'6“'=Ê'P(7Y(;‘(1Í(7ÿ(A7)Fy)*À)$ë)>*3O*cƒ*;ç*<#+0`+1‘+JÃ+7,F,Q[,9­,<ç,>$-5c-$™-9¾-Gø-I@.JŠ.>Õ.>/?S/?“/CÓ/B0AZ0?œ0<Ü0A1B[1$ž16Ã1/ú12*2+]21‰2»27Ù2F3CX3@œ36Ý374"L49o41©47Û4*5D>5*ƒ5.®5oÝ5oM6V½6'71<7n77<§7Bä7='8De8Eª8Eð8H69E9HÅ9-:8<:)u:<Ÿ:1Ü:2;1A;,s;8 ;=Ù;;<=S<=‘<2Ï<,=C/=&s=2š=4Í=.>?1>%q>:—>;Ò>;?‚J?OÍ?&@D@]@>u@>´@6ó@%*A%PA8vA<¯A<ìA:)B9dB8žB1×B0 C3:C3nC2¢CWÕC:-D+hD6”D5ËD$EW&E8~ET·E5 F)BF0lF2F2ÐF9G=G?XG8˜G"ÑGOôG+DH8pH3©H*ÝH/I18I<jI@§I3èIJO8JLˆJ:ÕJ)KI:KH„K7ÍK$L\*L"‡L ªL6ËL1M'4M\MsMDM.ÒMN+!NMN&dN4‹NÀN*ßN6 O8AO8zO'³O(ÛO*P"/P.RPRPOÔP0$Q%UQ${Q' Q$ÈQ1íQ2R_RR²R&ÑR"øR$S"@ScS)zS2¤S×SBñS54T5jT: T1ÛT- UB;U,~U=«UIéU;3V<oV<¬V@éVD*WFoW5¶W6ìW(#X(LX+uX$¡X!ÆX$èX` YbnYÑY%äY¯ Z2º[+í[5\3O\&ƒ\*ª\0Õ\(]*/]6Z]B‘]=Ô]^Q1^<ƒ^#À^Fä^*+_HV_JŸ_:ê_Q%`Kw`hÃ`=,aUja4Àa6õa-,b3Zb'Žb;¶b<òb/c7Lc„c-Ÿc+Íc ùc=dXd2wd#ªd4Îd!e %eFe2de—e)±e7Ûe7fKf+jfX–f7ïf7'g/_g7gJÇgJh0]hIŽhLØh%i.Bi$qi=–i'Ôi^üi.[j$Šj(¯jAØjDk4_kW”k?ìkO,lJ|lsÇlO;mF‹mTÒmI'nIqnf»n8"o"[oM~o8ÌoypPpQÐpN"q:qqR¬qHÿqHreerBËrQsU`sJ¶s,tI.tNxtPÇtQuEjuD°uEõuE;vIvHËvGwE\wA¢wVäwR;x1ŽxFÀx@y>HyI‡y=Ñy$z94zLnzG»zD{:H{Mƒ{5Ñ{R|8Z|G“|1Û|X }Ef}8¬}Žå}Žt~i4m<¢:ß!€J<€P‡€OØ€V(WW×Z/‚`Š‚Më‚\9ƒF–ƒV݃=4„3r„3¦„0Ú„( …J4…T…HÔ…K†Ki†3µ†7é†_!‡6‡D¸‡Fý‡=DˆF‚ˆ)ɈKóˆF?‰L†‰¸Ó‰eŒŠ-òŠ ‹=‹GY‹G¡‹Dé‹2.Œ3aŒI•ŒNߌM.L|SÉ@Ž9^Ž;˜Ž9ÔŽ>=Mw‹D9HB‚KÅ+‘w=‘Gµ‘eý‘Dc’6¨’Eß’G%“Gm“Bµ“#ø“?”L\”.©”gØ”D@•C…•DÉ•0–7?–9w–K±–Mý–?K—‹—m¨—m˜U„˜?Ú˜J™Ve™?¼™7ü™c4š-˜š8ÆšQÿš@Q›1’›Ä›â›KœCMœ%‘œA·œùœ6II “6´BëD.žFsž+ºž*æž+Ÿ%=Ÿ7cŸg›Ÿe 2i .œ 'Ë *ó '¡=F¡F„¡eË¡%1¢.W¢)†¢)°¢+Ú¢ £6'£;^£š£O¶£B¤BI¤FŒ¤FÓ¤=¥OX¥3¨¥@Ü¥V¦Kt¦FÀ¦V§`^§J¿§Y ¨Wd¨Y¼¨9©JP©Q›©&í©(ª =ªn^ªoͪ=«,X«ê”u‘½‹˜ÑäÅbü¦Aß&Ÿ:eñ’L#,òÍð `?hÄ\°. ·Çþ0Ë~Àœ—â¤nXŠ%×1 ô>ý ™‚)jT‰…3m}©¥*/H® wMžCƒ±i ¨õ KU1È{É«*¹v=:ìÓ ØqSÙ+´çÖ³ˆyxr@5á2š/¿pî<+ܵzP970­JÁ-5] íù 6€oN3-' ºè¾ÿ#Ì–úÚ(Ô²¶ÎàgI‡¯§ë„ïdå.Æ“a¬4Z$,öf&ÞŒ9ÒG!kã'Ž(!æDóР¸^|÷B›ª•Q$Ý2 4tûÛÕ8c»_;6%sÏ"8Vé[W"7ÃR¢OÂ)lÊøF†E¡£Y¼"corStruct" object must have a "fixed" attribute"pdMat" element must have a formula"pdMat" elements must have a formula%s and %s must have the same group levels%s can have at most two components%s can only be a list or numeric%s can only have names "const" and "power"%s is not a valid effect name%s is not a valid object for "pdMat"%s must have group names in 'varConstPower'%s not available for plotting%s not available for plotting%s not found in data%s not found in data%s not matched%s not matched%s without "primary" can only be used with fits of "groupedData" objects'FUN' can only be a function or a list of functions'Id' must be between 0 and 1'L' must have at most %d column'L' must have at most %d columns'Terms' must be between 1 and %d'asTable' can only be used with balanced 'groupedData' objects'asTable' cannot be used with multilevel grouped data'data' in %s call must evaluate to a data frame'data' must be a "groupedData" object if 'formula' does not include groups'data' must be a "groupedData" object if 'groups' argument is missing'data' must be given explicitly to use 'nls' to get initial estimates'data' must be given explicitly to use 'nlsList''data' must inherit from "groupedData" class if 'random' does not define groups'distance' and 'object' have incompatible lengths'fixed' must be a formula or list of formulae'form' and 'nam' have incompatible lengths'form' and 'pdClass' have incompatible lengths'form' argument must be a formula'form' can only be a formula or a list of formulae'form' can only be a formula, or a list of formulas'form' must be a formula'form' must be a formula when not NULL'form' must be a list'form' must be a one-sided formula'form' must be a two-sided formula'form' must have a covariate'form' must have all components as formulas'form' not consistent with 'nam''id' can only be a formula or numeric'id' must be between 0 and 1'idLabels' can only be a formula or a vector'idLabels' of incorrect length'lme.lmList' will redefine 'data''model' must be a formula'nam' and 'pdClass' have incompatible lengths'nam' must be a list'nint' is not consistent with 'breaks''nlme.nlsList' will redefine 'fixed', 'data', and 'start''object' has not been Initialize()d'object' must be a formula'object' must be a list or a formula'object' must be a list when not missing, not a matrix, and not numeric'params' must be a formula or list of formulae'pdClass' must be a character vector'preserve' must be a two-sided formula'random' must be a formula or list of formulae'range' must be > 0 in "corLin" initial value'range' must be > 0 in "corSpatial" initial value'start' must have a component called 'fixed''subset' can only be character or integer'subset' ignored with single grouping factor'subset' must be a list'value' must be a one sided formula'value' must be a square matrix'which' can only be character or integer'which' must be between 1 and %dL may only involve fixed effects with the same denominator DFLNone of the arguments specify more than one blockLength of names should be %dREML comparisons are not meaningful.all arguments to 'varComb' must be of class "varFunc".all elements in the argument must generate "pdMat" objectsall elements must have a non-zero sizeall elements must have formulas when any has a formulaall elements must have names when any has namesall elements of 'form' list must be two-sided formulasall elements of a "reStruct" object must have a non-zero sizeall elements of formula must be list of two-sided formulae or two-sided formulaeall fitted objects must have the same estimation methodall fitted objects must use the same number of observationsall variables used in 'formula' must be in 'data'an object of length %d does not match a Cholesky factoran object of length %d does not match the required parameter sizeapproximate covariance matrix for parameter estimates not of full rankarguments imply different number of blocksat least two coefficients are neededaugmentation of random effects only available for single levelautoregressive order must be a non-negative integercan only construct "varFunc" object from another "varFunc" object, a formula, or a character stringcan only fit "lmList" objects with single grouping variablecan only fit "nlsList" objects with single grouping variablecannot access the matrix of object without namescannot access the matrix of uninitialized objectscannot access the number of columns of uninitialized objects without namescannot calculate REML log-likelihood for "gnls" objectscannot change 'form'cannot change coefficients before initialization or when all parameters are fixedcannot change dimensions on an initialized "pdMat" objectcannot change parameter length of initialized "pdMat" objectcannot change parameter length of initialized "varComb" objectcannot change parameter length of initialized objectscannot change the length of 'object'cannot change the length of covariate in "varFunc" objectcannot change the length of the "varExp" parameter after initializationcannot change the length of the "varIdent" parameter after initializationcannot change the length of the "varStruct" parameter after initializationcannot change the length of the parameter after initializationcannot change the length of the parameter of a "corAR1" objectcannot change the length of the parameter of a "corARMA" objectcannot change the length of the parameter of a "corCAR1" objectcannot change the length of the parameter of a "corCompSymm" objectcannot change the length of the parameter of a "corNatural" objectcannot change the length of the parameter of a "corStruct" objectcannot change the length of the parameter of a "corSymm" objectcannot change the number of columns on an initialized objectcannot change the parameter when ength of parameters is undefinedcannot change the parameter when length of parameters is undefinedcannot do pairs of just one variablecannot evaluate groups for desired levels on 'newdata'cannot extract groups formula without a formulacannot extract matrix from an uninitialized objectcannot extract model matrix without formulacannot extract parameters of uninitialized objectcannot extract the dimensionscannot extract the inverse from an uninitialized objectcannot extract the log of the determinant from an uninitialized objectcannot extract the matrix from an uninitialized "pdCompSymm" objectcannot extract the matrix from an uninitialized "pdIdent" objectcannot extract the matrix from an uninitialized objectcannot extract the matrix with uninitialized dimensionscannot fix variances in all groupscannot get confidence intervals on var-cov components: %scannot get the inverse of an uninitialized objectcannot have duplicated column names in a "pdMat" objectcannot have zero distances in "corSpatial"cannot obtain constrained coefficients with uninitialized dimensionscannot omit grouping factor without 'form'cannot use an anonymous function for the modelcannot use smaller level of grouping for "correlation" than for "random". Replacing the former with the latter.cannot use smaller level of grouping for 'correlation' than for 'random'. Replacing the former with the latter.collapsing level cannot be smaller than display level; setting it to the display levelcomputed "gls" fit is singular, rank %sconstant in "varConstPower" structure must be > 0covariate must be a data framecovariate must be numericcovariate must have a level attribute when 'id' is a formulacovariate must have a level attribute when 'idLabels' is a formulacovariate must have a level attribute when groups are presentcovariate must have unique values within groups for "corAR1" objectscovariate must have unique values within groups for "corARMA" objectscovariate must have unique values within groups for "corCAR1" objectscovariate must have unique values within groups for "corNatural" objectscovariate must have unique values within groups for "corSymm" objectsdata argument to "data.frame" method for 'getGroups' does not make sensedata in %s call must evaluate to a data framedegrees of freedom and weights must have the same lengthdimnames of 'value' must match or be NULLdo not know how to calculate correlation matrix of %s objectdo not know how to get coefficients for %s objectdo not know how to obtain constrained coefficientsdo not know how to obtain parameters of %s objecteffect %s not matchedeffects %s not matchedelements in 'object' must be formulas or "pdMat" objectsfewer observations than random effects in all level %s groupsfirst argument to 'groupedData' must be a two-sided formulafirst argument to 'nfGroupedData' must be a two-sided formulafirst argument to 'nmGroupedData' must be a two-sided formulafirst model has a different response from the restfitted objects with different fixed effects.fixed parameter names in 'varIdent' must be a subset of group namesfixed parameters must have group namesfixed parameters must have group names in 'varExp'fixed parameters must have group names in 'varPower'fixed parameters must have names in 'varIdent'fixed-effects model must be a formula of the form "resp ~ pred"formula(object) must return a formulaformulae in 'fixed' must be of the form "parameter ~ expr"formulae in 'params' must be of the form "parameter ~ expr"formulae in 'random' must be of the form "parameter ~ expr"group name not matched in starting values for random effects: %sgroup names not matched in starting values for random effects: %sgroups levels mismatch in 'random' and starting values for 'random' at level %signoring 'group' in "varFixed" formulaignoring argument 'form'ignoring argument 'nam'incompatible formulas for groups in "random" and "correlation"incompatible formulas for groups in 'random' and 'correlation'incompatible lengths for 'random' and grouping factorsincompatible lengths for object namesindividual %s was not used in the fitinitial value for "corLin" parameters of wrong dimensioninitial value for "corNatural" parameters of wrong dimensioninitial value for "corSpatial" parameters of wrong dimensioninitial value for "corSpher" parameters of wrong dimensioninitial value for "corSymm" parameters of wrong dimensioninitial value for "reStruct" overwritten in 'lme.lmList'initial value for "varExp" should be of length %dinitial value for "varExp" should be of length 1initial value for "varIdent" should be of length %dinitial value for "varPower" should be of length %dinitial value for "varPower" should be of length 1initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)initial value for 'reStruct' overwritten in 'nlme.nlsList'initial value for parameter of wrong lengthinitial value in "corCompSymm" must be greater than %sinitial value of nugget ratio must be between 0 and 1initial value should be of length %dinitial values for "corNatural" do not define a positive-definite correlation structureinitial values for "corNatural" must be between -1 and 1initial values for "corSymm" do not define a positive-definite correlation structureinitial values for "corSymm" must be between -1 and 1initial values for 'varIdent' must be > 0initial values must have group names in 'varExp'initial values must have group names in 'varIdent'initial values must have group names in 'varPower'initializing "pdCompSymm" object is not positive definiteinvalid formula for groupslength of 'nam' not consistent with dimensions of initial valuelevel %s not allowed for %slevels %s not allowed for %slevel of %s does not match formulalist with starting values for random effects must have names or be of length %dlog-likelihood not available with NULL fitsmaximum number of iterations reached without convergencemismatch between group names and fixed values namesmissing call attribute in "nlsList" objectmodel formula must be of the form "resp ~ pred"model must be a formula of the form "resp ~ pred"models with "corStruct" and/or "varFunc" objects not allowedmore than one degree of freedom is needed when one them is zero.moving average order must be a non-negative integermultiple levels not allowedmust give names when initializing "pdCompSymm" from parameter without a formulamust give names when initializing "pdIdent" from parameter without a formulamust give names when initializing from matrix or parametermust have formula when no names are givennames being assigned do not correspond to a permutation of previous namesnames mismatch in 'random' and starting values for 'random' at level %snames of 'value' are not consistent with 'nam' argumentnames of object and value must matchnames of starting value for "varIdent" object must contain all but one of the stratum levelsneed an object with call componentneed data to calculate covariateneed data to calculate covariate of "corStruct" objectnegative control$nlmStepMax - using default valuenegative degrees of freedom not allowedno coefficients to fitno condensed linear modelno default method for extracting the square root of a "pdMat" objectno degrees of freedom for estimating std. dev.no degrees of freedom specifiedno effects allowed in right side of formulano fitted "lme" objectno initial values for model parametersno model variogram available with 'showModel = TRUE'nonexistent group in 'newdata'nonexistent group names for initial valuesnonexistent group names for initial values in "varExp"nonexistent group names for initial values in "varPower"nonexistent group names for initial values in 'varIdent'nonexistent group requested in 'subset'nonexistent groups requested in 'subset'nonexistent level %snonexistent levels %snot implemented for "nlme" objectsnot implemented for multiple levels of nestingnumber of columns in starting values for random component at level %s should be %dnumber of rows in starting values for random component at level %s should be %dobject formula must be of the form "resp ~ pred"object must inherit from "data.frame"object must inherit from class "gls"object must inherit from class "lmList"object must inherit from class "lme"objects must have a "call" component or attributeobjects must have coefficients with same row namesobjects must inherit from classes "gls", "gnls","lm","lmList", "lme","nlme","nlsList", or "nls"only one display level allowedonly one level allowed for predictionsonly one level allowed in 'gapply'only one level allowed in 'gsummary'only one level of grouping allowedonly residuals allowedonly residuals and random effects allowedonly single effects allowed in left side of 'form'only single level allowedparameter in "corCompSymm" structure must be < 1 in absolute valueparameter in AR(1) structure must be between -1 and 1parameter in CAR(1) structure must be between 0 and 1parameters in ARMA structure must be < 1 in absolute valueplot method only implemented for comparing modelsrange must be > 0 in "corSpher" initial valueright-hand side of first argument must be a conditional expressionsecond argument must be a groupedData objectsecond argument to 'groupedData' must inherit from data.framesome fitted objects deleted because response differs from the first modelstarting estimates must have names when 'params' is missingstarting values for parameters are not of the correct lengthstarting values for random effects must include group levelsstarting values for random effects should be a list, or a matrixstarting values for the 'fixed' component are not the correct lengthstarting values for the random components should be a list of matricesstep halving factor reduced below minimum in NLS stepstep halving factor reduced below minimum in PNLS stepterm %s not matchedterms %s not matchedterms can only be integers or charactersterms must all have the same denominator DFundefined collapsing level %s for %sundefined display level %s for %sundefined group declared in 'subset'unique values of the covariate for "corSymm" objects must be a sequence of consecutive integersunique values of the covariate for "corNatural" objects must be a sequence of consecutive integerswrong group levelsx-y data to splom got botched somehowProject-Id-Version: nlme 3.1-65 Report-Msgid-Bugs-To: bugs@r-project.org POT-Creation-Date: 2013-08-17 08:12 PO-Revision-Date: 2012-10-03 16:45+0100 Last-Translator: Philippe Grosjean Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Poedit 1.5.3 l'objet "corStruct" doit avoir un attribut "fixed"l'élément "pdMat" doit contenir une formuleles éléments de "pdMat" doivent contenir des formules%s et %s doivent avoir les mêmes niveaux de groupes%s peut avoir jusqu'à deux composantes%s ne peut qu'être une liste, ou un nombre%s ne peut avoir que les noms "const" et "power"%s n'est pas un nom valide pour un effet%s n'est pas un objet correct pour "pdMat"%s doit avoir des noms de groupes dans 'varConstPower'%s non disponible pour le graphe%s non disponibles pour le graphe%s non trouvé dans les données%s non trouvé dans les données%s non assorti%s non assortis%s sans "primary" ne peut être utilisé avec des ajustement d'objets "groupedData"'FUN' ne peut qu'être une fonction ou une liste de fonctions'id' doit être compris entre 0 et 1'L' doit avoir au moins %d colonne'L' doit avoir au moins %d colonnes'Terms' doivent être compris entre 1 et %d'asTable' ne peut être utilisé qu'avec des objets 'groupedData' balancés'asTable' ne peut être utilisé avec des données à groupements multiniveaux'data dans l'appel %s doit être évalué comme un data.frame'data' doit être dans un objet "groupedData" si 'formula' n'inclus pas de groupes'data' doit être un objet "groupedData" si l'argument 'groups' est manquant'data' doit être fourni de manière explicite pour utiliser 'nls' afin d'obtenir les estimateurs initiaux'data' doit être fourni explicitement pour utiliser 'nlsList''data' doit hériter de la classe "groupedData" si 'random' ne définit pas les groupes'distance' et 'object' ont des tailles incompatibles'fixed' doit être une formule ou une liste de formules'form' et 'nam' ont des tailles incompatibles'form' et 'pdClass' ont des longueurs incompatiblesl'argument 'form' doit être une formule'form' ne peut qu'être une formule ou une liste de formules'form' ne peut être qu'une formule, ou une liste de formules'form' doit être une formule'form' doit être une formule, lorsqu'il n'est pas NULL.'form' doit être une liste'form' doit être une formule à un seul membre'formf doit être une formule à deux membres'form' doit avoir une covariable'form' doit avoir tous ses composantes sous forme de formules'form' non conforme avec 'nam''id' doit être une formule ou une valeur numérique'id' doit être compris entre 0 et 1'idLabels' ne peut être qu'une formule ou un vecteur'idLabels' de longueur incorrecte'lme.lmList' va redéfinir 'data''model' doit être une formule'nam' et 'pdClass' ont des longueurs incompatibles'nam' doit être une liste'nint' n'est pas consistant avec 'breaks''nlme.nlsList' va redéfinir 'fixed', 'data', et 'start''object' n'a pas été initialisé ; utilisez Initialize()'object' doit être une formule'object' doit être une liste ou une formule'object' doit être une liste, lorsqu'il n'est pas manquant, pas une matrice ou un nombre'params' doit être une formule ou une liste de formules'pdClass' doit être un vecteur de chaînes de caractères'preserve' doit être une formule à deux membres'random' doit être une formule ou une liste de formulesl'étendue ('range') doit être > 0 pour les valeurs initiales dans "corLin"l'étendue des valeurs initiales ('range') dans "corSpatial" doit être > 0 'start' doit avoir une composante nommée 'fixed''subset' ne peut qu'être une chaîne de caractères ou une valeur numérique'subset' ignoré lors de l'utilisation d'un seul facteur pour le regroupement'subset' doit être une liste'value' doit être une formule à un seul membre'value' doit être une matrice carrée'which' ne peut être qu'une chaîne de caractères ou un entier'which' doit être compris entre 1 et %d'L' ne peut que prendre en compte des effets fixes ayant même degré de liberté au dénominateurAucun des arguments ne spécifie plus d'un blocLa longueur des noms devrait être %dLes comparaisons REML n'ont pas de sens.tous les arguments de 'varComb' doivent être de classe "varFunc".tous les éléments dans l'argument doivent générer des objets "pdMat"tous les éléments doivent avoir une taille non nulletous les éléments doivent contenir des formules, si au moins l'un d'eux en contient unetous les éléments doivent être nommés, lorsqu'au moins un l'esttous les éléments de la liste 'form' doivent être des formules à double membrestous les éléments d'un objet "reStruct" doivent avoir une taille non nulletous les éléments de type formule doivent être des listes de formules à deux membres ou des formules à deux membrestous les objets ajustés doivent l'être à l'aide de la même méthode d'estimationtous les objets ajustés doivent utiliser le même nombre d'observationstoutes les variables utilisées dans 'formula' doivent aussi se retrouver dans 'data'un objet de longueur %d ne correspond pas à une factorisation de Choleskyun objet de longeur %d ne correspond pas à la taille requise du paramètrematrice de covariance approximative pour les estimateurs de paramètres qui ne sont pas de rang completles arguments impliquent des nombres différents de blocsil faut au moins deux coefficientsl'augmentation des effets aléatoires n'est disponible que pour un seul niveaul'ordre autorégressif doit être un entier positif ou nulun objet "varFunc" ne peut être construit qu'à partir d'un autre objet "varFunc", une formula ou une chaîne de caractèresseuls les objets "lmList" peuvent être ajustés avec une seule variable de groupeseuls les objets "nlsList" peuvent être ajustés avec une seule variable de groupeimpossible d'accéder à la matrice d'un objet dont les noms ne sont pas définisimpossible d'accéder à la matrice d'objets non initialisésimpossible de changer le nombre de colonnes d'un objet non initialisé et sans nomsimpossible de calculer la log-vraissemblance REML pour les objets "gnls"Impossible de changer 'form'impossible de changer les coefficients avant initialisation ou lorsque tous les paramètres sont fixésimpossible de changer les dimensions d'un objet "pdMat" initialiséimpossible de changer la longueur des paramètres dans un objet "pdMat" initialiséimpossible de modifier la longueur du paramètre pour des objets "varComb" initialisésla longueur du paramètre ne peut être modifiée dans les objets initialisésimpossible de modifier la taille de 'object'impossible de changer la longueur de la covariable dans l'objet "varFunc"impossible de changer la longueur du paramètre "varExp" après l'initialisationimpossible de changer la longueur du paramètre "varIdent" après l'initialisationimpossible de changer la longueur du paramètre "varStruct" après l'initialisationimpossible de changer la longueur du paramètre après l'initialisationImpossible de changer la longueur des paramètres d'un objet "corAR1"impossible de changer la longueur des paramètres d'un objet "corARMA"Impossible de changer la longueur des paramètres d'un objet "corCAR1"impossible de changer la longueur des paramètres d'un objet "corCompSymm"impossible de changer la longueur des paramètres d'un objet "corNatural"impossible de changer la longueur des paramètres d'un objet "corStruct"impossible de changer la longueur des paramètres d'un objet "corSymm"impossible de changer le nombre de colonnes d'un objet initialiséle paramètre ne peut être modifié lorsque la longueur des paramètres n'est pas définiele paramètre ne peut être modifié lorsque la longueur des paramètres est indéfinieimpossible d'apparier avec seulement une variableimpossible d'évaluer les groupes pour les niveaux désirés de 'newdata'impossible d'extraire les groupes sans une formule à dispositionimpossible d'extraire une matrice pour un objet non initialiséimpossible d'extraire la matrice du modèle sans une formule à dispositionimpossible d'extraire les paramètres d'objets non initialisésimpossible d'extraire les dimensionsimpossible d'extraire l'inverse d'un objet non initialiséimpossible d'extraire le logarithme du déterminant d'un objet non initialiséimpossible d'extraire la matrice d'un objet "pdCompSymm" non initialiséimpossible d'extraire la matrice d'un objet "pdIdent" non initialiséimpossible d'extraire la matrice d'un objet non initialiséimpossible d'extraire la matrice en utilisant des dimensions non initialiséesimpossible de fixer les variances de tous les groupesimpossible de calculer un intervalle de confiance sur les composantes var-cov : %simpossible d'obtenir l'inverse d'un objet non initialiséles noms de colonnes dupliqués ne sont pas permis dans un objet "pdMat"distances nulles non autorisées dans "corSpatial"impossible d'obtenir les coefficients de contrainte avec des dimensions non initialiséesle facteur utilisé pour le regroupement ne peut être omis sans 'form'impossible d'utiliser une formule anonyme pour le modèleimpossible d'utiliser un niveau plus petit pour le regroupement de "correlation" par rapport à "random". Replacement du premier par le second.impossible d'utiliser un niveau plus petit pour le regroupement de 'correlation' par rapport à 'random'. Replacement du premier par le second.le niveau de fusion ne peut être plus petit que le niveau d'affichage ; il est fixé au niveau d'affichagel'ajustement "gls" calculé est singulier, de rang %sla constante dans la structure "varConstPower" doit être > Ola covariable doit être un tableau de données (data.frame)la covariable doit être numériquela covariable doit avoir un attribut 'level', lorsque 'id' est une formulela covariable doit avoir un attribut 'level', lorsque 'idLabels' est une formulela covariable doit avoir un attribut 'level', lorsque des groupes sont présentsLa covariable doit avoir des valeurs uniques pour les intragroupes des objets "corAR1"la covariable doit avoir des valeurs uniques pour les intragroupes des objets "corARMA"la covariable doit avoir des valeurs uniques pour les intragroupes des objets "corCAR1"la cavariable doit avoir des valeurs uniques pour les intragroupes des objets 'corNatural'La covariable doit avoir des valeurs uniques à l'intérieur des groupes pour les objets "corSymm"l'argument 'data' pour la méthode "data.frame" de 'getGroups' n'a pas de sensles données dans l'appel %s doivent être évaluées comme un tableau de données ("data frame")les degrés de liberté et les pondérations doivent avoir la même tailleles noms de dimensions ('dimnames') des valeurs doivent correspondre ou bien être NULLIncapable de calculer la matrice de corrélation de l'objet %simpossible d'obtenir les coefficients de l'objet %simpossible d'obtenir les coefficients de contrainteincapable d'obtenir les paramètres de l'objet %seffet %s incohérenteffets %s incohérentles éléments dans 'object' doivent être des formules ou des objets "pdMat"moins d'observations qu'il n'y a d'effets aléatoires dans les niveaux des groupes %sle premier argument à 'groupedData' doit être une formule à deux membresle premier argument de 'nfGroupedData' doit être une formule à deux membresle premier argument de 'nmGroupedData' doit être une formule à deux membresle premier modèle a une réponse différente du resteles objets ont été ajustés avec différents effets fixesles noms des paramètres fixés dans 'varIdent' doivent être un sous-ensemble des noms de groupesles paramètres fixés doivent avoir des noms de groupesles paramètres fixes doivent avoir des noms de groupes dans 'varExp'les paramètres fixés doivent avoir des noms de groupes dans 'varPower'les paramètres fixés doivent avoir leurs noms dans 'varIdent'un modèle à effet fixe doit être une formule de la forme "resp ~ pred"formula(object) doit renvoyer une formuleles formules dans 'fixed' doivent être de la forme "paramètre ~ expression"les formules dans 'params' doivent être de la forme "parameter ~ expr"les formules dans 'random' doivent être de la forme "paramètre ~ expression"le nom de groupe ne correspond pas aux valeurs de départ pour les effets aléatoires : %sles noms des groupes ne correspondent pas aux valeurs de départ pour les effets aléatoires : %sniveaux de groupes incohérents dans 'random' et dans les valeurs de départ pour 'random' au niveau %s'group' est ignoré dans la formule "varFixed"L'argument 'form' est ignoréL'argument 'nam' est ignoréformules incompatibles entre les groupes dans "random" et "correlation"formules incompatibles entre les groupes dans 'random' et 'correlation'tailles incompatibles entre 'random' et les facteurs de regroupementlongueurs non compatibles pour les noms de l'objetl'individu %s n'a pas été utilisé dans l'ajustementla valeur initiale pour les paramètres "corLin" n'ont pas la bonne tailleLa valeur initiale pour les paramètres "corNatural" n'a pas la bonne dimensionla valeur initiale pour les paramètres "corSpatial" n'ont pas la bonne taillela valeur initiale pour les paramètres "corSpher" sont de la mauvaise tailleLa valeur initiale pour les paramètres de "corSymm" n'ont pas les bonnes dimensionsla valeur initiale de "reStruct" est remplacée dans 'lme.lmList'la valeur initiale pour "varExp" doit être de longueur %dla valeur initiale pour "varExp" devrait être de longueur 1la valeur initiale de "varIdent" doit être de longueur %dla valeur initiale pour "varPower" devrait être de longueur %dla valeur initiale pour "varPower" devrait être de longueur 1la valeur initiale pour l'étendue ('range') est inférieure à la distance minimale. Elle est fixée à 1.1 * min(distance)la valeur initiale pour 'reStruct' est remplacée dans 'nlme.nlsList'la valeur initiale du paramètre est de la mauvaise tailleLa valeur initiale dans "corCompSymm" doit être plus grande que %sla valeur initiale du coefficient de pépite doit être comprise entre 0 et 1la valeur initiale doit être de longueur %dLes valeurs initiales pour "corNatural" ne sont pas définies sous forme d'une structure de corrélation positive-définieLes valeurs initiales pour "corNatural" doivent se situer entre -1 et 1les valeurs initiales pour "corSymm" ne définissent pas une structure de corrélation positive-définieLes valeurs initiales pour "corSymm" doivent se situer entre -1 et 1les valeurs initiales pour 'varIdent' doivent être > 0les valeurs initiales doivent avoir des noms de groupes dans 'varExp'les valeurs initiales doivent avoir des noms de groupes dans 'varIdent'les valeurs initiales doivent avoir des noms de groupes dans 'varPower'l'initialisation d'un objet "pdCompSymm" n'est pas fini et positifformule incorrecte pour les groupesla longueur de 'nam' ne correspond pas aux dimensions initialesle niveau %s non autorisés pour %sles niveaux %s sont non autorisés pour %sle niveau de %s ne correspond pas à la formulela liste contenant les valeurs de départ pour les effets aléatoires doit être nommées ou de longueur %dla log-vraissemblance n'est pas disponible avec des ajustements NULLle nombre maximum d'itérations est atteint, mais pas la convergenceincohérence entre les noms de groupes et les noms des valeurs fixéesattribut d'appel manquant dans l'objet "nlsList"la formule du modèle doit être de la forme "rep ~ pred"le modèle doit être une formule de la forme "resp ~ pred"les modèles avec objets "corStruct" et / ou "varFunc" ne sont pas autorisésplus d'un degré de liberté est nécessaire lorsque l'un d'entre eux vaut zéro.l'ordre de la moyenne mobile doit être un entier positif ou nulniveaux multiples non permisil faut fournir les noms lors de l'initialisation de "pdCompSymm" depuis un paramètre sans fournir de formuleil faut fournir les noms lorsqu'un objet "pdIdent" est initialisé depuis un paramètre sans fournir de formulelors de l'initialisation depuis une matrice ou un paramètre, il faut fournir les nomsune formule est nécessaire lorsque les noms ne sont pas fournisles noms affecté ne correspondent pas à une permutation des noms de départincohérence de noms entre 'random' et les valeurs de départ pour 'random' au niveau %sLes noms de 'value' ne sont pas conformes avec l'argument 'nam'les noms de l'objet et ses valeurs ne correspondent pasles noms des valeurs de départ pour "varIdent" doivent contenir tous les niveaux stratifiés sauf unnécessite un objet avec une composante 'call'des données sont nécessaires pour calculer la covariabledes données sont nécessaires pour calculer les covariables d'un objet "corStruct"control$nlmStepMax négatif - utilisation de la valeur par défautdes degrés de liberté négatifs ne sont pas permispas de coefficients à ajusteraucun modèle linéaire condensépas de méthode par défaut pour extraire la racine carrée de l'objet "pdMat"aucun nombre de degrés de liberté pour l'estimation de l'écart typeaucun degré de liberté n'est spécifiéaucun effet n'est autorisé dans le membre de droite de la formulepas d'objet "lme" ajustépas de valeurs initiales pour les paramètres du modèleaucun variogramme n'est disponible pour le modèle avec 'showModel = TRUE'groupe inexistant dans 'newdata'noms de groupes inexistants pour les valeurs initialesnoms de groupes inexistants pour les valeurs initiales de "varExp"noms de groupes inexistants pour les valeurs initiales de "varPower"noms de groupes inexistants pour les valeurs initiales dans 'varIdent'groupe inexistant mais requis dans 'subset'groupes inexistants demandés dans 'subset'niveau inexistant %sniveaux inexistants %sPas implémenté pour des objets "nlme"Pas implémenté pour des niveaux multiples d'imbricationle nombre de colonnes dans les valeurs de départ pour la composante aléatoire au niveau %s doit être %dle nombre de lignes dans les valeurs de départ pour la composante aléatoire au niveau %s doit être %dl'objet formule doit être de la forme "rep ~ pred"l'objet doit hériter de la classe "data.frame"l'objet doit hériter de la classe "gls"l'objet doit hériter de la classe "lmList"l'objet doit hériter de la classe "lme"les objets doivent avoir une composante ou un attribut "call"les objets doivent avoir des coefficients qui ont mêmes noms de lignesles objets doivent hériter des classes "gls", "gnls", "lm","lmList", "lme","nlme","nlsList", ou "nls"un seul niveau d'affichage est permisseul un niveau est permis pour les prédictionsseul un niveau est autorisé pour 'gapply'seul un niveau est permis dans 'gsummary'seul un niveau de regroupement est autoriséseuls les résidus sont autorisésseuls les résidus et les effets aléatoires sont permisseul un effet est permis dans le membre de gauche de 'form'seul un niveau est autoriséles paramètres d'une structure "corCompSymm" doivent être < 1 en valeur absolueLe paramètre dans la structure AR(1) doit se situer entre - 1 et 1Le paramètre dans la structure CAR(1) doit se situer entre -1 et 1les paramètres d'une structure ARMA doivent être < 1 en valeur absoluela méthode 'plot' n'est implémentée que pour la comparaison de modèlesl'étendue des valeurs initiales dans "corSpher" doit être > 0le membre de droite du premier argument doit être une expression conditionnellele second argument doit être un objet 'groupedData'le second argument de 'groupedData' doit hériter d'un data.framecertains objets ajustés sont éliminés parce que leur réponse diffère du premier modèleles estimations initiales doivent être nommés lorsque 'params' est manquantles valeurs initiales pour les paramètres n'ont pas la taille correcteles valeurs de départ pour les effets aléatoires doivent inclure les niveaux de groupeles valeurs de départ pour les effets aléatoires doivent être dans une liste ou dans une matriceles valeurs de départ pour la composante 'fixed' n'ont pas la bonne tailleles valeurs de départ pour les composantes aléatoires devraient être un liste de matricesle facteur de division par deux du pas est réduit en dessous du minimum dans un pas NLSle facteur de réduction à chaque étape est abaissé en dessous du minimum à une étape PNLSle terme %s est incohérentles termes %s sont incohérentsLes termes peuvent être seulement des entiers ou des chaînes de caractèresLes termes doivent tous avoir le même nombre de degrés de liberté au dénominateurniveau de fusion non défini %s pour %sniveau d'affichage non défini %s pour %sgroupe non déclaré dans 'subset'les valeurs uniques des covariables pour les objets "corSymm" doivent être des séquences d'entiers consécutifsles valeurs uniques pour la covariables des objets "corNatural" doivent être une séquence d'entiers consécutifsniveaux de groupes erronésles données x-y de 'splom' ont été corrompusnlme/inst/po/fr/LC_MESSAGES/nlme.mo0000644000176000001440000000332412203635654016324 0ustar ripleyusersÞ• tÌ4!F3h7œ0Ô%3+!_98»ˆôA}%¿;å8!DZ0ŸGÐ)FBJ‰  All parameters must be less than 1 in absolute valueCoefficient matrix not invertibleFirst observation on an individual must have a doseHaven't written the compound symmetry case for this yetSingularity in backsolve at level %ld, block %ldUnable to form Cholesky decompositionUnable to form eigenvalue-eigenvector decompositionUnknown spatial correlation classanalytic gradient is not available with compound symmetryanalytic gradient is not available with matrix logarithmProject-Id-Version: nlme 3.1-65 Report-Msgid-Bugs-To: POT-Creation-Date: 2013-08-17 08:12+0100 PO-Revision-Date: 2005-12-08 01:00+0100 Last-Translator: Philippe Grosjean Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Tous les paramètres doivent être inférieurs à 1 en valeur absolueMatrice de coefficient non inversibleLa première observation sur un individu doit avoir une doseLes cas de symétrie composée n'ont pas encore été écritsSingularité rencontrée en résolution inverse au niveau %ld, bloc %ldIncapable de former la décomposition de CholeskyIncapable de former la décomposition valeurs propres - vecteurs propresClasses de corrélation spatiale inconnuesun gradient analytique n'est pas disponible avec une symétrie composéeun gradient analytique n'est pas disponible avec une matrice logarithmiquenlme/inst/po/de/0000755000176000001440000000000012131311354013212 5ustar ripleyusersnlme/inst/po/de/LC_MESSAGES/0000755000176000001440000000000012203635654015013 5ustar ripleyusersnlme/inst/po/de/LC_MESSAGES/R-nlme.mo0000644000176000001440000012325312203635654016510 0ustar ripleyusersÞ•:ì £¼H0I#z$ž)Ã"í *1\$z+Ÿ;Ë)1HO3˜Ì@é *>K5Š/ÀJðE;E0ÇOø1H-z*¨.Ó! 2$ 3W ‹ &¤ Ë "á "!'!+D! p!%‘!·!,Ô!"! "B"-\"Š"&Ÿ"9Æ"##$#$?#Gd#.¬#$Û#&$.'$-V$1„$,¶$)ã$, %:%#R%v%(–% ¿%=à%2&Q&$n&6“&:Ê&&'6,'/c'6“'=Ê'P(7Y(;‘(1Í(7ÿ(A7)Fy)*À)$ë)>*3O*cƒ*;ç*<#+0`+1‘+JÃ+7,F,Q[,9­,<ç,>$-5c-$™-9¾-Gø-I@.JŠ.>Õ.>/?S/?“/CÓ/B0AZ0?œ0<Ü0A1B[1$ž16Ã1/ú12*2+]21‰2»27Ù2F3CX3@œ36Ý374"L49o41©47Û4*5D>5*ƒ5.®5oÝ5oM6V½6'71<7n77<§7Bä7='8De8Eª8Eð8H69E9HÅ9-:8<:)u:<Ÿ:1Ü:2;1A;,s;8 ;=Ù;;<=S<=‘<2Ï<,=C/=&s=2š=4Í=.>?1>%q>:—>;Ò>;?‚J?OÍ?&@D@]@>u@>´@6ó@%*A%PA8vA<¯A<ìA:)B9dB8žB1×B0 C3:C3nC2¢CWÕC:-D+hD6”D5ËD$EW&E8~ET·E5 F)BF0lF2F2ÐF9G=G?XG8˜G"ÑGOôG+DH8pH3©H*ÝH/I18I<jI@§I3èIJO8JLˆJ:ÕJ)KI:KH„K7ÍK$L\*L"‡L ªL6ËL1M'4M\MsMDM.ÒMN+!NMN&dN4‹NÀN*ßN6 O8AO8zO'³O(ÛO*P"/P.RPRPOÔP0$Q%UQ${Q' Q$ÈQ1íQ2R_RR²R&ÑR"øR$S"@ScS)zS2¤S×SBñS54T5jT: T1ÛT- UB;U,~U=«UIéU;3V<oV<¬V@éVD*WFoW5¶W6ìW(#X(LX+uX$¡X!ÆX$èX` YbnYÑY%äY¡ Z3¬['à[*\23\*f\+‘\0½\ î\*].:]]i]5Ç]3ý]V1^Aˆ^!Ê^Hì^)5_I__D©_3î_Q"`Ht``½`@aW_a2·a:êa+%b/Qb%b=§b=åb#c-@cnc'Šc)²c!Üc3þc!2d.Td!ƒd6¥dÜd%úd e.?ene(‰e>²e4ñe&f)EfUof>Åf%g,*g<Wg-”g2Âg5õg7+h3ch—h)µh*ßh7 i&BiAii1«iÝi$ýiD"j?gj7§jDßjB$k@gkP¨k_ùkEYlLŸlGìl:4mKomY»m=n.SnL‚n>ÏnfoLuoLÂoDpPTp]¥pCq#GqhkqUÔqG*rSrrIÆr0sIAsT‹s[àsWƒOzƒ>ʃP „DZ„BŸ„?â„J"…Dm…F²…Fù…3@†7t†P¬†+ý†7)‡9a‡2›‡B·-ˆ=?ˆ>}ˆ>¼ˆ‚ûˆc~‰,≊.Š?LŠ?ŒŠ;ÌŠ$‹3-‹:a‹=œ‹=Ú‹;Œ:TŒ:Œ.ÊŒ4ùŒ5.0d6•`Ì<-Ž.jŽ7™Ž;ÑŽ! V/@†SÇ=,Y4†4»6ð?'‘g‘@†‘>Ç‘"’M)’,w’8¤’AÝ’,“0L“4}“B²“Iõ“L?”Œ”e©”a•Pq•0•Bó•R6–>‰–2È–fû–0b—2“—LÆ—;˜%O˜u˜&”˜P»˜; ™H™6g™ž™'¼™8ä™&š.Dš:sš?®š:îš2)›2\›8›'È›1ð›U"œTxœ2Íœ#1$*V&<¨=åh#žŒž'ªž"Òž$õž&ŸAŸ+VŸ<‚Ÿ¿Ÿ=ÚŸ9 :R 7 3Å 3ù B-¡1p¡=¢¡Ià¡5*¢:`¢?›¢HÛ¢G$£Hl£Gµ£Lý£>J¤.‰¤=¸¤+ö¤$"¥*G¥xr¥yë¥e¦/{¦ê”u‘½‹˜ÑäÅbü¦Aß&Ÿ:eñ’L#,òÍð `?hÄ\°. ·Çþ0Ë~Àœ—â¤nXŠ%×1 ô>ý ™‚)jT‰…3m}©¥*/H® wMžCƒ±i ¨õ KU1È{É«*¹v=:ìÓ ØqSÙ+´çÖ³ˆyxr@5á2š/¿pî<+ܵzP970­JÁ-5] íù 6€oN3-' ºè¾ÿ#Ì–úÚ(Ô²¶ÎàgI‡¯§ë„ïdå.Æ“a¬4Z$,öf&ÞŒ9ÒG!kã'Ž(!æDóР¸^|÷B›ª•Q$Ý2 4tûÛÕ8c»_;6%sÏ"8Vé[W"7ÃR¢OÂ)lÊøF†E¡£Y¼"corStruct" object must have a "fixed" attribute"pdMat" element must have a formula"pdMat" elements must have a formula%s and %s must have the same group levels%s can have at most two components%s can only be a list or numeric%s can only have names "const" and "power"%s is not a valid effect name%s is not a valid object for "pdMat"%s must have group names in 'varConstPower'%s not available for plotting%s not available for plotting%s not found in data%s not found in data%s not matched%s not matched%s without "primary" can only be used with fits of "groupedData" objects'FUN' can only be a function or a list of functions'Id' must be between 0 and 1'L' must have at most %d column'L' must have at most %d columns'Terms' must be between 1 and %d'asTable' can only be used with balanced 'groupedData' objects'asTable' cannot be used with multilevel grouped data'data' in %s call must evaluate to a data frame'data' must be a "groupedData" object if 'formula' does not include groups'data' must be a "groupedData" object if 'groups' argument is missing'data' must be given explicitly to use 'nls' to get initial estimates'data' must be given explicitly to use 'nlsList''data' must inherit from "groupedData" class if 'random' does not define groups'distance' and 'object' have incompatible lengths'fixed' must be a formula or list of formulae'form' and 'nam' have incompatible lengths'form' and 'pdClass' have incompatible lengths'form' argument must be a formula'form' can only be a formula or a list of formulae'form' can only be a formula, or a list of formulas'form' must be a formula'form' must be a formula when not NULL'form' must be a list'form' must be a one-sided formula'form' must be a two-sided formula'form' must have a covariate'form' must have all components as formulas'form' not consistent with 'nam''id' can only be a formula or numeric'id' must be between 0 and 1'idLabels' can only be a formula or a vector'idLabels' of incorrect length'lme.lmList' will redefine 'data''model' must be a formula'nam' and 'pdClass' have incompatible lengths'nam' must be a list'nint' is not consistent with 'breaks''nlme.nlsList' will redefine 'fixed', 'data', and 'start''object' has not been Initialize()d'object' must be a formula'object' must be a list or a formula'object' must be a list when not missing, not a matrix, and not numeric'params' must be a formula or list of formulae'pdClass' must be a character vector'preserve' must be a two-sided formula'random' must be a formula or list of formulae'range' must be > 0 in "corLin" initial value'range' must be > 0 in "corSpatial" initial value'start' must have a component called 'fixed''subset' can only be character or integer'subset' ignored with single grouping factor'subset' must be a list'value' must be a one sided formula'value' must be a square matrix'which' can only be character or integer'which' must be between 1 and %dL may only involve fixed effects with the same denominator DFLNone of the arguments specify more than one blockLength of names should be %dREML comparisons are not meaningful.all arguments to 'varComb' must be of class "varFunc".all elements in the argument must generate "pdMat" objectsall elements must have a non-zero sizeall elements must have formulas when any has a formulaall elements must have names when any has namesall elements of 'form' list must be two-sided formulasall elements of a "reStruct" object must have a non-zero sizeall elements of formula must be list of two-sided formulae or two-sided formulaeall fitted objects must have the same estimation methodall fitted objects must use the same number of observationsall variables used in 'formula' must be in 'data'an object of length %d does not match a Cholesky factoran object of length %d does not match the required parameter sizeapproximate covariance matrix for parameter estimates not of full rankarguments imply different number of blocksat least two coefficients are neededaugmentation of random effects only available for single levelautoregressive order must be a non-negative integercan only construct "varFunc" object from another "varFunc" object, a formula, or a character stringcan only fit "lmList" objects with single grouping variablecan only fit "nlsList" objects with single grouping variablecannot access the matrix of object without namescannot access the matrix of uninitialized objectscannot access the number of columns of uninitialized objects without namescannot calculate REML log-likelihood for "gnls" objectscannot change 'form'cannot change coefficients before initialization or when all parameters are fixedcannot change dimensions on an initialized "pdMat" objectcannot change parameter length of initialized "pdMat" objectcannot change parameter length of initialized "varComb" objectcannot change parameter length of initialized objectscannot change the length of 'object'cannot change the length of covariate in "varFunc" objectcannot change the length of the "varExp" parameter after initializationcannot change the length of the "varIdent" parameter after initializationcannot change the length of the "varStruct" parameter after initializationcannot change the length of the parameter after initializationcannot change the length of the parameter of a "corAR1" objectcannot change the length of the parameter of a "corARMA" objectcannot change the length of the parameter of a "corCAR1" objectcannot change the length of the parameter of a "corCompSymm" objectcannot change the length of the parameter of a "corNatural" objectcannot change the length of the parameter of a "corStruct" objectcannot change the length of the parameter of a "corSymm" objectcannot change the number of columns on an initialized objectcannot change the parameter when ength of parameters is undefinedcannot change the parameter when length of parameters is undefinedcannot do pairs of just one variablecannot evaluate groups for desired levels on 'newdata'cannot extract groups formula without a formulacannot extract matrix from an uninitialized objectcannot extract model matrix without formulacannot extract parameters of uninitialized objectcannot extract the dimensionscannot extract the inverse from an uninitialized objectcannot extract the log of the determinant from an uninitialized objectcannot extract the matrix from an uninitialized "pdCompSymm" objectcannot extract the matrix from an uninitialized "pdIdent" objectcannot extract the matrix from an uninitialized objectcannot extract the matrix with uninitialized dimensionscannot fix variances in all groupscannot get confidence intervals on var-cov components: %scannot get the inverse of an uninitialized objectcannot have duplicated column names in a "pdMat" objectcannot have zero distances in "corSpatial"cannot obtain constrained coefficients with uninitialized dimensionscannot omit grouping factor without 'form'cannot use an anonymous function for the modelcannot use smaller level of grouping for "correlation" than for "random". Replacing the former with the latter.cannot use smaller level of grouping for 'correlation' than for 'random'. Replacing the former with the latter.collapsing level cannot be smaller than display level; setting it to the display levelcomputed "gls" fit is singular, rank %sconstant in "varConstPower" structure must be > 0covariate must be a data framecovariate must be numericcovariate must have a level attribute when 'id' is a formulacovariate must have a level attribute when 'idLabels' is a formulacovariate must have a level attribute when groups are presentcovariate must have unique values within groups for "corAR1" objectscovariate must have unique values within groups for "corARMA" objectscovariate must have unique values within groups for "corCAR1" objectscovariate must have unique values within groups for "corNatural" objectscovariate must have unique values within groups for "corSymm" objectsdata argument to "data.frame" method for 'getGroups' does not make sensedata in %s call must evaluate to a data framedegrees of freedom and weights must have the same lengthdimnames of 'value' must match or be NULLdo not know how to calculate correlation matrix of %s objectdo not know how to get coefficients for %s objectdo not know how to obtain constrained coefficientsdo not know how to obtain parameters of %s objecteffect %s not matchedeffects %s not matchedelements in 'object' must be formulas or "pdMat" objectsfewer observations than random effects in all level %s groupsfirst argument to 'groupedData' must be a two-sided formulafirst argument to 'nfGroupedData' must be a two-sided formulafirst argument to 'nmGroupedData' must be a two-sided formulafirst model has a different response from the restfitted objects with different fixed effects.fixed parameter names in 'varIdent' must be a subset of group namesfixed parameters must have group namesfixed parameters must have group names in 'varExp'fixed parameters must have group names in 'varPower'fixed parameters must have names in 'varIdent'fixed-effects model must be a formula of the form "resp ~ pred"formula(object) must return a formulaformulae in 'fixed' must be of the form "parameter ~ expr"formulae in 'params' must be of the form "parameter ~ expr"formulae in 'random' must be of the form "parameter ~ expr"group name not matched in starting values for random effects: %sgroup names not matched in starting values for random effects: %sgroups levels mismatch in 'random' and starting values for 'random' at level %signoring 'group' in "varFixed" formulaignoring argument 'form'ignoring argument 'nam'incompatible formulas for groups in "random" and "correlation"incompatible formulas for groups in 'random' and 'correlation'incompatible lengths for 'random' and grouping factorsincompatible lengths for object namesindividual %s was not used in the fitinitial value for "corLin" parameters of wrong dimensioninitial value for "corNatural" parameters of wrong dimensioninitial value for "corSpatial" parameters of wrong dimensioninitial value for "corSpher" parameters of wrong dimensioninitial value for "corSymm" parameters of wrong dimensioninitial value for "reStruct" overwritten in 'lme.lmList'initial value for "varExp" should be of length %dinitial value for "varExp" should be of length 1initial value for "varIdent" should be of length %dinitial value for "varPower" should be of length %dinitial value for "varPower" should be of length 1initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)initial value for 'reStruct' overwritten in 'nlme.nlsList'initial value for parameter of wrong lengthinitial value in "corCompSymm" must be greater than %sinitial value of nugget ratio must be between 0 and 1initial value should be of length %dinitial values for "corNatural" do not define a positive-definite correlation structureinitial values for "corNatural" must be between -1 and 1initial values for "corSymm" do not define a positive-definite correlation structureinitial values for "corSymm" must be between -1 and 1initial values for 'varIdent' must be > 0initial values must have group names in 'varExp'initial values must have group names in 'varIdent'initial values must have group names in 'varPower'initializing "pdCompSymm" object is not positive definiteinvalid formula for groupslength of 'nam' not consistent with dimensions of initial valuelevel %s not allowed for %slevels %s not allowed for %slevel of %s does not match formulalist with starting values for random effects must have names or be of length %dlog-likelihood not available with NULL fitsmaximum number of iterations reached without convergencemismatch between group names and fixed values namesmissing call attribute in "nlsList" objectmodel formula must be of the form "resp ~ pred"model must be a formula of the form "resp ~ pred"models with "corStruct" and/or "varFunc" objects not allowedmore than one degree of freedom is needed when one them is zero.moving average order must be a non-negative integermultiple levels not allowedmust give names when initializing "pdCompSymm" from parameter without a formulamust give names when initializing "pdIdent" from parameter without a formulamust give names when initializing from matrix or parametermust have formula when no names are givennames being assigned do not correspond to a permutation of previous namesnames mismatch in 'random' and starting values for 'random' at level %snames of 'value' are not consistent with 'nam' argumentnames of object and value must matchnames of starting value for "varIdent" object must contain all but one of the stratum levelsneed an object with call componentneed data to calculate covariateneed data to calculate covariate of "corStruct" objectnegative control$nlmStepMax - using default valuenegative degrees of freedom not allowedno coefficients to fitno condensed linear modelno default method for extracting the square root of a "pdMat" objectno degrees of freedom for estimating std. dev.no degrees of freedom specifiedno effects allowed in right side of formulano fitted "lme" objectno initial values for model parametersno model variogram available with 'showModel = TRUE'nonexistent group in 'newdata'nonexistent group names for initial valuesnonexistent group names for initial values in "varExp"nonexistent group names for initial values in "varPower"nonexistent group names for initial values in 'varIdent'nonexistent group requested in 'subset'nonexistent groups requested in 'subset'nonexistent level %snonexistent levels %snot implemented for "nlme" objectsnot implemented for multiple levels of nestingnumber of columns in starting values for random component at level %s should be %dnumber of rows in starting values for random component at level %s should be %dobject formula must be of the form "resp ~ pred"object must inherit from "data.frame"object must inherit from class "gls"object must inherit from class "lmList"object must inherit from class "lme"objects must have a "call" component or attributeobjects must have coefficients with same row namesobjects must inherit from classes "gls", "gnls","lm","lmList", "lme","nlme","nlsList", or "nls"only one display level allowedonly one level allowed for predictionsonly one level allowed in 'gapply'only one level allowed in 'gsummary'only one level of grouping allowedonly residuals allowedonly residuals and random effects allowedonly single effects allowed in left side of 'form'only single level allowedparameter in "corCompSymm" structure must be < 1 in absolute valueparameter in AR(1) structure must be between -1 and 1parameter in CAR(1) structure must be between 0 and 1parameters in ARMA structure must be < 1 in absolute valueplot method only implemented for comparing modelsrange must be > 0 in "corSpher" initial valueright-hand side of first argument must be a conditional expressionsecond argument must be a groupedData objectsecond argument to 'groupedData' must inherit from data.framesome fitted objects deleted because response differs from the first modelstarting estimates must have names when 'params' is missingstarting values for parameters are not of the correct lengthstarting values for random effects must include group levelsstarting values for random effects should be a list, or a matrixstarting values for the 'fixed' component are not the correct lengthstarting values for the random components should be a list of matricesstep halving factor reduced below minimum in NLS stepstep halving factor reduced below minimum in PNLS stepterm %s not matchedterms %s not matchedterms can only be integers or charactersterms must all have the same denominator DFundefined collapsing level %s for %sundefined display level %s for %sundefined group declared in 'subset'unique values of the covariate for "corSymm" objects must be a sequence of consecutive integersunique values of the covariate for "corNatural" objects must be a sequence of consecutive integerswrong group levelsx-y data to splom got botched somehowProject-Id-Version: R 2.15.2 / nlme-3.1-105 Report-Msgid-Bugs-To: bugs@r-project.org POT-Creation-Date: 2013-08-17 08:12 PO-Revision-Date: 2012-10-11 13:10+0200 Last-Translator: Chris Leick Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); "corStruct"-Objekt muss ein "fixed"-Attribut haben."pdMat"-Element muss eine Formel haben."pdMat"-Elemente müssen eine Formel haben%s und %s müssen die gleichen Gruppenstufen haben%s kann höchstens zwei Komponenten haben.%s kann nur eine Liste oder numerisch sein.%s kann nur die Namen "const" und "power" haben.%s ist kein gültiger Effektname%s ist kein gültiges Objekt für "pdMat".%s muss Gruppennamen in 'varConstPower' haben.%s nicht verfügbar für grafische Darstellung%s nicht verfügbar für grafische Darstellung%s nicht in Daten gefunden%s nicht in Daten gefunden%s nicht übereinstimmend%s nicht übereinstimmend%s ohne "primary" kann nur für Anpassungen von "groupedData"-Objekten genutzt werden.'FUN' kann nur eine Funktion oder eine Liste von Funktionen sein.'Id' muss zwischen 0 und 1 liegen'L' muss zumindest %d Spalte haben:'L' muss zumindest %d Spalten haben:'Terms' müssen zwischen 1 und %d liegen.'asTable' kann nur mit balancierten 'groupedData'-Objekten benutzt werden'asTable' kann nicht mit mehrstufig gruppierten Daten benutzt werden'data' in %s muss sich zu einem Dataframe berechnen'data' muss ein "groupedData"-Objekt sein, wenn 'formula' keine Gruppen enthält.'data' muss ein "groupedData"-Objekt sein, falls 'groups'-Argument fehlt'data' muss explizit angegeben werden, um 'nls' zum Gewinnen von Initialschätzungen zu nutzen.'data' muss explizit angegeben werden, um 'nlsList' zu benutzen.'data' muss von der Klasse "groupedData" erben, falls 'random' keine Gruppen definiert.'distance' und 'object' haben inkompatible Längen'fixed' muss eine Formel oder eine Liste von Formeln sein.'form' und 'nam' haben inkompatible Längen'form' und 'pdClass' haben inkompatible Längen'form'-Argument muss eine Formel sein'form' kann nur eine Formel oder eine Liste von Formeln sein.'form' kann nur eine Formel oder eine Liste von Formeln sein.'form' muss eine Formel sein'form' muss eine Formel sein, wenn nicht NULL'form' muss eine Liste sein'form' muss eine einseitige Formel sein'form' muss eine zweiseitige Formel sein.'form' muss eine Kovariate haben.'form' muss alle Komponenten als Formeln enthalten.'form' nicht konsistent mit 'nam''id' kann nur eine Formel oder numerisch sein.'id' muss zwischen 0 und 1 liegen'idLabels' kann nur eine Formel oder eine Vektor sein.'idLabels' hat falsche Länge'lme.lmList' wird 'data' redefinieren'model' muss eine Formel sein.'nam' und 'pdClass' haben inkompatible Längen'nam' muss eine Liste sein'nint' ist nicht konsistent mit 'breaks''nlme.nlsList' wird 'fixed', 'data' und 'start' neu definierenInitialize() wurde nicht für »object« ausgeführt'object' muss eine Formel sein'object' muss eine Liste oder Formel sein'object' muss eine Liste sein, wenn es nicht fehlt, keine Matrix und nicht numerisch.'params' müssen eine Formel oder eine Liste von Formeln sein.'pdClass' muss ein Zeichenvektor sein'preserve' muss eine zweiseitige Formel sein'random' muss eine Formel oder eine Liste von Formeln sein.'range' im "corLin"-Anfangswert muss > 0 sein'range' muss im "corSpatial"-Anfangswert > 0 sein.'start' muss eine Komponente mit Namen 'fixed' haben.'subset' kann nur ein Zeichen oder eine ganze Zahl sein'subset' mit einzelnem Gruppierungsfaktor ignoriert'subset' muss eine Liste sein'value' muss eine einseitige Formel sein.'value' muss eine quadratische Matrix sein'which' kann nur ein Buchstabe oder eine Ganzzahl sein.'which' muss zwischen 1 und %d liegen.L kann nur feste Effekte mit dem gleichen Nenner DF einschließenKeines der Argumente gibt mehr als einen Block anLänge von names sollte %d seinREML-Vergleiche sind nicht sinnvoll.Alle Argumente für 'varComb' müssen von der Klasse "varFunc" sein.Alle Elemente des Arguments müssen "pdMat"-Objekte generieren.Alle Elemente müssen eine Größe ungleich Null haben.Alle Elemente müssen Formeln habe, wenn irgendeins eine Formel hat.Alle Elemente müssen Namen habe, wenn irgendeins einen Namen hat.Alle Elemente der 'form'-Liste müssen zweiseitige Formeln sein.Alle Elemente eines "reStruct"-Objekts müssen eine Größe ungleich Null haben.Alle Elemente der Formel müssen eine Liste zweiseitiger Formeln oder zweiseitige Formeln sein.Alle gefitteten Objekte müssen die gleiche Schätzungsmethode haben.Alle gefitteten Objekte müssen die gleiche Zahl von Beobachtungen benutzen.Alle in 'formula' benutzten Variablen müssen in 'data' enthalten sein.Ein Objekt der Länge %d entspricht keinem Cholesky-FaktorEin Objekt der Länge %d entspricht nicht der benötigten Parametergröße.Approximiert Kovarianzmatrix für Parameterschätzungen haben keinen vollständigen Rang.Argumente implizieren eine unterschiedliche Zahl von Blöckenmindestens zwei Koeffizienten werden benötigtAugmentation von zufälligen Effekten ist nur für einzelne Stufe verfügbarAutoregressive Ordnung muss eine nicht-negative Ganzzahl sein."varFunc"-Objekt kann nur aus anderem "varFunc", einer Formel oder einer Zeichenkette erstellt werden.Nur "lmList"-Objekte mit einzelner Gruppenvariable können angepasst werden.nur "lmList"-Objekte mit einzelner Gruppenvariable können angepasst werden.Auf die Matrix des Objekts kann ohne Namen nicht zugegriffen werden.Auf die Matrix der nicht initialisierten Objekten kann nicht zugegriffen werden.Auf die Spaltenanzahl nicht initialisierter Objekte kann ohne Namen nicht zugegriffen werden.REML Log-likelihood für "gnls"-Objekte kann nicht berechnet werden'form' kann nicht geändert werden.Koeffizienten können nicht vor der Initialisierung oder wenn alle Parameter fest sind geändert werden.Die Dimensionen eines initialisierten "pdMat"-Objekts können nicht geändert werden.Länge des initialisierten "pdMat"-Objekts kann nicht geändert werden.Parameterlänge eines initialisierten "varComb"-Objekts kann nicht geändert werdenParameterlänge von initialisierten Objekten kann nicht geändert werden.Länge von 'object' kann nicht geändert werden.Die Länge der Kovariate im "varFunc"-Objekt kann nicht geändert werden.Länge des Parameters "varExp" kann nach der Initialisierung nicht geändert werden.Länge des Parameters "varIdent" kann nach der Initialisierung nicht mehr geändert werden.Länge des Parameters "varStruct" kann nach der Initialisierung nicht geändert werden.Länge des Parameters kann nach der Initialisierung nicht geändert werden.Die Länge des Parameters eines "corAR1"-Objekts kann nicht geändert werden.Die Länge des Parameters eines "corARMA"-Objekts kann nicht geändert werden.Die Länge des Parameters eines "corCAR1"-Objekts kann nicht geändert werden.Die Länge des Parameters eines "corCompSymm"-Objekts kann nicht geändert werden.Die Länge des Parameters eines "corNatural"-Objekts kann nicht geändert werden.Die Länge des Parameters eines "corStruct"-Objekts kann nicht geändert werden.Die Länge des Parameters eines "corSymm"-Objekts kann nicht geändert werden.Die Anzahl der Spalten eines initialisierten Objekts kann nicht geändert werden.Der Parameter kann nicht geändert werden, wenn die Länge der Parameters nicht definiert ist.Der Parameter kann nicht geändert werden, wenn die Länge der Parameter undefiniert ist.kann pairs nicht mit nur einer Variablen durchführenGruppen für gewünschte Stufen auf 'newdata' können nicht ausgewertet werdenGruppenformel ohne eine Formel kann nicht extrahiert werden.Matrix kann nicht von einem nicht initialisierten Objekt extrahiert werden.Modellmatrix kann ohne Formel nicht extrahiert werden.Parameter eines nicht initialisierten Objekts können nicht extrahiert werden.Dimensionen können nicht extrahiert werden.Inverse eines nicht initialisierten Objekts kann nicht extrahiert werden.Der Logarithmus der Determinante eines nicht initialisierten Objekts kann nicht extrahiert werden.Matrix eines nicht initialisierten "pdCompSymm"-Objekts kann nicht extrahiert werdenMatrix eines nicht initialisierten "pdIdent"-Objekts kann nicht extrahiert werden.Matrix eines nicht initialisierten Objekts kann nicht extrahiert werden.Matrix mit nicht initialisierten Dimensionen kann nicht extrahiert werden.Varianzen können nicht in allen Gruppen festgehalten werden.Konfidenzintervalle für var-cov-Komponenten können nicht bestimmt werden: %sInverse eines nicht initialisierten Objekts kann nicht bestimmt werdenIn "pdMat"-Objekten darf es keine doppelten Spaltennamen geben.Es darf keine Null-Distanzen in "corSpatial" gebenEingeschränkte Koeffizienten können nicht mit nicht initialisierten Dimensionen nicht erlangt werden.Gruppierungsfaktor ohne 'form' kann nicht weggelassen werden.eine anonyme Funktion kann für das Modell nicht benutzt werdenZur Gruppierung in "correlation" kann keine kleinere Stufe als für "random" benutzt werden. Ersteres wird durch letzteres ersetzt.Für die Gruppierung von 'correlation' kann keine kleinere Stufe als für 'random' benutzt werden. Ersteres wird durch letzteres ersetzt.Die Collapsing-Stufe kann nicht kleiner sein, als die Anzeigestufe; sie wird auf die Anzeigestufe gesetzt.errechneter "gls"-Fit ist singulär, Rang %sKonstante in "varConstPower"-Struktur muss > 0 sein.Kovariate muss ein Dataframe seinKovariate muss numerisch seinKovariate muss ein Stufenattribut haben, wenn 'id' eine Formel istKovariate muss ein Stufenattribut haben, wenn 'idLabels' eine Formel istKovariate muss ein Stufenattribut haben, wenn Gruppen vorhanden sindKovariate muss eindeutige Werte innerhalb der Gruppen für "corAR1-Objekte" haben.Kovariate muss eindeutige Werte innerhalb der Gruppen für "corARMA-Objekte" haben.Kovariate muss eindeutige Werte innerhalb der Gruppen für "corCAR1-Objekte" haben.Kovariate muss eindeutige Werte innerhalb der Gruppen für "corNatural-Objekte" haben.Kovariate muss eindeutige Werte innerhalb der Gruppen für "corSymm"-Objekte haben.Datenargument für "data.frame"-Methode für 'getGroups' nicht sinnvollDaten im %s-Aufruf müssen einen Dataframe ergebenFreiheitsgrade und Gewichte müssen die gleiche Länge haben.dimnames von 'value' müssen übereinstimmen oder NULL seinEs ist nicht bekannt, wie die Korrelationsmatrix des Objekts %s berechnet wird.nicht bekannt, wie Koeffizienten erlangt werden für %s-ObjektEs ist nicht bekannt, wie eingeschränkte Koeffizienten bestimmt werden können.Es ist nicht bekannt, wie Parameter des Objekts %s abgefragt werden.Effekt %s nicht übereinstimmendEffekte %s nicht übereinstimmendElemente in 'object' müssen Formeln oder "pdMat"-Objekte sein.weniger Beobachtungen als zufällige Effekte in allen Gruppen der Stufe %serstes Argument für 'groupedData' muss eine zweiseitige Formel seinerstes Argument für 'nfGroupedData' muss eine zweiseitige Formel seinerstes Argument für 'nmGroupedData' muss eine zweiseitige Formel seinerstes Modell hat eine vom Rest abweichende Antwortgefittete Objekte mit unterschiedlichen festen EffektenFeste Parameternamen in 'varIdent' müssen eine Teilmenge von Gruppennamen sein.Feste Parameter müssen Gruppennamen haben.Feste Parameter müssen Gruppennamen in 'varExp' haben.Feste Parameter müssen Gruppennamen in 'varPower' haben.Feste Parameter müssen in 'varIdent' Namen haben.Feste-Effekte-Modell muss eine Formel der Form "resp ~ pred" sein.Formel(Objekt) muss eine Formel zurückgeben.Formeln in 'fixed' müssen die Form "parameter ~ expr" haben.Formeln in 'params' müssen die Form "parameter ~ expr" haben.Formeln in 'random' müssen die Form "parameter ~ expr" haben.Gruppenname nicht zu Startwerten für Zufallseffekte passend: %sGruppennamen nicht zu Startwerten für Zufallseffekte passend: %sGruppenstufen stimmen in 'random' und in den Startwerten für 'random' auf Stufe %s nicht überein.'group' in "varFixed"-Formel wird ignoriert.Argument 'form' wird ignoriertArgument 'nam' wird ignoriertinkompatible Formeln für Gruppen in "random" und "correlation"inkompatible Formeln für Gruppen in 'random' und 'correlation'inkompatible Längen für 'random' und Gruppierungsfaktoreninkompatible Länge für ObjektnamenIndividuum %s wurde in der Anpassung nicht benutzt.Anfangswert für Parameter "corLin" hat falsche Dimension.Anfangswert für "corNatural"-Parameter hat falsche DimensionAnfangswert des Parameters "corSpatial" hat falsche DimensionAnfangswert für Parameter "corSpher" hat falsche DimensionAnfangswert für "corSymm"-Parameter hat falsche DimensionAnfangswert für "reStruct" in 'lme.lmList' überschriebenStartwert von "varExp" sollte Länge %d haben.Anfangswert für "varExp" sollte die Länge 1 haben.Startwert von "varIndent" sollte die Länge %d haben.Startwert von "varPower" sollte Länge %d haben.Anfangswert für "varPower" sollte die Länge 1 haben.Anfangswert für 'range' kleiner als minimale Distanz. Er wird auf 1.1 * min (distance) gesetzt.Anfangswert für 'reStruct' in 'nlme.nlsList' überschriebenAnfangswerte für Parameter hat falsche LängeAnfangswert in "corCompSymm" muss größer als %s sein.Anfangswert des Nugget-Anteils muss zwischen 0 und 1 liegenStartwert sollte Länge %d haben.Anfangswerte für "corNatural" definieren keine positiv-definite Korrelationsstruktur.Anfangswerte für "corNatural" müssen zwischen -1 und 1 liegen.Anfangswerte für "corSymm" definieren keine positiv-definite Korrelationsstruktur.Anfangswerte für "corSymm" müssen zwischen -1 und 1 liegen.Startwerte für 'varIdent' müssen > 0 sein.Anfangswerte müssen Gruppennamen in 'varExp' haben.Startwerte müssen Gruppennamen in 'varIdent' haben.Anfangswerte müssen Gruppennamen in 'varPower' haben.Initialisierendes "pdCompSymm"-Objekt ist nicht positiv-definitungültige Formel für GruppenLänge von 'nam' nicht konsistent mit Dimensionen des StartwertsStufe %s nicht für %s erlaubtStufen %s nicht für %s erlaubtStufe von %s passt nicht zu FormelListe mit Startwerten für Zufallseffekte muss Namen haben oder %d lang sein.Log-likelihood nicht mit NULL-Fit verfügbarmaximale Anzahl der Iterationen ohne Konvergenz erreichtkeine Übereinstimmung zwischen Gruppennamen und festen Wertnamenfehlendes Aufrufattribut in "nlsList"-ObjektModell-Formel muss die Form "resp ~ pred" haben.Modell muss eine Formel der Form "resp ~ pred" sein.Modelle mit "corStruct"- und/oder "varFunc"-Objekten nicht erlaubtMehr als ein Freiheitsgrad wird benötigt, wenn einer von ihnen Null ist.Ordnung des gleitenden Durchschnitts muss eine nicht-negative Ganzzahl sein.mehrere Stufen nicht erlaubtWenn "pdCompSymm" über Parameter ohne eine Formel initialisiert wird, müssen Namen vergeben werden.Wenn "pdIdent" über Parameter ohne eine Formel initialisiert wird, müssen Namen gegeben werden.Namen müssen vergeben werden, wenn von Matrix oder Parameter initialisiert wirdmuss Formel haben, wenn keine Namen gegeben sindZugeordnete Namen entsprechen keiner Permutation vorheriger Namen.Namen in 'random' und in den Startwerten für 'random' auf Stufe %s passen nicht Namen von 'value' sind nicht mit dem Argument 'nam' konsistentNamen von Objekt und Wert müssen übereinstimmen.Die Namen des Startwerts für ein "varIdent"-Objekt müssen alles außer einer Schichtstufe enthalten.ein Objekt mit Aufruf-Komponenten wird benötigtUm Kovariate zu berechnen, werden Daten benötigt.Zur Berechnung der Kovariate des "corStruct"-Objekts werden Daten benötigt.Negativer control$nlmStepMax – Standardwert wird benutzt.negative Freiheitsgrade nicht erlaubtkeine Koeffizienten anzupassenkein zusammengefasstes lineares Modellkeine Standardmethode, um die Quadratwurzel eines "pdMat"-Objekts zu extrahierenkeine Freiheitsgrade für Schätzung von Standardabweichungkeine Freiheitsgrade angegebenkeine Effekte auf der rechten Seite der Formel erlaubtkein angepasstes "lme"-Objektkeine Anfangswerte für Modellparameterkein Modell-Variogramm mit 'showModel = TRUE' verfügbarnicht existierende Gruppe in 'newdata'Nicht existierende Gruppenamen für Startwertenicht existente Gruppennamen für Anfangswerte in "varExp"nicht existierende Gruppennamen für Anfangswerte in "varPower"nicht existente Gruppennamen für Startwerte in 'varIdent'nicht existierende Gruppe in 'subset' angefordert.nicht existierende Gruppen in 'subset' angefordertnicht existierende Stufe %snicht existierende Stufen %snicht für "nlme"-Objekte implementiertnicht für mehrstufige Schachtelung implementiertAnzahl der Spalten in Startwerten für Zufallskomponente auf Stufe %s sollte %d sein.Anzahl der Zeilen in Startwerten für Zufallskomponente auf Stufe %s sollte %d sein.Objekt-Formel muss von der Form "resp ~ pred" seinObjekt muss von "data.frame" erben.Objekt muss von der Klasse "gls" abgeleitet sein.Objekt muss von der Klasse "lmList" erben.Objekt muss von der Klasse "lme" erbenObjekte müssen eine "call"-Komponente oder -Attribut haben.Objekte müssen Koeffizienten mit gleichen Zeilennamen haben.Objekte müssen von den Klassen "gls", "gnls", "lm", "lmList", "lme", "nlme", "nlsList" oder "nls" erbennur eine Anzeigestufe erlaubtnur eine Stufe für Vorhersagen erlaubtnur eine Stufe in 'gapply' erlaubtnur eine Stufe in 'gsummary' erlaubtnur eine Stufe der Gruppierung erlaubtnur Residuen erlaubtnur Residuen und zufällige Effekte erlaubtnur einzelne Effekte auf der linken Seite von 'form' erlaubtnur einzelne Stufe erlaubtParameter in "corCompSymm"-Struktur muss vom Betrag < 1 sein.Parameter in AR(1)-Struktur muss zwischen -1 und 1 liegenParameter in CAR(1)-Struktur muss zwischen 0 und 1 liegen.Parameter in ARMA-Struktur müssen vom Betrag < 1 sein.Plotmehtode nur für Modellvergleiche implementiertSpannweite im "corSpher"-Anfangswert muss > 0 sein.rechte Seite des ersten Arguments muss ein bedingter Ausdruck seinzweites Argument muss ein groupedData-Objekt seinzweites Argument für 'groupedData' muss von data.frame erbeneinige gefittete Objekte gelöscht, da Antwort vom ersten Modell abweichtStartschätzung muss Namen haben, wenn 'params' fehltStartwerte für Parameter haben nicht die richtige Länge.Startwerte für Zufallseffekte müssen Gruppenstufen enthalten.Startwerte für Zufallseffekte sollten eine Liste oder eine Matrix sein.Startwerte für die Komponente 'fixed' haben nicht die richtige Länge.Startwerte für Zufallskomponenten sollten eine Liste von Matrizen sein.Schrittlängen-Halbierungsfaktor reduziert unter Minimum im NLS-SchrittSchrittlängenhalbierungsfaktor unter das Minimum in PNLS-Schritt vermindertTerm %s nicht übereinstimmendTerme %s nicht übereinstimmendTerme können nur Ganzzahlen oder Zeichen seinTerme müssen alle den gleichen Freiheitsgrad im Nenner habenCollapsing-Stufe %s für %s nicht definiertundefinierte Anzeigestufe %s für %sundefinierte Gruppe in 'subset' deklariertEindeutige Werte der Kovariate für "corSymm"-Objekte müssen eine Sequenz von aufeinander folgenden ganzen Zahlen sein.Eindeutige Werte der Kovariate für "corNatural"-Objekte müssen eine Sequenz von aufeinanderfolgenden ganzen Zahlen seinfalsche Gruppenstufenx-y-Daten an splom wurden irgendwie verpfuscht.nlme/inst/po/de/LC_MESSAGES/nlme.mo0000644000176000001440000000326312203635654016307 0ustar ripleyusersÞ• tÌ4!F3h7œ0Ô%3+!_98»”ô/‰&¹9àK3f*š7Å)ýJ'@r  All parameters must be less than 1 in absolute valueCoefficient matrix not invertibleFirst observation on an individual must have a doseHaven't written the compound symmetry case for this yetSingularity in backsolve at level %ld, block %ldUnable to form Cholesky decompositionUnable to form eigenvalue-eigenvector decompositionUnknown spatial correlation classanalytic gradient is not available with compound symmetryanalytic gradient is not available with matrix logarithmProject-Id-Version: R 2.15.2 / nlme 3.1-105 Report-Msgid-Bugs-To: POT-Creation-Date: 2013-08-17 08:12+0100 PO-Revision-Date: 2012-10-04 19:53+0200 Last-Translator: Chris Leick Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Der Betrag aller Parameter muss kleiner 1 sein.Koeffizientenmatrix nicht invertierbarErste Beobachtung eines Individuums muss eine Dosis habenFall von zusammengesetzter Symmetrie wurde für dies noch nicht geschriebenSingularität in backsolve auf Stufe %ld, Block %ldUnfähig eine Cholesky-Zerlegung zu bildenUnfähig eine Eigenwert-Eigenvektor-Zerlegung zu bildenUnbekannte räumliche Korrelations-Klasseanalytischer Gradient ist nicht mit zusammengesetzter Symmetrie verfügbaranalytischer Gradient ist nicht mit Matrixlogarithmus verfügbarnlme/inst/CITATION0000644000176000001440000000153412122566365013362 0ustar ripleyuserscitHeader("To cite package 'nlme' in publications use:") year <- sub(".*(2[[:digit:]]{3})-.*", "\\1", meta$Date, perl = TRUE) vers <- paste("R package version", meta$Version) citEntry(entry = "Manual", title = "nlme: Linear and Nonlinear Mixed Effects Models", author = personList(as.person("Jose Pinheiro"), as.person("Douglas Bates"), as.person("Saikat DebRoy"), as.person("Deepayan Sarkar"), person("R Core Team")), year = year, note = vers, textVersion = paste0("Jose Pinheiro, Douglas Bates, Saikat DebRoy, Deepayan Sarkar and the R Development Core Team (", year, "). nlme: Linear and Nonlinear Mixed Effects Models. ", vers, ".")) nlme/inst/scripts/0000755000176000001440000000000012131311354013673 5ustar ripleyusersnlme/inst/scripts/sims.rda0000644000176000001440000031663310132476061015360 0ustar ripleyusers‹ìÝù_ë÷ü""©ˆ"M¦„ÚóVJR†Ú{ß÷½ ™dHf‘±‰„Ì!„"I¥ŒËQd,!!E“)„èYçs¾g¯×ó¼ž?a_?|\:Ù«ûÞk­óú877z¯Ó„Nm44ÛkhhjáT« þ¦††aGüµSØ‚ð@ÎsaÐ öÿûN íÿ~Õů•h¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡z¨‡psÚÍ‹\ì$£[½B½€I*ƒæ}±ö¿$êÌ—gVæ³i‘û$n°<Ãæ,EÖ§u—[.»G¨[|ë6°3§˜¿ÞÚ˜ô å%ÎÀäG,[˜ý˜‚òYùÀü\f=³X ÌåÐ £;ýŦ£[ôbÒ@®8:üç_OPÜü%{å:Ø$£—i… øâ3`×ÍL`vÇmŠ4wîü–7'ófÚÈpGüúß5“"ל¶Þ\óûAqµ|ÌàpgÞWMÕþìTé¦bánP¼Yðtô`¸N:×õ¬Çý)u×€Íù!yb« ¬¬ÛÆ2íáÀµÊ>ô¹úØO!~V>ö´µErßÉÀDÅx»ØžE÷'~.…׈ö±ßsÜÁ¼™™ ìúÛÖS «åžxV²“S{tÍÏfê¾^Vƒº{vNeÜ×, ·õŒõ{\Ÿ‰K ª?3w¤ùÕ†@Ï m¼≠¸„Ó¿k][x1w:°þíQôXÃ%àôŸâ¼?·Òisâé«­ÀDž?®X\€§xûÀ2Ÿ#Ûì1v^ÇuŸÖ]¦.`F`×öÀÜ(Zrù0ìínfVw3È{:³˜²#&“ï;$qã×G€)«~—t·¥ý·Öûð¹Ì+ý+š©m]:õ¹˜õìÜõ¸3~—š‚¢¿bÖ"‰(NH\Ÿ¾Ì“rfØ`”£VƇà~Ÿ‰Þ2Ú2oK^…F:°eW×|XÑ ä—wi=âŠÎzóË¥Ù0¾Ãb·÷öã·‡Ÿ|Ô˜*ßKµÞw©ïÇ~V²ÇþÁ ×Ó%c`ó˜ÇÀ…nJjµnn¨µsìo`_qù§ûvÄÏ÷ò?’ü×K>ÿ Ô” 4f-³èLßœcgWž¦]¯Êá~¸®‘ñÒ»&y ÿ!°x4ü°ï¯ê'á>¦DýY[¬ß´ZGm€Kì?÷tîÓŒô–‘¦žÀ$ʽ»#0æ·b+-Ù¾µûú„ÙÀÝåñ.7"O+-)¸¢¦¦WF1ÀÞ,êžêФ^-zËxo±Î³þQÀ­œ"“ºdmž‡™L¼ ²Ù§þ.ªZòèn™¶7»e]+³ïå4ݾý:FS£³C÷Ó&`ã[–¦ÉFƒ,¦[ïa¿VÇ[Ýe²ÝpP¼JÙm2~>ç\aõ¼"Pü^_:À. X¯ºýÞwÛ·µ{ÄoÞÏ 6 NÅ®Àn´+M›ŒþñÝùÅýÝnÔêÙ+d[ÇF%]”à=áܦqË€ývÁ)´§¸7-™Ö SÜqŸ¬)…¹Ànº0oR-`îûúŒÔ(¦»ŸÎÝûÀO<{Óˆkr|J°?Lfº­ö¢™SñTP,9;?bâ.àÚN–};ŒÎݵ)Ãp?›‹Ê3) x›ÕnÂ&àêVëoîÞžŸ1²nÀMŒ´ßØç[¹ÌzìŽCÁôª%&9¥ý`b0¬(÷O¿]ÒÙ܃Ùî[Ú‹€Ýu×bØ9<×÷w_øud寚ùC¿€{áœÐñãR[_ÒIã‹°³ó3ÂA»ü~ɇ 3ÔJ|{t0qoŸŒ=}äß,n¼Xf\—‡×½HyØ¥ðãSÐÁ NzŽsAùò¨åõË›ÉõyÝq®Cï˜ÅëÉèR[ú˜þ«¢ò&‚ªàšT(B6ÿŒÑeO«î×r³€c»¯¸Q‚÷ñÒ6ûÖ²IÀƒßçÉÀeíÓ˜rg0È‹»œé/Ásæ˜ûöy*È«§M¼g~>)Ýÿ£u:þyçš¼ÎÀ¼[´æ„è°+ÿž 6ÿŒXXÊ÷FËczFõ4·œ8`p¦×uØØÅ¸¯’ºœÜ ì‡ãU‡^ÎAOxº'³Ãñ¹ßtýŸ£°>è‹£>§×àæ‹_=¨U"Ú<˜Ã½&~îš ¬ýåQý‹-;±¿ÈÃÏѧOÎ3¡Fþóú2­úô6èr °>Þôþ圎£Dhª…ç ÿÇ~> ž—XÖ¹(j­ýi\lþ˜óî|kÍÙœÀ&·´O¹3·Œ4·ÃÏm扶řLa9+öN(j&Ujw¹ æáŸ>¬€yßK7e%°÷t‘;Ø% æåDOshD—Ùº>ç+†¡«£—là¬g¼<Í6'>̬y9˜‡Úo*ô«@¾÷‘þ !:ìµsî¦Ì©×— ߣӮÒn½9×ñøÂÙW L•)è­^}âý`«Þ¿êo ŠÊ‹+{€s|µvû·G]š¿ϵ¥lù}íbPº9v½×&` M$}*;€¼àÔ ¿oµp½oÔhÁ<:jÂ¥s€+Ñs¬>„®,4¹Û+`[«íD¯Û%º´ÜmÎ'/Bö©äÍÛÙÑf˜¿Ê,;ÛÀ|³*Û²<Ø ;î}:Ö˜¥ÚV+¾YçÁûæ—ƒòûö´ì¾xÏ77ø~+Øg,¿C€m˜]¯—»Ï—TUÈfíÅØš©áÀyÑ|YŠ9iK[njc7é<ÀEÌ/žÜ)W`V/š´zB0ÏœxÇgüíÃNßsjê©Þ¾àxeXË# xÄ–;ËØ¥®³¶á½_çÛqBÊsÌ[þšQÌk.>;®²Sw–o,”€¼ÕuÈòX7,™øzƒ%àù^úÒ¶)˜»•m„¸N܈¹±õßÝû¸}ˆÏs|iÏc»Ûüs^Ïž]Œ®r¨ëK1>çÙ•h`¯Ö܇s (ùb}ýYpΛ%:c^L•9¹Š»Î÷>w¢G<ž ÜÀ‘͇ч¦³–í:ã½Òõ4ÏÒ+6»Ó Å•`<2Œ3_nv$×!¬¸”cG=Þé€÷»%Ìj]Á5àükru§bþîùà’NÏyÀJºÚõºÖŠ^-éSc¿䉓–^â÷§Siû ¼?¼µÛóð^îŒîÜVs09_ ºõAGÆÚ‚ó}àzº•äibd=f ÞçM¦ë,öTÍ“ŸÚû´ïä݈wÀÖÆn1üP Ûº\úœ Ìàe5LýA9É5Ëïµ>°¥Ó¼ÚÝßœí°(ó˜G¾FÙh·«öwnžòùlPÔÉgÚ·›kï8{j0žËÿâOèè½ŒŠ²$GPÌù"Þ¬Üdƒ6OÏßnOuJÁ‘`ºò·›Ì£Æƒ¾ÀÍ‚·=ÒÏãVþèU.0“*îM|: ؇÷ƘÞÇû<ëyeFwŒ§½rÀ1tÏÕº`Î:ÌóÎ/ .]²ˆWÓë·‡7!êÍ ¯çÀJóë\ZA±¢‡ÁtŸÎ˜_Zç×7ÈÏ­Ô³>q”Þ]^ìXyÛ~v÷~;ìS‡q«€{š{ ïÇ©Gní–â}¥ÖŠ¿oó`ñ}Üÿ%:éÞç±>|pR–_ˆ÷Èèö¡ÆNÀü süü ˜1šñ±“:;gï„ñ£pÿ^·qÝt÷ÅjIeÀÊÇ »V6Ú¦i QlÏ*&«¤Æ÷ŸžWýh*p½ü–wüõÑ’¶ÇБ’9ÓʰîÉ<Ô¦ž«= e…eèËîôî]ÇîvØŽë¿\†3.Uµ¸3ž3¶OôšGÀ]ù”¼‚ÅÏß°kzV\ß•] ¤-Þ¥6§|]<Ü`º1Ö-DÁ¼|¬AðùžÏ†_GKƒ¾ã'¹Òk(“&ÔÝÆzéxô1‡æRÌ¿ç;ê(b»èÂä_·1_è|à\NýÔ©™¶À_ú®°{0Ïc¯ZV­®ÍþS…Ýð>Ö.ssí ²sÍa™OrA©oá–°b7ȽÇ÷=à§ÌHÛ{ ¸Ÿ¹ÇïFÊñ~Œ|;c÷«ÀZ¶½¹ü0摃5ý¾·$ë~™ÖÞ{®ý© …îC°vƒßâ :=ÄîC“GÖ×7_ÅŒîTðîâD{ð¨Q”ìî€y®âËÊõ6{·ö²®éÀüâ‡ï}lŠÃ-‰¦Ê} ߨŸöú$ÖÉ5±9=—^nuï¿»4Ü~*Öƒ#n0Ç .Ü>µ“ È_æ· 2Öè¦ñŒƒû8êw9:SørIHN<°¿®¬Ys ׉;ýÊó|0püôMÏ¿­ù_ëÑúŽÀ´nm—=ë0#:Wü] Ìšù±Éà‘ygÞ ú&zsëä_MûÜÇ}ÖkۅΚ© ìã¢Í™å%ÀZ9 aäÙÀ¼´lwñ-Ö×ËvjJÖ‚‡£}nô(7ìgâºÉ6€â¡¡¿ã¦lP8n­ýyf,®ÃŒF£±XŸëúò-ªÈz0ô—£—léÍôÓ{r•¢e&p«Mö[„ñŠ‚²Æà9yv¨ÿR¿V`ç¾õÐ*l‰Çö-¯ƒ2òï¢ÌùW€sg= ˜9[¾¯}»ë¿€„Zf öIŸ›£Òe pO÷úiƒ^øe͘)Àûa“jrªy8°z{¶â}¿0dsÎ[\¯=½:¿Ô.ªÝ´›NG zŸ¿Éø.(3ÚÙ÷äëÛ=©_á-ìËL7škºc_Óvð9—UØ~Mž3Àï§æ¶†i tõžÆVàú­ÿif†u{BY…õ.\å¨×Ñ6A±ýGEýšdà‚=öûþx²À?O––ÓçÁìaƒOáóŠÅ-X¿—îý]^žgømõŠ-€¹‘©óµí\p_jjç0Ö{Ò:“…éó@aÔ­›äC&pÏÛ-2ðÅ{œR© ÌãCaÛ{`œÄ#üG5ö ¿Ó4È#?÷Qò6¬ŸÆ°yï¾¥}áêý S€uú¸>æÑ/P.ŒýmÐ×ÿX ‡çÌÛ{T—3°ï©øé”±ëŠöåwç`ý¡sþpÇ×Û@ñ­øÒ}G¬23x6#£pßš½;tÜϰ×ÖÎJàfV…œØû•C¼Ïa¾>töAÑP¬wÛÄÏïPŽëö2wãpì’§d·NÀz ÄéìØÑ˜—ÚÆwªÀ|rKžöaC3p+¼­Î´÷<{ßµ8ìOgì­¹ñòôB2û'—0ù4Pš8–æ<fÝZ—ë¹3€}·òg©öû•ŽÔaÐÎY±w1öWî_[c²Ø×qs¶=°Ù•iÉ逞xÝkßò8C¯T}¶ûÑÍs¶µÌ7ßЩÓñü\™ÞdŒý;#vÎ ]Ì‹U/‹zvÅß?ë'öÁ_· ±o—–Œõ³èÒüÊBp×ÊÈ>›ÖJ›ŸqïYÌÿ››r·%à9Þà!õoÊÅ{½WGõÀºïÌÊÌ؇9Ô'Uu/Çüc*§uԔܑ²•Àz*ï0À½òžùÃÿ)°Ýoæö¿ˆ}Jc×ý³±ß¾ñ¤(Ä+¸¿Ù¥×fâCOÃÒ[¸žµ™ù9šiÀÕ|¬™ÂÆ[tv¾öÃßÀÅ„ƒÑzüü÷mŠfc¿o>cciÍ^ŒõÓ9¸®Wý’¬€»QSžŠuePä¶#|AV™ùÇúÌ,yÚž‚9˜z¯4õqFøó½W xø¼^UÙ¶¸îC&|Äõ?³HÓEŒ}â—ÓîWpÀ4ô9ýÄóqü»…#j0ϘÏ)9Å<¦Z/ÚH9ëšê—ãSãÑ—ÄCC×âÏ‘<®3xbÔerk~1ÈCt¯Ê÷«¼ëa3bò°iøs,ò¿öÝ÷óô‘K,ÈÓS»¼ðìœÂƒË}ƒ÷õc»—¥®Û°¿Î/ä„õSÉò#gÃ@ÞÃõuv; ¹}-2rþ…ñìì;eÜíé¶K€¹7iö é cmœ+µ°/+ªR»¿ ³4™ž]†çVËçéùÅèÁÅŸVÝN3qÝÏ_ÃÑë©òƒ]‡@ñxÙwÏ º x—|Õä9ºÙ¾Å*äu5ö‰¢_!:úÀVÞZzÑ=O—ºÜøˆùífæŒÐ!Àl¼´þa æý§w&^_ ²e†¤„¤aº20ì>æé’}VàÖØcÿ|ëvdÁ)ò¢è Àé—2–—ÐÛ•Çêç<.eµK’ÕM`Cçì+Ÿy9²Ôï’Öiúš/gâyÞÓ#+x5ÖGSsfåáýü©nˆGü¹&¼}ª‰çÎú€ufÂ"`ìw:ËðÜ5¬»Õxä7¼>9?ø Šë±ã3›2ñçÒ7üb…ù.lõc‹4'_pãëeYvë??™ärÕ²ÍêtÀ×c[ÛØZ¬ÇtŸþĺ´¸íÀ!°~èq`–`d>Ÿó˜Œwï@ñý†IQEö=ƒÛŸ6&mß«}}ÑûCòÑñ“Ñ…wí;õ9 Љù½`c¼ppy*®³“³—^>ϡŠ•‰F ¸çâµnÖ½ÓOo>~óâ²;îÉxΤûê Ò{ÃØnî±k°îëéucp ®“…uóžˆHP¦{ÞÓëðîšÝ¶Ã|¿HûWRp]≥‘]ÊìÕ˜¯L§î¾ÖŒuÒë)ç-~`=’–”r1¸ä [!°z$p»yíluùçðMÜ[`+‡~µF‡K}†ÅLÀs+O¿Š?ÏEŸô'n`õ4­¨ ú{<"ÞuÄQ`µÙw À”ù›?:ì­cõ-J¹®ü`_ ì÷ý“pÿÜ7·ûج6bdA×íAÉÆ„m?ŽNló[éÙ ¿YÑ™öC±Þ¾jZ½Óî%ÖG¦¶áãùßgæ(Â>d¼Ws0Ö!ñÏþÅsñíæéÕ³€uuð^jìõý.æ‹ñ _uvéÿ”ÙÙK‚óÓ+Qï÷¸8§;Ð1õÇæÁI5,µPÚbùåðÆ „X`¶%ØÖb½w-Ùy–äpÇíÖݶé ãpbÀ‘Z`Óö¦(oŠ€Í’›ú]ü LôžÔ’‘¦ÀÔ­ðÓaA1­ªÿ‚o=Aþk›é ËpPvLùê7á (¯qöxB=Æjnðƺè˜×¸ìÃ[SõæÅ]EÞ³å•ñ<]ñco9Ù _Füùˆül‡÷NûKMòÜçás®/Ú'ƺ¶×Eù`W꺥êø×)äÈcžÏNãìÑó·ùæ‹M¼°NðÛÿêÔf¼çxŽÆóª«ÕÙà3擊nžΠTõ³¸€Þ[V‘ZŠ”—Vo°nªuhÜ/k \³Ë‡níÑä=vvÙlÙÑÁ s€½óõŠ‹ÇPxyç.°ù·'å¦0…©í‹}kö;·~¸o¾}vÄe¯¹ýØÚç%Ø—í]#8†ë¦3¹ï¬^€9ìjö÷ô:ìïwÄHA¡¯Ð¯ /yÙóë#b“Aq[lX†Þ÷|âÝó à†>ýöˆÅû+¸µ{m5È7[®–c}ºÌêÂù.1 ?“ûáÕCÌï…ZÎŽzŒ_yÅÃækÀÊ«GþôEÙBNg#Ö¦QßË@þó´l([‹__år³pgMKgtÆ|÷¼Û®ÀÚ`P«B£wq÷Ávànª¥×±ÞträsØÜ÷¼+¦‹°îJ\]kxX~ˆöæ¡ iüñ#c öÇÉÁúf6ÀãÙ¯¼1 Þøs%‹ñ«6á—/óë¯íem°ï3{QðmÞC_ûctvÄãÇ»=[€éa•dSœüÈÛVWàÚÛu´ ûÙwÉ>—ÔÃZ¿ãõÅ~1Ç)H9ë©íE·¼Ãþ©_~Z¸îOà6õ>Ÿ õÏWõ}n3dýÇ0Ûß`_·¢Ç”ü¿~s˜-ùÀ2’Tç¦W«—™ŽuÜ”ÒY“K{w fèÀe±_O ÑÿŒû£8áÈ›)XÏ^¶—[,źýèã2#¬/>ê6Vàs|vÀBë®÷÷ÊqèÜîˆæ}Ç@ÙíÊ(¡Ðûâ‘Íæ;ñW§îÁÏœð>M(?uûÃuSýjÏo™8/)ïì€åßEZ¾ ‹Žè÷Ñ Øåy;_Ž? Š¿ïÊC7<¦ò'´Ù2Ë-򼄯_-?5{ô×îÀº }Úg!Ö/ÂûÏaÞq \ÛªmŒy©Ü#{ÿ<`BÅÉ-ƒ+ŸR_ot˜^æG»˜MÆ}:|gÕ ÌO8ýÊŽXjLå_À}põPÛ/ /Ú»y‡æÑˆ#a‡Û7;5êä4å9`òÏøÍ @ÇËBLËú E'ÎË-§:ûüþ±Iž³@6¦Ó 9n»6ÏghÀ1¿°Ý…kñ¹Ù´¹JóÀ†¬ßh-ƺ²ÝšÇOc~Øë Væ.Àö~ô«å¹?(³”•ùËð]HöwÙ£ýûòßýãð|™ÔG¾:²X»ø-°žPì0ù[övæ!Qê29vfþ-+¬ ߎ}•‚^Ì}­0ËFo5'lñI\ˆuˆ‘¥Ö'½ÏY_ïŽõõÁ>ÇúãýSf=B/²¾Éû&á>&”ÙÝÄçuzyîè¡÷ X·9Çù(úôs|¯aÏóÃE1§½Ð¬¸ùÌp(x“̹|dÇ\“°Î:ÔÇ€ïe̾YÕŸ£ñü/eŸÕoº7Ù*-¼ÛD¬ã—ä9[bÎYöhöÁÓÏoÀþ*ãäR[M` L£ü…uû¸[¯IA!õÑŠÚÿ<®(þZ€ù õèºç®0Þ¯qŽô8°åÚ»tÏ`_§ì6e (®Î}Õßë„·-ocý>¦.=lÖ)É Ëàù‰w€{ò7]Ìzß6Åâ•ñÝÆb—Ú“m”•ScÚÝè:xÝ=§¤5<ší>‹násïýh¾{¤'°úÏT îÌi‡ôý 8âý¶} ˆ±ÏyÈlËœ^¾9À.90úÈh!毸Æñ•øù'·=ûÚ€çù“…É9WÖã®…ÛþØÛ#gàÒ©ø}“’=¼“±gUí-`O¦föß_®å5poÖ‰§BsåXyÆ9lν"ÜÓ€K Õy›Ü‚kZͱ.¨+ضåˆ'pùÞÓlAgnœ`s~0[+ófǧ{9o÷…ßxŽŠLñ¼1ÐvüôÙèøè~z#^­öþ˜ˆÒ‘½@áÙ/úöð<`ÚèŒívæ#æ«â€wc­Ÿ”•Xºó~$<Ü…õ2X4 ˜1[+'µÇ¼ZP½®£©;pKfÇGiÃþsðä6€¬ó‚)Ýš€=;fÍÆÏx.ÿn±òùËö{³»ó_`24Ú˜í`;ù¼Í‹Ó ëyß$hµ5(ƒ¶þÔ³dy›_ë+ÑN6å™JMPØÏOxÍ»T»âTž°ö¾ùOï-æÄÙwÉŒpa­w§;âɄɽzb}Nú+*¸§7ß÷ÐÏŽý¦(?®æ=3¥ï“Hì„=_«ŽW0?ûb Ö1×Ç7h»3¯Û5XW³ý†^û³y,ž‡ÉÕŸ›Sþ?c½­ÿ?U]«‹ÆÿþŠzÛ÷ÿþúÿú–ø-sgÌ™µ¿þ•]KïßïÕúçŸkÚý7áý7áÿ7ü7þ7ý7ÿ7‘ü7‘þߤ­jf§šñT3¾j&PÍ„ª™H5«fÕLƒ§ŠÁSÅà©bðT1xªYÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød Ÿ,á“%|²„O–ðÉ>YÂ'Kød‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–ÈY" Kd‰€,%²D@–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰,’%B²DH–É!Y"$K„d‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÈY""KDd‰ˆ,‘%"²DD–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰˜,“%b²DL–ˆÉ1Y"&KÄd‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÈ Y"!K$d‰„,‘%²DB–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤d‰”,‘’%R²DJ–HÉ)Y"%K¤*K´ìlÿ‡‰žÆ¿ÿçÔÿ}-hîì°ÿ›k‡†x…àì¯ú-Lê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡ê¡4€û]W`o ìòy]E€iÙÄ[̆š¶ë7Û&ôÄ„ì `>iõ{X»Ø­¯BÛ§Žf7ãÇ‹P`[_¿?ºü;°·6~5ÿ°Ý6v?½JXåÌIÀÚ™¬J×HvÒêK1—“íë52ÿñ`Fý˜ž¿-zr³Üt`¦Nnæ=€ý½v\Ìþ@`Çß|$ÙŒŸ×®Û³Ç Ô¿ôØÏZ Xùò§çØ€ˆ‡í]9&μ³ (&œ9Ñõ+xÄ,uÌsº,\8ÜÕü 0³›ò/iînz`À¥èMÀ¦ÿ1=ÿµ8“Ⴌ>©À^Ÿ¶änoPzM|±åbp.0ËRf \_i…Íu˜¯•¼Ú/ÀF…w¿é0Ö# ^ïÈÖ w‡éŠ`?ÌùtqV5È_Y4äÈój¶uŠs檆Kõ®±ÀuóYò«Z þÆÕÝWÍnI\SÙ¬``žü.›Ú³ëÙEÏ»÷î€Í "?`£«V¼ÒLvÅÃi-fø{eñæ(Í.µÐ lÝŠùûoÚSíU½h[*pgÌxGcäÀžáõ_ÁeûfÉCþ~=`9×äÅYúÀvîý v"®CÁ5ƒ£W&· PsÕúí ß[Û4ö-°»<ú´x¬Vü´›î>`&Íð³Ù1Ø×1¡3Vázùq“~ÞL¦¾0m·I (uìÆ=ÕÓ®ë‰êšÀ°:uaK€IË]}Ö¾˜sv}ò€íg±ãÓ}\½W^T7âÛÉ:*Pde¥ø ³¦­­üÕ/pŸß½cXx®G­‡íG°Ls¿ÈQ+€eõdV;ŒA~ýzÅ%³sÀ,Í k){ÜeïñŽýKJžåùŸg¼­®<¸!óÎKx lø÷E¼&òâúK‡z“dQ÷ñR#0so =m…ûõnµq&ß åfÚÛÛ­Ž]“_t¸.F#?õ7öjÎŽ*Ã(à&J¦ÅZàÏÅŸû¢x<ÞƒªCI­ÌæÍ;>º¿V·÷±÷eÀº¿.îŸ\¼ý¡Ÿ‹Í€9îÕÝ`Õm`”Þ³×”·³8AÿJ(Mz]ÎLÖÎr~¿ó¦÷€³b¯MÞ» ó&Þ¹\ùeéÀÀá û1©ËÞ&W/ cÆË¿bA™WüKÜ÷»å­Oïs·jú±»ðdÈ·¿= ì²Hæ{8È£4vtØñ¸Uõ'“…¾x?«,×UX¢5>éŸÿj;üÊ[ÿÇA`OcoêWYwð«9þyÃå—­Éý[7ꟷ }_‘Ýá°Mp?«øÈ[¼1t°9.¦ácñ~Œqô-ö È컬oØnÜ÷„Þ‡/ãúT=OòÏݘ[]ŽØ>f…wùì7àÄu¿]ðÄϸg(Ž»jç>d$p¦ :Ý¿”cïÞá^bp³ã2Œq}÷Šýºv°sÃ=pßf?t~íJéáÊn:CAi5tÑ»«m€Ë èyÈË8ÇkÒЛß:›7ãz.¶Ëëm9°† ZOÄZòM¯È[½Ácéq«Òðn¸^;#G/÷F—êMÎì*ùWëÄ’÷ ðøš;À×;¸—¢Oò—ûllrÃÑ Øz¦ß\« 7åt8›ÅÀj>9éìž L×'ñ™¼ïÀ­õNgÇEbÞf÷îÀ®/öHýžf_š¬5;Ðò‘—Ý `ã\5ú¤]Ö˜©Ž ÚÌÎUŸ6ðLé^ôÈoá `r#ò¶ïå"³´§ý’;5÷×ý÷ë€ñéù¤1©˜h_iëa-PváÂÊ~Î…ÝêìȪnÀ,Œê4ï2Ɣ֭æ¡p6¿ÂG—™Ðx" ØÑOw½½….W—EÖh“}}ÊC»,ÜŸÕ‘å‰AQ6WÚS¹”Fí[¶÷s.xǸPGŒ?ö»NÛ€}~k´??G›ë¨# ®ßï»a– ºÄdù…þϲ¸^&myKlݦôpctA©µu°b¯'pò÷§î=²æš‘Ö}xN׎lîøïYómy°-p{7Tµ÷ÆöB›C ܰô_úÇ|МµˆÎHçþ™ÈàÖ›ý°kZ\±è¹Ø zàº! ãM9pgΊfO÷¼¿¼ö+žûÌ*Ý£ ÀX¹x„ïAO¸® ìI;ù0§ Nî=òë¶ž×P$u¯¹R\F굿®ÀuX:>Só@Dç«lzÕodO÷7o€É¹èÖez[¸¾ðj[7`/¾Þ=³0Ó‡™é¿Ä¼³sY¤« æÏà5VŸoW·âÙ»“çÚ3rÁ»ž×ÐýÌÖy—¢(>(îúd½?úœv°¼ØÆáFf ´Ìx6l‚#p;lŠîÎûõ¼®Ñ™ÀÎw½Û_û>¸±&Ï¥n>#½"Ñí‘’?–óÎïÁ³Cè#°m<ê1Ÿw20>säCÍ;öˆ,Ï1©.ŸÅçùñþn­ñ5àÚÕ9}ŽnÔº£«'W‚²]äÌ¿˜w™Ím̫˘wÊʳónà¾M¿?(" ÝÛ-†y3ø˜4ïk 0ÍW‡|ídì¨Û”Û€âS¿s÷&w8éSx™È6lùte¤"äÙ:`Ë—r+~=DG¿ÏL®¶ÓMǧq¿R;D¶¿9ä*:<Ý¿˜ö··Ì‹…ÑäÀ7ûõ:øg˜ ó—]æõ‚ àv?Íò\ÿóÚQͼ»þÀ‡µÕ•ãþ$ýôi^ƒù)¶väÓW£­wÈ{0º8ó19¯ÖÆão%óš<nÝ4H;ëœëì7`ÝîàM¬w³I%›Îâ}_aäù÷":60¦ÞïõÑ“ò×§ÝM¶xåS`ж_¯â£Ÿ™Zór÷ÜÕЋ¥…Ë[wÍ7;|æÙµ·Òû›\Yï‡ùóÓÔ Sþ„‚b§¬êåð:P:7/¯‘àÏïÒ¿¿WÓfàÞ88Ÿe ¬…gsùšÎèÈ‘ž=îáÏ®ÜïóS`u ×¼4ÚŠù=žo^ ¬ÀÕvìa¼Ç'–;»®F·];hh¯z²mñ7úïæhzöž=÷@™]ïSÛ÷SÚ®jD½6p›´Ë_X¥€Òeu·~“0¯NiüræEO`"S¬}`<3ÅäÎÍÀ ’ùûK`]EmÆ;c=à—¢û¢}Ï{Ûprpuî))x^¶osÖkÎ}vlø}¸KR‡Ôq_€É/7én7˜G/.~Æ{-Hüûl柃W¤Ÿ:¡ûÉY·Zп ë–èÏÙ*è2Õ äùûklýáùË(}e…®¦|ÏKñfHôÙ#;Ç4‰^¥a‘™±xγ› <ü²¾ïÍÍÀlÐw2{W€uÍ;iM?}PZŠœ4ñÏëgúÓc[e>ÇÜ‹;˜zÛØ=ßðj8pÎÌî*çJ`™ÿõÞ³Y.inxŸÎíVÛØÇÑO¾†qxο™g\9Ï{ý¥ÎDäW#†°s¾ÓÁ÷CÓ½OÀö1Þõ|ÉT`isØóýßÞ+±¾(gËGܪvnÓÖšT¬OdóOš×q¡(fÖÍ?k5-ã9YÙ~øl0gGÖ1ÆýÈ­Yõ§` (uc÷}µ˜_ÖzàŸ+ý±e¡æÛà5wú£û•ÛseGü]ty\mÎm¬[ö<‰~ÉMô7ßÄüzõ󢡧7ò¹cEÃÓÞVv2ãp;ô0'sƒçCÌ;E7v½êÌ&ÿçýûxbý—­)«yÜÁÝž;gÙëöƒëÙ¡8ßC—`½ïöEñÉ]äwœÎ/V:Ò™4#ë6(d1A½ßç vó‚p]Å÷¯ý Êø¬a³µÞ»ŽŸâ1û }Í!ÅS±Nºý±ÉG‚÷¦8!«*g;ȾY HŽÇ:âSk©Û8}ð!w€3xm°žøím¸þKowv³l²XǺ0¿våÀ ù—.éà}Ÿxjw!à:9/¸lÒ„þG¼éÊ{öXïµUIÃлßS|–µí \òóßÛ–›‘¼ëšÃI`Rj%y‘=@ñ|‰îÊåíÝrèòñv¸yÎïŒÞØ`¾í¿~‘?>Ï4ÁÝ']Бü Íëñë[Z×ÜÆ¼Q6,~XßGÀ ´9ƒût¦aã—P`šš^ì:_²s¯ß­´~̳_SmæYÑgžö ã>õÉoB÷|—ÏñùÀƒƒnÌ^,?pU™&æÙ;“Ý~ýLÁºgö{ëÕg‚}ŸáçmÝùÐÏѳÊ'õoà~5\ÍǼþøùâ¢ßX?6<|¯ÏÏ£¼ ֭¾#¢oá4¬#£ôx±?±Ðlo<*·eÐì'w‡ÄgßÃþfIüÙ·[3¼2Êþõ?ÿó{Ž…ƒ±OºßmôüU¿Àf½ãð6 ü1hbÐ:ÌGéÎ0ÃzcóòÖ ñÞ}–„u,s8jΡ_ÀÙ}µ²òeìùW]Þ€|ìöW«Û%ßD/ó“Eþ¾ÈMá¸ïÙ±R÷ãÀÝxk'Æ{&_»ìö£}ëI4>¶¤^û¥M .±rš:ÝC7<ë::™È§+üxyjkðH>ÛaÀ%\çÝÙ±ïéèfâ}žþ~D8>¿K‰ìz7¼o#¯Š,{÷ùò‡Ô¿@‘1zuÓˆ³x¯‹…]œ±ÞÎ9ÜÞÙ!”ë_-.vÂ:þpI¯9ç@yÛ2ÖÓÏfþh—Ùxßó¦…—Ô\ĺ/n듉˜_ÛTºáú„mÝâ3Ý•Nl+ÇzÅ(C »28I—Χ~`Ÿá|¯ ¢çÙ;Ú¿Ç{UÕñsÆëúüÑ65uU /¸êzaz;ûÔøì³·šá?Ú ˜Ú탻.À:eÃʦaè‘«½<èÃ\Ü—•œç†ƒG‘dã¥ÙÑxþÇ Ï4;£¯¥óqÌ_¦ÍO×ë9‚rn¯9+f£ŸŸö7Å<Ç„´c—ÛnîLkkìOýs6£«\¯ç–Û9cwXößMÏóüp¸cmþšÅàþøÇŸèñv«8è| ÏÕcvwû ¬YùP=ÌãeWœcKÿéClÞ”·GG‡8¹íÌê„}ݸò—S¬A9ë[ƒÂ, <†÷¿ønüdP.ç—{ÎÀ~´1kéÐqû€ý2$(à Ö+AÓ6iÕD»_ylxá(`¹¦hÆ:s愵° p‚¿Ì8‹žå{o?RçÊ~ÏŸ¶÷“`©ŒÞ ÏÅ>iŠÖ%‡}ØÏux\ºé (Ç}p:tFóüm½M°œ˜‘1Òû(%VìWc¶\—º_ûÅk[»÷ÅüyM«×š ¬36„G8®Aoö-2„õòBiåàcPêç9l**æñ‰ï^ñÈ_;T=˜¸˜Š°¤ð˜``Zö¬(|̉ä¾Ñ-û@6sa¿öÙØ-È>;³óxuŒ0 û¢Ñ½÷î;“ŒÎͽݰ˜¿ó•ÐÁ-¢aÎrì·}¾Z5Åó²áȵæDôeœï쀬éÀý˜ÖÑó[9?ØÌj6(âÍ®¯Þ6”_RR¢––½þ Ì·¢+›¬±¾XnV}:(’×llÛûtezÂ'ÜÿÐè6ó3ö×Þà‹çt•Äܬ…þƒW†k‚|„ëÓÔßbà"¿Ÿo׌÷ïbwÏÿ¼Íõ¶ý§Kµ —²c…%Ö½Ö-]šŽcžÚr;Y‚y6®xj3Öé?ökÎêŸ ÌÓZÙù^¸·r¯”½ÆzÚç×ßíQØÏ}72»Ïåú>WÅgôñL»ñ§+Ö_ǧÄMëŒya¹µÅòÇX?DZ/›‚uXý­‰öɸÿ¼¨®A"O[Yîè ì‘E¡öâ¹µ~e^ºÍóë̈ý³â?/½Û{S1ÞËF©¨ Öï¶?¸ÓŒùäÛÚÁŠpì‹çf®H0îuTWcw¬ºœîU}•ø÷º’@]`V}{=ÒëÞk‘=¼DÀ±ð­€uUbîÓ•Mxÿ ¦¶_zÜØ¥»C«±®7ú±Ô˜)‡\qÀþä EŠo%ÖQ¯û.žá8ãV,æ›.û"Þ‡àþd[u®ÛŠë¤ßa˼üùgD¤œàmî±Æë¥ÏÜ€‹ÞÇ_™í‰ëŸ²øÜürçôl Tý&ªýˆŸA˜¯£Öü\÷ë³Ï‹ ·Ý ìŽO17[ç76áppÓ‡oŽ×Ã:ÒiÇäÑóôA¾â¸¶ß•q  (©3óÏû…—¿£_V:Âì‹zòâMޤ€"¦uÎø]!ÀUwšõwÿIP¼Yµ9»ð#pâ7ýoà9Ø{sí6ûÄÜoÓ"/¢ËV~•A¼Ç3ŠD)Rí5;bõhmã2öKöÛzïy½ùý¾[Æ`ùLa²±˜–¨þ¾w[€µ6ïå] JGË´€¹î||…à/pÎw¬³º~Æÿ~ ˜?]Û|_t až^ºÌ`c­ØƒxŽ>ú¶m62åô²q. Á³ÝöÞðMÀT{ߊ0C‡ä7úmF7ç<p)à3.íè×sØwõÚñÝ!_‹'?4Ï /ÊÛU1}ñœ¥ÅažK˜“^Ø‚÷v÷ΣÊèäë§OÂd7oÑvØûçv#ù9¹Àî_Qü¦7öa97B> ¿A×>~ç‹ðž›~Ý}û×ùퟎðå:#…ÕHÜÏK#ÏÀþו-ž‘d‹}c©xß”nÍM/ú V{ÜüYu¸~xp÷Ÿýtõî‡éUÀŒ*jÏ€âµ0zæà¯À>ªÖYr óR數€fÀ싹«• ç÷þöqšÀ-=_<(ë•ðBûƒ)Ø×w}ã©ó~ 3Yšv¦t"(SGúàz¿žf‘ºéŸÿñSô2|þüa—\#@.;\û<Þ¸üTEgC̃fX¬¿Šô°´C°_0k?d2:è:íPçpP†ßèx»ä¾,ÏܘinÞîý±?|:äIA&x0ûdnÅR`OÍ]vuE (½ATúô]ãÑ–XÕ úÜ'Ïo‡¹«`^ïv54ä {¯8ºTŒõô—œm—ð¹k¿¶Ì؛à Ìþ×5&±xOžÈŽf%aÞÏu©Ö¯Æúo‰¯Û®4¬?ÓbL/·?ÜìèÖ“q}ÜÜÅq­ ˜·»¼¸yëöa®y:`оþ⊠¸5¬õàêµ™6ºÙ¸ŽÇ³¾Üî òï"OšØc_!Zb(ÂþâÙ”„˜Pt¤{ÛY§ÉAéá‘çÿ@ ¸¬§Ý÷áŸû¾ïû‡ëX7Ç^¨uN÷gXïðì×6nºË ¬“:þIÇïó99­nÖåS2j#fcß¼SwXúùሠqT ( uæ>öÅÞÖ– S±ï9úÆ»ëÙÕ¨@ï›*tÖZI@.ܽ¨×Æ®ÀnAmåPDž[áÞÑ÷×aÔi-ìG{»ºÁz#“{—|@>QsÄö†~ÿü{-ÖË{Ü3ºª_`ö1#÷,Φûé'÷p}Û7_j Ã>¸ÚðP§U äŸürøÖañb Oõ¥nì“^IèXÙÔ™ü˜——*ï ¥lL_ƒ#GÑñêÖÐÈ5ç°/HwÈÑÆºùÚžPáø`ûIò+ qݽW\ÂúCPr²wgtVZïe^ ò¹‡ßœ]p”¾ÉÀýLïŸ7Æ.öJg©Ìû‹Çûµ7ú¢÷!3¢<€ýÑeÖKìÇ·­d#{‚ò·VŒkþ tø¦pÎiŒùjû÷!؟ǽ»x‡u÷¶ªÑk'b5\?d„C.ž¯AfjLÂ:{qíˆ=›Aa’=~s[Û_;éóa>p/ìêêŽÇ`•hùëp3°wݺ÷[€çnUï¾X:,©rÇó±~ΘÙ1ÀöïÖ}}.žë½ã͸.¾ú??Ï Êvù GbÅT²Z ñyï ºíØùÖa7¶„OîͰ°‚o̳Fš?GïÚ—ì ëQŽýÌEcãËx>;¤/ÙÛÃØŸ'Fö£»ûÎý½rϽ &`F+öC3/ôļ­Äó]—¼i[æ±ýùMÝp?»]}à4ÖoÓ|së} ÙªÎÛ±Ïþ5¿^O˜Þ³¿LúŽ}˜UE¿7ñþþ~F£ }_ö|—÷ší ¨ÛóÞëí%t_Ù6 ò<(}N$l;3óÉOPxMÇ~þc÷Æ£þèyÐ…‹.öÛ™¡Áû@ÙöÀºœGë…íÙ=~~þË{›»â{÷g«I¾ÝÐ ë0}£ô!ØÏ}î31. äf!­ßÿ噵.{C–€ü`ÔDA7¼—‘7ëjѽ£?‡îÁ:øEηi›ÑßÃwçýÁ_-–nÞ‚ëQþ3É÷)¥vÁÌjÌÃm×g6ÞÁþf¹¯‰@ë x²ÇLlã}¯³¼\þ ئƒÓŽè ÜŽŠôEÆXç<™0f­Î.ôøåmt`ÿaœsq kr¶;újüïKmZ5þ_½ÔöŸ¯«_µ¤¡~ÕÒ¿3õ«–Ô¯ZRMÕ¯Zúwª~ÕÒ¿Sõ«–þª_µôÏTýª¥ÿ¦êW-ý;U¿jéß©úUKÿNÕ¯ZúßTýª¥ÿ›ª_µôïTýª¥§êW-ý;U¿jéSõ«–þoª~ÕÒ¿Sõ«–þª_µôïTýª¥ÿMÕ¯Zú¿©úUKÿNÕ¯Zúwª~ÕÒ¿Sõ«–þ7U¿jéÿ¦êW-ý;U¿jéß©úUKÿNÕ¯Zúgª~ÕÒSõ«–þª_µôïTýª¥ÿ‡½7§*þþG‘¢¢š' I¦J…„霳÷>’"KÆ2dH‘$™’$cfQ‘´’©RH†DdÊ”$T’îêëóýý~÷wïýû>¿ç9ë+¶½÷ûý^ë5ôxΚKY£–þ+eZúOʵ4—²F-Í¥ÿÿZú÷§¬lìll‚ÿ~2ßÑÜÁÚåþê}“ƒ¦ÿŸŒ“Òü—ÿׄ¦ÿüå+kR+XÁ V°‚¬`+XÁ V°‚¬`+XÁ V°‚¬`+XÁ V°‚ÿ@]¿瑤¤aøí~Ÿr |¬_.­­†lpÁºma@$ôOÈo=„ÿëæùqC@ò[7–p=Fp~¡d 41;Ä»4ÅTW4]¶Q 'î ÞZ îl×¼÷È Qͯ¢@|´ú|@#ˆøóš¹ë€A|-ÕZ[4f Û·GÀ¸ÏÿW)qF5õåÀ°«=å¾Ïˆ€,•ú“&@Åÿ)”ÍÙ Ä»EEö¿vñ4­ÐKâ Ëø¹mH  ‰Ž+”$@okçʵ<¸™NËC4|O»¿¦Ny¶ùèIe õCÝÄïÞòžÕÝ‹ª@ÊÑ~ªµ‘@M§ôºß’ò¾%#׺Èðæha­'@x:òî-âôõ¡@oÍwÌ”ßðï5e®lËÒwª¢d Ð>Í~ñàZÎÕM»J6ÃÁìõòžf eÌ/=` t¹öBf@­ä}±á7‚Q¦‹ÎfÿgOÐ* v糋ÐåÜÈÃ_¿ˆAæ9ƒMÞ@Îý²&q)Pžm²ÛÝ¥xuÑÖä¢ZÇ/Ð>'9^¸õ“¿%y9¡”-§–þÚ[©ÄðÉà õ(Ü×â#'2ºðúÚ`—¢@-:~ð†¸ÐS„my ¤$œÊM¢”´.ç> Œ&ÙÏ\ŽxŸÝå´€xýÙHôáV v¦ì[?Óï±sm“//Ðí,'ï}”†Å¢>á|ß!×_EÀº+Ý÷^ˆ«5‘ÑG‡€X¨Ö¡ªöÈÖæiJ@/‹—Õ*oúwÓ‚qÐåŒì÷I®BlÔÄÆü6-ž-YåD—ÒïUm@;–Ôk²'?yŽ»uµþëK þ  6\u;¤äC­;GßàýMªÖì"õä'ÿwNÀt¸·éãîH Ì+¤öŒÁ)vå­X .Ë÷46ÿz¨,½†ë°¸)dÐ'åУW€øúîuÏ–A Âúµ—ßFd¥ëÚìGX·÷>˜]‹ëœÏe¿Äë"8W¬ ˆ‡ñ–Ï µCçz{ÙI`ü)¸n¼ý 0žféoËÀóI4Q½Ta»yD)n·¹›{¤€--ÉvɈÊ;u‘ø¼³«,çƒþÕ;¡Úóù@V-Ëè4î“Ï‹ÛN¸¾kWOwO!ÝSÕaÄç%n¡ã@^4 'Jµ¦m8jðb ()¶ò؃b@ßýâÍÊ\ ‡W‘sˆÆïâÚ:a ¥öJ4ª‡¥ I)âñÞtŽ?±@†:=YÌ ÄÒ©7šVÓ@Fó½ªZ¸AÎŽ1g i–Q75/iQ }LS ôJýù ËBÚ¹ú¡KfâŸfY½"iŸ‰y–"ó«î5Åý>Õ¥õ`>³ÓGÅ€ìÈlæ—Œ2Š«"$Ëh[óä â{}绸»¢£/•¾¢gqVÔÃn`d]y^cÔË>»Ô¿€Jl±éê< ”d†çþ²¿@êŒÇ­Æ>¼˜»¢g 3áìõݰî‚?²W/¦]CÁåe ûW‡û°Œ"âÕðû=)âˆsŸï=Öuýì<ëÕ´BÐ;S•­òorËBùÌÉ@/ ?ð`!ÐýOòšàŠsÓ|ˆkNE×#§þâ·´Ö „‡{Þü t±IKŽŸØ/­^Nje³rc·§†?âWwuVËj ×ô/¶jUâΡ]@?^zJ{›~µÎS-ÆF{q`òÉr<’óŠ¡Ï´#ñÍf`´ã«jÑáä\  j–ÞšŽì:öRa`ô]=Xô¦¦ÎÛÇÌp_ÓìLå-€Ú?s2£xNféÌkÄs(ä3ŒsÆÚØç²·ŸjŒn>4ôg55! ¨QqéÚ ¿DnÌ?dÁTNœ ľ|£[ã±ÿ{¼ô ñοMbŒ*±…ÒÀÒØj¹Ø9sÑ€TzÑ“ÿšÔyÿI›÷ˆÏƒv$eb_ 6Õ'í¬s,Ò¤Þ{¯®Üh ë8zTV„]¼sº- ëà™@í¯|a ÿ(ïš:Ì dá‚Ø‚«X7*bÊ]@úŸz£Ó ŒmqüóÌ‚—Šj/ˆš¢ãçìJ[`|¶^²”ÍZz*ˆ+Ÿw š NT™W+Gü7ϵŽº¢¹"×­ìAƒg»ºÜ±–WÈ y,ýÜÁjNQ d“Vø¾Æw1c½Xi {ÝL°ðQJSæôvöO@,P“,5âÅ}Ù5ÄAIõmwPÍk(wˆ]í^ïp=Ê1Ç:¦?Ã-äk†í DÞÔðÌ|Ú4wKC°?ÇdÖÙŒ¤ç›­ŠÃûIˆY@|}âûnûW 5{,Fž±góêEËB€z³jQSªâÕÀXÊ7 gÆ{Ã?ÑýõŸ*âP‰Õ3™?@·M¹\‘cÄ™BWmâÿ$éŠQ 9¬×Ä>quZZ²ìèÿ]{ïÁ¼*`ÞnR½}ù0$K–Ç dBIÚ…rC ãÏUµ5•ë¨ Wøˆ‹¹-wnÙ ~Œl¹¿Cy®â ¿#~_âóuqöi –™å¿ú÷ Çç.B†Å@4vgs•ñÅuÒöÍ¿ÉC{.¼[ ú»––éôgãÅ$Û¤.âó®wƒî²î@²eh¦|@Ü6^õ,3øß'ezóî8´U.ÅGÌ€~5’úõ­ègtr~·X Î({àyH·$KíYk öú¹=ˆÙ‰ýæÖ°þ/êšC;xñ³ªóÝo^Ôü1Z¨[öö:KÆâsß-ž¦‰jÝš£Âæo=PeìÏ7=rkä¨a ;ÐKãRŸ×‚î-¯‹çZ—z_“=È.¥îðßù@.9,‘p½ÈýbÉ÷¾H¡_ÕÜÁÄñEzšx©™}í\¹30f.mm’ÊjÂŒ‹9€¼\ú£ù~êõcLSì¯ }«þÖ@ß°j‹W;P§ìtÛˆùIÕúàgä—ðYÁÞˆP Òš:Û ûȲm7Ý|(ÎŒCãë°ž¬ö>‚zÊzaÞ®¿X÷eQ^"¸Ÿ¿SO4˜@~|»O™o 臛„Ç ‡ã.™Qß L:Ûüü]ÿ>97-Jq†L=ÿó•>5-ßžü›Øvýǵšf` sVœ}‡øRàÕfÐŒ|viñ"¨G2j‡-y€Q¼NŸïß'ï‰-Tw@|6ô_=~ ¿ž†p#¯ìúnºÅ4(Ú7²ÈÒ™›&îqdÈmÁvìËËÍê§ÂXípØïŒ«}zM°N5ʼnؤ…@nÿàÃ4*hí±O@¬™îÔòâh:¼ †\GèC ü•éÞ´ÒõKg½œ¹ÿ™yJà ؛¤L?úi>¡bÖ°¨;j=ycØ­Ógçû;×§A<ý™VÁ›¤í¨còH<¯ŒF_ªqŒ¡ÿHëlúÌó¦y?'ÙÆ$VIWš}†ûŸcs—»Ú UaµÕâæíåŸïWôÖoÓökÿ;¯ÌyÅ?€>uîà£VäÁR}!AéfÄ‹Ô;{°?Y¿V’¢ç«Q5âÂ…“Fü¨‡Cd¥w‡ ïÊ$dÎ;” Œg­y»ô±n쪰ÜXTÞúÏŒe¨ÏüüòäsÊ€ZÞʻLjþW'ÌÒrYÒšçÈ‹¦Ã%Ì3@„}×jö,²úÁ ?Ö©fµq•J0ƒ}ËL~½ÂjV½:wq2¯€rDÝ»sðŽG02-=Œ€::%Á”JyûÞrOä·âlƒg×O"%.ôý–ˆï¿©%ùé  Éo°žÂz¡¦Óßm᪺zú¹Ñ£@¨ê6îÜ:ûØKj»09ÓËoüäÂߢu:¨o죡ü PN‹c­‰÷@è[÷~_$èÄìwME=±É<äÅi|ÞÕë^¹a^m .Iê†)ûRÎ>ÐÿìW*î…ú¸,ÀuÛFıó¿ ÊaûìÚÕŠ Ü÷ä`âÑI'žAØ'Måö¦—°/pe/]ú¿òpˆk‡£¯PÕ¶>}²›·!ÞèÁÃ.+bŒ€¨OVuÙëÜAË;8 d–¤ù®Ë¨ öîËþx ÂÈd³¢â¨ÙžõÜç~mcͯnôak›ªÌ[/|ýвþ•ˆ¯«Ô›x„Á _©,ý úOcŸÛ¿Œ€nOåkOïÉ}Bvÿ 0–ÄÈuuFõsæØÕ ÔYW×<Èû7^J|Qt*¤ËÍÿyÐó¹’C!¾±h<„|}àp»û8Puð»6ùGÎJâ.70]|œVåã>&¼s"¥¹ËéäóD`p=Òu‰Fy¾É@ßöY±ê’êð5›Þâúï=¨×ÿºÈÌh\¡¶¨þoœvÏ×eùù|ŽÞoΆ«æë—9oq?dZÛö÷}˰ÿýã/wý@\?¶Þdú Ïn±772€qfÙé]’­@$ËïuµÊ:¬»ªGt‹2<üGl€ä¶'…úüË_ÛB¬¯Ç{6%õߦðz=©·ú}§—¢þ´ë•÷–\ Î,{¶}U²œ˜f*âšÏ0‡ÌôźÓQWkQá’R¸Žõ÷׋à÷9fº¤N þ ‹õ¯Cýðuqøa¬ƒSþÄ[Ê@˜ù7\ùÇl$î–Ù~Åú³«;;¾pÚ¯p¹ÑAÐã|±ù|d0—u=ó«A½ª™8úfxH»Ÿ[åÐç–OƘ\C}³w¯nj>ê«™U¶4ÔânoîêŠ84ôÔý‚ß—Uúq@•»5´3°ŽÁ˜{\ù0Íe,xulúþœy!¨·gŸ,H–Æ£Ÿ=9kez’Ùzí P=rMgFZÌõ8÷»§H«%Ü-AŸQ÷…íˆ:ƒxï»CëêÇ:ä7±`×xÔgƒËÃnV n'%œRBwñºGF@ Y8îi‹z“ÏâB’ùiÔ­é+ÚÑ/ËíPÚwÍ ôMo¼‰þö…WÞú ×€Ì\ÎÝ‚¸’½Iñ“C>Íã9ïõÉ©³#n/V¦T;G|âÙ£rNçÿ&ó—EœìHž0êÖÉeJÈ7¤Éʾ¿Ï'ö9PüJêq`&´Ù.ð7B\²Þ´¦7»ùj}ÿMbÜÄ^æô4µ›WÄ€bY´ý(ú‡ÏÚj/ût‘wÉÓóÐljÖgÿ^m´>ÓŸãõÐT+Ž~Ǻ¯»%ýÏuóÇœµè“JŠœDë—ÜL‘&Ô«‹û{ñþ§W­óõÚ Œì£~ÜÓÿþHÀUª¡K·/ü „BÏ òÕÜØìxNÐÓgëî ôFm‡Å?Žy2üCü]܇ígx6£.Œñ0±= ñ±Ul&«õ€Ìü¼ÆTÄÓ™Ú -@óbÞÐTG<üÊâ*D_´¶±PÕb Ö•Ñ&ÂæÞ÷]WÞµà¾OÚô>xÀsÓÛžkè /°w@°9>¯¹A}ëö’§ªóˆÖ¿êî³±nØQÁÀÈ)m[y ß²=ЏòÑ~Cð(úÉ{»•ýP¯v«võE`_pKo[´èIoµ“'zñ¼0×ٻё'nîŒyñ7JâÙj‘7âó?Š4E£¾_Þ\õu (SÑÓØGrJû ª±×w|¶Z+Š÷~bž†øƒÜc?²€œ½{Ê•^Ì­EÆ×:x°êù¢÷½ ù/â7¯Ç³³ÇoÙ}îç#ôñ´…EÑR\!À䊔þ¨Çcã†#‘7šZLøŠ‘³n>z¬€~Áí{[Ê¿ÉJדy½µþ ï!<ULÙR/|ã}2êýy©gÚñ9 {”¹ßL# †û͇ ~ÔÄÉý›`s$¯ÓÜ¡ }„x7º&Pª{bMjð\j„Å¢ÏqóÇLâÞ7ú“–mûÑß*­fˆ¡>02mÖMy‡:T1»ðÔg ¤ ¬§Q/ZǪi^´*Ÿ[°ã êühÓªü”R ã"Ä3x€òÖ( ¬‘ò¢ÌÔ¼:e òDÂIÄ ™Î—¢çò€¸çêU€ýD¾¸¨Äeò˜÷RS^ ÎôúˆàÅý¾»ÔîÓI ßÌÒ4ÎìÚи¸ý2ä»Ê|·Y+ä«ÐͲ.@<’›`ÏúÔ|ž#Eš€P‹»ûcyj1½±ä.‰µÅC«€¸Ô•ü£Î ˆOï’WÛ—ca¢ðñ @Ïûv£[Û ˜óþ¼uatÓWŠÿˆìo g¸Y–Œ¡ïØ·½…ùºu¥Ï5ç§Àð]r(©uú“—Ÿ !.Ðà5ÜZlj~õ¬Ã®D:™Nª›$â9O]oÞûqêôd·£>ç6»® B\â^jí` Œ§CâØ‡*rØ\Ñ¿ð¾üqqó`ŒÉÙîÛˆûÈÈæ®û"Œëú¶?¨ ˜²Á¿.)".¤ò`„; Ûw;£æ XÒþ¨¯µÄîräk5y§?ÞØÿ¯«Øøž¿ Ó÷åÍü^kôØÊË…"Ž@ZlTŸöœDþhÐk Rº*éWê}¥Sý%wP‡'æ8êQˆSׯîÍâþ™)žÈõÀý¯°W2\ ôw9º@óÉÍ8U`œÌÕ®M@<0ºÝÿÔs{Êâv¡¿’©Ì¦G¬}¯G.Í_kð¾#DÎ5hÊ꼿½†€,ÖQ›WŒ¼`tá‡Ûžƒ@î4Úå0ô‘B‡Eú4ÐOyh™V tƒÞ0¿Q  ÅžµjŽú4g÷ư‹kP·ˆQ·¾\z.׿c÷€àª,¡u!NYE:¯+µÇ:ÛÞœ%€zR&ý§’ú…‘ubâî§‘/>²i¨!_'÷­ ÖÙ '3»7ŽƒÞã˜_OzÑWîÍü‡ç:aêÝc7›ŸŸWD}”~!r°î9Ð4ôo -±J÷œ¯öMö–cPhÝNjͥMÐ J'hc½˜Ù»°Oá{Þ<_öù忉™ ?.Jì‰ÙvÔ9»—msØë”8RPv#0föU<ôD_?áñX³³HÓ¤ÂÁˆ?Ó* tx·=V±#ý|õó¨»Â\X Ö¾¿±N¤ÜfÎ%-6Ñ•}¨Å—1V.@ÉÛîÕ‹¾é¸væ?ÿ}òoƒ¿ê êõ¢b60#ß+¹Žxxãtÿ™MØG?/ úå!î«­î@>— ŸÐ=2ôïjüSP—è¿·nÄë½’òof¶¬Äa† ôíVó +—ø°â¸s7¯'ŒÖ¡¯=>»ÏcV‰ëµ7Öa5û¼ðÏ>x¾Fmš‡Q·ÉÝZé$sUù:SÔ_Ó´=ØJ/£ýîÆúÓKØú™ýúñ%/I[ Fƒ\ê¥PúHu/UÆuÞçlR˜o Ķû¹>í@Ÿ5PW‹èÒ¡½sEuÁ·…Õñ¼÷}rÕÖ¡#?û·Ý7¸óO×r # åLËÄõéè׌+xc¾ÕDlÚí°™=5¸~Ïx‚_Ï5¨š´×dÒ|q¢<ÝÁ.¨ .ÇæoGüuÞ÷·uÞÓ§ô—X7Ýñ®Š†èoJŸñ¬Óú úS™z»°?ýº\ïÞE]}{þx 'ña ­Û‡™_¹ÿ~ úš‹ô~víx™ÏKä±³E–® OÉz¦¾¯s"­à)®Ÿ\¤íŠ8ûµü´bÃÃ9/ãÐÇQ±±+Þ¢º«vƒ=qëâã§–¨w:y»zèÅè ­½W^@~´‰¯Ü‰úa÷Æ@[NN ÒtœgÐW2›­b[ŽþH6ßò½ PÅÆû­+rñ½ÔéVNÈãžKØÂšQçð(ï,,À>zö&Àî&êàÌÎxF¿-Ð~§-߆Ïù“Õ~ÀÐXh26 ŒFQÏœb/ ¿Õ­.Åû=^Ùnò´¨»Õ5Ø·!UkóÇ€Ø(K}{ÿ}^¶©¨šP'·ŠÔE¿ŠÜr˜ˆã·Ïº–hô±÷-o^áu¾A¥oXº¯OÉ5GÎŒ5Ÿª$ùCEK/^/üêâÎ `ZKK½”ZœÖ5?=ä¥?eŸ{ý‘/êNEXÞD¦;2uñ ú§i>mÁ~Ë|³éé9Ü÷ãBñ.Ý{Üe³d¢‘‡× 5h§%\ØjZ¯?L*ÙŸã?nóì[äiƒ±g¯<ÚÚ÷ ö®Äó)hòZ=Ú×»EêQ‰ o…3A?+s\y:—5©éd¬IM¬IM¬IMÿ²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥¬IMs)kRÓ\ÊšÔ4—²&5Í¥ÿLjbZb+XÁ V°‚¬`+XÁ V°‚¬`+XÁ V°‚¬`+XÁ V°â¿¨7YúŠd «í¶?cÄ ÀîëµÜ@ð:äf $‡WêÕ@Œ¼È Ù…›¹¤It´Ô$iÅ=³?© Èß.¿ã¸£€æ¶[ö¹ ˆ.Î7B;2€ñaÿ=ëÆÃ@Ìr¥Ý™ô²o¯¶uR ÐßÅ[ùozñâçg>±ŽíÃUÕD|¨¬ƒúw€!#ï`x(W¯ý¡-!@œÿþ•÷d0VØÌnÔ *rÛúûü¾aݯt¤?N)ÌÆ÷õ°÷*Z T½Øòb@*ÿ²õ_­D‚±N”€Pû”;¤´q߃™‰»Ûì¾Ðº9OHŠž:uZ ™‰•‡k€(U{Geyvùý}1@±(½µŠ Èë2óˆ¹f«[û‚x %ªŒ'á>×~ipì‹R#x•Š3ÖEüðšÄΠªŠŠ¸Ùàß(®'½Ê @HGÞZzË ɰñ}½À赿lúëæð¯ºÉ}Æ[UùV3P* .ܼ! Œ‚“3Î2ÀV/î¼[ zÊÖ<´Ï@„žø#Ô; äÞ7¥^¿pß4ÉðSfN-ü»nK66Ñ·=ÊeÄ}g¤+PAçUãy‰ô™TõÖµÍÏ2Ën<—ÒÍÓfÀ|xÄ9ñÈ `œ»“•Õ„C›Âƒ]l¸¯Þœ­Œ¢ûŠiÍ·"f[´f¥€üÅcª‚ûf¿æ§¸P¤w«(¡÷Tód9®çæùÜ¥c@x¦Öì?ßÄÐ`ùË¢M@n¨a®Çzºªù&}“0Gý,:”_áøÜ€1j½âê¹£¹@ýÍèÜ¿döYÌ›êµi@ØúÄŸ'*óê|žKåhÌWšKœ®¶ÌR¬ç©ëÖ¼ó€q²ûÔ|¿f . ÂúWvÇúÈm÷»ä—sªžŸººÙÌï÷v@y„é”.ÆzÛô÷ãßç-Àˆ».£µìvl6“BôÊg,Áýò_r"H)yÇøç^@~.gÓn_DðË"ì« á…Ǧv=cöZjôF ‹,/bª> ;‚}pȹ ðPƒDÊõ :Ökî­—å@-{PUªˆûTðë°Èro ²xw®Ú½qaû™1ÜŸC?üÏ'#Þ½âkwâ–Ò2Ò4ð·¡"P¯å‹÷ž Ãû}wÍà3¢\¨åHí# û|.2<õÈ7î•àynxgè·Šè³}z‚J_€=hæ4Šõ[õ5€c)Öÿìäò˜{@‰K>NÃ~ ìøtÿvÛat&ù僈Ïèú|³Fn+8v_3Èûk-pN[É Ïxhãzœ¶néÆ÷Í2ÓjòæÆz¥¯Õ¢@íp–r“2ADÕûŠP å’?(‘q%²uëϸnjãk 0\jS5Ý™@ÅK-ð4Ã~Éü¤Óç ä¦÷·$žç¹ÙðEN[E5ÖquÈo÷bZ~P2MzËó\¬k©®{ºï þ· ¨Öƒ«úŽ{Pº+‡æM[¡jã¥Ñ@Š3èó¢ñüqúž0vÄ«Zˆ;)KßpøscßžU@ެ Ù±¯(ïŸîžRå~_«]2P¡"ì_8C‘oþD]®ÄýÉ?(¼Üˆ2O‡Þ§€|º¸×yz8‹'òÐ…CÒá0¿ Îê0rJ×v&Ú¨KŠõΟAx¿«Ú´˜ìùõ¢øþ§y Pá»wìØ›„¬C˜H¨3‰{Œ¶®Áú±ÍJy]Ä”×e—Ñ. w‹öo)÷U9$íƒý’°CG³Ð wo¹ù úôÜ_È;ÉjçÞÆcÒ&µ;èC@r‹Õ>Eþ‘<~O-“芑cZ€ã”·$qÍdPÂòå% …Û?þƺî,àâù½¨› #ð<Οýý2¿¾ºy*œqßóñi±óˆË2Sö.?ñþ×ÔÆêëXqs±W®0Œº÷\Òs¦àªÕEŽøseeÔŒ:þn—­ —ßN‘@yvÆzÈgÛŸuæÖpUTNù*&ü¯±0Dm¼Fíúu@T2³ŽWê3ª"®?y£iÛÏû@•Û$hâþìyºïì¿Q•›¹æ=bt‡éñkÉÀd¾ÌT±­ç»£X·J¡Ë9Æ—Õ^ɽl ÏO@úøfÜ—e<­ß^¢~3é>äyû#âŒÌ5r¨èä¡Âè@M åz©Yä%Ú*Ç#‚Ü@ÉKøwKr-”7îï×aÄÕ̧™1R3èž”œi×È) ØÉaÍi ÖJëÅ ¢îÚ›]omŽ|çãίth ¨U-ͧÓQ|KIq[ƒû«®{2ªñÄD±é¶|"P¡Ž—ú•|[¬ÑáçLÍeÂP?ÅýYD••ê?ÏC q%y߉§žØ_ßlù—â9t•ääyÛÅÿÎ¥õß§ñ`ßZ ÿjûsq>þïÍ) û콺`'Pw]$#ßÖúì™äDœ\èSêŒûEŒ æ±Yý–ÙL‰c&0#Äù~ ¯¼š¬ùWûûŠå_Çe$ [±Ïß°ß=}å'0êC<Øé¨glø_ØXây~Ò:_ëQ’Ù± û¯¶<£sò½“GMa ÄÛ;Ñò¨'\WÕ¹tŠû†8M¹«¸+ݽßSEì=Ðö·®B^ô°”þŒ_CÞ"ÑGZ|6êk/òyܹ¦×@­OB=ºW'›¶s âÜ–ˆkðþ½O« ¶#Ädõ¸ôA‹ûsÿ}â2G›ÈV f‰Ëë¬?¦"n\hÄ{úþúB/ò€kä•xN¯5Ç_§âþ¹$Mûäk ž¶h›®¶J¢ûpÛæ7@Ü׿’ÎPfÄ ¿—º@ÔøuG€Ì‡?6·î‘ºëèÊ›¨ãŽlÔûÞÚ‹¼²aüÑIU ‚‡Ü™§w)Æ>ùª¯(òKÜ3í4|û&3'y ‹ï»rQþ 0÷›+}" E£¶5¡@À•wlA»ÏC×]Uí&SÒûPð" íÚ4^Ê"_±OEv¢þz#+|Ïõifð”g2Ðî/7)x¶õêó3σã¢*]žK!ï7Ó¯à T_ѳA@ç1ÉŸ‰Úäúÿï˵¨z÷ã ܟ҇쮆ˆ« néüÆáªÓj_—¢Îtþ ²hqíøëO|¯ØÊ£/¾ þØ{·¾ûVëñÁuí•…+3@ÿaå#¼±þ߈·_ôceØ/·”6¸™W™ð&@ˆ‡.jtê]7‰Û‚À}bºcu'W¾æqB}E=ÏYÍ‹º¼¾p☪Ðâ/oÝÏqïK4»`_ ù®~»ƒ u¹ôÃm•…ÑÈY§Ô½Pù½k{úkç µÁ÷[#yP}Ðöïpzõò>P¼—ªó=q}¯ôŠæ¡.à9kɤ¤Zïlõ÷2 ¼V'ÕuƒþãïóÆ×­Eü·¾SyêqùÌ›=¶@µÞ”¬R8$ÿßý wÐO¨øÞuªD“·#GŽBÜZ#I÷ˆË¦‘›Èg …¼î-Áú}âšâ+8䇡ŠÃ‘Èw~‚YÙ3a@¬~v®yÂûã¹àä=ìÿ(ÆN5ú’Ói?Ô+õâ9ª¡Þyˆ¤zoQXçÄø„°¾žüÖÑ{eÌqOÝÅE¶¨ÃÿzÅòižÎËé[Ž8ʧ>øÛH-¾‡V"X…I±®Àô>[ØïÝ t5‹?FÏÉ•ø¾ê×8Ð'†•Û€–a±!KȨB]§€®²Ø®G q0b]&»î+ç'K•C¸¯×ZGJÁ`XÐî€4u=Çe€>ïy2`%â²lŸÂgæ¯^ZÏU3}¸çú´ý‡_BþâHÒ^£†¸;²Õý½W?0RzZÕ¾@åsÝ×™B½”!þtþ`®¹ÒûÞí-–üú×zTYÿ¨ð#úð_µ+W¼Ð26çíöÐ@`´1-Ù÷¢>pmjú7›áÚšÍ~ù©‰3ú†åEï7š–ýëóÏ¡D;0¥¿sUÅuÆŸ”¸:úކÐëƒèC®»§ñ{+½êy\\ú  $-,o oïL[zýL‘²Î]Ô«RÙ¯ ¼ñ~åérÅ’@åi/ [!z óew]ÉÒæz‚RMF UO|ðþëòü팀i“AWÐE¿ÝXø@/( *;q¾ç©•ë6üþw¡ªñFÄ‹ÆÂ…ß%pͲV_Âs¨,Ûä£yõÆF/çaÄ)þ“Zܪx.i¥µx^’jϬ÷õbC×»-€|ÞfWÿ¨ý¢ËKØkQ×rÓ¸uÖ2jmJ)SûžvÐWÜ—Ë¿ Ì£’|#€È~àÕ€¸Øt¢Øõ6]€~î¸Ñ<öƒý¸®-{£QÝ›*ž6Ç~( ûS¯ˆú¥Øn*ô ꪿&C"kÑ?ñWÉi¦Æâï/±ïš¿ (¶ûjSgêYé+ü}#öºý¼¨›—k­<› Ìí¾¡S•]¸>+o¯»½@>‘ϱ1ÊXgÕ¡HÔ-ƒŸ­Öù î‹øF 0¢¯m5z¹g€jÛéŽxr·:ÛÊÇy¯^©•™Žõï/Ê}¦ˆ6ùï#êÈ£Ñ^ôI Y^’’|‚zv3YáñoT£pºäºïèë7Ë6]®B«”ó¥2y¼ùÙµ#¾@\Š=s±Ÿ+!ZÖsÃõq}éiÔ×:65;s¿¿xý«ýÛkgþŽ@ÿæv0áðb`ŽÎ‹Qˆü_Ø‹õ¢õôq±>gV(L=uk¬°î´¾Pef®ýûÈ}3÷B/ô—•[K˜rÈ;gïo;Ý» è=êZDŒ зµÇíyÔ «ÒHô…~Å•c_ï¤7¶–Ý^Û\¢' uo›xïš—À°}¨|)ݽ[«¹PG?®Š;‹8¦$]jí¼üäm%ñ^NM¢W6 ˆCëÒ•fÀȹlnîsëgH¯»u`ºBõ™t죿)J\Ù¨?}”™—²ýxÿZBè ê¾ü £yº@?v)ü“Ð~ìï ð½ƒøhyŧ´kîŸëÖV%aÐ%àr]>(&»-þòŒô}ÛA Þµ¯)ñDýîB}hD¼¼6¯süòëôE‹ÚÿmåG¹8ØçtðW=âB¸½Ñ3Ä•C5%¾+°j7ëØ#ß›:üêÞ€¸jñr«ø0²Ã/æo{…þm\P«ƒòHÁ‡•еöÈzÚ&ƒÞ苯§•@—´5ˆ×»ˆz±¸ï+òqßöëýè7·yÞìÒµFëÓä¡]Àø¶Vë í0”v™ºíC<ùzЂ‰¼o=þñ½Z;0lgŸo6¾dر0õ$¬·Æ;ó¨ šž|ôYY„üΞ»CP•–1ßc=ì»q®é<êÄ¥Žñµ#ï˜~¼yÎÒ ¨ºl—\P_^:{³òÌ; ®eŸYT) Ú« ÕE¯ÁnºLëº PÇ&ùž¬@žq;·áÁ3ÔסcœÊj²èË+—=9ƒýv,ÖùDòôÞoãçÿœúŠÂ‹ÌJä¥I‡’à*Ôgôs˳€TÐÖ¹@¡]î)°vW0N;ÙÙåTwDrò ôý³~?jÏwÌ3]l?ä¥ËqVœˆ“Á“/Q·n³“ù2óO—‰y¿dC]újȽÊéžXä· ä©ð:GŽ×ZØo«·N/Eœ/fë'›†¸÷Ã=ø¾ÇÃ_)W-OJE·nÔfà÷ô•šˆ[WÅÉç#Vo¹Ñ¦èÌÅôˆ™Uˆo£K~)Fݽ°Ì<ˆzLOÝWàÂ! ê’è;EÖÆÒW _•Yy9áj°ÿÔ½ýoô³Aõ&A|¯¢É8ß²,`\Ø·©w` ö[®CEðQÔë$x QýØž`±×quÊf·5úõƒ´Ø›¢çÑçG«ž:€~2µ%ó%7ú¤_c›w,•â·ÝâçÚØçúm+p?-Ç\Ï#ýG¸Ç'`BÆÆóÀ|PîëÂuì§mjZÔvõ>_®;¨GOœu>ö÷u¢Cü8êïÕAñOäö¼èÔÆ{ èW[Ö'òë ŸЊ=ßešó*“ú>(jÜeÅ;ÔãíuA¡¨«¬¿_}†ø§ñ³áêI 6=[ ]ƒ~ø¼Ãã迌¥.ŽýÁ}º;¿zç<'ËEKތӗ}ã¯CK€PKøe3 „òëùùfØ?_%nÒ S¥ÔrùëVÄGÍÅÃÕµ@ 4KojãSɇD_²Õ³œtCã¶È _R•Š¢ø^™O:Ï,x‰|2¬/ µéóñ°Î<+·÷ŠcŸ«&¾j½2‚8ï±|ÚŸÈ- ‰1ôy^ún½Ñ',íwSÂë6µ9Lc_µx½‹BÞ•Nâ'Ö!žÅÖT޵Ú-ö›‹þÊ< ì·‡&ˆŸ[®iôv În ,j³@Üz&>•]…:4ô·V.ž±çôoÏu9¨·¤Ý+€¡ Óúúm#Ð3^.+5ÑÏÓ×Ù ?Ðsìž½åŒ0æ¥Ì¾ù@„)=þ8$Ä[WíZi¼ßšKƒ,Tÿ`'KÓ9Qß?£0ŽºÔ,ø¹ ž÷ ^¨eU½@2<ݧº˜ÉIåmÐÏäÇ^ì{þN´õá¶FÔìè¿ÄNE~@?ñuëq5äùŸuÝ=¢ö¨³WJ9|bÇz²øÖ äQ+SÉði`º}¹è&|™z¨ßÿV‹.uB-×|~ÐÂò_¦qÕNÏÜek”œ•7ß*Ô5ˬE|²q©¨ž}$[¡’v¡úïn|_J†ªAœ g®Ï9]ŽûÌ=Zžt¶áë]· o95í†ç2_ô“lâ¯HÃÆpÔA<—ÆjBÙ€|4z?qI?Ð}íºõ¢[€¼Ú;¶g}Ã'ž¼Ï~1èÿU RÆZ ïª¶ø«[üNKòÛ‹û~¯ü©œQP+&§ø_c6HŠûÎJ¥>°ýR!âÐÍ­ÙvÏ ÞÔŽ–Ö¡žöëWÎþ÷ÿã3f®¶=|@e/Aÿ§¤÷5q)úž±Ää©(k«yÒ&€°4{}Õû­ï{ªþƇ¨ÿW¬gg”S£ÿRzAP£N ¦œÆ#ä㹟[ƒorìÕ}Ê×KÒ”:Ï“€°ëÏ‘·J§Ï®“FÝ3èr§Fˆ€!ÇëÑ­¬8n¬/Ì•¢Ÿç«S[q3˜Ù±Þ+…Ú°¤a{ÊI ­­ÉkÁ€‘¿¥XÒ-È\×àé1 oQµ' nŠJpÅ}®Ýå%zàfûmþÝÿF†ù®WKDb&!û˜]ñ¶4)仿K¶uWáuU+«¶‰º¢^÷dOZ¢ÄëyÑCo€xpyÒdûèö çØ ] Ý¯Œ•î|ÆÆµô?2Ö¨%Ö¨%Ö¨¥ÿNY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æRÖ¨¥¹”5ji.eZšKY£–æÒÿF-ýûSVοÿójÁWpÐôÿ“qRšÿòÿÏ+9Ýìíÿ“Ï3·w»Œý¿liþïÇl þ—ïñ¸œtp³7wµ–¶w°þß®çpû_þÅ}ÜAŽáìj£õÿ¸Jþÿ~•üÿÛUœŽø ü²äß÷T¯©²ý'fÿ·ëSæŽVNÒ.ÖÖVlÿõ§¾ÎøÓȪ³ÿUÄ­¹TÚP^øî)¸uZòâð±æ¤…Æ­aÔ®ûŽ3²çVFµ:dsWl=ú¢IÂ…òc\Ú/wÖž®Ò9ùâʹDJÂ]uןøú£÷Ür«óººi ’  ›¬u ÿš²_ôÃ:ªú¯l¯Ðë‹â-—–Ÿ»tÙËõóm#fï•Sk´úŸXøG+"ïbý÷¼ß¨-ä·ÿQ¤:¿|rÝk-þA'ËÕIÇ$%èýúQwý––¿˜Ôü–e8cX³Ú¿ÕïuÅÆ#—jÇ÷:ºª¹k›O6ê*Lgú4,ýY\qLlLlƒZ–gxã2¿³~Éšu…Còvu°¯ÛFÍÐx›®o›‘«Ðu>Ñiý±¤3Y‰¹–[Æ))³_½ûùÔû™%Ó^x^âþ³øT5}³Ø¸ˆcèþEã"’3"‚¯.ŠÝ(z±ûêŽ;©Ê Á>wõ&¥Ž‰0Â#¯ú°×³ý2>½_(SùÓ§qa¢R:+wTÆñðm¿vòå¿Ûü£CâTE´æ›òL–.ÙÒýнnÅ^î%7m1%ÏŽÅÜt>û»[èäÍ·Š±êë››9¿’§Â æmY A0.n:÷ùà缊ä½l¿Ö.’ù°jZrÌzËÑÝÙ+÷Ž 2øn}0¾o4bD6ý­e»TÃó1âuç–á~”ôö }Ùw!¤#/­î»bÀ ¤r郯'y¸o80%EI§Ÿ]tËëÁ•5û´OªÜ0ØísN°ÿÇù5F–.{m\¾ÓÌÊõâ6wâÍ~‡“™Qœ~®Iêå¹~ ROÆe¬Ât¶©Ù°òLÊÃK-ÏÎöÜKÝøÆuÑ»=³ôÎ_÷™–!cgŠ”òöµO€Pþ ¦T|‹‡‰°zǦ‚--ǃzË@øãÏôþ©q×öèR’A5–(,l:ú{¹IÊdrÓ¸Uz“†ßÁh®ïîË::ófÞñ—§L3ª5o$V'lÑ~-¦ú@þºò?w»bÌ¢¼Íºê?í\–ÜZï'¡\UÉãösqéèÎJùÇ…& ºCæÉ™3'Ã’ífaåO_Ž|{©hPUPñËHiCѩŵÞé#]Õ7²ÊÝŽÞ“>¢—ÓÈ»¨ô-ÛäxÝÝ*Ù/ëîÄ9]4Ûù÷ˆpŠDX­â°wÃÅÁ/Ÿ¾©÷qìgK=îSÊ&#JŽ(¹y®­÷½•çè÷Dø“omú±™Õ±¨û¸Ô±Ÿ>¶V¡~s÷Z©ñÜ´ù;ôŠÍV‹­à¹½´K„G×¢u­iF‡‚þÆic搜&ùsÓS"W4DVD¶ÖËxÁMÙ¾¯J=+E žþÕWo³ðH®-(Ý÷bmýD™»…0)?0ùZ°VóÅë™î@Ïñï;V›+'N½²Š{õCQ›J ÄkìÕC¢Tã(äÁ.^m×Ú£RÈß¹Å/%ñÑ€•ZÁHò¯Ê÷gœzO­êÏÙT›è»[è“ñªkÛëï-V.ãýU6Qç÷5o3ÌË—W^¾ædØkQI‘ÕW¹ùÒŽ„´‰X#õsC„ŸG’ï^1ÁØÙýÊ‹(.¼r¹^#«É~ »§pOª¾€Ü3¹®¢”ýµL>è²øb$rBû‹ÄógS<œ7¾+oϸ8ne¢2æùÁKC¹ÊÔhZï¾â¢-jcÑ‹?–N˜ó ˆÏ–Ó—u™ñœãòÖQX]ïiÌ+ÂùìxƳ‘W! &¥YBîò ^ª—#¹ -$µí·•(Ì—çû¥2r‰¹Ö@“{³ÀôÃÉ gk-SΘ¥Hô”‹ÞÚ/Á?u+g_]§²îámÎc ²£©›î _Ù=}C¥mJä{˜ˆìôÌŽÜÈ(åo ^!¥Æv`‡òÊë;‰C™õÉ\æç´“æå1\6Þþ<š*—ßÄeMÏáoŽÓö«7­ò¤¼¯ÜuUÞˆXµ Ô,4! „Óñ±™ÞH_w¿zO{ý©Z^§ß3õ'É—7·ÇøäUȦ™Ù Î÷ ipº—ÞÐTò)ÊàÌßåïâ%6|ÜšQªM\ˆÎëVÒͰ¹Ïk¦?Ü`&^þÇø+­'lÛ¦º²Eqs¿Xy¿ÄóŽu=¬©¹¥¶óæÛøµæf·|?èk¾¹¼á­àg¿ÛU~¢§F¦l”³U–:ë^ùxÊtÜ&ªèÒXõœäzCmíÒ¦GÑQe~•eÜpt³\Lè3öá÷=‡ƒÞyÇѺÍoĸO^yý¬«5]ë¬[¿Õ“AŸMÖ·i(yp~æ0,‰í‘ç¶IÞ£Þ»ÈGÖÞ8ûp‚ï+‹} ÊšVkmwoqOàô²Ør¢½¶ìzÐõI)Û? ×Ó,Ù»SöãB-ºiÕ™³GVLvè×h,ú¶¬IÂîÿbïËß© »p’ ‰J”™B„¢Ì25ˆìçÙ¨¤L•¹Bš"e¨De*©U’ÌCÊ”&C(ÉX*uVÇ÷ssþ‚s]{ýbÑöî÷}ÖZ÷ ²8~%dnpŠPHk?êô½ïî˜eñÌK/E6×ÁŒ×Û~¶ç¿Y1P®À«(þ.&ÊôçT†Ü.­r «‚BÒs¿5Ú¾·•Ð2;¼Zâð]ÑH‹×J[Úxo«¿ç³:ѱÑý¶ƒÅ…‡Ú[”zžÇµ8s“<2lî¶Çüù”¹%Û—ÀC‚q;Š4 ¹¾,GX㡆úª«Îú$ÄNÖÑ*Í9õЇ~›‹Hìïs…Mã/¥Øo—ì¾à¿Sòz„¾Ê•òñM×>Ú¥-Ý[¼>0h¬ìæQ•=‹øõ$6VŽüÔ»ð÷vô§í)½bŸ,¤mBªÒÍÓhøÖ«´ÿ™-ˆ×R r“ÌtÿÀ}•gÙ÷PSv©LzZZyn@“‡åÙu¼$² Ï8>±)¾ü¸'9!qè§$‘û}xòø¯u=÷xkäçÝïëðùôR+Šå¸l;)äáaxè¤Ë¡\û*Õû¼&%uÆC‹>Ì¿ë÷Nÿ{œ•›¯ ì4žÙ±Âµ£UÉy˜íR÷[Îí_ãgyÈ£-ö,o /Î¥ä ßz@juÒùŸx^ƒ9"¯×s^KqÅäc µÆIPÙv~î@®ÎjbškÒvJHói.™otÌ{S/ž ôZT³Òðk`:¬?Ó?n$úÜ6[º¿ÍÇÛÛ€–8 ¥ÆÏ÷H°oz¹ˆ\æn1Ã~`n¼§Âz ˆwÞã^ÝE@-~ù·¬èyÇü»æ@Û-$Ç6ÍwsùpHwo³CŒ"Ðð¤Ö›ùï¹äÒ%rmж9·Š€)Ï׫=vè¹c‡^,ÒW’i_¤K{ÆÞXΉî·O€º~l9# T¨/h³Ø8P囋.ƪ8¸ì×€0Cçjϯ6úôÛSû¾Í@ûzo¿j,}¼>öÐÔç=Ϛƀª·X¿9tQS›üéf`n×/h?6Dï²ßé^ 7â¶ù ™ oiÔ˜ ôùãñ«‹kð>© %Í{ÙXtH«ZÅJ™3@œ>œçÿü˜‚],& |û¢bÓi ñïIR¦2Ðȳ=·²ŽS¡¦zç ÐÙŒÄ⢞\m(ÙŠóãùèrðs ¢+VÖV¦¶žè®ÏÜÀ\¦ÀäS²”]®vëj&aúÇvñ’ h]ƒ}%;%Çç t»Ï²ü#€|+ß&'Öô‘ö/«, ¾?ŸqÅó>Þä´¸hÝRÅ}û±>1é[•º`½S‹;\°O†®¿<ëd¨ÆWþ ¾ïb©t¥¥Ø§ìŽß9í¤¡¤nÿo Å%|'ï}g&[à ¤`«lßÎG@½Ôú9b}Õô*\„få¹h,2ÇÈášï·Je ,~z–ûwjýí¤2`t½ºÏy Ï…ßY ¢ç\8çèv+`®]p•cô00o¦8ÅLûHa<'ûãB*Øû>M 5`}¨Âésk  cAÅKn]g[|õñ8{ðÕHìw·ûX÷.ΪÖrìçq>¯N3p]曯ˆ'Òyúg€î]tûeÛOì‹ó“ÝÝM@4Oí눠~xçL ºëôÒwcŸpËʰµÉ*µwü‚ç1ت ÌÃÏŽÕvœæ …kgÝ꯼ßsƒ?P•~é%5@Ïpíx¹=Ï9æi¹5ž+÷#cû®@ù-ÖôYÇÃE…WPÌ È¢#ë"wMïõ»|S hÚÔÄSµ@ ž Mæ"n¼ÓÝùéžÃ1¶‚œF@ôŒƒ€ä79Žé§I™,ÍÆóq;¨"ãdɉ›Ùk±?l¶¾áÛ†ø°FÛ Nê<ê8eÛ® SwGIâ™Ð«'§÷U=¯óR̘+Üã¸P…çê—Ÿááä[§õOœož×ŠUñ}š»çÆzK5ï¸"( äÆNñ„,nÄ‹?ÅU–‚@to¤ËŽà\öYúö ¡MÛ“öf“Á¿ÿÊÏ…xý…íÊ÷\Œ,wÊìüôËÅDŸÎ9Àô U™”Á÷‘ðáIýÒ4jÀÑ#\ñð»eû| -þ—Z×Q˜éf ÿÈnCç§z€y ¶c‹b?mן©Sœ@o¸|ƒïÖíMâÿû@Ê?^'¿2>£/üw"Î×ÕyÜ·ñ9×·ìT|* Œvïh=«E@ß͘wï ÖýÂ%¥8ÇÛg®Ôþ&м£ùR2ç.h¸Ó÷õI¬ï•¦)]¼¿0˘]ž@¿…:&Öº‚kuÐû_@’nJVj2€¾H™©@Ç Ø-¾»$ì)К~#‡ U)o%ô÷³[åé>/üóÙÚw½{¶]ºò@ïGœ×Ô³ëLo)a]EV{sê-Ï Øgµhü¨Šê - ’s²4EG÷Ï´¾‚xŸ:¥}«rIm¶5Á÷÷ >ïŽ×‰Ù©ü çÀ±¹ólê †ï?nÕ"ÑÄ(€üã™áöùÈw`ò}µš äù #¾‡È·† /àuN+O~< ¤fiï%  b‡÷ t]{øÉd9òŸ© Ïð= Š¡µ\58oLÉëâ@³³Õùmâ . 8ö=1À>¯Z*ód‹öõÌ’Œ“ûOç|UÁ~°×߀x&ô3öW0cåÍ[Ær€:¨kt{!/­*ÀzÊí9¹ã'êÍD÷·ëçx ÒGB„.¬›ýçõGÐî…œ~@þì۪ѷ×_ ±¦ï§Ä®×t)òÍú§¼Ïƒ±nSœ~ݵG¾Rú+X!ýÁ6Zwçž{;Xç‡s$ãp€ÑÐv^ùU@ØîŽ9™à|÷Ü~tÛd0·rÆiºj^FÜQ˜»Ìo)­6êyÏé÷üÝÀ4 µ¿qšñôo™ó ˆä‘#ÙÈ?º†š'±^Öˆ#¯¦ì^7Áó èÜ—†žˆ§ç—Ï(¹¤Ÿ–#Ÿ3-ƒz8…€D ®jäÅù—ìJ–¨Ï’X90üf׿çËUøy˜¶+ÙV/‹@^PVöØ…x¡—ï;€xç³W¡>ÐqºÁt@\òç¿Ê÷XùfÛüu}`Š:2#×â¼ÆœÉèôRǾ–‰X¼ÿŽRY2ÄK³‰"<çX‹lû²H ›µ¹g óÊfžêv oGeÂÿ醻†Ÿa*N¬\ðq&Hñy0Ï$Ðnõ>¨ß†zæÚ g@ÇØ–ýX±˜g&·ZïZê«&zõŒÑ¦!—€È‡¾m°@]˜wÃqùåº8Í  ²–ù¿Æé g+°sOßÚ“8~—gK•õR|¾R!ó²ØGƒ•sqnøŒÒÆ»±ß'Ü®š¢>Ìâñ~óȃ‘ñ yX§Nv ä‹,%¹,Ã@Ë6^’ÉÆ~~0$qÃC¨IxóÆƒˆ7•ßç”4ÉàÎ:Öø ŸË\ìûýsˆ‹†B46 ¥¼¯†POɉƲ#?©~Ð?¶ ç¨}Îޤķã5_Ű/Òù~À3¬{̧~ x=‡…¿?|þŸBLì׿Bóìͨ'F2Ÿù?Gé)&xrÇ^ ŽÂÈ4M£éš ÞÿãwŒ@3ÄakáCº¨Ãf'ϺÔ]¤Éìâ‰K¬6IÄþž3_FýH0=ƒv ަãB­fýF ^jït¥ß)þjͽçvOªÏj¬Ëšuªöï€ü올y2¨|df³²ÐÕVͧÏÚ ÞŽ]U{I˜u—9‹Sî3ŸWrÕb•âe€ÙØËØ-£‡}gÉÕóùp­ù%Ã÷éØgÞÕ?")O¼¡Ÿ^ïÿöPÁ–n ÊjµR[ŸVmE\áTâ¾…õ¿e°wwÙÔY‡$^-› dt¹P×%Ø÷«B‹¹®áœù’î§ÁX·©Öl Ü®I¡>cöª5(@=»å 'âÜWÃe%£ˆoÁ.•Q¨Ë/¤X"®Ê¬¾&gЏªàaO× Ç^~ï¿«LòëBüÜ‘¡’ ŒSñüÑý8)¸WŸ(áV:ˆóŸ àp‘qG ³zùs¨»\9¯ÅŠƒ‹ü âgdòãåÊ;X¿+?ÂŒ/Ÿévš…_÷V½õùУkÛ¶»cÿ¶¸o^?ñçnæ›Û—¹œéf8„:òšò_áÓÈÛÃ÷xëØÜPG+6íÛˆº·uq¡Ðâ}@®ø±é'ÎÝo ÿòsx~iõ/>ñãó¾nV‡ó1PîwåâÕe3ü)0ùVmx‘Låσ¨sHíÃÛ·ÝU¬‘v JEýg´±T£å*ÐNî’ÁÊ`êϯ?Ÿ}ùò°ŽÙµW8‡JË2’±/öæÎ7ä:x”ÀyŸ¥]ü-à2ò¡ÕÎŽg¨ßuÒÃþÞײcäH'âl¯`ÿ œ?ý‹Û\åÐG6ìÕ½çˆ>Ncª>jžçjŸòSñyûõ•ü¹Ú¦m®ú»ãwò’“¿áù<;”ãôÈÙg¯æã9¶=½y…·q7â±µúVQ6ô“\3ã6nB}Âs0ãtœ ÐU%Ï3®Yjoɽ轛ݧCoœw[o}¹ ÈÇ:㎹¨s5}ç~ûî$Obï#ÏÉ]w õE{FÝä~û•³¹æÛŒ€rÄÙ®¹1m§o‰î±Ä÷áÈÊ«óˆbWeP<~x÷9Î)ìëŒÑ~¾—د'3¶¸ßHòô†Šª â,ï]ÏR -`zÙ%=RfÜæË‹4Oc̽nÕiä³çÖcJ#¨ŸdE—sá¹_yÓ«¾Ð‡VFíÇë0_Ñ_€¸xOtûáð‡ØgnYeÉŒ9¾Ì©$´Ô¿ q<Á¡‰ÛŸÛÊÆô˜1úŒ§Ii¿·¢ÿ>â{VÑd˜~U¦ÛÛüpŽ’…ýö¡®>¬=>C3ñè´¾è úºëŠ‹çâ¡ýGá{òâE _Éy°ȩ̂¯ÈË3Ìo} rpó2.nä—£îÛ&n¦£äHáœpäÛµ]æúÏ þ}÷ì“D%Ðãv¥Zè;—zú­Šýú°*—!ò˜î×&u¶¾A<¯_™õè‡Û÷·"5ÚÉG|¾µÙÚ.ý˧§*6ìÈßü·D—!nœèÛŒ¸øML#F Èï—\‰“ØGWïåïtùç—xs·É"&/ži‚:•ÿé³ßˆç§Êä…y£òíß•À8ÝeW>Œ×¥jUO€D©KƾÆç¶ZÒÜ­Œúòî§Ïáȇ'N‰*ûZcsKÿCäk7þ—Bˆ£\cÿ"Ò:½K‘^¯Ñ²} L3?µýQx>çÞ‰.X³ýtõÌWæL Ÿß†•>@Ý·~}´ï9 O6¹Ž£Þà°ŠD=gôyû}Eä]CN^cäµà|U¯(œƒ}wÇ׌ ~” ºêä;ç2±@¸h`lz5;öéy6¯Mœõ@JLRõ•}ÐWó̱;äý/¥¥¨ë¼Ì»D ãQOžž3Šóõ\©å¢·,òŠòA¶èÛ<ù"?ÞvëyvR Ÿ7S_äê@¹w™1Òñ¾æn²qF?Ôâç{T˜œ „÷®C]yô]GÝê@'3×oxäe‚ü‡ðûˆÿóF7Ÿ™˜i›.‰÷iÍûEÓÞ˜Ò–®5ì»1É—Þ4Œ<ý8óWòþ ëŽÓÃèË~µL¹‡a½ŒÙŽ]Çy¯ç•^çÖ'ƒz>¢mÏÂYÈ?n=û_ÏEÕsè³ûšl=£…:[ v'úÉN“b¹3ÕÀ ©d>‰ºñ¬&çe5ÔMÒB‹6˜¡þê⯪Å÷|7Îyohý£-÷`ª9ȳþ„zãŽ>wŽ ê3±<Ý»À èM}‹üvmÐÚVýŽ`GÃí|Ôá W¬;®c?n¿ÛUtýù'¬œL|þ5’»Çä‡'_,Aݽò¢cÏ+ÔÛ>7×#ŽÜ[Tl³qþý;‘†Á+Ø—s6–!?ÈHÊ1ÃQÿJøû¥Š¡^<¥×?Ï9Hý‘…•Êè×Ë«­³2"~%Þ™uj%ú §ýÏþ`½n¼3ºª‚~ÿVThÏWÄ×7Öß>¥!n|ø©!0…}Ì”“øl>JÉ˃ÃT3·>ñIÙ¿ótìqAýýü{ty ‹EÌ…=é@ö{÷V&¡îKȺ²u/êdžùà °ÆsÑù£3Šýï;ªß뇼d¿X¦l9Ö¿H.¦ŸûþîɘT(~·Èƒì_þuYlè“ÄŸ=,rcNgP.ú· ­Qµhp™yñƒ âÁàXÓáňÛ~íœö¢Âr*+ñýïvó)`ä¾¾»4ûsråè ó~ ‰µæ{‚Q—*gln±Ã¾PhÚmÊ“tǼ-·#7ek?KÓÉeŽÖÂ\ÔòY'?j«9•õP§|*Þpñ+0—±‡fìü ÔitÖsäUyá³ Ö#MlûÄ@Þ™Ø-u¤ŸgŠo£aOÐyžj®'#¯ÿôFeüœº0‹ý„ú¡F=ä â°þ!Î^ÔcÍ~zˆ/¹jþ2òè'ÊØÖÍRE™É[¹E}óÞ)ÕG)”2t‘W }ÞªZópN¼ΞÇù›ñ±rÓiÄù­¢‹;CP_óœµË^„Ïõ¸wÓ)ŽƒÈïÏä‡vbÿ,q6AýÐû!$®ß\æ=>Ëþ­˜oâ|„²‘wÕ“G.ë\Æ ¶ß%Öˆ PÊ1û¨"ê: ïõèOâ O¢Ýö£äõÈ,Ô_nî?Š®_Ûñ•çjH]9òLR{Àû)ìï_¾ šbÿô”ÔùÊC@ŸŸPù‚þ¿ÈäÁšrÔO®¯•Mý¦ªVõÒ<ä5ÿ™LuvôáÚ ÿ~î$zðÁ±Ø÷"?ÎýÆzeä¬ÒÄzØX:}ľíUÔ>¡Šú¨Ïûf¨$ê¦Ó…"ˆSTåþ©†æ>`TX®‘½P dÁ’‹Yíx›º·RÔã»î(.CŸ¸¿~«êÀ—“ÌCK±Ï¯.ñs¶@¾<´àláG ­©Í‘­Àˆ*ÝÝîø;yäõìÚA ç¾ôÍ5GÛT\ß$$(¹a(ñeìM)׋)ôu‡¶{:¢ÎšU8÷`0;º[|»€,ÕÊR@] ž<¸K u’LÛ£ø»¨ã—wFÛt¼>[>ç/0Ú¦oàBÞtÁµ3ú¥gïÓßE"ߛ̯Ã~íÒÚ:(L‹ô7V¨sÉë"Jç€)é”4…ºkÝE»-·ð<÷¹Ýp·æ1’¤õÀ\™š{¼û¿nŽbAêÍåÇjK£›óºMëÍt{¸ô  ÿ1Þ ŽºRæÚ2§fä©t‹¤`OÄñ±9s't‘Çmý–æ£oîIÙ¬¥½ ûj‘Chi Þ÷Á­AçÐÇϲ6[ùñÇM K¼O¶õçd±^Büï¸þùÔI¶ïþwŽcß›ÿ±™ƒç¢ceõæÖéoèîJ;ĉõž34Q×Ê+õÖAßÚ°M û^Ú¾ä”'ö݇…R¤§Òø´~F!¿o4‘=…Ïë{á³û n`Šœ¼04õ‹e«]F ÎÉ–w’›ð9}U‡7¢\Á}kd;òN‹Âœwðyeõ×$ʶ"oÈ·/“Æ[©—.šè-¾ž^ÇÖŽçh–|Ëç>N]Üd<ç4þD´íL`kª´=Gÿ¬ž,bƒú:¬ÛòAú…ã]Oø®¢Þi,\ßû ëkãâ$œòû¤b[Âúq‡’žýoÿ»=L<±žÔ'r>öáûÖï‚òx½›lû‹4âÐÏõÍ/ B½óe‘tß[ Ñë‡k×:ïi|ÙìŽ<$ãÔδD⮞"ÙdÉúE’ópÞBÞþJ¹€<íѰ`Y8ê6¾¾E=›Ql4Ùý }ì`nÉéaÔS>ÛüV ßìWOH.ÂÏM » #V¡žÞÅï¯'†x|\üëÝyˆS}2];€™n°¹ºëÒ ºÖi;>ÇÒÙ ñ|¥4Ë$ ø€>¨nšØ>Lqý€vI _ £æ þlS‰FüaÚ±ÅTb?8k,ßšŒ<=ä–S-Šþ‹ÊÌLÔcC]ÜÐÔ|hÏÙ\;ÔÅ9á[Ã]°žlD¯.Äî½ØÕÕwŒ”Ò€„HY§§¡¿}˜?P{b!P~?ùÅ•¨cO®©š}³>dÞUÆ[pÙwsÒŠôáªî?-ñ\|®óI¿kòPØ¢· }IhÒI?5 ·ÃÏ ®EÝ‘¼ðÊEÔaÞûr ¯^å=h@66¢_¼5¯#Ä;bŒÏßÃv9òì#ùXÔïiû™ª“ŸÂ¦‰Ï½!JXoöOœWÿ®è«;¯>æ-Ù‚ºo÷û÷ª€1¼vÓq ¬sÒšË&“ȿ߿\è²Â¹— ½–vûR{`R­ò øà“þ÷‘Ç6ÍÜmøV}àŸ,uôÓ_æìØÐ„Ï}'rîR).` ºž5.ÀyÛ»û†&ò¢Ä³ǽÀ|iyªfûCôéO“¼Tçù¥è7£ßå•ÛsÇÉu.dp =¢aØ¿Q½Bš@$Œ¼¿»H³Ù[¸~S2qÜÕq·_ë®êWÝ9ß/ãyùèç¤× ßžXc~¼çÊFöü÷ÅÀh|5ú¡ûWºvö¬9)xÞëÞ¨vÝ ò<yÊÇÈø­˜-Sõ°ÜSwÐgÞ:yáïÆÃ]â@5Œ ·;_Eÿ®z·£y6â0ôÎ䉯Ï=ãjSPÏ:Ø~zòè 0)Z™èÜ2uÑ'<Ÿ£ƒ9pxŽúžžÅUVÂ@FÎógÆs¯L>÷zâ‡Þ¹ ΋ËÙX OÿWÆZxÊZxÊZxúß”µðt:e-£ï¤—½Q É'òWõ.òÍBÃù«^UñÞ'sÑVxÙe™ÐÖÅKõvã¡bu3ç Gm›Hù÷«YùÚ¿ojyìðµÆ9ÀèéüR´ý!Ðm•ïØ.rV`BdÝR ;µ.ê}“꼺Šÿ“Ыn†ÕWcnø:»E ŸSþÕªÛ;€žø­^³¨HŽÄ¦Å\@ì-Õ¹Þ+ydt¤ò[9Lg³€c@­C­_,šäDuBö) ¹ŸMÚ^q5,]tˆƒ€Ãø‡ ¯ˆU™XÍPZ™+—d(ïæ­ý@ekÙSÊî=ùeÃ-|ŽÚ÷ñ·)þС˜Ô ÔuõŸ÷t30%G¹:ÊÒ€xyœ­½a‡ß?õÒÄLè™Ù'¦䮯ì2Ó¡BÜp˜ó¿7\õÒb)ºaVÍ Þ§“YþÉ@]||?¹ç½2OL‹h˜k×ÎÚ@n.xûòú [R·.)]ôÍ5%9 /Xxè[ͽ¯\³’“;÷·y0w8ép7~ ßÒ´ÓwùJÇ™@µêmoë¬òa‘PCÉPÚ™ã@Ù­9’žü¦!·PšÝ%¼®¶yÈúƒ@UΜ[œ± ¨p@\ä7|ž}~+Jy¹¹²·ð'aÑÁ7 þ­ªRÙ7rM ÈÂ-;ö%õ¹ÕÀ3d‡ö¦Ç¿ßnèiÚÅ÷0#´¨'m˜ÔÔÇs” ™ü D †?øÈý“ô}öcY ›vM–ÎâØšôBòPû|Þõç€:œ,äZ¤åøï‹\Ý"jtù*n+G€9+TŒs„m sxM20¦î¦Æ®y Th–øU¬Ãj›Y?î à÷ß\…ó´Âùfd=Ö£4ZçÐÞßѾ·ŠGj¿8v¾ð<Ð+}ÏŠã9_:ZÛy¨SgWzL¦Í}Þá@ÅTmF¹×bÿ‰Zìlú¥$ÓæßŠ‘ŽUÑòéØ7g7†:+÷éÉ2¿4El¥Ž~<Óìï½¼€)¸AE¿G½šûcT.߬ÁæýÑP¥ƒý¡½sýÄ i­{j„ãéΧöæ¾@·Gæ›FãyuXI] úýØ2SçYÀd5 <"$#ºx>P¹ä‡öQ :Ö½vŸ€®Ñ\ÎÙœ€Ï¡\,«‡Ÿó9J0.ƤVíú‘ »_¼ ôÚºBËSˆÊko^‘¦j¶FèlM¬³lfv#γŽbЗ̻ØŸ—+®ú äÝ÷‚Ä.SÄ¡«g9^ÝǾI ö½„÷Ñipí¾Î3 >sÜ•T9q>Ÿh¸‰èSóûÖŽïN@ë8´Ê¯àœ‹;U ŽÌšrJéù÷«òO<9t¯*¤èã ´Áñ›w®ëÇ ÃNÌö–ò, 3nœ7ÃïsÏ<è‡uÛí°Æ²¾ëíõ€œ¼ äÖ Î3SZ¯¼Ô? tùÅ!5¹. Qaš‡„ð¾Bjûx·*Uåx&wèž{¨*>Ÿ’´¥aQжÞG^Øï—·ZÉ=>>õMqi<½Ž!6ŒÎ-Õ-O–¡úPª¢íß*•f{œ“ÄS›ÒJ·$…vYoRßr>*q1;%íQI$Ÿ}\’øþ-íØÿá¼’›šˆr÷ûû`ª—pFª1 ZëšPL±ˆà¶ù@‡#ç·Ú!þ?(c›SÒô–mxÏ7`Ê\¾¬jÚŽ}¶BY÷S&PFuóçšo@²ölÛa±èå€7úA@øÊe<‹ð£z3³? ˜j¥¯à§~ýÚBbÔG/mBϹéc}Gèï¿Â;N+ÀÈã™|ŽS@lÞÊûqhгo¯µ 0êœP¸Œ¡â’Ê3-ØOÅvº_8€èÅÛë^òõºÃ©w€˜;=Ñþ€ó̹ºã Gö½wƒž(òÀÝ Ìœ( ƒ/}¶%ã9ïso'· ÷ÔýQµz¿š£ùïS ‡"7tG;MHé:9;ñU¯F#ú>0¯&U’¸Ó@^ýl˜Gœ˜qjG…zâLZuïsÄ3-·¸;Çÿ=æRýè~ÃHqç{€SÒ~}Môý+Öˆ#»uk®Gž{ñ~X3èfz]8~3PfÉL^'K òOc%]U€Î“ã ñpÆÄÁå…*k€¬çUÜc-´Òç•ÊÞù@²ÅtÇÿýŠîá×"È{~®Ë*±—z!?dšúj`¹Ï(ÇF¨ý[A¶?7IˆÊËS6\xýË¡ŠQÙâÈ;m'>»]<Ò~ÇÍèªëìÙ@ãDãÙÕÍzU4 ù-pá±9¤îìû Fœ»e×Oh¦ÑÖæ+ÿVnˆ?Ò;ç`~åƒ0â¡Â£uõgq΄«géo1óÚ€xLv1?ëZìܵãgÚñ´q£B ^7fq¯Âë„;Žz^&Û©„êY÷€–9vtÌJšÅÖ/í< ¤:Îd¾š¾ßÑ­•I@^º¨2 ÆXÔ`!g8ê‡wwTfÊuÖñSPb½¥Özœ“ý¿sÒ€¹\øú–Aœãç™K>“ÿüf¥<7Ó÷3—ã×î ©™¼@—ö» ´~_ý£¾Tœï@«^ÞÅ@z¶ÛØ`mß3õE˜Ýf’Ù¦Àœ½©æÕŠ7ˆ×nô2pîZ—a÷µ»ªŠ!ŽèxÛ9™sÁÍ]±~J¨‡®&žù»¨ÄÚ…Ì7ØGv¥··–Å)šXoyëZ£¥p„ßÏöH`D3òë‹5ýéêÈŸlEòÂ@ýo›Š%Uá9¤GôG#?ô߾耭ÝÏ;ýû¬"mÛ¶Fb}ÞÚçÆw\rϾ܂¯KßQ¾yàî¹!^të;-ç¨î•É’Ts³±Ny?ó¸+÷`=C½-Úkö8qÀúÖ§&ΛâùWÏìPçÅzj¿òÜ‹s¤-™Ú÷÷¸kEÀq|¿Š{EˆŸerU±¨×v?ýí¸é.8¢+&‚}›xùÛÖKw·Ö œèD>\ýÀpÌÞqT>ó›Õ6 ïeë^]RæbÅjZ¿?Þ–1óF¦'¥–·ë#â>ðCñÙ=Þ2OÈïóO؃‘ÿ9–Џ ¡ÞÖ›gSr(W‘Ýð}¬Ãjé6«„¹ÀŒÏxÙŒuý¼V#¥õŒpœRŒ>0£¾ÌO=Šý/tï¶¥3žÓüˆÔ‚èRÄ p4͹äüì.Y—͈sÆÒ¿ÿ­>=§:¿ Ïcõ‘xƒ{ØWº¹¾?’qî”;êß* _…h„xëhˆrþ…uj5öº†ýìªyÌYûeŸüó)œ¨ójÏÄ~×2ÏyWx²Éþnx#þ7—õ¾ÆçÍI¨2ýË&¸u rµà›ǰÏfiÞøÌ¸æî¿ƒS®1Ÿ#ŸO…â\êåÜâñ}¤áúä±ýØ_‹ÊœÜ!ß,^‹øf&èyu~_¥ñùÕø:îè>X‡~ÁŸ„Q¿jó!Ÿ[];WŽº:ÝãûÙh¼gĺº…@~¨4Œûâ÷/?mÒR* 4ï„yØ:ôÑ-ŸöxÌF»Øç«v©@ž8¹)Vâùv_G´]Äp¸µçWXòÚ?ýùwtëù€ù¦|ÀÖ¯õ×Ùe¿`¿í1ø!Ђøíd=ço/ΓíÆ?M×±,iå¾"䳫ÁYŸðõ;uÚdÝpÞF·CüJrH>®‚|çåêöú.0jÛ’tj‘'¼¡ÿì*…íˆü³{¤³ÿáÙä¹/eø}mkdþ­NP6ªÈO÷ľ·™¡yæ 09müârQOT“ø‰õ´=jîÆ¸çá:,}.½nÇpf9â°¹¼ÒCìË•ŽrløõŠúpÿwÈ+ a.æ3€è‡Hò!ß9ýxr¦ñwÿÇ\®PÔ‹Œ|Î೤nJ¸6†çÝžšûƒyyªñ“px50MýdÚÊãýÏì=2L`úÿé}LJznT•í ž¿Ç¯G#5è+LʥäÎ1lq<3õUíÞKo.à/+‘¶Äyy躹õö ås/àœú4çêc¿ÎmÛÛS‚s˜¶öÚzî, [ßñ]ºþõZñãÁ@AÔƒ¿K¢.¾²å`ßå Ôi‹¶™>Â>r}â,¨x±þÀج¯P—÷ljGà܆œÜzÈÐÿɽ8s ëfma<Ô´åœõÔ2`¤w^®X%DbþkÙ8Ô!%œbžˆ3my×ßÜ{ ´›ùRXÜu@à 3§UÀTâˆË3“B>kÿãzmÐ@ëyÕQÿ&êߺë/«³¤ ûûäû S@À:%æêŽ|Ðæøõ¥mË#Ò¶ù†³û¹îy5Y}þÍûÏ¡îÊ)®1t¾}´êAÕ:ô§×-Ü„>ÿž°®ÂP=0Ü—ö_žø ŒÂWnÌ#8Ÿ®¾á¡8Šz¾0»h¨évcôUıSõ0ö[ƒMëc6ÄáæÕ²"/Ü/2çYÂ}Oç9|ß?“\·g“C7ûŽöÅÉM…vØŸeG^œz‹¯“j­û„sR\*؃ú6AçĨ˜ žoduž$ú5ŽÉùb@ä.Œ]8eÓâ倾ÈfvÔ™xûâa˜âêbÿ¼µ¨Û¶lͯ¨Aœé’vò\$Ö¸4Ïú;±›YQ`䎖e[ú“gšnæX'ÕA©7 €qëCÉÒE¨ïUG”…³Ð¶$ßÞ5Ó èv¥øqÄ¡žn5KôÝ4£/S ydÞçëG±Ÿo|ãoz& ÎÁ =¹­ÈŸ›w-Ž4Äs*ˆV“ôB™ò‚ƒ_;õ‹itÓŸ=X—M xPKÞ2 Üõ¯ŸpuæÃ÷c$&öÖãùÙ:nÃçm›-\š‡~é±’»ìÄñ5)oWö3DßÑYuÊìÜØÍòxº Þõ£ÏÒlyÚYjô”ËŒc—÷ãÜ1»)ú„ïG>*žAÜÏžucñ—`®MØzÊä wWÛÊ ÔUûn§_ô@ÝoœÐ3× q¯PY+øjÿlG[ä¹á°'Âο‡…Œ¡_ɯy`b×Y"ßz×íãQ£#Ôéµ\—m?ÊÏO]²ÒégÛOôs…>fQ¡#@Ùw$·ð  Ì߯øÌ>3èc>ò²¼Ù(g>úò7¶KÐñ:õnôA½è°,X­ßç»  ®üaÕ|æz5žožÚ`ÔAôŸ6óÿÁ~Ž 9ÖmŠþ:¿M¤M }þ¯ù’Нt€½ô³1ÞOÈ/)«Nä¯Û¤blÎK`£òKÄõ5ef½âÈC¿—]oCß§.f¸ÙïkÓhÐÃò3ÈŸ ëxxH}7S@¿çpD±õúQ»=EB/°¿³+oEß"*åéøxaGÌê2ìç)Ï˱?œÛM Îb6adwÏS~Ýéyùõ¨“ÔùüÆ~Œä*Öéľï‡>M/œÇƒû.n_n…~âï:÷%Æ'Žru .b¼øØ©4˜/D·yÄ-F_—Ó'u}žñpüq~ôÁ¿Æõ·˜™úÕúõ“Ž–§>8à¹cìúý.§Ó³ñ>ù]u úŽ™#ýÀçêf©eO>2Ðo¬b7Í)iFæ[ôEþ1Þ§±…kÐaô[çóWþDtÿHàMW ï\Ùs3¬*ædœÿKzLÒ±_æTN8Xa6êÕO•}¦qñ©ϯ<ŽË\Fò>.žXÿµK^Miù£¹$vç^œk¾åAÞ\`æ¾Õú)ðïç®Ç¬}°_S¶±³ºbý¥Ê8ß÷ξ„º®!,";ç¼oùãIzû}wdØ2 U/=Œ ?Sèí¡ç Ö¨/E¢ÿ¼G=Y]zòŠ0×ÕU²Àçùiî°ëYfzoê¥÷ÒsÚgó¢¤UúþG}#Ëq‘íw•7úÙSâ·—>@_äz8}[<Öqd'Lq>¥>ÏØ¿ÈórÓ+ú[ñûþJÛ¾ãÅy°[ïŒu=Pùz ÎÉœYÖ Nû¡ª•¢¯ äÙœ6é¨Ï3;sùIgÙï&ôýuJÊöXÏõ3î ï@œïŽ6}ˆçøŽïð—9Mˆƒ.ÝüˆÓ’#î±=ØW9`Û-8èµMõlø¼EÍ.îUÿ´^çÍ»”'À^?ò00rv/ùã{ }éžfµÛ˜)¢önÂz/Züî úž­¹ßC€^ÊËÞÄ@]åyÏ¥ö Öû×ÅW+^b?Þ–ØqûÓô5&ÏW…#>5dÓÃûÝîY$òñ»øÒ±7ËÀº¬s8—žUßÀ:9G›Ç¢ÿÜ8W–o?úß«-µÞÇáøáeqç¾Ï)áSÈ'xÉò >ìÿÞ›Q[f#NÔ¶<ݦŒ'F•–ûÎ~'Ò‡sÙ¼¬Ð u¡E…‡-ê¸Ùæó–ïEý±¡U¸uÐÑä±Ú×Gf\8Í)M‘èß6ºVïÚÍ@>_èíqå-Ðo)/ ¯òÉz-ÀƒzkÞQ.»lôis¯œ”º€xóJ¼cq(P™ål@ƽ-ý ñ\#»We£~]/¥œ© L‹ÃWÚ¢Vṯrí£¨#â:xT+›€ñ4â]§âå«¿í>‘¨ "_|º€øô¨è@ñ˜ÎÝCSŸ€>Œy[wq8#_A¶,±Å+8Ù1*5•»qXmÖïeu¨£6fgÆVþ[ÑZš¥èóñC'MýXa™ø 'ô×.»¼Ù n¡.þdèà3òÀ€ë¯M¾¿ðâócœ%†žzè/ŒCûIýóÁ‡3 %ò7Ü7\æéœ6—E¨;·V¾=5òïçx£Òë5q¿!àóêŽem›ù7à×-úÇp^·?­ÈÚóÏ#ö’×$ò¹¯³×»­ˆ;ìŠn#˜†¯nÔgºÍUM¤ßÿûÎ΋ßQ/ÖDÖ!ï;i­ø|ë*ýYá6G3âtªø<¹T|Þ_»VÔ¥#Þ&=ÙŽøê©²0õöq1!y´8݈Ýu¶¯>çY4sg<ç<µÊÛ㑾ÿ}ÐYì««Î;Ÿ ¿3p;Í.ƒ×Y9©ð !ÈÇ"kï¼+@e•<QÏ“gëüCÞ¯B×ëó yÂpxÅ­ãÈ£üñ/ô´Ð‡¤¥p¤-@Ÿ~hæp4êx¡!ï¸Ëé.Pë'µukyà¼'طÚuKÌ|]’]Ûý&YTqÀhÛ¯¦óØ?¥m}©aè£E®¯½‡÷¯×d¶[¬qÖøû3|ø\6ÉZ¬¿vÖïú}÷Q/}Ò.ÛÕ€<’ òoµhÏQEÄéwa»&QŸÉ´¼ ”èE]øüð¦2ĉ˜ÉÏ&wP¿T%>O/Ër6nH;u¾aÙÊ« Å@ÇÏ*>þwÞz{‹tf#ŸÞy^Ùµù0Eã6þÝ»H°œôf  éûÛ¹÷k¿ºŒóÛœ».yzÊõÎ"ì3®íïÛ‘žù¡Ý…ýåªô,ÝM Ï2ÍÂ9j>d7€üw?ý¬ê;ä{š ³tù?]z½8êÐÑgoT¶øŽ>F¿¡ß¨´tù|ô+msûMÐ]÷ïèÆþ’,VJÅù}x(b´ñ¦~à̆è¸%¶A¯;s}‡Ó¦øl`î ózºÆÈÛ¯ýß¹¦T»¬õDÖ‘ Å8Ô;üo_öºUäç}{`|kú’3ú˜3òDvI£úŽ¥f!êüŸ^9Ézˆ÷|'.X±ÙI¾¢Û6W ÏeÔš§뤣·WÏûbÓ;µÑ™¨£“OHå¢Þ^oçì¶ùÎáÆî1á@Ø?}´¸dRvh·?újÚ´cô'Ð?^}I@ß¡=¡¶ý¯w\ë>|¾×<|ò×sæ/ÁúÙ)ºÔ91莙z> sÎ]Äçñ†¨W*UÆbº"Ñ_;'É—"ùm¡c6âÿW[^¥ª@Ô&8>ìùUMù}La)úЗÃc9¨ƒÏ/0‹ÑÿŠýXø…ßûÙvyÁ½` 3÷ïÍþŒº·BåU€€/Ǫ‰»<)Øw^Œþ o~›Ê}‚¯¯²õ? tÊV{ÉÆëà2v”ÏNÔQc;N.ÎEÜ9²ªúŸÏ¼zÅÊbêU£å¿kïô ê0kEŸ÷kìݘ7ò®…ÆaêÓóãÿqq£lEA…8êó‡Ûj2EÑo>9&{É+ yÈ$*Ðý±Çû¥5w– Œyy ã}Ï©PÇþvXÓw4¾æßßÇ™:z¢^Ê~| z‡60ZýÅ•—¢ßâJŒì¿†ü›`hõïï~Î]f‰zm~“eÔê%'ãz¢¨½¹\îÿÇPKub¹•[Ìäí}•G*|CQ7,¢‘¨{¤^p‰:`pbp ˜Q›+. ^/›e³Â:H†©âmÑhÔ*3ËÜ€–ëš%nA¾ßo©^ɇþÀþ´Ê›lì3îyísºo ÿ¬~[ù ñ¢[TVøì*`Œ)TèúžEdÀ©ô8â¨!OSêÙ=/›¹„N!O°›¥¢/ËÊõàE=Ô%·Gçò ‰±3Ë÷¡®,hú0†zÞøŽ^r=ú)ɺ0Ë?|.²»/uÏÓ—-ç¶îFÛ{le“8>φÅ̓وJÖKòPOä= ÆùS6±æFv”p°Ë¬ï½Ù; ÌQ7‹þç{ó˜îO %!‡Ô€\¾fü&u§ÈDê—ÿáµjé?kÕkÕkÕÒSÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥é”µji:e­ZšNY«–¦SÖª¥éôÿƒUKÿþ)+çßÿýj‘¯à°´øOƹÅè_þ?—2ý绲–3±‚¬`+XÁ V°‚¬`+XÁ V°‚¬`+XÁ V°‚¬`+XñßzËFû„*»õ¥!ó€ÄqušnU\¸«Ï¨MJ˜M¨P>SóD~3 Ƨ湠T®7÷Vïl GOõ±ÙÚu«4êW»®ÔÅȽ°HŽ j`z±p“fgЈ¡¹?#ðþªÃ~sš=¤›Ò;•äLɹ8¥@_ŒJ=]#¤õÊÝ$fÑLä0Áo:y­<[2#c¿Ð{¶Ÿ²ä‘ÇËŽ“€¼(ïÜïÔ t×J©–™x^­[¹¿©sÞø}MuS 'Í-wÚÅ•;æù÷ßR¨³i_Ýš•ì+¬»Hszä5¦2…\‹±g@¯%ͫꦃƒ—¹}w¹ð¼" ²›]W-ñ×jÝçtN»8¹ba>íL`nlŸã×kÄ»0YàY*ÐcJ.q•@Ïûi-îÃshw\¶{ðÐ|o[öI =lìeCò@Ãó›Œðþ¦¸Lï9´í‹ƒÊN'`ÊKKów_zî”ØÂCÒ@ú2fûÕZé"A…üç).°Âë[P7û䞇@…&Ò"K¯U~¿w-ž·Òlž¯À U¨_5k-Ð2ñø-ë€Zô¼wS¨j¼&ÉæRÐÔ|æß 5@Õ¿ (^ºè_Žz20U/ýžD¯`Ý—> 7Rýò„Ÿ%SôùÀ“&Øoö„‡‡Íû¢9*_õsÙ¶"oÈ6£¦´ðuÀÜpé¼ûe þΦwUày^íPêé/dz˜ ­] + ³­Êº|±^ëK ë±s'Ú*ª%f- ˜Ú;ûlSæ‚Èí5kâ,•øªwܨ©ƒq©°$8QÖ}edœbwè¶WQ‡¾wù–/Òz7è#½×œÉa@,«Ö”ÞÌ%Wòuz¿½~{–Iadýľ:]¯S¹¨Úh•`kÏÚÛV?‹æâõ^g:²Ÿ<Öê÷HCËõ€D<¥Ïyy—xέš]mþ¿@yr¹¯K/r¸}õy; L…3³žãyVÎSIšF×ÐÓ´‘x.Ú‚7mÁ9—"_usíÌkֳʀ™šXY?Oˆâ³û£øçö·ž¾ILÀ>,8±î>PjœVaä ô4Së¿e9’vGP  'h× ‘•‰a»Ý€vñsåYó}&b÷ÜÆ ˜[<ºÊ‹€è×ÞOÌHºWËÁa­0öÅ3ùÆ“8§ÖçLn Ø¢~ô‰P]ÞQn|_nÙBé=¼@²ÚüQÒÈ­3ÌÃmÅ{¹Š6K¯^+Ôã߬¢^ *ÝgÃÊâ9o,­­¸€}¤ptg0¹Ÿ®íäÏÊï¸çyV#0ìî|Œ Œ²à•Á®% é_ÄÙOàú#Pl Ô k¢ËûìÕ– )/œ3þï ?uÜ›«Ð $¿5¸µØÈÁìÇ£p>Â?ÙÞÚdÉõï%×ðz6^&v?É6íùT ¤"2!N.èÓövšÞÀÔ]Ü÷;] ÅÆçGâ|ªÎz^£ÓÌ•Ñ_ºîÌÍMµ‘ˆÏû‹îsb];~mpÁyzÅf–ËåTêCÏî6 ÙG ž—úp.»éPÕ™YBxÞaç®ieÙεJ~&0ºY'/àõ—ÔäëÏ2¢tÉÍø$ÐÏ7cÊøð<}cªy:°ÏŽs¦Fc¼Y¡h€ç2a± h ‘šwpˆL›9ÊdKŠ£Üœ:`º9˜Ú½¢í?Oßw=ЛGÊ‹å—cÝÆ"6©)ó÷å¨-2.äCïà|=ú™^,ÌõS†fë•Ñž2ç1ÿS søeuykjìL¾Œçµ}ÎÅ@sä Iç}¯©ÐXŠõ}PyïA Ð0ÛÇIN›~K`N¤IUØ[ž¼CÈåø‚˜ZU ‡s­x±GN<ëÈ Z”&¡f…¼“¦ëO_ô­zøÛ¤çüÃ2¯E—î".XWn\òèRgµÕDZ/ï yþWWUÙáÙ@ËŸ§Uʯ'©š/‹x!)ÅÍuJ è¾Þ‰œ¯€&)ª(MÈåZ=4þß?tn¶Åe ÑÞ:*—Îaßô~å·jø5ʸãÅiZñO—ñô8ñäâ,_Äúj·û@ž.y—ç ‰¼ÊÍ4X¯‡8cü3\øõ-_Cvß~m.ÖMùHF"×.ä¿õcº_X=`|ƒx©#qzø-ò!×¼5÷§l'7Lt"î:ÊF7ÄçÖ˜¥qWûZ½©µq8o™Vaìw쇃ÅÏaëØ‰é,f¬íÄš4Ä[“Ú#¢ÈÛãG"y7&i"j\{aú(o“Ñ©?ó„jº¾PÜ tøÇ «’ƒ@¦zսð~¹A‰ö@¯ ¼zÅëÞþ?Ø{o¬Úïœ)Bˆ’"$óë÷]ëû|׺÷zÖ²ÝÃ9纮½_C=ϳ›í]€\`(ú%‡|¥Yäæõ!ãñNð”ºkJxn Gtm-‚ÿHÿõ}  ͽmYüö±²¹Ãv ¨{¬¿5çà¹ï}ÿãU7P-ŒµsõìtíX)⹨Ûç­¼Eš8ËÀ‘NAܸQæC3öÕâÞ_Äa±‚;öcÝ&齨 $Ï„öd-âQœ…ÙñaÉW{B`;P÷vÖ;žâêÌˤ¯óXÜ“ºeŸ€Hè½Ð³­÷O¥íú@µÚí>uè/ŧîR}¡€«y ÒUúqÜî«sïl.â”dÌ^YìãsI+€*ພN­¨×ÒWŠ¿¹äís’72Vuç·ÅöÈST¼_#„KJmšÒô“nòÝ ¦Ø_3ÒÅs\ýE¶qxWß³ôÒ[Èǹ}P/{ôÓû'ȧ(7‘7œ<Þy Ï*¼¸ÿyöû¡¿†ØOãŒÏ™àz.›_oìŽÅ}jKÿ^ƒë’0G~ë’³o±{ ”rño¯€“<ðˆû¡àÏg>=Ôa&eI%žq¸¾vÙÂff ¾oèëB|™P>!¡‡õ¶£°ŽïŠâ·ÀYOÕ &D 2 .ùl”&„¯¤`}>ºø¨s¬u"óŽmƒÔøÖú¢©yk©`A{ö¡˜ò»|Þ½7¯H9!´¦±ûÂó¨kžOÆ: 5d@?£ewY³ˆ¥„Ê\Î~\§ÌÝ,{ÄÃޝtŠþ 'ü.rÓõÎÁ“³é³ñ>0Žø‹xí³ùá‹{ˆo8ã+mpžM9ny‚>àGEëVÔWÔ\¥OÔ=.Bo¼·bÿ†Þ‹êD’Ç¡3'lF<=úøP„&·3âýg’Îv!§UСøDÞ©£w‚ÑTdHþy¦Y.±'0U<©ÄTƒõtðæï"ä?3­Bi ê_3É-Këp_jëï5!¾DŠ÷þi’nsêhÚcÔ³~)?næVð_Ä~”=8X{ˆær‘—o°^6¬m|Àyn«qòÚl¬C#ú§‹2!n}*ÀzpÔñ—Êo®Ÿ"Öø9¨_‰z‚~Âiøëg=g{)ê9Îù7þ¡îºÅPÏ[ÃŒ]sâ÷¬úÿ_@¦,Z=Eº†¦ÒEY×è‡Ï«]ý*×"ˆCD™ÕGÔ3ZÁ”¬&¬Ãíøþ˜â¾tÿøñ÷]™ÝœqIíRyCû3\ïÂSiõPô#鈻A-ž;„/º§î%Tã~ľÔn=— ä ]±Ffy\×¹šls¼¯tþÁ;xîLÂ5üÈÌ"|ïÚP·0¯XiZƒu<àÉUЏRTbòèÈ£•\3¸þ‘m^Ø?êê'Ø](Ú!Z¯úõb«‘]ê[“©-ôâè“Ö°¬Oú÷?C_pÜ]ýB×Ú=¨«V7ÜSÂ}[QÏ´¶ëêPÆã¶½¨·­Oy#Ÿd1E%\AýÞ$ýü:òyã0ÝJ6äÉ&™âœ9 º¹<~·Ç ñ â[>"PfÊ|4µÉŒOœûW°“žï&ú±”ŽÒÚàS@œÕ—è7) WûØgK·°¥ÜÇs,飿‰û•%¿ð˜¨²[Y¡nŠvýeõó~'’!ñªáÃÔ[¬·‹~kld~õäŸ5Îûy€ºWȪЯŸÛ¢nÌnˆª"ᙩ@ÞÓ¾cYŠ<àø’Ý¹yƒ§ÉµÕDˆüÆg7ºQ?3nú8˜8v•yßð?:óÏ÷îœC~øôëfÇ{¬ÿ¥/‹‹ÿü²ë¥ú¥z<ßË–ôJ¨gjßÕ¾“AÝXT¬†ëÝñÙ…Qq¨ø¬÷Žlìç®ýÙ5¸¿yT~Ýd|}ô}6;w_ú~~>5D…>{ß ¼Y+ÛNžba21öûm Òžõ¨÷T`ŸWœO¾€<0Vä±S÷ƒ¹úÊäêJ×ì"*+šNØ¿ŠW±îÖì•@ééW6—Ô"ÄÆÄ» ¯·O ]'%‡Ïù+vgÉ~ß L Ê× 6•¿@: ëÈs¨õ;òÅNCUçTÔƒ;yç™Iôq—ë|SµâôÅJqô9YÆÇ¼÷‘É—ýTe=²•íÌã„ÎÜÑÁç¬q{Gë^ã–È“€þp˜mÍÅ|ÜRC;ØuÁÙÛåÍÖXoy7ÇîO ŽuSs‘ÒA?8f´ºuJ^uÇE;Ô9au•Ìè?$ÿ¨|‡ø »ß·™õª#ÃL-?`ðÑ”Ïýç N<çßµ í¹È+]yNÒO8Q˜o;¹CqSÀ,^ï,¶|yå€üûK_õA”/³ÎIm@Ö߿Э‹º‹áô³ø6ÔEfo{~¡Gœ±Q¯zˆxÐ’"­Ô †ûY¾:«uÖ•¿Ûûô°Ÿ-­·¾4„uÚ2÷cÄëúêîd'ô[÷Žì{þïs› ˆõÊζ‡ˆ;ÅYÞ+™©ºç}pê¯%¸ƒ~zxX¢d¿×ѾkhþP•/^øº€ýû¤u±÷­ß{<.‡¨†-#Zqÿ3¾ÛÉ7Ìuõ×/⹸/RU,ü޲èSZWµ7¢Þ=uNõ©,&-Õ‹¼!¹ötòŸü½ò;wPgkv]·œ"wŸvä úÊ¡…ðgb¨[\“­/ú¡_ßç`;ð—²óŽD`_D¸ù•&Ñq³Öh=êŸæE¾Ýëí¿RjmÏ¢N—MÏV¹sˆœß¥“o ‘73·‡3#ŽŸ¼7ºb„ô…*ê\êN×€ðÇøùË:#Þ@P«4õG°n'÷Ä:íGýÝ67ôñ2¾=~ûî§ŸÉ~Èèj®ÇŠè[> ^¶vÍr·€ë†ÄÑÄ•¿„¯ïÁú/ºwªýL†•SžÿY&cEF=Zø)h_!êÙßûÙÊ'p ïU7e“W°u H½žW)Àï¾·™ýs‡¢¶;¼¿T;Ï-¾ˆóV¯”0Ûñ¬w ï%öÛhëùY Šò?¸f5‹ºàØGéÈs"å Çô‘w0¤ñ+¢¿þyΤlõà_É ûo¢Oã _Óp¿(ż²}Ð’Ám¢ @™+zʧZˆü÷òqgf PGŒ¾¸‹~¤P{ËýÒTä…»ßôİﲸã»QçzW©ºTîòhŽÃ5ýç!Ž»Q.8Y"0®þè|}޼[Û"ò0K k‡*âcýdOû¹*ä÷îÞ¡pôƒŒÕ<ÞÑ@Œ®fÙ-Üëƒ,s·Þää,ÜA=¡RXh ”ìÆwLnè¡Ïìrê™4÷þ¤á(죕}öbîf“ú¨1†çüëëÑ)OÔãvikã ±¯\~µ4á:’fD¤_1ã9mý.ö}®”ÒªíˆoSF÷ÇÒQ?Xû›Ž£®sµ}KñèC6š¬¯@¼/>à’­ˆ<+p¤Çf_#*U*Ývè$þ6q&ÿRëÌ4õuÖ±S­– @é?k´Á~õÝÓl½÷X«Þ­«Ð_»ýml ä÷?ý ~|@5éúøME ûüáž Jpü¸²‡ õÓ{IEÄ» >n¢Òi@µ‘D^—¯rÿúˆçâù•¡Ã@¨ë‡Æˆû ¿èVÝ‚C+ÞŠ¯`;ƒõ½nÝ÷^<‰ú†TÄý;á1Ò“¸³²O¢Y耚`Ë›õˆ¹-ža?•ë®jÖ6Åç¾ÉøàúSþò¾è²IÜOžð¯|+JwèÖ¯JÄSn±ka¸ß¿4t³D:kãÃ2>UåþëÏCˆL/UøÝÐÇñFx±"?Ûã눸>ò£QÛë\ì\åçÕ ÿ†@{'F£¾Lî G_p7aOSêmò²ܸ/¼wO†-¢_Û7ûήïçÖ nø°­²éÏ(êÀ >»¯xµ×pbÍij-¶üW£€<µxbþÏ. ¼Uéÿ‡zfŸ¹~ÿ‚%›uòCxdÚøäÔ;·’¿jÌÆÐ©ð ì›Ò——rWéÇoõy-htæŽêöÍ[Eb±.,ý&o[äqn]õ::¬«Ž€Uî@Ê)Ýω¸¶þq”+í히£¹b•QòWú\÷ÎC·V '5ô«lÂÏ€Žå8öõ`›Fõ…çÈCúçü&Q§xÅ© ¢ÎÜhóíÆ?}påÛüÚßq=Þù÷×l’c…b î£%³îï¨kÇùÕ2«Ñ7º{lj>…õàbÜÐu}”ÑË ú¬¯¶fÎ} Ù¨¿ëÿòçb?‰7Ú–ìB}›Ny•¹¸õº¸üÃ@¬› &þre>~jdõÐËÙMK¨çŽ<¤š  .;RÌxXù¼è*W1ò‹ËY§ò\ Ý£i]±ÈÏ-‘þ1¨C¶ßQ¿„x¾Ðþ[ù÷æi¯äC4Kô¿JàyŠÚÌÞD½ªš!W|-×Q¸â§+úõŽ¡Ï±]èÇ3Is  r;‡x¾f¿ú¯UwXÁ¶ý²û]“_¹è߯]î¹] Ôýlïgòu°o¦’ DÑ¿ &$ {`¿|À5ìÏu³”çå"/òóóþKtèW”"Íòú2êèÿ¸ËÌ õÅš0¯“r@1«ž…ë¹´B’€œ±rY´òöéY úŠÐËú£ÊÈ;’ÒúI±¹•V‹úÕ­?GMˆÞTÉr\ç!öGügÿ [·ãú†x?ÁØócäßß·¼.ÓwR= ¦‰Ã@îáÉŸ0jì÷í ¿šº#“¯õ‡ï—mÈ Ôóu÷ûS{±_vµMwA^ŠÝâ¾€}âÿ&ÄK¨6—R‡íèÛ;ç$ÝÅ€2ýsF2òÉë@-äqýȼð:>Ôû®âw{¯ù¶C¹Å*ëèvà~Üï+RY÷½ñœÄ~&û8qР4ð-êÜ›—ûÇõJßù·ò=öë'µ:ôùéÖ ȧ‡¤VähF .¦ò øáó^¤œÑÉÁ}ÞÍ’×߃ëšûX“þˆó#}ÖP7ÙhRò ¨Ç«áÇFa ò\Ž~8€ëY0¾ÕAAÜ\•'µ!qi{ESÕ¿á–}v—+¯w5¼kÈû×O)ŸYï£ÿeš¾[¸uH{ßáÑ A@Ì<)ý´×’Kœ_…}+­ÁÍ”ö1§ÒÏès®è·Hª]²f;oÖ¿aš©Bÿ†ñÅD½Xàþ„þ÷ÎI¡C³àpúÁmyfSôáû’¾&¢/qo<}®¼ˆZõSӼȿ¾iö:m@Ü ókF”«áx-È Ä™p&û8ô¯ä¾Ç>üÁ:üT« ¯³e¿É°âڱǥ~+75Šä›þý½]…{‚!òƒf·ˆyÖg Rž*Û!ÎDäl(êb°î⃗ûQÏ--ôÍåÛ^ÛEºÈ¿ɯsˆ'¿êÒú°Ÿ6ß.ÝŽ¾›ùCJÅQÛé¾ ˜Š|_y$õ†Oؼ™:“4¶D#ÞÄJ|u¨—6ÌIöÆ~»t)ëa,P7®˜sèj×q6ηèòÿ¬)TA]!/PÑzˆ=ņ‰¿@eä|÷~ú [SS±‘? eöå7b“ÿý¼¨3_<ý!ù P7ejyâ¹1sÜÇóÑxÌ"þïÏ›È îS@xžo{ò}­¥A`k©P^|gþ¶ùê°¥‰ü.Ä“ZÓ ¯¾áúŒo ‹£®v§?£¶adP±ÁuíRÍÉ=¨ƒ™,ùË!îªî¿H·ûÈAÛbV uÍ‘s]ìx}‡»ì‚ÚÈ G\Wj÷¥ng2]%ê°¿Eþ¬~@ ¸Í´¢ŸÙJÏ«øó ï²ÜbŽ¡Èò|û¦H½œžà !:Úp¦ÿÉhÙhÙhÙþ›Ò†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§´áLË)m8ÓrJδœÒ†3-§ÿ g¢Z¢-hA ZЂ´ -hA ZЂ´ -hA ZЂ´ -hA ZÐ⿤³gëz ®«š²µuÝŽ!@¢«m3Ü äéý>Ï¢èutå3{ øï®T,ëâ¦ç帇@Ø~/™pRåéd•ý& uÞÞ¢K"Ú¤dÆb(i §¾²fk@ÆíJ¬j`qp1í2^ü@LSç¢D;ðú&¤$Ò}qTVPÈל%=S?R«£SÂääU›Õ†O€H·ýöüÓN ÷ÝÜœ}ü5P%¹­Ÿúy°ŸµŠ"Vj[mþF íõ”ÉÍø³å{G)·*b7:ip›ÎÄy—õ»Žh"¬–ÆD¦ÂþÎÞ@v:f~ˆº=&ýMWˆø35ðj‚¢;\Š>åñJô3Eë=Û÷âzeL79øNqðmÇ. »Uwl5©rÏÏ×qgø­êRj$ƒ¿… ´'ouÙVqo<Àš*DÕ÷›+ñ-|£'¥€*²ÉúŒH n“Óq¾|Ê`Y{Èšºlw·©?u>N.æ³ò;©’@åŸ/ Ôàóšl½¯ äÏôؘd "•ÊuVãºcî…Ö<ÒÏwrSì4¹R»¾ñ²iž=ÓS äý‹‚·Œ€ŒOR7ò­awðfܧ£6c¸Ÿ?ÙïP€¨Ž¾:ï¾Èç]Ý!±ïÔMºY° ˆáMÎÕ’€ä4tçÖ‘’þ”Þ†/€ºSçÎ:c¼îɣ¡@rY:Ÿ¦€äž °¼‚u§¿†Oá¼MýÒï€ø&ãþÌtÈæ«|göœBÐ!ab° Ès¿ ùã! l6ºl”2êvm ï¥Ê¦¥ôt ÷‹Å}Tºç²¥4ÌŒå&‹Uî!Ê—€ØåXÊ¡Âûc©:À܈uBM‰zòÈ)7Y÷òM@ô^‹ú¥ûež40tcH]¯ø.xnûÏš? Tf‹é´ ï€|I-qÊߎ‰ðõdÏ-tI6BíøSÁÚ¿øý¶Ö²–§5Eú€œÜ(¾¨û† í5•€àÞ‘w\ÿ+’¥©@Ê_.›87¤Ö1[ù“@ÚíùYíàÄ”ñ¸3=P~Ìa2åÇu ‡¿©¸ dÆsISX_ÞÏzº~ª‚Ù»Ê6<Î*~³B µw5®žmÒ…ùõ¬Cbˆ±;û¾°n´sÇ ×ñèâóÑ}óšJÂ}ËPs$žwÖ›3fÏŽUƒiÊrÆÈk®²¿:°ÏÕ¦ 3w˜ÒJ¾.iÙrÛU\¯,Q=S‚uìv¨$·ˆ÷5“3³‚@Ñ3¶ì5Ù”_|_zýU°>j”â:Í~ÙòòÕcÝF¬dë"ï½Vvî×~·ßý«/)^²6aõu B”ë2wâÊõ9UìgEAÅ®‹¸|/ e€”=¨õ³ÈÌÖG'ÙeHôtrÆç Ûv¤|÷{0t0Î ñÌéo¹ý‹Ö‚þÁØ/³«F‚Ž…`ŸTÞ7­Â~ÓMñU@tÔ +Îüëßš“R Ý@ü¾`Ϻoy®¡ÀÇ@ú<3]ó ˆ•qâ'"q¿m…ú?ÿBþÇ-K[Y ®+âdÌÃ>Ÿ~6õ>á"öOdøøìƒÌ—(;ÿU¢,ÍÚ ˆ1£cŸŽŽy$»xí°:Ù^ê^º¸¾Äàã†MÙ@¬Hüüñ®›{û®¯Ý@ݨÐóüÒlÓ†[Ù€t7]hŸÁ>yù]Ç^+ˆøç¼¿°¾ë7¥[ÚäÜñm«]ü+:ÔüȬàKy刿í9'lÄç·í>äÄÓ­9"z@™ÔræRJ•_`·Æ=ü¼n·Ùyì“?âº#\ø¼—|Ðý*CìËÚ"ì›Ý‹*Û3sºÒŤënûH)O8Pæ5öv ¹a)v_ÙO 'Þ¨žb⩇»tø¤y€>) ÏËë®ýN |pL9Ɖ×e¿tõmâ0‘KÙò¦ˆù)C(@½tú›ùZ¬«ó‡7;Ä1umÅ`¨;Öÿ¶®=-wD€äè–©ûä¡Ný,Ä%’þyÔ)ÛßfÙÿØ‚÷;ºá yƒÃu›?WÖJ¥+cÿ~8œ:‹ûütK";®/„Q|NHCáñµ§#¯>:Ô±¨Ô£%móìØ/¯ÔÅdBáýƒ Aˆ[Ê»š/"o«½Œ*ÕnBÝí•φüðî!ÃØÎP nЮ9ÌŒ8³áqÆíˆÓzÌjùÎi@\ú~¹ø+zÅóë:Ÿ @,ÜݤöñüźñÝìÇP˜þ»º‰NÆ“c5ÖšAÇA¬Ç€q¥ßîˆKïþX¥ÿD}ºF&¹ }=Pω—^EþânjL¯ù‚?ë77b}_®˜„T‹œè9' º÷ê°Í£¯/0©eD\Z츴„x©û4fÖµXž»TI-P/乜]˜ògãÞ­,@ôÙñêC<¡Ìû>èàÄú·ØØ ôqåûî¯Aèþ–« N?çs‰Ž]ˆ‹‘s׃Ö)´Ã"¥ÎÈ Áæ{°ý²ñ_BÉ7?Ÿg‹÷Ouú@W”©F÷óŽÈk¾lKûkî!’b—…Ÿï¬·@ÝK uóEǸ•cºæ‹8âù÷‚¬B@¦Í5Y!?trì¢ç@=9®î>)uÈ»½7ëgñü·—´žx¥†>"¤¦ïÌeÔû ªV"¯ vIôÈãuk5ž­Û dQºK#ÖñyÕò@é—œ¨üóˆ¿dƒp:6.}C_a8Tçnëÿ$Ë˨'…çC? ŸçÔ7¯Æ‡¤‘Ÿ¶[úÄyâèìŽ ÔIVŽÇÝè0Ž=4Îø½Ú žˆ—¨Ç¢XbvŽ!¿[Z­y®¼5Ÿ¢5„ºÞ7¡`’i-òç§ýmXÿ#ÆYû9Ðo%~Ü6Õ8²>ôu®>¯¯% ŸçdLïëûXߺÇ Þ+ʸ§¯ùñJdXÏVÈΪíYï,P¸|tµD©(楶áüΖxÔÅœ:š;œñ:ɇÎvs¨"® ¬åQ¾ä¥ú¯_bŸ±+b©Ý–x>ŽxÒ`7§ˆºàé‘7å]¨g=yßA»v“Þµ¹ä¡Õc…P¿é„½0@"üÇÍ® ˆœ§7ŠBgˆºÛgÐß°ß”¥¾‚¾14âfî Ÿ­ÉMr©ʱóÓo!ߥïSVÍFýã2˶q$t©ÝU+ûâÝÞð (ý±oñº]¾n±é¨Gyˆ€7È‹;$¶²Dÿ°6Žñ¥ò8;ïÀ†[@ÊQ‚¶s¡¬a䥳ÜTÆp]¶6ÔAA‚Ì^ ø\V‰Å)o79d¿Æþã<»Õ qØþ—J'Öaɯ£;wùøæf‰¢XoF‡Îx¡§÷ëÊžïrœ(+>ï76ÛpÜJ§Ô.ae R-Kžâ:úk>'_Aœ—Xñ€»ìPW<_Ü·(C‹e?4K€ê2ßfØŠøÝo‘¹}Ë©¿Ü]×P‡««lçߘÄö±èA@~cûõù+n½·m­?êÏ÷)]ìÓšÂyx./jpÝ<Ÿ¦\ZÐ$ê+{ØañK{¦iõZÄ‘¢f% 2 Þ™0Bœ1 ¬ŽG¦e²q3úIÇÖCÙXwŠÒw ôÇì ïãu€Uï´zøˆŠ®ÖiôeÓ*]Äãä·{Ôb-R¼Qáô"ú†zkŠ ñº^ѧuk÷Ây ò¯ÀÜÒR Ê |=_†zKÎR" ëíÂÑ5,7oÜrv¶£O¿T{k´ ýb)¯œ¿ö!ÛœÝkk ®¹¿–þ…çõŵåêŽg|JÞçëð¿£ðB××ç®3Îdj©ƒ÷Pžºã»8ˆ~£0OD u^'ƒ pÅYÞ>¾‰ (ŸïÆãù8†ÔËhé!sDhÈùÖ—"©‡þ† nÓ²”NòíÆ:ô5O²LÞ?…Ï£(Ö$|²G'?ÝŸ#oÍŽ)5|þ%ãgBèOÃ'ðáç*V[K4M‘a씵ðûä‘цx|Ýw.¯~7ò÷»{Ly£è¥c¾>ù„¤pÿŽFÔAûS"6ÿ2b‡ÓÚøÉ)Ôeó†o ®*~|² ý§ß‹gãè³O,™è¨÷!/¸.¡„ü4"ßÐâß…ü§kÿc5ò­ì@ã¦çèOÞ^ãÓJÀåæ{¶‚ø{â§Š'ë€Ò[ÖèS‰ºøôy†#ªèÃÏòzoB^_Óã—¾_.ñþ.ô1¹"ÞÔáèågv™Po˜{ó° ñ¡ŒZ>¯4 Dò›¹¸Uè‹Ýƥ̛jð\,Ì[7=®SÉEÞ¾ç{ êüÆã,ô!—YÞ#Ì^K¾öIý72f{óÇÒP ´žl³,ê;Ë[›¬QõÕ™ ù¸õ·5=úrõÑàÜ3»€$êÅœÂîô:éqô»#.A+¦°^nf>ç} Tõ>ÓÃ¨Ç %µxôɧ+2p_@}XX1¶Ï-EpÊs+âT„çYӋȃߒ·‡þÙŽõ³8Åœƒß+ûö¨ì9ò ýÉ¢-±ý@ó53ÎF¿ôÄÌéù9ă¹žƒo™×!Çñ°æ /á‚»«‘_ÔY«>w¢³¾[.ÉüÐhØûéò{ñ¯ 6_>«öÜA]ǦÞÊÔÇ!ùþ‰fèë:WŸ¾‹|»~Ðè*úþÕ<ïndàºþ†ï=Ü€z>óí&(D][#×ñŸÏáKÑà&üÉL¨uIcýqi:‹E_/¤%˜Š<·é÷ŸáÓ¨Ã|¿»KAÝa?ß”|x?ûOÖ»-@Ve–oŒÅºxçžç,„ø±1Þj£± £'{¥³QwduŽ!½°6ÍJ®²i_»î¬ûÏ_ˆWç?县y-·(:ZSmê@y¨õÊÌÈU¡Â|[Í¥ž¯ä„úêZÚNô;·7˜¸:xé[º[Ø uÓêËñ³ˆ/Q“9/±ž:™£>W[üô°±ˆ¶…a½_@åþÂdýuÄϹŸ¨Ÿ‚$”¢½ªóÙ5ûÆiäY†§jŠxŽÛJ$‡€Ú}¼’ó.ú\ËA%ör|žRr•k6P¢ý|¢úчG(Û†¶f"î§þŽÇzú”¶¹ï 긕ú\c?–…6y0às/DQ2&zªëÙÄÙ¹¡Ç°/Ó”¶(AÝ3§¶š‹?×´YVö®;âùñ/󆆨®ËŽ ŸŽ°ïöéǺÖ¿ÒÜAy›~Ò¶}@þÆœZVô‹¯›n4®Eß,ÌܹyÆñ»WÕñ)Öi†“ªTøJ *ûþ¥áóxõ¾óHG_‘±çðî¿Ñq¥|’{QOúÅþ‰ëde:rMy\>Vi…6Ö‘‰·ßÑz¼_´°¡¤)®`®ô õÜÜógDÖå†Uè3=Oß¿ûuä¥õˆ#Ö—ÕüZQoTEߢ?zu‡q´f0ùHè0ÿجW{mvÔÇÆ"*3È+i_Þ˜V· Ž­úÂûuüªE_÷‹|@, *ÚÀópê×Á.ˆsùO£>±ÞöñîßJ«Ñʨ¿½%ûw ¯¯Û’èi޼1ýü0ÕOˆ|~mÍ"ô™|wô“ñz<Íw7îAÝ0Q  Ø›u®·ÞAûÈí\‹:àì;é÷6¨ŸžØŽtqäÕÄ1ÛojâßÈ´ßNüÿþü“ÎâL)ÞŸ#sý­pä ?Â%ÃÆxîiw~â£A¯5¹¹VF¡q5¾žÚl¡ˆûøÞ–g½&ò\ų^qô“±q Ãþyíq¦&뢎iϦä‰ë;¢Ëö‹ ^õ\4EœµÚ.W|”âõðŽ$ 4ëR¨ø|ûæö\.ô2ý~Ý÷Ì`Ô¡~ܬÇw“ó¸Ö£Ï`81‡:›·7òçþûx]6;e.¼Î‚£´|2ú™ô v w«²¦G€üqoCñÖ…žwÛù+ˆ—ÅïÏ>¢? TžŒk]i¨½ÚäÒ/âýo9|Ä~ ±Ô²4ÒÞI^î©öŸûý[ïŸÉt®ÙVÏC09]é§âá¶U»Rªbœ¹GÉï'PÞfH Ÿ¬:mÏ3ЏBæ…F!žÈ×jˆ£¯þþ:̦u‚üÑßú<ˆ[È…ë6ûp}`#c äz³/êÒx>¯è w³âHú³Xçõ³Û/½§Ç~ft˜~øüÍBî4â¹¥S6Ç­ :8w‡`_½íÉŽU½ TM“W*Õèï“ïV/Ñ!Nrü•F]c!;ËÊIÊôû¸û¢ø9†§·§úÒ^F™y†º]öʼnݥ¸Îý'ìóQÞ©þö:ë'¦Tì¤ò›¶m½âöž+Uùi@LUþñRBßæ¢×ÆÍȯŽ.Þ@Ðoýb¯·ˆß õRŸª€8G~›bÁ}µ´5«ÃsÐâäVÝ…õÉ3úytUtpÎ,ÖǦ‡q+uQ¿œº^Î|ˆ½itkÎUÒX»Yð ½W,Äãþ4¬PôuíCñ+ª±¾'õ&wô"φKåja_rùØ~ß‚u¤ØÝÆy ˆžÁUj’¨×¿M±Y¡N(¿°‹a u‰ ]ÏlúJæðOAšc@y,óN²¯ÛOrï˜Ñçû·€$êÏÁMIáÅ@ZFü©\óÈ¿çÂû˜Á_¼R\Gýäê2‹¼¥{›íBöcjÆ…ÈÝØ?»èLµÒqi|Ñ*ýæ¿\F &æÇï¡_Kx%tôò°AÚ³wèkIKÿ@\‘î8–H Ù׺¾gCŸG½*Ô„<Ì(³¨Ó†øÅtÆ“}ø‘ƒç+›n¢N”·FŸwÐçÆ¨+PúÂ>«lÆ>¹$Å#¸U9¿Îð27óÊwåv>D½>õ‘£qÑŽûw)+ê™ká|mˆ×8~ï<ò³v€½*úÝß7üê6©ð“kŸÄÂÚ£þ™°ú¦kþ¨!ä§W¡ˆ÷Ó'ø¡nMѱ´F»^³¶ñB'žÓÞô¤!äÂnv½ ‡Ó—4±âhäk:Ä{FOΙbX»(»È”‘×É\·Âðûãv‚w:—^ITÿ.ÂèÞæ}ãÈGÌÚcS¨›²Û?ú>ƾx¥Êˆ„#‡)•[\ݾ1yuw‡Šñ-ÔOÂC‘¥¯[¸v  ß5º+°>Ã>¦­uˆD>³Ô¢Cß!÷nØÜæ(Ö÷êcqüý¬¥ª­PîGÑÓ› Þ>¤¬Þ‰ý›¯l4z• ñàk{Ø£,ô͹÷æ¢ñ¼¯çÉÝAŸÅ¸9qtmÔÒÿd´QK´QK´QKÿMi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––SÚ¨¥å”6ji9¥ZZNi£––ÓÿF-ýûWY—þ÷Ó¼ÿ>±bŸÉ2Fó]ÿòÿë']Î:õŸœ8uvùcLKÿnƒÿ,-ÿÎüïwúÿ|ŒíØiÅ}Õé„‹ãò»¬ÿÇ»Jÿ¿wÙÿ]ƒóß'ô#õéþÿyœUÿùwsW¸ãÛ7ðõ2¹$ÍãÖï=ýºš§›c4E˜–©||iP¡mê¸B—×ÿ¡+_¢Þg\t^#!zqRíf£©Ù““Òå¶ë~Én ÏŠ•X›u .Š©øØ;ªã¹q-óÊUg™¡jñ3•¥R3ÏŽ¥ë}ѤÞ>ÄØáv9ãŒ=w±¡±bm ÓEgºÜþµÛ¼fûûÊT(’tr:µwÔ>*ûŽéϺûŒ³Òo±OeŸ›ÒYïR~úÜùh;gqÉ/¯Ï–Œ<º¤¤.Ô R—ÊñÝ0¥+Þ3{Œ÷Ðñ“YãÍ©‘¥UÛ~ZÛëzë¡MÍ:ñ-Ž&cÙ g·§[\ªiåýüÃGÊÝ€S¼¬Út&öyôкuÞÂB'OŒu嬙‘ð‹{N?S|(üàäe“òè§ôªžÍŽ›lú;®z»$®¿j) u83ëß»ÍÒ`Ú×Ȫú–@óÖ¯“Ï*) zlÕì\Äh!ãĤ~æ¶3ÓJ å;~œTjPb]¯þ˜yíÛw_­ÛW‰,ð2øYç¾–up³¿r{jf„¢ŠÛ”ÈÔ û­)æEwÓ &vHìÖêšrêá ‡q˜XD‚†çÅ»í':|üPw/<ÑçÇ®òÍ'&Oœø›E:]_õêëç{ ùgv²ÑSr:4ïé9ŸÍ‰Î™R7öõçe:ÀkxÊ%"jü¡Üâ‘c»ã$ºkâ÷ª¼ß#¹M!Fp[K£Ó¾Ò¤‡+õ/òü-(´Œ9R7u.™ëÑåC-_„õ¿sÇÞ¼¤¬)yɆéW¿ˆÉXóýúF:­Òí)š±+UîsЈ_Õ•²^õúÑøU«¿?j=â• éx÷vvê’ØK{!"j8#KÁ¶Jþë^‡9n Hyy^!*Hvz\ÐÞÿéõG¢l^ûd{¾(,1Šß-]ùº!Gý|Æ!­É­‘Y±—sƒ$4'«îÞ;»ÚœÊ~J°@kë©O:_Â¥‚Ö³ÿ5 SÚ[ó„4‹KÚÕ—ïÕÛò'·yú„=Êä`cŒšÚ¸tØŠwoï×[ë¿=0ê/gI ³™>Æ¢:É]‘rø¶ö˜¯¬9£•NÒ|ÐwùàgXO‡Õêô޵öy[÷GÞ}«ï%oÎ'jküª[3¹àý`×6±äŽÝŸ®x?LOf\qéë¡ëéO\=ý$Oò¾gºYy|’ˉý½ŽÍ}1  îLö³·²2Ovû,Yˆð¥QâžFeX¤en ÍÌ5ï:¿Wz ÛMWîÖâ7që¦Å.‰í޽À7¶Ñ5PME{>ioéVö ›žd–5ïÒ9µÄzø}Óö—|>7Çèv\ v, ¤ó.¨Ò “µ’ëµP‹‹µÊÏôÎ_Û/´ËÃÝ5ô‡ËÕ|o-2^u0©èή¹1«—×sÎtó*ÌV¥2ð”§òùcx«6þ‚GºwCâ¾YÑ~ÂU~íûë-F=“yµcÌ.ÂW*¤z<´¾¯b^ï3)“-¿nè¨á™ùé»Q&—¢#ÏöÖül>ݾò‡¯Ð»Ø]Eãϧ¦£ìž±…þpQ|¿/£CgÀ:{uyÖs€tìOáòô¯1 ôoËîqëîâíÔ;`fªÞ®¥ý=âøÈZÙw÷ýºë^u¿ÞÄ`S¯ÜÈÿ<ÓëãœçYÿôä‡~*ºêšª­Ôó´ðtRÿ¥5]U]üñ¬þ2 ?séðÈOŸõ;ßD0ý&+öúÀÃõò¢G‹›Fy<ѨTЩ°ò‚pþŠ M´_nïI—šò¾W¨eÇlTíéÍ6\Úßû5?vëCN±ñljóÝ{Ͳ”’6v‰ÄïéO*Øì¾±Z#ÖHÄË:häÛ'ÑK+×ËêOí0d[µwŸN*ß¹L7öƒu0®§Yxçdƒüæ AIÂÔQÖï¥Ù·ûÄŽÇÊ Ì%ÄMóì¿´ãælfXó)9n™í"|‹ù7ξ2ºuàš¥PŠó ãƒ¶>Væç\|ÓP$Uç›k»$òÃö¸Ë*Ñ+ÎE¾‰ÖnÅkΆjaäŸÅÖ¼åôß[-z!¾1žå+]î¦K[ç;Áb:ЫíÁtæ,+}¡qðLÅùì¼Å‘!ÖŽpÑ×:dÆ%>Õ1¸ÿÖY·>)+mµÓ.Žð·/$øS)µ‚eä¨jg@îìµÒîÌC…ÿvO^,x¥Èüy÷-µ¾Ø÷-¿Z†»?+>¢¿7í¥äOެ?1×W¸‰7mpꫯ:Q=Ç™•¹ÖßîÞ¾ÛšÎG]ÙwÏg»$U>ñôì@¥w³Zy-e—Ykºº©UŸ~»Íy¸æ7gñƒî–í×¾w ¹ž’­S¾8¬$Ê®ìû{Û…öÇE›¶[X¦Ë_ÙD5öz>r«UQz~c_˜¨ÏàèTÎcö ÏüQkóÍ•Š§Ë›“b³}ÊMÂnO1màâ|¸ë×êœ/vaS[½“Ø ØÌU[¼¯ßäÜúy…XBÛê2’+áÙÒ)…-· ÷ˆ+e¯ù;ÒÜÔÐ#oµ1ÈzEµzƒó ÉâƒaïZ¨-öW+ ›¶ÇÉö 6UQžyŽ©~Ð`ø¼#¶7ßvJÓLù:å­X¼}æöï,™1G·žÞ/Òµ˜9¦By¤«kÇ:|äÕÞñ9nQEç?§îÎmM 1%¶¥ ®»•ç%ÑP]wC´-CöÁ’PPîæóKítå§î ÊT¹þ«Ôu\xóÔ«[akÊ^çd¾ Êâr7è ôõbK=·®Jô6]çý8Ù¸gKÔ´öFkÙ>¶5¹8u÷÷VKJãížù«X^Ø —eçN‹.ÝŸ •Z¢žûô·pÎÛ?3×jf]v&»6Û01™Þ/e~üƒ>1E¦J*“¿ëÛîIû ¥/¼K²þS~UÕáo¦úGTwXúù›ëÊF+ÃåNvV³¤2d²þRqs–ŒUÐa÷ýì{t@·àÊýÁ㦜-Û•͹C_æuKV=IöF?w ƒœðŸGâ™pf¸7ãíLæg©¤<ý ¥£">O·ÄÝ“»YwúYJ]M§ó˜œòE»I6é÷S‘É1 ÇíÞòœo¶;½6rrä³z¦ÁÔ¹¯-8;h‘91üPÕ1ÿWy’S£œîIÞy¶ð %åô¨W6™\ÁT1'Á¾ÙäwWI‹}p`TùxÄ3“ãƒá/§¾®I÷]=öh×AŸ„n¡×Œ<.]k²]ˆ”æ²am3óRY}µ ª^ªlò6—ÞOø$Ñ]XêñÒ¶«Ûð•M^šîA§uÚž«œ¨v8{LxÚŽgîiƒìª"ù غY¯©G~¿ JÔ'ìÕ'îFŽ·=ÉûÄm»âùÖYÕ2‘ƒïÕ2÷}b¸;º¬ë8þGóéMÿWòý{óßëlËjñ¿¯­þ¯$¥ÿ¼]åqâô¹SÄYG¹S§ÿW+þ¯Ât#O&æ–ø1T¦ÿù/¸V®Yþmò(-hA ZЂ´ -hA ZЂ´ -hA ZЂ´ -hA ZЂÿ Ð=bôY2ûhñn²ß 3Š#³‚.Ýa jÂ¥d¿(¼·;>è9 ãºbóQú ·ËˤâÆyÐÍ VT}I-™§úÄJJר¨7Æš Ž—‰ì*¼:vþ\(e÷æ¹>ºWÒž$[ö[ÕžŒÊ€žhTx*çȾl“anå¸Tóä¨9P3p®Ñx™VÃno,AEð^;ƒÜhnyеÖ¶™q|ºÝª”܆ù“°Ž‰i_['¨–WN¥ª€b˺Å2¢ Éyræu³˜Tž.1‚¬vÈÏý'mA«%1Ë9K”Tgè4OÊ]bZ  í’pé½5¨º÷Ѫȵ¡ŸgO†h§Çn+Ãk ³Öø"Óé2P–²KT‘]jŒçî6äJ?3ýÊ» twoôŽ™iÐÐq:¹÷Æ1PeN¾3ç¦Ê”©Ó. Þë`üÞÃÄô6…¹=/­ê“þF”‹ Ù2ygEó,(êÚÆ&ðrÌ:1ëâjÐ^ +œÇ}–)Õœ·X à ©²•©_æÁIþ wÃ[xïuSÐH¸åWv Ô^æ ž|7¼î¯UW4‚þÓØv‡!Øö(Œó†“)¨ß>ò!8MÄä‹×îðõšÕ-£u !w«¨}‹(vÈ‘'4øAn*²o~) T¼£lùk6†¡d£ÆÇ*à:*èh  Ô3ÇÆ’&ê'¥óº.sšpZ=2% ¥ü$(õF›R–)óI=­"Pí 9ÐijúA¡NJ fsúF«;î˾s)r>* öúÞ*÷i.PõÏš§ÿ‹×ë?¶Ø–Ú:oÖdoR™•œÞTƒ£e°åôšÊ˜$žÛY•/¾F è)¬t1»¶n=¬›$o º–ŒC–mj½O ÏM„€Î#“µ«„X@Ùy|…-¯7h|Èwf¢ë,—³-f= þl×}Õ .¼hh·Ê¤oÜêÏ×QÛý¬F@¾jÿ­­›@;E…?þŠÈlªxj’ wßèž®õÓ·Žm{ ZûF´]@ÓáúóGB òD—I¢«Ô‚©>"ññ ™úlßãWØO»*o)­gàÓ}'Ô¾éO †€Ú _ã.çAYŸ®å‚¾.ô0ƒsMèÆM9X•"ߣ.‰E0°P7”ûöT¦Ÿ3žËÕÝ\ŸW[ç¶V}eñSP¼ë@^žm=þæ2×@‹{×í&ç>PT!»‡øõak©cV,½$¨(íÙ·*ݹWƒ‚°7%­‘š…×­Ò Œx߆Jn{1Pö¾^cÆôÔ«“Jß*¼…­î>„¢5¨4/f›ÍÆ€Ü÷æôñ ü奰oÈŠù6=2 J1oéXîöƒÎêÉ-ÏåÊ@=Á§U§9tZúÇç÷ª€6S±š’®CþNrÊÙ8PÚ¥h3‰ç:éwOñ'EAÙ¨êáŸ|ЦŸøý$ûî~`¯Œ÷"È'Ç z[Á¶Ùö_O“T@“ÃßE¦\ôEŸ\öÖ­r¸Ç tƒß¬|3f ¶'Tããp½üxôXσæ1…N¦yOÐdµýZŠûó„ÅÈI"6_fìßm  ðé”pô QØ–puŸ¹¨X^µFTÞǰßþª";‹…?€†uç¥u o@‘ÙgÕg• ÓHjý‰xÆ’³sº§4zù^~Šï=¹=`yT_|Œ»H‘Í«•†œiçAûÞcéÖ]! thp¯¤ÑKÐ8øÂ·¿¾ ”oy4ø…¦âeYêð,¨FF®:Óåµö | ïÑen)PÈ5ž|üù hž¾xÙK T¶ÏçÝW_êTÚÖ¨Ç.]á¹»¶ 7*’;njÞË.*Y‚b»LÝwÙP¸X}@Øs Ô;θôœ(Ç“îÏ;Z@ub‡½ ¨'”¶l2ÕsVmÛFAieß¼–'¨³l¶èO¼ êÁÓ5}ÆA ¯´ÂḨèìºmK¸€f²#ÿÊÈmü²äh-¨þ¾áLÁ¾ôx6i®JG³_¤üÕÍWç³ @cE{ï#KP=v-¥#”¥NØg‚ÆÍíOü@UÃsåž MõÏÏk ~äƒÉùU b‘ÀUhêœnŽ_¿è€FðîikkÜÆë°7ÃTùnÜÀºW[?Säâ¼Ó ¢T¸—ô&P¾¶íÑù\}PÕõ©~z tݨŽe†  ¾ÁV)2÷I-véèsÐL|swìÇyP0¸ â×@÷•lBçÍ7  ­þ!g¾ 4Ù}ÏL%Ô‚ŠA;åo¨ŽÚp¦7%²¼ÿí_Ã@ëÀƒä»yˆ;’ƒ±Á¸¯û;ß ˆáÏú¡oA]peÙœØ)Þ T6«j›[l*±Ô~ø±s$Á¶é–¢k‡è@þ¤¯fCtH m:«a’jíÜÂç¬AMYôyRõ5Ш  Ø šZ +*|AAý}ܾ© 8ºáY%ñVùÐ}'*ø›¿i ž‡N–qíæaÄׄÝ\««ôAåžûl’ðyPß²‘Cíš>(¤¹sŒ6.‚Ö‰Ïl\ ñ$õTñ77P±î³£H¾Ä™ÿ½7ñ†úïßÇí»ìû¾³Ï`dÈ’­R(ÙBHö¤’l •d) Ù£T¶¡„²$I’B!E%ÙÊ÷õ>îûþ|?÷ùýþ€ï9s:®™y×òœÇóñ¸®Nuµç …:ö刌è®'Þæâ> ¤Ç÷?û–’@W nkª ¨3¤¾Œ©býXÖ¤s (÷³¯J˜iUõ¹Ù÷Ix©ý^0ˆRøsu™ã>'ŠJ;ÆQÍMæ¼îh¢6t5ô}½Ìi ¶^ðÌ„y0¹…õ¦<£öN=ü/PÚ¦òw$‡‚‘¬bÑë! Ð΋ÆÕÿÊ2Yý‘Çè*|LŒð|uhSÃÐ eyiN ½Ü—Ÿ^\_½úõ  Øn5³ßHéëïï>dº ”™åéïAöÿã³óüjý€‰`r¸ÇÚÒδ¶Œl °¿Ð}÷úUÓ¨Wö‚žlâï‡Ë fÅà{ân>ÝÔùˆÀ.”VGôU#û r]~‰D>±4 ð 1ïÈDöÅþGçmvÎúSdBH0h\‰B_{¥ ´¦·#9K­K'="þã4Ò²µ# õIëëiO+û ЧVlT@P!îô‚†½}FÐŒq_Ïø2y·é§1ò A½(w¸ÈŒ\%k²,‡@7õtËçàf_ò$VŒ¾—eÇIò6 ¤fߟ ˆƒáÓ¥Ýâ@ÍNÒºìÛ÷ðEj&Ź’IŒ•=º»  X ›,….ƒ.ááq±LdN¿ˆÃ®áøxý!ƒÝCÒ#ãHÿ=¿]i²q 8ûÐ3n ÜÒö2~ßèK­Ê†™‡ž³{ðtž%(&åâ—¾$Þ‹m5•ÐýÞí·yEp׈âò…€· '¬íÎÌPÀ¢É;Àœ½{©J6Ȏ盪,çSV«Wð› 0¥ÌAm×¥ã¯úÂô\lúÂŽ¬·øµ ‚ õð›õQdjMOÇ- ýWp{›Äqd/í•5㦀{ KømqÐ6»|XQ¤ ÷cë†Ï\Êñ a‹7 j//Ö³}LOÑÚgÆO@ÊsÆûDžßçC¿Ž¢tu‡Q¥° à+Äp~@,½ÉàzÈÈög%Å¡(5†Ô½çë£Yy(:¦&ÛÓ*»R0ÐÙ8/›çli`pj¶²Ò†0ÂÞ>Ôâ -wÉ?ȺôWÕh 5á´ö®k Û¼ZÔõ{oW@ÌÌ|>‚f\×koô© íÉÄÕ3N¥å].»•p&»™£Ò~ž"Ía׫é~ -Ÿ;mÄd‰è½ó7A%BD2˜»ðÓV»†Z€8Ö{Òg ÄûëîÝuAôÌÙŠ¡$0\ë²8ˆ‚þ±áŸû9€À½cÃù) h+‘ÊζȜ žSZäòBŸ×Ì~Í6ÙÍLtè6—µ¢€²®¹yÎ,T¸^‘« ª/›i¯½*!Cù/BêEÈćYñ·­FŽ…4è¥êÞ¥º!:Åw>÷8¢[-žæõ Iå7ã3ÐÏ—/i´Jb¢i[3è*Ù…Ùý3WOT©ÐÑëZUùFüèžå¸n¤µ–Kè×y€š0™›.@ô.©íƒm:àÝ]SåÜSíÑoºßˆøµw³\€´Þäçœ[”…ˆ{Œ;ÓAkuÓÝÙkˆ‹(Ôùí€/|ÿé–2ÐxÊwþ|m ºÏ˜´µðÚÎo5\E4]á:gU0@yÍ€þ6ùWû a¢A€§ Ôî0ü‰Aüö˜¼˜Ü' þ-÷BW%ʼn·ݲŒB½ ÿÆòµò& ¨î¥c'™}ƒ«êýôËôxî¹_LŽ’Z³õQ7`Ó7'iúé€c,Ñݽ΄ö²â5âèZýšÒXŠœŸÎæÍ`ЬyþBP?Pܸ†IÈþF}x>±ê´‘™kÌû‚OÔæêP«–'G•!~ŒQnhä’ÈìÃObù1úù]  \Y}/õñÛö¿KR°ýWGEYòåZ’;ÉèE‚Ýßö}†ªˆnxˆ&>Ÿ»!Å”êß÷Îq)ésc¢µ7âûJŸ93"º‹ÇìV]ÿGdî•dZ]ª(ÆJ™?øTßÈÊ äû»wµà. ¹íª|“û§óU+ ýþŠ·eìP)r]}^è”Ñ+K }{Ð/©¸€á G®[azÄê5ÒO8†‹ÿž@޵ö,$‡k?9àX̽»&A~m”UŒÙg™ ö€ø$5ïúud^WÙ}Vys ÐÛpm.&Ûb…­µ'Pj XN½Êå]©* ¯Aß¼Fœ‡|å ?E Oáõ7ßà›³ËE­ô#§/`4¦kª2û‹³ð<wÎ">8¬ äÓAç…9GÀADg–t¥É•pV¹þVÓÇû sÁvŸ¥P¢ï¹EéEáKmtG6è-e±vêòX|Z“\ ¨ØvÕÓtæAÛÑ®ñJB6=kÇH!z§Ár€¹ jr_+2€Zâ «OüH¿µdüuð¥O MlM+û Û±L·’fë}úøäÄÅXD·Ú?YT­ý¿ ï™ïUaöÚbÇ|d>7Z5¸€ám‘f£\'ä:ö9ËD_ï=¨z0SÑŸšUYD.Ъû<Â$œÔwÙ Ç‹J 3 ¯Æ¢]÷>—úZ ø`†QOÞ" ß%²µq€aÜÃOŠ@ÿlÂ)4èå…ƒKæbÚž ”±rVÛ¨AÀo·ï-«âÑì§u+‹°½ýàð~Äç(ÁÄú>äý¬Û_î®s5ÿ̲›ˆÙ‹Vƒ@Nþ^í×Á’Ê¡ìO9€œ¾íTn5 ð©R»Û¥Ag”óçÀЄÒi¾í£€Ç¨ µÆßütÀf¬^I =šêiå ÷mÈúëì 8ƒâ¢ÞýÚ·ó@¼Zt3½'°¡Ž(9M& ÝÑ\nº†¬¿Ò#í]ÈþŽP‘‹ŠryGÌ¢›÷ˆÅ„[Ö?Ï·¸þ *òOm¬W‚V›°¤BE6¨)ì— *ví×ÓÒ~d]g ±|²JF}C?2gTî<è©B+c´s‡=h_™6¿Ò 8NÇîÀL{ ~5RO!‘ùrp>Ò÷œ¿¸x È‚v9{ýc°*óL›´¯•í\5^š¬ºgoÞàÏ®lG½¦€ÚU·Øü½ˆOlüÀ${ñuÇ^ÞŒ¬‚âdä¡Ó Ë§Í9Ñ ÉÓüøq0¨ÀL䉰u|A×MlôÖ šcÀ ºM‘Úƒè„õÉÕã@lÜ8¼ï=Ò?Vž¢Ì°Ù­ ÓC ^þ-»^Ðì²Ä ËÅ™Æý °Uò5®wƒæ˜Å)&& 2·Aü5h(©Ê<ÈC­7zž@˜WmZAúšn»pÍ 1³§öß#zx÷æ­Ë`àÕô[êŽèK¤ÝHDžWÑÍÛÏ0¾®÷/Dƒ¶Ú°óÆ èɼáiø „k¹åçL€&~aByäÙ‹³—íÓÿfâõó |k%|Ûã”û ü¿D•~BÙ´Ñݹ>»êò@ßz§çS« mn¿ƒÔµCEÜyÚîƒÈœÍæ?~gg#>äTæúÁö½ŠÉ¤^¾Õ©»L;)b%d³û`OÜŒ Na€øQQŸiâèg/ðM¯ô‚Þhýô’06‡ˆƒN c¸k4\ÐpùŽJ?S‘ylzÍU2ð±O, k€¤*üÝÈ”<§{ý,@;}xYhñ™û8n½Cžîá̲ÆA/môÃC¤žG¾ˆ"÷ÓÙž=9.d¦Z¦›¤9´i±7òš|›QãPÞ2]¸zÂZYb–E@‘ÿ±“ðæPõurzä«¿Y4•ºš:#Ù‹Hÿ;T4r (…o§Ri þB2Lë›<à¾1ä°áFÚû^¢ãP —ÈÊ„÷6 úD³U Ô~6l,³-Î_ùÒÐ* T—ç &‘ú’Ø;ãу¬ÛQ£âx½fк÷úËuOÐ~ùüÍ»vÄ´›}úºŠìwÃÊùk§{ûô'¤ß^¬Ìy¿b¤C"#§?zŸÃݳïøAŸáÍ«g%Ò µ‡ØÃ¼Ô¤y¢+¼;Ðê;M4— ¬;+2ÜU˜“æ>)@R¨ž£îKB…ÐKÄ/RKKŒil@äTÅjÏ5^$a-kû¸(SLÍÚ/o~—Í DÿÌ8ÎÌéÂ]xÓW ØOÕÌR@çeƒjæ«.Àþ<×[ÆŠÌ£u6†¦ä\Àõ‹3Û}}1£>w67Ð0O#Ý}nßJËSÈ÷·ãtJßéÐ/Üx½Ë°•¡#瀲ªÊ¡w€÷}™ÀaøÏ÷í[Ìõ&ñ¿9ÍoŠÀà‹g¤Ð%Àtîþ¬ÞutÒ ¬¿ ;Fy¥rÈÒÙ;<J´rÎh+ÒEŒZ|)Ù)’ÔÕÉ«MÌš€JȽ ÂBeÀ5hÊžÝzÜN'øµA×ç¦ö#à,ï­+˜âw‹Ñû/V€Ätùö|Ï0ÒרØ4þuô/®@Ø“‹“¥€¦'ó¯A¡ Ú¦ÍÃÎ2ć’Ç7^)wÂYjRô&Kg[%ß“xU Yh_b<ÌÒÒ@sq~¬s5p9¢í?µÓRv«nuÎ ðë)±M/e¿m=â±¾: G…z¶M€1'õðp²+¯¾D|Sõ‰’;አ>”Ñ9tNHÃUJC¯£€(¶{c`щOy­ßÌ"~!èJؽ‹£€i ž¼ÔÆõ§š÷A»k²¨e1HßiºÌwÍ'Qà œÛ7› \© Jª:?ÚÑ—*Y’€Þï×Ú(š_3§ËBéY_#Å( û‘ðçÊK°ÉkþäèUS9>“úN#þ‘iÈ}™­é"þˆÐ&Dú¦ýÔÏZþF”b_KcÇ,â£çùÂÎ.íâµuDïûñŽ7%.YÆ<‹‹ˆè™Oï6ú.øï¡îÀ<¼5‡ôíÚ<¡  ùq(´~erZ›²ç…@ ‚]W¥ü$}RóÚ} ûÕ ^8* úž5žˆÞŽ6øìü¤‘;¹z‡m@£¸¤Y5èP&~jýG,’†ˆÒMûüª©= ÓÛŒ?ÂA3¦”&ç TGµÝ™½ÈÎM¦,imEêçDÇø…fí}>¸?Ó¤7Ô bÛv<ŠF槽ĬӜÒLÓœNSßÅ_*äâ ¤®uÐPŸ)^s@´Jcü&­ 2oŸ°]íý‰w{¤]áòP¹µL°”m:»Ãk€ì^ÌXx\p i"º=K@5§3 æÞµV:kŸ2Põ¬{u´rAWøËÁSí  ›À=ýgv¨¾_Š8@/ìù¨§'(ƇŽï–Y½qíGÅÚ @îû;Å«­ä%S¿hÀ¢kj…›V$O’u² ­®6R!º{ÝdìеÐ-çë+|ˆø¿’›^‹ˆïÖËÌÄtƒa¤“dÃoÄíTåizæN3Ni@õg¹wô¾J63̸¶ùæaP>Â…Ž¾ì ¨3Ç}- €ãŽæ®k}â‹'Zýno®%¼VåV±Á sÉÙo÷‹ºnÐñº Ÿ>;ŠúŒK,,N€qCuæ· ~ åú+‰Úl@Ç=­ïAžÓ­%øDà'.„K–º¥9~©*9®øqää 4Ý'¿–½w¾Gœ÷óiw4jï?§óÕ/¡[E$$‰d¡®—md‰‹zòŠðç™Ý_ªdÞã[R=m§vÔv&áï&p‚†Á280\-â[õ—’"Û‹é§Í@VÒ:J<‰¼n­ƒyQ/ „V ©ŒA@ÁâSdþyV¿ÞŽF¾ßêOßík·®Àñþ$ëo€UejüÔ÷ÐL<ÙBªAýÍ Ì\@ß}ñqF™°Çô÷K†"sB$4ú|‡2èžXë÷xDCtmâ𕤞ãz ªñ[©J¬oڶˆcf¸h ûçÙé€ß`ÿC5óæ2'öD6£ï9‘‘Õ²3·4v÷"õº1§\eٸ嫵͆fѺhó D/Ž-Üo ÔB_C3Ä3+çȺÞݠúƒMØ-Jñ º)ýžé€éÅþâÏŒR~A*R¯¥z‚+ mTûé+-ÊÆJ€:é:#6䇣¯µˆq€ï|XÞ7GRK¨××JÀzÛ³ݵ}[Ÿé2ò€Zq+Â…-îw·c•ˆQPõ4IFôAú QMaÑ•vþܰ]°ï‹¢Y?`Ãý½ŽíÊSS§}=X€¢Tá-ÊÝî˜×þ€#³¦õaÐ,76©A|üõWÏ +A·uå”÷C TÛKl΃nõ½têLØk`›Ì çJÀ¤5Ò·¼„TN›!ýB=°“¶Xñ¸ Ad_òÔ½•þ dãÿ³ˆ wßJÛVÕØ ¯#²¦HÏúØ56ø´œG_ãŸË&*Ìy Ä#/k¿.•¿½ZKÑ/ÉÁoçqÈzôš‡;)#}Þ‚/áÅAÄWü^HsFôáI©“ß=Èx'Fhµh©;Ó€|ÿý5ãT. ê)pùÏv¶ÌÒ«^H¼GóN¶EÁöH_ÎŽ3ˆîn¾3¾3 Èn¶ïjcƒA¯¥ ÿðí h.Jp½ŠÝÝîJ>@'0€úÚÆ¤Œ­ÕJe9ùtÖñvÒÿ3ãKÜFt¸P¬Ì¡ˆBÐORü9úQ‡ÜžÉEt£þiU ©$ñåƒáØ¿êŒô…z,:Ñs©ÞZý6c€(¥|ƒíöÎg¯Å•’Üg Äœà#_Ú&@÷Âãø¶8&@ÛýйËúâ_¶³º,Öo#]^&è,{…þú`0²}Rx4+7B’-½RŸ¯ÈXî,’N(ÒǦ‚ò¹ñ8¨Çsâ]æ(²GýÒÇD–mõ¢«ùÝj©jÀ¬l¶½gGê¡0ŒËä5â'Õºõ]ËÅA¯Sçñ#kнèzåHþì{>•×üΑrPYÜר»ýÂGpË2†íQVÁ3·7ÿ‰×'o¼°‡2&ÝC¶»nïPC÷KïˆyÞãüTPž ^ew0ГGÿÃèÉ£ôäQzòè¿)=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹Ò“G·(=yt‹þ¿–<Êø'þó)=‰:è ƒ:è ƒ:è ƒ:è ƒ:è ƒ:è ƒ:è ƒ:þ€¿mÍ:ÄïxÑ@ÎlGcPùuC&‚ƒ¾¢³¥1 :ÁNÀ{°8±ìߊ@z\Ü=»)ˆ{-æwò¾+fƒó€`ösÔm¥ÀŸïyßÓëÜÍ7úíc@y2c²]¢ôðgê8ÌsŒÃ;$-Ñ4öÎ×›«"¶ ¹ƒ“*°ê?ÅדäzC¨5ñ‹W? Z›™v0†Gþ’%è¼Runh™UåP†ŸS†‹>S—Î5¸†Õ6ŸkÐê0~ çh|J¹Þ{ŽØ‚üöH6;lÀw«5'ߢ€š©†i&oMë\wx×ùzÌïðó‡+A¥“©Úöëhÿĵx>äÆváiFV ì{íÊŸ7ç£=Q* å͸žÂ „%¨ NýÜáÂêç^D^nͦոgó€2\\3¤‚v®|š• ïæ-Îókn@ç™çaLœíؽû_Í@-_B‰?¡4?.tÙò‰¿SºxšˆyÌ«m´ À¹ Çg€šŽçÒ aнzãkO½èà ,¾ Ͷ×Èâq´¹Ê9ÆmA÷½‰ÏX?4Úßk«P¯þÊVî‡(ÜÔ–àÈŒUB‡a øžSXÅÝ@ãäåó+©4P2¸™¶,åj1û×›ÿùŸï Ý÷¯ç§‰ìb¸#G@a¯Ô¼\èmÑçÉ‘/âË‘[2xÆä/.Ý|Ë*e‚qjØ Ø~3ç4HR/.=mHÍiÁ~U òæÂ — A•¬bvm&î¾çik4ÌÏQæ™h/9×wªYxGŸL u[Ø3"r¾u´2mÙêb hÜÒÑ“E‘ºPš1²÷Œçqc ;èZäCìÄ¿Y<€Ýû‰Aÿ{(]‰ÛJÀÚ§¬#ˆÔ'›Jâ+=Ÿ|ßîHPKùú&5”ƽÈà×,²l¥Þs9B2o|/mˆ .ÒýL‹7ðYð3›Ÿ€mðlk ØÙ£æöÔ*I<õi=0ó)úõÈúy,˜Q¯Ú‚–Y›\Í#OÀ>+omrª¥Í¦²Q±ÀÙu“¸KC*÷ÃíTpL¾¶ù½û:3-j+ø ˆßopûØ ƒ2…ý—Òè½új -}þeEq âçÍÆÐÊø‹}òÓA¤>÷íêj …âå̽KHd°…ÎßRvÊ­ßB V±.  ÙÓ ¼B­36õ3. ÎÀк/'²µkÕMo  œý­Ô ì¾ ¿j'@³êÛ#ÇJ+-¼±FÅJTzùUq{rNB6§”:ÏÖ¾¶ ¿Wšê±eäøŠwïòjq9o«$·v™U‘( š£uß#OùZ·ÙåÍkЮ•»h2èÄpN™îE Åw®”uf‚«äI».Pù™lUû"ìxòß÷w€¿ê¥cñ‚HîK8‰vFÎsáÕ˜Ásdçi«^ž}cæ¹~ÐNrØiR@òÕ’YlËløB ØÖäÊtÙ·¸ŒµŒêK ëØéÖí…~ƒ°¦u­~^ìÜÒÈp¤X6©ÇíÖ¾î' F Þͺ·Š7ofXñe*ÿ=OÇТI<)‰ÂJm¯-03YÌeˆ®lŽ{i€ž~Ù_tb ”?xg¼PÈ­#óu—ŽZ€&õeBÜb`M C%¶Uêüð„ÞðãÔ±Ò Yš$o6ÚáÓö¯A;»5™aÃ_*#*Ñý—£'òi Ô.Nrž·Œ÷;÷.{PH—ù¹xxT¯6-ßÞ×zRÌ?–@Zà5-Ù7»i 7Pwíiˆ¬e½ZöV~@= lYwnüjâNÅzÀËÓ¶P(”¸Å’ÞHÐøpìú÷K] lÀy&#0¾MI¦â™ =ôtnc|vg>ºç¤ ¹D ÀŤÞÈ¥›Y§LÚ†@+£þ[Ñ àü¿]Ι«æ»ÏÎnîŸáqÕ6sqÀœ]PÍóßÉ –<5 ÇeÞ>'БnÝ»ãh_,=±å„'·wäå‚Zœ´¡¸^(  XrîRAI§}êUåµìG$üy¥úßAñ‘ÖÆ =éêdèi{éµkrP8Lµ çÖoög_̹+Î?‘ó³žÛýµ ¸òP)ÎP0úú‰·p£Ÿ6µZ=[7Æ|‹ò@rÝmÛÈ–×]UmóÙ§²°*ÿu5Õ \óý,@™3ãVMñ`OßÑãx\ øÅöYVS²½õøA@TŒ8?Ð>è®í¦ ʱMÌyÙ ¾èÿ‡ÈÝØ¿dsi ´2¨a I Á+»?qÄÏ®orN¾Õ55jéNî¡’Ñ 5Э¿|8pmßø'ÝA~¿‡·Hf^Jëu©bίÁ¹—€UÇõýÄ¡|Ð:áa5”2JŸý=Ï`UlW[ô¨à[åÎ;@P2]®±Ùg2 i{®Å·\â©dîÖ\Úµk TF9Þu… ÖÕç·¨-ò€{Ejç’ÊŒZEZtÓ@»åï¼üáˆ+ï½…ô=Ì¥ýyÂ7]åaÑ,1 ¾rí)‘€?™u¢y10÷ÉÏÓ"2¥ñ™À“2l„Ï׺@^h¹·Ïôà®F’dìAäÖ‹ŒeV¨¦×„^m¦¦ºY÷`hµ¾í±n=FWÖÓe Ö_{W3`îpô ;€èâI4t¸1û½(d>§ â%­tÎêöƒ_6 zfnõMk.Pj:Fò³AAfl%JÞ¶õìq¿°R[d}šeÚ'Óò㚬j„¿¬ âadÞ³õ ¼Š¬5ßy@ êê‡0°evr,"õµ»ƒ‚wå¯)ò\ÜÈϱ‹þgg ñ|O>¨ÞáÄ$öƒÎ"µãÓUP^1ñóYÆýCow—Ѐ*ò~äú``ÖŒJ J^áTÅŲjÀi5I?6@æ€Rzòâ“ P+»caÚ*û÷¤ 9CajÍûŸù@àßG,x;nŽ(ÓŸŸ —,z‰­™1@u?>û…©_WN’•4(ب\~Ô"¡,µ” yÀkô,ÊkŽÆ.‹c–iIOÒú’âßR¾xG@hóz”–øÁ”fÕ-@|P=v%z Tìêˆ# ±Ü;`ÎM¹ž²úcP ùüæNh<ÚåÇ‚ólßsîÃÆ}`•Ò]ªýÏÖ⑼ϢõÇ…Ì×wÇ€¶~­öaàÌõÔ«¯ÜƒæuTáç¸l?åjo¿˜¢‰c–´^[à;¯}‘âxÃ9Çmœ¶ ÇFÛ¥r˜Ïy‡½C)@((áLéZüËè5÷A($?nÕºŸ RËõv&Nç±VVD×`2G_¶”€‚(/.n8ÄÞgmNZ!£tá_üù@VúyB2 (…|{£WC ÚÔ%ofŒôŽ©·€Jÿsů­‡.ª›;˜€öcÒäµÎ+GµaP®ý˜#åù_Ï®¦.OõêP ´aˆ]Â߉{M~í:yk¬»Æ¿9Ê¥=8ªK17ˆ¹…6hÚ`@)3QrÛid]ÇûE«~˜Xh.ZŠ­Ñ"ËMSHý³…)ç*B 'üw4(žÁœÎ?Y *&ÑÚæ¦ñÆñPÀ¨Λr6‚R Çè¥QqPþnýàt2¯ûŒR3@#©1¡ÊDj–lv†P@K+`¸²øÅ/ßR…Z@Õ@¹hÙ-Ðê¾nß`²`±Å®8EP¸øx¦¸ÞY×Û–×a;Ö©Yä&2ç>½ÔØ­qT;C&ÜóAÙèñFƒáèè­RÜZMCÝ0ëÜfý\¹räôì1û `ó>éúð‘ëw?³f,`âÏ—p®¨1t'YžÛ Ô{3Åe+VØ·ÏÄ ´¦vŸL¸`øN¡œqÖ€©)§]/E|ÍÃ×õ ³Ú€µ#\²õ§ÉSb¶hÀÓÜt0vzfXaí÷HÁ¬ïÓ„Ðf~)äîb *“WK_Kĵ.*_!¶˜¸…,S€ ÜoKMÐaÐË4ÝgKÜI¸Æè˜ *NÍ›9# ¬ÿ¸¯uDðk'mÉs( (H\’hée;a_– P8#ýKó˜# 6úwv ôˆtbnŽ&1t³î¼?àc*\¦Ž6‚Þ¯?×ø¸úAr Ø.D¹5‰Ž"WdŽü)­=°ÊbMF”ÖE½žÿ7~ù¨ý•±P0Ïl3©ûâ‚`Vfnê«$ÞrZ´ç˜âyui 1ö<‚é™{Ó,w¤´þZl”²EæÆêY;§ë¬ºïúŽÊ@¤®Xßyx¤¥Ry¬ÄAõnxæH©0h:0 ÄÄÏ1“˜×š–j¿¤<& ó¹ñ^0€ê’À9Ü}q k8ÿàxlê;~¶Döc„Êħ<o IDÛXÊa¯j;¢wØ–2( øª×xÝŒp?w LŽƒð«wLƒ' ׊Ñbênù°Íõg¸Wà§êŒá€˜8Éì:Šª¹êÔ³¶ ¼ñxÀÉùžª#ë°¾ŠMÙóu#öÔíc& \bÇÉECtîîis¤¹`~Éɀ̴ײ›¨ŒÅFÍg(@= $ð›™w¼-T ™O.Ÿwª?ælý¼Máß Pöwøt3©u.ÐíóŠ ´¾«ÚX1¶üÇÏçòAªÍ[Œïì"`Òõ® 'ËËl-y?ÔÄ›±ÊŠYú«úW9Ýj©ðÄ ©[Cq´e%HÛ®{{þíBú¢ËÜ [*èLªòÄG‚ôÝ=4\$Ägʱ"ó÷SìåÉkÈܸKõà´™m錘®`7ЊUñž÷l¼TxúF2?4¸}ç€@Ý¡öŒ-hwå±âžÂ=}ùèH_¾t’f!(Çù‘kˆOU¿!;g0˜"¡ÇoÀ ÔÄ“7Þ'¶Ò€%Ž; ÈÚø#~~gÐïkæ½È–êO¬U¢0ù 0`’i˜Ä{Fš½á- g¥úÕ'ʇþðIh»€Ö¼òû?4q aÓøŸö¦Îû·`¹¸°ß}Ù@¥æ%Ã\Œ#¨r|@YôLn:u¸›, Ì_b»c€ÔÿWu"ð %BÔm€eŠãŒë9÷‘ÈÜuyħ-ÿøKi¡k¢÷øVh"߆«›Õ8€ìCnäóÜÜ·®É5*`ªôÇæÏÌ¢©KŽ’8(ðš›zyø€Ò•¥¶{gúÁ½mƒ;”‹ÃœDL@ Ý`#ô¬4+|³ÔºK–¥–óZ''~þ¬rWg÷áÀ޵_Q²ÉPbyfYõ>x™Ý^ˆ¾5*y’!ˆäªRÁ˜j`MxÃhtýŸäW(BOÀ`ÄS[‚õ¶˜7›ØtxeŽ5l©gu=_5(F$¹ŽÞô)uÏGˆN7,–øÈŽÔ¹‘÷x„¨Ç°…E€Q “÷Êúˆø½RÓf¤_2-:¹y©u³[\%ù$Ò˜&mÃE?XˆUXé±j ª‹?¯ñÍnÏýå…¹ ×¡<6¡ÃÚû^=èQ޵[C UËÀÉy|(ÿ‚ÌÒ:ýÛ¯*Ïî8*¾4¬¾×žs>_Õø³-‹Yn€–?{‹µ·ÔïͲ¿e&€® [|zB ¨ íeÇ|²åúj‰#÷•AŪÿÀ¾à$À)â±"Û@­ó¢{ `œŸ™X%SAƒgŸP“d²Nøô»+À_޼ü+OöFôcÁtë¾Û> B½Ü@ ɽ6fÛd™|Pâ¡~þÕjeW¬c@þÈèNƒáŠV¿?‰øÖ,ýÜìê rºJÍ̓vêï' n Ò*¤t @þƒ,·ùaЮ±Lx j±lµ ¿=²ñÿÆ *W6'@» «¯Íš§îÅÏÕ ÕILú¸¾DO罤œ3´™û5d˜½5kAô íéGü@æÚòlA5ô3ùú ð—ª9»#~RèÇÍ+©ˆž™Ü¡B´°™–KöUÆ K ¼LuÖ¶ðÊÒˆ[î `u×ý’¯@)ë¼qŒhž²2kÈ|ý7s.Äß+þܦs¯¤ƒÆÏQYã‡ø>B¡×»÷º@óÅñ‘¢Ãò@<ܲø[ªÈ/QÙ¢«8PksA“=«‘z5MË<<*;Â/Tß'€jƒ0úÙ}įë™ü\Ü»Jý)GE&@éñÅ3OzÃÇhä<Ä€ )^½Æ ðÕ5ÏAɦIN÷‡`³þ¼?”;d\Ø®GúÑ #xíc"…dEv¸\3j•?“@“ÉM:¤Ôšrù†ú€²ydö™¦%P£6lgŠ Âïƒ1 ?èù+:±M‰ÁòuNØC¤Ï²¬L|˳劮ã%û‘ûcøíð[­P7§/Ê#ûN5¾w Ô¼…$¥‘ùòÔ¢_(µ „n¹èYÊÙèÙ™\¨Ë-ŸØ‹Ì#¥n‹{¬AžY±/Ÿ;ÛpáªÄ®! PG§Z„§@3ê¸H{4P.~¯M* ÷[Š›"ÈL½q=9oÛ:ý=.áæ{Ra‹¿⯨×öxgZZ¸ÛU~Ñ ¿¯11ülRú+À?ôÅâ=ZùA é ï2ŸPºüq]@¼ê2Ç”ØÚǸkÀ\Ñf‡Ôu,j3Î64;~ñÂdLÈ(§,HŸóQ^kh݈úÁ²®¹ÖÑÏÉ%b€é—曹^  ïI] ¼„ôÛëÑ¡“ü@¬*_ç½{P³²ßƒö[ƒn>G\Â?~ÆG³Tû0R/œý2ngÚêó}ħHS}öî™ãÔmsì ÝÄ£Ê02Æõã<«#€ªzw"†„èÿ\5½@4=0 úÊàE´ˆ<^€ZÒÁ—Ÿ}¥0þçT2_MõšÄªA~GíÕN4RŸþìŸ>E®ó ’ˆŸw ž”ë~ö÷Fc=#ñ~»K°íðw¿õ§È}|RJ4|‚øô/•:å' yþœz`ò%Píùs#½k¿‘ç{¦>e½÷À\/rþÓ:Ó‘~bKURöõvê*¢hÛ§ -[v`gçØ÷e[Àz­÷j˜ÏÖ.;;› šÁ®C ÂyN«‹0xìzlìš"¨¾•]¿}j0¸’a¥€îÝv='ˆë÷-=êÑ@šv¼ì<­ 8®È@_Cü§ÿRŽ=pÊèä=;mP»|‰anx´—–ŽJ.ŠöövÓwN€½ÅŒóˆÉÃl¯”#º6Ì|ý®ˆ'hwÖzñ ûÐlìØ«¤€oœÝ.™BmË7œAóâ~Q9ß½«uº2,ú»a!¢KòÖì}ïY‚öëþ”žH·‰ ̹#øâêîÊÝÈs: 1ñ¥`KÙóàùIOÀfOMîħ#uû¹LÓ`H-!ƒáÿ,ݪ-ã‘̉·&âæ¤æ26™ jÖ»Ÿ¥΃Š@&ÏýùÖÍ£îߊb@èU¤°ëšˆ™T§‘‘:Uw¯²¨_¥]T7®+A@-N*˜+®³¢ä€1 È¢»°ÓZ®Ï].,¤Zï=Êêh+J%:ÞÊmúõ¨³èRßêO1S¹ üõn’P0â“4}šý‚a¼™¾¾í ¥Êo¼Y•F›ƒ@+ ežUgwLj>¿u¶"/…XŽ’Ú3­Š ý‰0Sç¸"Z{º8Œb@-øG×/DW”Úfé—¦r êÆ(5P«c£6—@÷ö…—‚s ð2lÃþ(&ñ@¦Á=@™yð*Qé4UE¯+ àë.ß1žMEžYif¤¿Þ\ÂøN•_å¸0áwÛsšÞ¿€‡ÝØãm®ªl»‰ì3áëˇ¾˜#ºsSñÉêZ6`Ž]02ü‚ôŸÃ΃±×¥AÿãܾÏò€ë×î4| rO)8ð~Ð{åo<À¤,ë‚#a]`@}êYrÊK½sí­s½« ÄA³¥}¼v ˜ ÓQæ Š ´t;éwÐ`Ru"·« ó‚<ØgoVÙ\ÀIÁ¯×ý€)1 èËtWnb/(ñE½¿.”âyB I@ÒaF»;Ôo]¼¸âð†%h‘"šüxa}qç`¬a LV^ö¾»\@\­{Ý j…óÂå’Ò |xþéO1€šºÈ¤eŽè%‡RÕèÜHÀ«»hÖ 8WÛ 4 =é?ŒÈDd¢2ý›Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶(=i‹Ò™¶èÿóLÿëS¦}Êæïÿ/Î|Ø?të0ÖÍNüÚÜzÍþ¯×ÿ9)‹¿oÈ¿ŽýÏ{¬Þ¾‘^žÿu ãé­‹ýç Ž`¯ c!^ÿz mÿ|f¸Èðoüý¯³²x=ü¿¶5Þiü_ǰô<°uiÑÍ]ñÝFôÿÏåþ×ûóø×Rþû÷?×áü×Ó ÿk5D6ÿ÷•Ä6ÿëDœŽÁ^‡C¼Cÿ÷‰þ熼B}ŽyþÏ7ÅòŸoêŸã¸7ÿ}§´‹´ÿZžýf¦`äã+ÈOŽ£OHE=Z[G£/¯â,F7ö8úà …ÍL›¿/*î%Æý”ïQO ˆ_ùùeÃð¿Ñ9±ä¨v‹0é‘&™]>?yZÏ ö[9Ëgˆi½%æ>2㞽¿Ø*ÕǪÐx”¸7Fcæåè·ÌPËñ±î ã¶ãË ˜/W¹¯& K]Ž0þƒb\p™=å6ëWÍU|=ºýÆiÕ3‡,>{N›â—/øžín¬Š ÚÔxt<ï°ûH {{#E@#¦ãm˜ÓØŽGÜç1‡Ot¥Íù%f·ë‹«žŒ a?Å{Þdç¶mQW c¤·=ŒMHu³Çˆî1ò÷*:¥ô ÄýžÔ)Š×®|_}Ív›²ö³†ü•!¾é‘Tï;“µ·­OxbÀ;ÈÇÁ£¡·-eãnñ-ž›ÎŽ\ 8Çxà"³"ƒÛzOlÚõ}_j—”DmJ÷l{$Àw­ó•wžf¥+‘©Ôó–ƒ6—Lâ즼²÷–ä× ~××î­›i–3dµï`ôÛÙ\ÞÆúŸ/ªšºùKš|<ÌSò÷š9ÕTÄðüº›Mäc¹Ç_÷ýƒ>6Ž›Fò+<)A5»6ŸÅR¡ ;d_vo©¬_Îëû@~K>{‡©ŽÀÎÒ ñ§šY† ­èøÆG‰ðvg¿T‘y¼©6¿ÞQ¹J*âW J§š×p•3\›Ê.Hœ“Øï­åßXýE¬d¦LàˆzQö/SËqœ”Œ‰ú°Î›c=ÿžà¹Ê‘ì¿jIý‰j\²ö49>âÙ¯”¥òÅYê×å·g¯jœZŽ nrD^uZÙ=«añ.@øAÐÄ«Ê(ÖÊ·7#Íb >ñ¾`•kƒ/½«>k[© J¯{8Œˆ•·3 rÞ«ÓzqÊ£|΀¢,~5oþô^ÉãÜ>ÇeªÇ„– è30¦i|îTQä¹|±þýlÎm‰Á¯=’4ûŒžb¿˜d^ð·%í¨!¥ï³ï òÕqjUÏv?÷;³•3ÛùU­–*í˜Ñ× pbyð´ãû¯€`U «!õÏÄÍ;ÿì=ÜÉw-Ë´pö AåË•Ð'¿Âuì« :•—E„bõ î–[7ZÜïrßµf“}}[§f’Ì©øhÎèBZ›¨¢içK൯»Ë¿9ÌH7ßv¶öã‘”¦“ŽïjžýxJ{þ¯pºÕP„ŒùË”×#‰™ÍKþ¨ív{:äâÂ:Ëv¬SÔ"l³C.â®â•WX mï®qJ½¼œxöÖïé“÷7—$ZËM#š3Žn¨Ü?‹‘l•ÌÞ8ÆçrÈ5—Ýà›°FdûqMVΖ]øÉÜ]3±â~‚L"æl' ¸ßšÉuí­9ç÷–?|É iš•ÝîaµÌÏhÅ—ålv?èÁ¨½ÍÕ˜š 4x?•c­²Ñé&oW®txqµÉ¾•w”梡„z¹Åð†ÕyÈh¸ÝY›pÿÐi÷´„Ÿ’ɦOl9üMÚûޤžÞP>ÿµòäkÂÓÚäcãl|W¼Ã?‰ôX×ÓkB½ÒýŒu¡wU˜Šãì±ÛãúM`Å*r7j}µ£6Hx*?x‘Ù?âFózç@—Ij¼ðûÑÈ™2 ÛG–ª_>/}6Ž®$²~]¨aÉ>RâúS×»w?Sô¬lbÇÒ”’w°âtæéªô¸ç2 ±×MßX{muÙ®éoò/9·oé=ùý÷¾W¶á¥}‡•O7=LVèo_ر[é˰^Âx.ž-v›Â«å Nù -Mµgn‚ª!‰.S¿q\ìÜ;•é#ë;.œþ›uIáõœ#÷©hm]£Àd)§ÆD­Ç ’œ>š‡Òe3p8_” ‡ué:|~¹Íñh±KZšo÷õYé³€ +N>Ñ¥À¶tžQã–lY\ñöýmÚQFý¥ÂϤYª ¿NÛãzl7ÛzYËгaÉ¿ï÷Æ%˜6>4$Íùm¿TcS³ÕüØ‘Ídî¶³C'D³EÝxóûÊwŠÎ r‡¼kgxݹ~dz‘¹ß§‡ýÊŠqWc9Ñu4Ÿ|ÏäåšQû²ÏÃp¯S¦ÌZ¬…ŸO³œÏL}þqùàühäˆðͽåQëÎþèí:£õ+ï¢Û%ꔾe½tµªì=¶£Û=rÂ65ÄÔ_iô'5 ML±ôb–º.nOõHfÕûl‰Åû7v_{u°ØYìç±…8+‰åÑ»*RîjŸbIÔ=¬ûŒýé ¹ú„{=þ~˜Üëäl‰ß?È •Ó3­:ÖìþøJR‚|ç;ÔÌÐ]²&¸#5¿]žCÀZG*ftH«dá­wfù!§·Õ³V£ §uf=„oXÈYZFÅÉnÖzŸxs/VÍ]îlRÃ­Îæ¤²šcU6š,a2,x/#Ázò›J4—†þìå´Úhù”äÊ»ºW[ËïØó~Òø‰ÿŒ}†KS+;¿3“IíÙ餤‡N¿áÊIŠÚÍä»ÿ7ܾŸ3Å OX/eôZË}"¡wjîB[±Dš´WŽíÞ2£j’Ûáïæoô'ŒóœâD—RH:nÝV•¥!î/Z_DO°ùN*}O<ãM8–ëÙÌmæO҇딛*Å=¸œÊ7³]ã‹o§ ìlÕÂÊÊËÓÔü`m‰ã(¥¹sȱüØ9óüÉ?ï,ÚuV|_&ÖˆyµéÜÞVöæ|ãåz؉–†º@)qõ{j—ÓW×ó¤y‚ î úI¾ÅŽ->ëàsÂ@¨•2±owal›e¨°s«@_£Á[ñX½À<Ôdy©½°æïÛó÷_¸ý§°ñgJú×zïÜѯiÉ\ªžØÀ]ư„£¥û»Î|»WŸ|ú:¯¢y¿ì‡.Ük}[÷¬ƒk†heþšxËÓŠ{Ín†]èÛsô[S]–‚¦]°‹è­v±}‚Me|¿y2^ɼ/ÚnrÜ‚ó ·Æ#Ö.åSþ,Eç^h„³ØÞ¤p{±ñ’É©lr%Gpøbg¹æ —·ºÌ1Ìž ìbk(²y*wè{f(1¤Œ|ÎuçÍ3ù껿œû{^,ï‘ùÎnh7óIþ rϹØd£öööËXçß<‘a±ç˜ºÓ‹ñµ~q{‘>õòJÞ@Aƒ]zK×ñþæCÿ[òýóþ¶ÞçÚR‰ÿ~oó¿”#Oˆo@˜ÿáP/mÿ¯ÿ½Éz옿µ½#r¢æÿõ/Ýè ­tÐAtÐAtÐAtÐAtÐAtÐAtÐAtÐñ߀=yÅ©mqËà0Øç ¶~¿ðø¯bÀÑ›º†úžœÖú“á,à ×|c4W,?MùÖ€Ãlg£@88ÿññʇd°­³<·‡Þyé¹³X€‡|߇÷«ö{€cÀ«+8õjØó=*ÏŇö;we¬ø°€Ý¦|qU@#8Þ`N YÓÀ~Âh_ÍUpP|öø¢ 8<Ì´œŽ©{§p ØÃÚÀ‡¼>¥áú5pXl²~®°öî,~߆MÀn’Èæð:ï8Vavê–_Í£±Ôl¡¹8üŸöÞ<šªÆíFB…„$™Ò$$„2&3gï}$$™“)•2 i@!SBH†ŠQ)’D’$Ef¢¤z¯–ïó¼ÏïYë]ïß¿µÎ^wËuœsöp Ÿ¡û^÷E®s;¤qÎ(ÏÓ›tFÝñºÁŠŸƒ…¼j>ÿ S zó›ŸÔøü“Ç>w Õ~­ã³èÄó–8¼­âü©Ñ;ÿ=–¢«TìþšäÇ,@J?aªêò¢Ä+©¢]@{Û}mÉ–d ‹+&M9³ˆJã³n ÛåE lZ€Úxg»ä–@>W§Et<¤«¹¥H=¿Éc ”õ£Zݺ?@z”ŠÑÅôÏîa‹PÊô‘ríI y§7»I½nèóå‹@¼Ês¿Æ HíÔ© Ç™lÕªw±jD87PW¹2ÏìŠt*›ÔÅûTjÿì@ j”Ï®¸TV”ëô©/@)§‡EÅ­­dz×a¼¿W5X#€ÌË ÊÔvºDrH(ÐÙ[/ªÛëÉÁ™ÜË3T²4gøS  è(¼Æó©<‹PÀë­ã¦Õéš­ò¾óÆ{䈔x-öñdùûo@ÎäïÊîÁ|¼:B8 !ró¶Ðà–Ϋ¬©Ñj t›Wœ3P…[“ª™ü±>Þ¬ýr2ÒÈ)d@õöu¯°O9ØÜRË-€z\Éž¬ ´7x_Éa_û§>8LÏ’Ö¼£Â¸óÖ}ùïÄ$Ðò}tã‰bbxT\5ú÷†~ì§ûû³›Þm¿…á'³@ VTrqÛåÎñæt©"P+¬#’»ð–çøŸ dÉ™*ƒ¥$Û6Mm;_ ë­ïý3”n±”Ш+P¿+¥f¥uòYÎòT¿ ïgµ(æ½zôÆ ¯& ^¶È§ñaÞÛx _üÙ7¢ê;Ùä ¡¬sÍK<ÖðiûŽjü©Ð/ %ðFbàâbß3ù@«é5¨u²þ˜ß9ì“£¿øk°žÄ­¦{û‡+1ïZ )œ–@¥@€Ö%^ èÝR¶×ñºU›M¤Ww}ÑFîo-Q@±gÚêj‹ùêÏáîR1—iÆ ç(ÒùÈ5j È×Él%óløúaIJ/æØ‡Ç–äUKy5õ§U´+~<³qÕö@1õŒH7dÙ$í¢xv#ýR;8ϱå8kÖÿ·Ôz™é“x>Z¹xί’TeöY÷ûã7g3TK±Þ¥ˆ}½ØˆÿÃSÄÏÚ2 <_×â*§¾x %÷Ç„ºµÓØô¸º1PQ)+~K3F&² n 0MÕ2d—ŸA KgÇùòí-¼Äû©m{m ½BùˆÁC ¶æ¬âJÇ÷+oäîãÚÅ3zR×qþÙv§Ê}Oz6P;öË7ÚDÙߨH¼Þ~ΞîÔi , Ø™¸0/#÷¾ÿ΢NQÞî¤ðšvºd#Ö[c¶bûF ÂƒšÖF嫾µáI0PSßKduü{^­¹vÈ›-"Ï}ù®ëðû27Î3xÓî:#νù;¿ Ÿ3-ol‹Ð"Nµ—=Ä:?Ъ³òÅS¾«Š@0idä],Z³NPQ}õ"ÌPf7¾¶’’gsØr7+ {Ä0[±gb?œ5öãŹñÞE¸Ôb*—=Êt|…¸ësFË„¨¸¢¯!÷°oE.X¥œ@Ú$¼³ãæâJ7ÿ×ñ^ §‹²¢úªþŠÝa@ª:‰<'€øµ”jħ\ÜèÍ¥@Ýž¨px†y‹n^í_´/ûóŸßõ:w{ЫD @EÓÐÏ3Å™Ÿ£ˆøË=ù‹Ëžúñ®hsÁË39;€­k‹Àç–ئr]¨÷‘›R3{€ÊÿòÙ¬óÏò2}SÓ$â~ëMþðn ³&‡’¡XÇ?® !5Žÿõïzß^“ßV@~*m+lÈâ…¬¥íÙ/@ŠŽ„i: yöÊ«ÒÓ‚8¯W5önj"¦Œ+‰óò­)ˆçBcúûA¬ÏЖkÑi=@æ&gÞ·ì¢Ì1R$0q£!ÈbçÔ­JÆù%ÖG¸©a‹Qa‰'žžê¾Õú:Kw Ú¬oý™¦€úHÙ9j¤umÿžO¦'Ç¿ÚL!.ʲ°Àúß7„¸Õ÷¾¯¨¤’~ñC Rì¼}Æq^¿<<5TÏ~•8Q ×'õŽ4[±ßò­Þ¯(œ—ð?ò%‰@t„·„h ?\­èè‘úáÏ‚Íc#@Zr¶ªâyæ6Iä\·2”G¢Yب¤ë±:J=ˆçÒfÉo@$u›òüyqÿÀ,›ú”>É‹uøñ~ ®½ý2—­eW ÎdxïwÚ ô¹Âž&È«“÷“_¢>èó~ÜõD()ö5~Ÿ­€mü•Y] Ä`’Wb±GiAWꑜk–ãódï*'O`úÊ"îZR@£Jû”¹–Iº¦¨ˆÚ–Ðô‡@œÝÑ7)ïò\ïo—ñ&MÄç¹oõò¿%2ZÛ²mÞh¥ÏŽlðÚ¤ððµ’4 UHq†±ÈGë÷+Ó±N„ÚeSM Ô§ÃW#ÿ{çT3ËôGOž®”Ò]gv_òÁçô‚ï;‡%Ä¿û`ýTó}þö ÎQ¬Ü9õóøÈÈyžuJh€õŠExÒ¹q•çv0Óñ£Æ ûDs™9_Ä1Ót HgÿÜ4‡4 ï°?è…` ùR¶ bŸÑ Uùä‘ÏŽz7UF] Å*"'Šzê»R òE|ðdN>Þ÷Š‚‹Y‡±ŸûÝ=d)œÃªv'ä»Dë§2±ï\ îaŸn½h´hSÖC-š¨·n¨6˜õ¸ƒE¨óxóÄMÏCcÇ:ñyݶ†êŸ¶G~³Ôý¾ ëÛsl·Âko — -A¾£qJNsLõ0ê”óAÄ7ý# þ9xõò¯–ã\.ŸçUÆëj€Õb êvw´"~›–Aæ1]ȬDËÈñ$ã#Z˜ÿJâfÆõ1 Šî”Jrð±ÿhÄ÷-£o5Å2a^“U^Ή±¯ò‘æfÔQ_=+¹kĘëTµ-òFWðúc?¢€ Z{%Ëy¿_¶2¹^ˆÍ†Ãkÿ`½,^¬®´W@Ý’pkï‡dI_~Ïõß‹.UÇ8W†µÈ6 ¹Åì®rb~»lzÔt¹ìÓƒü yóÙîŸLØß#çl—£˜1¿â¤xëþût¼™;R+y/#ú­F?ßDøªÍŸßüz©Ýµ•;ð9ž• ‡½@=S}Á7y{þóÝ€'¨Ë<>¤É]³Ô˜•©è_7ï|Í„ó±žKûÌ&ì£ ­÷ò ÞñKÛ[­QAŒ/ û#üù(!LXÓ h¼Ç+ ±ïöt?¿¶Fhw.ÇY)LýHÁ3Ä­¶%©s@fMÎõêr™’=cëT€:N䑪 ò­+{§Ô}Ä÷¼àÄE )˜ß[6ô¢ox©'ýuãIs»ÊÕ˜ÕÐeÊÃȧ•;¯)»ã|µ¿Ñê{†ù‹8}Çy4îÃqvówîxì—@ÔÝF§ÏL?Eþ ¨Zl—ˆ8ï{NqÜ,61§Ï¹Å•YüÊ`†:ï/³^  ë˜~l òù€ÜÞwɨ#òjN•w E¹ë ”8åê‚:¼¬B±uå¶S¿O+âýîZ¢\Z‡¼:\®Ô>F¶âÐüüFàuB@çyûþÂuÔYÃýómcÿðalhݧ@Ý<(z&qgyÌFäµÅŸZ‡‘sýF&¿cwÌï;a0†:òŽƒíkôKz’G>È£Î4^¿.Íç­{£K¶_2ê^£çÛ°ÎK¿ +#~zÃqÉyYö à 9|¿¶Ê&öú§ÉµR56å¨OèáZvz@ü:6èņºˆ÷á¬ÿ`wºŸ8ꬭAK’:øTõÈ=qÛýé&}œ“­Bª)¡ù žÎ‚~bæ£Þþõø\æÜ¿"þ½0»ø‹¨ÕÙþ³XßY­ØÝ¹¨g™‰-¨·¯¬—ô‚|ÖÎcùÞ² è;ƒ”{¾àïKcíz—|Ô9LÅSvɬz…º¡Y缞â¿^«ïÒ6 Ç:ú%Êú¡Íz¥Nçáå=󷨯îx¾t)ò¯Íß§!‘È7ft¯Ð kôî\I¹T¿QÏÝ–§@l̓ގ8ü«ÜîæùÄé'€õ ¼àA ~~—årò%ú"Oíhu Ž-;tÏ¿“_Î.ù6Œ¿~4Pޝž }¦€nùõ «˜úÑ™¿°_è®VQÕÈ'.àuJ õØéŠ+J·P/%~åÿ®:ÔéÙ3ÿ|ÀKßà|®=m©-Ðèï»ÆËÐ7µš9™­jÚöi›¸20¯ú§o¸ËzBe¢uãöTæo;pî »6b*5oõ…=­&l:Ëè¾ÔÁM8÷’ö)-ü­aX7^Ç÷Ž9ò>q"õ\,ê4m㻼8o³’:R˜/'ç _ Ô“¾=؉uj×› ¹ê T‰qÍ#ÄékÍôMˆ{U'/ BXG¬ÕgóòT·Âõµç§ì¿"µe¼èO(ñë«Ô©]@/¸~Ö~ úÄ“WŒ¬C}m|WêHí‘ÌñG>ØŸ7öd$#yDç[Åð‚yäÆÂ›‹ðºîE¯˜5&¢—¼D*Çy]üâéտ娃6y÷Aÿ2®|5™û$÷Þ¬Õ!0IHÏýãåÔ…ÛÁ9*¨W$g}â?<ìú¢YåxÿBð4CëŒ6µ#žEÅgëJ"Ÿšµ3÷½@½qD¸rÎu×­âK*~ïq©í;âè…­’&ö¨ÿß\²µ¹ÔÞu'®º¢¯Ù5¶.8 hN¥_öä n pÞC^%fbEšðóŸûÖ–ý#G•÷{Ìãmý‘Eüin­¿ ñøGYú G䣆ʩFo0;*Èúô¤I+v¾¥I1Bû¬róÖ4³ò uCW>×v9Ä¿Úôo8ÿ#ž–GÁy<`O(ê­-ï@ê—æîYâ DÖ—ïèëlê‹×CüÉ͵Øë‚yämMº3€z÷°ÆÉâ`¼ÞEÕÝlO—Þ¿ðËùøÃÀoį?’Z»ŒÑïs<¹Œ}^Âf›æÃ¿›Íaß.š ÓÅþHôš<{ õ2·ÝÕWYˆWÓŽŽNc`Qò~ uõ„¸‡Êe½;@ îl½[„ÂöÈ®mˆ+O¤j~ÛL·=Þ„ý®º%÷ø)ÔqïòÞwýBùž>Sö+0Ý yiØg=ÎÇi73˜¿‡¿kv,íÚÓ9Ý¢8·YºM×טؿçSéàØeƒxôÒÊ䦉0òÃ%2AùfBo±é êG³ç³BºüAM˵ˆÓíG[-ò󵟞Ÿðy´æÏºèÚÅUvɱQù¢9Þ?Z†Õ‹ë樿”ùø}ÜL‘ç¬Ìeû‡ÿ¬e]˜ïaÑ_\e@ ¡}û‡x¾£ìš:/úË’}ÕªÿøÒ臇ÙR  6EÉ!?_²WTÞ©TïÎϦØüvnÖJèÇn¼zº ýKnºRDÌPÂåg÷õ#.?b÷Óê¿tÓçkƒŠpŽ­„c]‰‰ëÍ<]8g§g‚òw)Và¶/ ˆÏú‡†µpÌ çËCÂ×_æ†üÐù=˜-qÑ«¯m#æãcË[â3Ömmø"MÄ›‡SÎ}±¾@'F_ïpFÁí þ<õž‹Êf ¹ÜN›Ñ×ü0>ˆøâªš=ëñ ÌöÔxF‘f@ygÆœðD¼I=ê*¤zC~îÞêÓž;Ѻn¨#³8·{às?rý"yŸ;PüR–ækó÷íºQ>@ÅžU¼)>ûÎT‹þ^ Ï鬹(ƒ¾Ts_L5âJÉÉu/DÑwHÒ9þrÝ×2uÿ0Öñîõúø=ˆ48¨=e Ô„i²†-Ð> ý•Gö«ä®ËO¬o¦ÏÓ—Jèû=­v¬j{Ì9ÿV|îÞ‰“窀ôÿMÖy ^úTrHuæCŸgaލ£ÞDM4¢Žûä¼ø03⚆ª\L&öóñ èoÖÿéj¢”–Äîƒßß±¼IEñ4|Q¬Çé›왨CÏ„ni÷D?zÚ/2ýȪÌÓ>âsîìÒ*W º`%oÛ ¸K¢µ||ÀÜûãR•ûè··<­‹x=ûÖï~ÐC²Ê«P礲NíêGÿ§Æ³Înæ}J}ÍŽ—ˆ>×õÊnq{&²Ñª¨Ü¹Ï«÷i&㑃sL@+nç®¶ÂüJv09#N\I]QûûjgTì±oˆkŽÓ¾B»€z`±|\™}á€lŸêœöÏ®!!èç-·¼›ÕÃ<è.[";‹¾Ò²W(îêZ£k›>°@Vÿ.àW—šbŽ€ÇÍ@ùUö…¡Ž85(…|–¸SuOæÃ­¤!ãò¦ÙÍDäw±kŽ#Ùˆ×éu¿ôP‘Æ[²÷—)OǼ(Ö3:™?‹iÌGÿù¹xSæ2Ø–ÔÔC} ##µ‡Qk ?dž¸³(M†¾ª¨Èͳ[Êb?:´íS(G¼-çÔóšâ,@¬Ú8÷ûwpÐñ¬Þ$˜ù Š)|ŠôlJ6ók¯Dò:·_ÞRz!0æÑÊC‹H‘Yb“оoû¾2%¼ìi«ÐÕYèÒy&oc=Óˆ–HÄ*”«þ(êð×rÞ’P¹p{„5£¾q_+Ã+4„ jyî<Î÷_ñàÏ‘8Ó®çÏ¢þxÙ0'r6èru~> F¾Aâè4Îqb°çMô+veË:°N‡„ß&1éäÚ9…õ”Q‰9¸õ§YUˆö¿Ç)ví8k‚ϸ°!n¥,“]»õá£o\¨GÞç9}UEÝ·®Åò§4òáí6þ’I컯™‹¶£On©œpJµÒ5^Å© ß÷ü’"k-Œ8Ÿµ…Më _/•‘F]{éÜ.ÌjÃæéÝ#èÏ»¾r+!þpßi؈ߗÿe%>…ýÿÁz•Ç«&ìw³$Á·Ø'*5ìWkñ|F6“æ#x_×5ôGãü4Qï ‚Q—=ý{_±ù´ãK¢üEôÍo ºuJ‚…‹û ç q âÊÆ¡Ž½š·¹Mu}àä±VÌ;פçôñæIwkfq¾½¯YíËBßþѼ9ã/êô:¥ešgU€ì“_f[Ñ ä²×ÎŽ »h}Þ'‡|÷¬>éÒ/6Ìk‘ß$ë} ¿+Y<ü[šÐÑsëË=ÌÖ葃úŸ¹®s=êŠüݧ²P籌[ß„ÊDˆ¹.âμ¤ÜÓ8?oýV‹Ç.ï;Ü ûEÜüòô•I–ý±o:¶ßÌTpÓzß{è—ÖzÉ¿E_À¼!Ž@}Lª¥žÞˆ ¯ã‡·ÝA?9’|vèß¿ºQ-zåâÈâéòØGÂw&>ŸKÁçÞfà²ÃûÆ`y‡^%Pw¸ÉfÙ²¥øLaÐBí• ¼ñ~Ni–FØß{Sã×{ΡžKÒÛŠz!Oa2·ýÈ&w¥Ð{ȯLÇ…Íõð¹•â:WË)YÿHf`É$ö×=«ËŸl€ÜoÆ{Vy¶õHÚÍf¬—ï1ûRìOE×ü’0œ}_[P?i7¯n÷ÅüðÞ¦N;`?Õj™N•c=’Ux[ls€Ð³Îûüñr$ ÃîdþÔÛ¡$Š|wdº!2 ùñ×Ý©Èß5¥mYœ@<¹Ùl‰¼^æµô\p?úå³ ýÕØo±áuý»€HóHÚ¶õRÜX]ì?~Y¡ëè­‹ø+д½pê·îb•)~¬ïŒ‹«¥öÉåSÌ„=á̇²ÞásÆå}UC>§XŸ U Ï«lN®Åóöuœ_qÞuôµ# öéàÁÀÕg°Kt ¢/&¿‰íøÑ{ˆPÕÌ‹&#¨Kø"¨  ¹äáú„ø¡ÑÈ·quÆ“IÁ¿ÔÑçßúK8 ®ÊS;š/(§ èâÐ9­vå!¯_æh<ɸ•ú×[tèâ ÿZ»¹2&ƆÖÿŽZZZÿ+dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ZBƆօ±¡u!dlh]ÿ¯ßÐÊXÈÄ8ã`Œƒq0ÆÁ8ã`Œƒq0ÆÁ8ã`Œƒq0ÆÁ8ã`Œƒqüï(ƒæ¸sìÙn­êe¢§õ½L Ì¨ bÏ èýüþòõ ‚òvrÚµ©|*}Kª*wZŽJiQÐê·Zh÷å<3Žbà—ëY§H ƒ÷só?ÇÏ­Î-Ùó! (޾‘`! ·¾û$ ÁGÃsVô÷Ð7q B'_Goû„0™4ù¬ˆ­Û.çÚ™f<½âE$Ð~ÝóVo:Tû5÷y£( 4õ¥½›€¬dNžbWÍ”n¤Ð.1ÙÞ¼vÈs?BÍU9€f@œeŸx Ô–=„°\ßós”=’¶V;| ¨Óì¼y1@ÿØöÝÔ¨SK×TkáõzçK®ÖÍÇÊÈ8öÐòµƒËS*PNóƒ‹ölÕ¼¾ ¯ßQu¢áß"î• Ýâ@T¦k«F—M°œÿÐò“@UÈWv˜ª™ºó|ç† ÅZ"¾]ËJ܉öÄV HÃÁE)Ö;µºÕ¹Cš»Ä7ˆ›5jb"V@*>;jÝ„ùí<±»m“>œôsN`žÝ÷ºøè2“]5¡^|fûE Uʼõ*3€æµÛ?OB¨ä2 ! ´Ò_æÄ%ʲ‘¢îñr*¾Õ¯®¬ñŽK ê•^Ær Èk'><\Ý´S®n›VYº¤D¤ë÷Û®4bôÑ›'–Øuÿp݈†Aç·€R ë$¨gÃï5m dÓ儿b_ dï«=yæ ýÊS£ÀI GÍo¯Îr=]·’öÈ‘—kß\êü³«1Zœ@kN½ÄÂõoA7[£PE-÷Þb]¢Õûº€¼ÜÑù¤ŸkÝåsÊÙ¯0ß&f‡a]§ƒfrÏØÙònþUp Ð"ïͲÀ|ËÒ‹„Lj(ÚÍâS) Du‘Ù~vo0ï0f!&\ÒØçŠߎFÑ/)¬Ê™4æ„ùöV@<\fë ä‹ bVåc@Þ´¿úÐhûLÿþ[,e/-kê„å‘€»<@—»ê;”À¸ñ×™?@-—_kËÆ†y×sS5Ä<×­Ú¥ äõþ¯V¹qêÆÖ¢® 4–Ùš¬I*›éT‚+ö[‰“]­0K~=ÿ2h}§W°7â}L‰È=Óë¢Ä늽­"ÐNî8¸:Fó~^ò-°®¯ÞŒðày¯;˜îúÄ${Áaq œ÷\4¥žIx-sü+¼e2€úÚ<•ÔЙݱ@¤[|º†ÏÉ{w_á my_Ù†÷ôd¬ëk3»zòÆ•±~ÂÅž\ˆÒ·–*v¼>’%È·~ol²öÅçz^ ï†V¸ù­ðäxЬ4PžcMQaL@æä9ì~ú HaÉåiþØ/´MUüø<^ý{û!Ħ¸î(ö£Ø¶;+kbqζªZ*q¡X}(ÎÁŸÄQ U DruL;€4Ýü`õº]@Ö¿oHdÊÚ´nM]ŸíögŒ1£p¸aÐ~h‚[!Ð]“ Fºñ¾âÅ÷„Ûa²:/眊 yâ´Æ£ÃY§  ^¯² t2¥ñ·ë‡IÄ—›"o}çñ¾™¦ßÚxxwÈ#ìãÀþ3ˆoDÆ»ßÓÉ@_mãƒ81s@Móµ5ôO‘áf ôº}´´D’÷)<¦@öíÍ–OÀ÷[6ˆáœÚÑHÿx —‡Î-A¼YŸuIÏ Ÿs›zŒ®˜‡* O…`?=hO&pNJ…>½[m/â]V4 j›.W"f,9UŠyix¶]6˨tnºº9Þß¡qÚ—œL YDó‹!Œ‘ªÃ‘˜a·ùnQ¬gÒÍÅóéæ@س³]X…8V2þÐõÐnoþñ@>){ß*äDO„¾âg¥xŒy‹éeëþPìÛXµ‡¬²X‡üˆKW±¯ß¶¼ŒbΚÙÉ÷‰@ºŒ¶¯ùŠõœ7}æ}rÆQ7àr7iªû.?:‰çù`8’ŒÏ‘_è ÁŒuÚÂÙï,`„óµ¡÷8/b¦¬J@Œ<+‰ˆë¢¥ôTˆ Fnß.Iíºæ†¤~a0/|Óã×­”eÒ(Û^äͧëåLvÿ[|$º¥¦ÐñøyÁ&y¬_ƆÁ#.ˆ›MnŸÌ뛀R{8«„øC}ÏßãmRµÒ8ÇÙûÜÇ×§áÕ½cÐÈÆšGEÒª@DÞ]¬( ä»ÅÏ~=ž*œècyé $_aþ¥¥ýÈS¯M~„âý¾7ê—ÍbO3‹HA‡ëGÔÿ°5ðW>³ çU>4MËßçûŽÔw_ u¶|Ž4ý‡W×'ß{ãÜÀæ‚Ê1ä‹ý“%vQ÷áó›zäeæ/¡g!j¦0‹ù‰’mËB<6>vAç\ P‘‹îÈF\ù¢á{>ñ°®êÛG•û@föíæ²_NÓþ*òÏ–´Ã¿ðù^µ¿ žB^^KéžâózÉûÑ8át±$A ½Zçï—cæ#îþC‰êاç¦ù ——á“ó‡í=ÏØç•f#}Üu” Ü[›ˆuO÷j`-òC¹vhU!ЄØîØÊ€yyˆhKn,ÐnÌ{ZºàsF†„Ì—‹ÑX¦~ld¨µqn î¬@<í‰=ÄÄÙ‡YÏ"P—0/[|yW#¿Äç΋ã#ówN°üò.9£vã|Î7 •Ì;U š€pÔÈíý·ÀhÍ«sI«Ç­³ÿzpæ]a¥½¤>ßhíá.Ô_äóQO…~ôídaÃ| „/Fœ%d¼tþ=?§BÕ³@ŽU¼NÝ‚ujf_§‰8rÚö}Xê–8KKÔMþõ/ÓÈÓšŠPDPetêr„>PÌÓ#WÅÅ6S²ß²‚LÝÊýQ7íÝnãÖbÖÉ{ë€8 ÷›sÐH½{î<×2“ÌùðËÈ—3y!‹½Û¨|R#e?ÇOägo¶ðáµ@±Ÿü·ðnÒ×ù…íá ¤±ÄϘÜ(  Ü;®tû²An²8Ç£·ðâ÷ö¬Ø½IñÑ{ ÝÏñ{ðå0ûpPÜ÷v¾àú)u…öcÈws2ö‘9È3ŠŽá‚@~Ð` îSÛÏä }ÚòBû–f–Ù¢Uˆ8e1b{‰µ ¨ƒ¿-yb{€6läôXäsï.ZDY¢ž³y¯÷uÊJ;å\1È V’rtœ‡jæù4ä£Í#UËl0?«Ùõ(ÄÑì—û§YŠÝ~O}ƒ>˜]ž¯A1:·ç­)˜gÝ9“ú8øßÿx¼"òâ w”šÀJœÿV=<:XÏZ+Yƒ8k—q±IrQìÜ3_W òÏÉþÅ>è!µÄCˆÛ›Ž#~MÔq¬9¦ ´YÉ‹S%ÿ/öm;‰zõ÷µ®NOM UÝ>š. ¤gà*¦Òn ËßÞÖJKóˆÕ*g±6e."ˆrÌkØ1¥0Ôó–ò…ÿ|ºÛ†uLJõÚׄzdés&^Ô1£W,­Õ‘WäÝä2Lح̱êˆ:Ð*^Ý34¥€)'vÔ7ê©_«‘''J¥¯CŸÏ´qtf)‡‡êÙÜÁ\q²/ȘH£U«cV½jß×E/ªpN;òêj#¾%9ñ¸;ûþC¥ÌZ °à2 dõ*J@è¤òÁ¥ãÔñrᘷ¼¿„ÔÄSïR¹¼.ùçäÝ9ÄùžO[MZ°ÿgž”†#žr+)pÚ–r‘ö?x?>‘ßž¢¯¹æuQÆc)öÿœE´/Öõ¨B–äÔYÇþØG-¹xÆ,õkçq÷ŸÊÝYÿòï2þcy꾎óf^–@œñrÿÁ‹ó/}©º‚ÄüÑœ£4j[=¾õôŽæ‘QÃFìû‹(i‘ÇâÖ=¨ÑÁ>~v;„(E¥èµ{1G'P*ŽÔ~>A\Ü®}ÙN‚M§&0yf­eΑ´g˜ÞÇ®ð‰‡º1@+]¤U\Š×yu}¸x7⟂ô¤±i/  ö}@ŸtÂþS<ê9û¿%?¡.Œc—¹Á¼]§ôSõc¹ç+ž÷ñbM[ĥʬIÑ"äu+Ù¤þ-’*ý¼’T"Ús Á&¨8æþ5œƒÛu¶W!þ>O±´CdxÆb“)êëCœæ3'°ßʽmúnÊQ©Ù‰ü£5o.4ñ¸5ÕÜXw]©3‹£°¿ŽêïV×A¿vÞR¬íPòîÆ]jø|*ÃK“6àó¿ªð}-¾í”mµ7ânën¾]Î@'¾¶FAô¶·M5’ŸµqxÇ¥ÙØ$= >Fð‡ã÷¯å>^"‡ùœÞ:ltÙ ]®xì÷Š–’Ð'ˆ?.–f®¨×ô;s5n™ÿ«ø8êî›_hõåb¾[¢Šõ÷õJ·'¢@þ*lŸÊ‹_…PÊSKœÿŒ¨j‚óµ /c‘-m­½Œþ}èìù€›È‡Òó²«[.-°OU¹ûí˯ħ–Ú@÷¼¸l6nß~$çºÌ£æWÌ. qµ<¼¼Ÿ§@'½ž­ëxên8öUà]õFì·=·¤žö#/îh¬“Øz qcªxüþ hI¡JÌ‘ß>W·?ÕE^g6l¸¾ õÕ¡¼7’sŠ@-^}êø®f¬×’£ÉáˆûÇ8Pïi;ü­Ïéà²ñ´Ån s,ê¿GRü£ZM`F |¹wæ0PKyRV¢®›‚‰-…èïÛö,&QK.Ú”}þÐìÿª'âùÚÏn>]€º%prNõ¯$Æuº/}ôïï1ƧL‡.^ã9:ÉY–wMÎQËV©)eäþUuøœ´²»L8g’Î\Ên¨ãÒ âØPŸ_Ük!…zä[Ò!»^Ô«ën-@_xðÖÑ@w<_mFi‰y~Ðx¬©+˜Gï:“NI±”%r뼯ͽùÉèÏ_>µ”ÙXô;.oœZѧJK%{÷ÛÝ•yÝäkÍÝǽ§Ñw¯¼ðçq˜ô}NÜ»¿ÈãƒÏÖ¡qÝwDþ¯÷6ÙˆÏy±àjàDú“ü@/œÇò]µ'v£ïœLZfŽ<»æø ó(¼ÏÅqå™ЯûÍ„§ú¢ÿŒ 4´Ãù|7¥àï‹øRTµ{WÖk`=ûé"Ô½ëþ:%¬*ÆþSúž*†þâ§£k*û<˜ÛÖþŒð-Ê7L1íê jÔóQf3Pü.“N…€öq¥>a•ƒ3?ÿâs~Ò"+aìÓ+*üÁü§ÑmC%Ôc!’· )yສžJ%ê_›ïÿ-0>œÍI¡n#:ÇJïb¾$Ø2!(M·À÷“Z«vlºì’ßxdö·ù^òDÐs}áóÈË C¾ÖË€\îßáæ8Öò²×¿¿£ò¾»?^g1ŸîmgÌÃõàŒ<>Ô_NkNÑËx²‰{v }ßY±•eÍ`®øþôÏN ð(Áï‡ê³»`Ÿ¼Íâ½ñˆ°«ú(?Xè§Ž>¼ºèlã]feÈ+n­ÿg ÄMöÄne䵇ÕQÚ{9ÐZ™—…ºžæ'í²Q½ ß«oÃzB§ÏNô¯¹ŸrhßëÐ oø¾(ñsÐ#ù, <η¯F}ѹŠëš‚-˜˜Ž&<ýíÄèÈJbK'…J¯ "ß¾+׎z‡|õGpi(˜¿]±·Ð¹qõd8kâžm\¦G0âËé' ì6È/Ûã\ùqNbuöZ¡N¤<)ßCŸGqÇþеPE\üÔÿr1 ú› k—?;eôw‘5â,Z䦡ÈÃX§5M%õܨ÷÷3]ÓŒD\¾¹rçõüܺ²KÑý@£±Jû}DÜë~!r[èaÉ_#Ÿ“v‡Ùú`ž–+»û7O/¾³ùEÕºã`“Üú%'m ¯3©½ÁUuÞž.'—‹¬óï_^¹_ݱ ËE½Îì=­†þ,®ŽEÓýÕx-Ÿð+ìßÕª]è[^ÚˆéÅ^ĹaÞjZŠ:btçuOÔ• ¢ßf—WÈ`ó¡ãž‰ö¨#” ?íÏCíf¯;-Œ¼-ä@ô5]ú>ß÷•ÏQ´«i†ó;ÉSœ:…¾t’°½ž ´©Û«K1ßRïÒL·GûÊïÁ~ú­˜Ô‹zá`]MÖ#Ôm‹/™L£ñ³v]JGýE?§Ô‘Ë‹zçeü¸l¢þ‡U°ÏØÓÙNé`]ü¦”&ú9ñ5sQb%òâ©UÇÏ .=ù)6äX ¦8ç§Q¿ªXýˆç *݈sÚT”/ÐÞñe?ä—õi¥ÐŽ­b«(+GýÒr|7ê!Ë/Çj b—G]Õ‘§ªLË'ñ~î^xÁöõ®êñü/xß+M+CCõ7~œ½£ÔŠ.R!ÈëOKéG"§Kæ–Ê"ŸÈè‰V<®ÄzW~‰Bž _v6s1ž7ÐæñjfÔ?×=eµÚ“¬3ŸìÑ”Ïjnÿ§Ež}~ÏÑdêãy óÂñ#èúäÄõUÏz‡€¼±Ó6ø—˜+Óæ¤PG òAÿ.C ­­¿Ü—GœxOĬpÆ~u·ÝÈa ´¡AíE¬@ï+àZЏ¨U÷(y†0!6¿[†þ‡'·ÝkK,˜EdßÚZ4/J# ýïâNû*õÑŸrÑšâ|¾Ï5a–ÚnµZÖ—¨_²ývÖíù÷÷àºÅGK°_RJ ¯ö[ŸtnHˆÅŽ›.8"O·Ç´ççsu€¯Co òõ ƒå 7ÑO4»=–z‚~j¥v»™µ, 2W^ýÈàµ&¼­ø¹ú·,Á‡1ï-Ÿ_z†ºdàaÝç0µ«{Éßô—e³ L¨›²=þÖ3£þÙ”VÊj‰~ªBï—qâ,¿’‡…âl¥c‡ÄyÄ7VǸdOÏðn»ƒxλÞað]»+Vy¢Öz¿úŠBë:—V«#®íÝü¤‘'y湃Å~ä%§§þÈÿ;BO» ÎÜ[½ãËÌßÁÅ—+ /Þ¬O_g¨DáÚ³gcÑØøm”¼€úɾ5emòmÔ=Rvâ‘£{úÏLg ™Üs‰ä@ÿf¦”8щó«l¬±A½hš&O³:°Û_²Äuß“÷_ëïâu¾Ý`Ù!åÝÑcÐÃq$¹èñ œwµ"c»f b^ŒZœù·h¹¼=‰Ž¼wÈcܯñl}Å£tUÄQíÐ~›tÔ‹Mužª¬xÿÍ=xZ÷Tm¼vëÛÏ÷6‡/ýænÍ¥eøyã 9.6ÔÛÒO -Šç1³¬S-@®wè7û‰ý,Y/3›‰|õ4нŸcôàÚÓe¦@7òq0ÒBýáuo†w1©ò׈íä³ §Ü†ÀÜ+ñï½\œ/ååÛ_ZuƒIe7d·›ý=ÜÝùè“9ÅXŒâQ_%“è‡WiœnpF¼¸Ìl¶¨É\÷'¾Èj~ÛŒ‘Wsf®Ëˆù]"-[e=öI羞¥ÿþžYlrb êûD«Óù?@M=.èE_=F¯”HGÎók9O)ò@UM=ß*ÌS>eyçê×2ù¦Jìûw‘×J­”P¿, p@žŒÐlñI@N11\t}Jz™Ôÿ'ÂOø‘¨¾O¸h"_³>»š5Œ8ñQ©öü´&Ð9X„{8Ö–£¥K¡ÎÞg­"‡óYæ¾Î yÜnOdt$öoCЪ‹ìÐXóéÓvâÈ?îÔîá}>I¼Þ% Dÿr: ¯¿•ÇöÈ<æ§‘½~Û!Ôu–CLÉÆ€zOZþ}#˜OûW·#î n3z_Žß/Xâl­Žzáx ×9ìŸm½Ï8ÊP,ÜÿtI ÎïÏ£šúè[â ¡ÎÏȯªÖÒ/‡wà cS&ÆB¦ÿŽ ™ ™ ™þ+d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZ ™BÆB¦…±i!d,dZÿ¯_Èô¼ËòŸwY=»»ÿ'^tÐýØÂÇÿýwjüçïÂköÿ¼æÿÏë•ÿy-ðwáTÿ}16'gg/Ÿcÿ¹Yîïh|cú¯ã?7!ø÷|c‰“‹yÌËË}áM¡ÿ}jŒ×üýÿ8áÿ¼4;yÜÞÍÉáØÂuþëÏ¿S.ùÿ¹{ñÿý¬”Ÿ·ÓÿyÑÿ‘VÖÿNë¿w–ýý¯Ó¼ ù¿ž”ó?ÿ½1‹¾€|¹u/Þ=d¼$óÖk·y_¼üáÀ¾Y‡>x?ôZYÂ"JVÕBj‹nÊ¥¿™zqYu×Å\ÒÈä±TîhHНÃ8œê½rhåzɶ¬ Ÿxú6ßPðèïÊS’šíå[üZŸ½2l•IÃ¥µâ{^~G%_í¯ŽÚ‰0ÛÛtJ`ÛÉŠ[m‹&˜Ø{Š–öEq­6ÌÏŒ.Òubo}j“P«~Ìp}Œb¬a«ø¾ê¡¸k÷Ϲ-ã7Dûôryï{Ÿ)b­˜$ñçQ¾þ‡@çâs"¯/lNUS=Së׿ù§üÌûGÉÍߤw¦År»ßѽ°Õb¶õ=Üõ¾/Ýì7ÙjºNtYË•ÔØÖs¬ÙqÓ—W§}Z—4y’'LéëœðÇþTíß§EâEíu«¸®ÿȯ¶dš÷ô€B Mžù‰ñOG»¹¿iå´ý%J3†­Ç÷7.Öžº¡Í­öT»))rBl·ßîgõO-©õ`ÞÊç÷Éo£tUŸ\kc$·jÿ©h3ÑÙåûÎÜЮüy!xíáü‹û¾»e$„Y­‹8µ]ãÑãëóÙ¢Ëé×>Ëu ‘]¾²o«ó¶z‰SE ËdÕç?‡‡­Ü6ßûY,=°O$rªd(ÛÔÆB{ó2—N"kïí—Ú’R^-È•ÕÛÈr])vðÐq»(sžJ¹!eúíîÁ½Ü»¹^½¡ê"*äó@îµÈ¾7jr êa•wú2L¹ÂC,Ôò£vˆO~ꌿ´Ü\œ?ÃGV»—{uŒÏ‘‘7âîݺÉÔRyc¬ÕGiÇÜÏw¿ÏÜî ¾Tjÿ»û!ýÚÞç+VqŽ­ä9rÀ!WºŒmþÈaé•#å^|Õa…VÜ—šGy''IëBæ][¸L[î$óXf麙¤»öøÇâ±f£ ûlY9l¼ÏóUmù•Õë;œ\#Bkò<µN¹R¾wpcóÖŒ5coX/Ñ"Ë&^%fÉ»ýùþÀɺfI¶ßÔnZû©ñp‘þÅ‹ÛBȘE½ñiÏ¿Vñ}_r »áÍŠÖà(v³›ó’9ÓÁ>{|utI×Ê»ÎM¡¶±ƒæ>×ëïnoyU}JêOZÒ÷vçm™ïf;7¾2¬÷_VÎ<þ†K*`ÌdL\g¹ÀŠŒJ%Ë7}3®Øêô‡ïØí—]{õ,eÝU[&¦ÖÝ}§§k߯s­ãùì`nÃ>Ùg'Jž =¼=ÌSRÝêêÑÛÖˆvgœc[ѽúÐkË£o°øœ‹QÙúGR\Ðt¬Ã€žñ¥¡Üf»¡q]Õç2¡];9לּÂRózUÈ;¥•Ñ}uNË$J~ÝV8¿EyßjÑñ‹k'??—.(þ¦<þv’/ðCÿüv‘wÊ·'§•Væu[wã_ñ>4Åý™1’ܼüÕ†öãË´ÎjÌKDÝ鯸ã³ïñxl@ãå½/:\ë&_´lZB|`k*"«’Ç\ %¬ /iGHoíéÕ¿–üåDáE¬kÓw4ß2ûñ¨……ÿÊÖ±c?û¬Š/Ñ–ª~Ü+2­ü²nÆM_íïÁùg«¦Vj…Ÿ|γª}bfWþóò~Óù¤×å–N·îQYk£ú´%d´b¢'=¯ë¸”]AŠ»ˆ_)÷RÏÕÇݯh˜ÑñØ;¯É\ÛBmˆÒ1àþúà=5•­2¯åàÿq§h!×òq+Ô{.ôù]¬ˆ=°7‚;󤧢®ã‘ÑÔ¢¯·GIü˜Þà“#«!f!VýMøQLúkÊlª*Ë(=…m‘ËãÂåñãÛe/F°1…ƘÍ+Ï(ž88óZVÉ3«?cuÇÕ‹Â…+Íâ3–HñDñÕD _š<õDådþú¸âîýröº}3ª;g…½<›çYö8­ïJíñ? ö׿s…`ÆëKÏâ§yÿä´ëh‹³6Ƶ%'$Hv9$©_ôÍ2VbS×sE¯m±õB”™øÅ7”{:gëu¦;]mX"kÝ–ºÝþlÕQáijö˜Ã°l„ô·¶¯?4¶ÜMê;Å%m¥(•/³nÅÌ%~%i¡yæ½¾'Õv ªGïš~u[wT÷Ãçž S‡µ9o,4¿g?îà Ͼý͈e…þ "€7—Ó5R8Sã†|½ÇÄÖêû&ûÜ® èôYƊ묺(^qËb3O½Ö™Õú=ÝékÚ™*ø6ˆÅ=^TåÕ×=¹úœ•VqoK©³ó¿c˼t´J®Ò72Ù6<î8{ߟµŒY÷ëOïjö_Ç£Ó9–'Ñî·sñ‰¸:vúfÛÿœ5fë†/ºR„›ÄyÙ¢sËkãî3í ç·h¼WWœ+lS`ß{OÍpó…AÚ!¹YéÚš½lËúôª++¸K¤>¯ºZÙ!Ö‹_ç#s¢Ðã²§“Ÿ­ZL¤ÈŠìŸ½£Äòc¨q/[ÑêölwÕ˜t*¥õÛý•¾>Kâ=3þœ?osE%lneO…CKShÐ'™ÂÙ Kúâ×ïiˆþ{-+95Süý’¼Žú—¯ƒ&Ï^ùýv·Òkqž_‚ÑÍiíolâ“\•—ìßáP&±?Ĺsù ×PYÑ`Ê|þÚ‹ïØõ”^rLC½O¼0ȳ,öùÕ#ý‚7}_Tޤ…íX³+®Ð®SáJÓúîï[;'®UÁ6õœ¦6ñ‚/E3s–­|v&`pbÇÓÈú’‰þ•®çRrCO(» J°jåJןý<\’f2VX)cíyËì÷J™ÄÕN’öϯ‘Ö·¯9Û=êñW]·§ó’׿ê}»âî¼”hñ°B}Ä;¡yeÊ[ûƒÜ·y 8Ÿß¢%$Kum*—°Ü“Ægôû0·:ÛÞg3‡ŽÆËJRÅ¿w µ…_ö ûZq×-vß3Ö&—†㛺*ÝÞ8V[Ýv>œ8ü¡¿äû÷âVc#Ê÷í—<Ãsž÷®ew+«]¹5ú¢Ñ»ÇÏê¹Eì[Ÿ\0ÓÞžµiµlðŽïc|ò&éô [-<¿>ƒ¶Âè¿^7of -™I –Ô]@-_Ðu\ÿ¯æãø/É÷ï÷Üÿ~¿tA%þ×ï–ÿoåÈyôÇq÷ƒÇœdÝ=þ[eþ?Y&c¢ nlme/inst/scripts/ch01.R0000644000176000001440000001112110550151372014552 0ustar ripleyusers#-*- R -*- library(nlme) pdf(file = 'ch01.pdf') options( width = 65, digits = 5 ) options( contrasts = c(unordered = "contr.helmert", ordered = "contr.poly") ) # Chapter 1 Linear Mixed-Effects Models: Basic Concepts and Examples # 1.1 A Simple Example of Random Effects Rail fm1Rail.lm <- lm( travel ~ 1, data = Rail ) fm1Rail.lm fm2Rail.lm <- lm( travel ~ Rail - 1, data = Rail ) fm2Rail.lm fm1Rail.lme <- lme(travel ~ 1, data = Rail, random = ~ 1 | Rail) summary( fm1Rail.lme ) fm1Rail.lmeML <- update( fm1Rail.lme, method = "ML" ) summary( fm1Rail.lmeML ) plot( fm1Rail.lme ) # produces Figure 1.4 intervals( fm1Rail.lme ) anova( fm1Rail.lme ) # 1.2 A Randomized Block Design plot.design( ergoStool ) # produces Figure 1.6 contrasts( ergoStool$Type ) ergoStool1 <- ergoStool[ ergoStool$Subject == "1", ] model.matrix( effort ~ Type, ergoStool1 ) # X matrix for Subject 1 fm1Stool <- lme(effort ~ Type, data = ergoStool, random = ~ 1 | Subject) summary( fm1Stool ) anova( fm1Stool ) options( contrasts = c( factor = "contr.treatment", ordered = "contr.poly" ) ) contrasts( ergoStool$Type ) fm2Stool <- lme(effort ~ Type, data = ergoStool, random = ~ 1 | Subject) summary( fm2Stool ) anova( fm2Stool ) model.matrix( effort ~ Type - 1, ergoStool1 ) fm3Stool <- lme(effort ~ Type - 1, data = ergoStool, random = ~ 1 | Subject) summary( fm3Stool ) anova( fm3Stool ) intervals( fm1Stool ) plot( fm1Stool, # produces Figure 1.8 form = resid(., type = "p") ~ fitted(.) | Subject, abline = 0 ) # 1.3 Mixed-effects Models for Replicated, Blocked Designs with(Machines, interaction.plot( Machine, Worker, score, las = 1)) # Figure 1.10 fm1Machine <- lme( score ~ Machine, data = Machines, random = ~ 1 | Worker ) fm1Machine fm2Machine <- update( fm1Machine, random = ~ 1 | Worker/Machine ) fm2Machine anova( fm1Machine, fm2Machine ) ## delete selected rows from the Machines data MachinesUnbal <- Machines[ -c(2,3,6,8,9,12,19,20,27,33), ] ## check that the result is indeed unbalanced table(MachinesUnbal$Machine, MachinesUnbal$Worker) fm1MachinesU <- lme( score ~ Machine, data = MachinesUnbal, random = ~ 1 | Worker/Machine ) fm1MachinesU intervals( fm1MachinesU ) fm4Stool <- lme( effort ~ Type, ergoStool, ~ 1 | Subject/Type ) if (interactive()) intervals( fm4Stool ) (fm1Stool$sigma)^2 (fm4Stool$sigma)^2 + 0.79621^2 Machine1 <- Machines[ Machines$Worker == "1", ] model.matrix( score ~ Machine, Machine1 ) # fixed-effects X_i model.matrix( ~ Machine - 1, Machine1 ) # random-effects Z_i fm3Machine <- update( fm1Machine, random = ~Machine - 1 |Worker) summary( fm3Machine ) anova( fm1Machine, fm2Machine, fm3Machine ) # 1.4 An Analysis of Covariance Model names( Orthodont ) levels( Orthodont$Sex ) OrthoFem <- Orthodont[ Orthodont$Sex == "Female", ] fm1OrthF.lis <- lmList( distance ~ age, data = OrthoFem ) coef( fm1OrthF.lis ) intervals( fm1OrthF.lis ) plot( intervals ( fm1OrthF.lis ) ) # produces Figure 1.12 fm2OrthF.lis <- update( fm1OrthF.lis, distance ~ I( age - 11 ) ) plot( intervals( fm2OrthF.lis ) ) # produces Figure 1.13 fm1OrthF <- lme( distance ~ age, data = OrthoFem, random = ~ 1 | Subject ) summary( fm1OrthF ) fm1OrthFM <- update( fm1OrthF, method = "ML" ) summary( fm1OrthFM ) fm2OrthF <- update( fm1OrthF, random = ~ age | Subject ) anova( fm1OrthF, fm2OrthF ) random.effects( fm1OrthF ) ranef( fm1OrthFM ) coef( fm1OrthF ) plot( compareFits(coef(fm1OrthF), coef(fm1OrthFM))) # Figure 1.15 plot( augPred(fm1OrthF), aspect = "xy", grid = TRUE ) # Figure 1.16 # 1.5 Models for Nested Classification Factors fm1Pixel <- lme( pixel ~ day + I(day^2), data = Pixel, random = list( Dog = ~ day, Side = ~ 1 ) ) intervals( fm1Pixel ) plot( augPred( fm1Pixel ) ) # produces Figure 1.18 VarCorr( fm1Pixel ) summary( fm1Pixel ) fm2Pixel <- update( fm1Pixel, random = ~ day | Dog) anova( fm1Pixel, fm2Pixel ) fm3Pixel <- update( fm1Pixel, random = ~ 1 | Dog/Side ) anova( fm1Pixel, fm3Pixel ) fm4Pixel <- update( fm1Pixel, pixel ~ day + I(day^2) + Side ) summary( fm4Pixel ) # 1.6 A Split-Plot Experiment fm1Oats <- lme( yield ~ ordered(nitro) * Variety, data = Oats, random = ~ 1 | Block/Variety ) anova( fm1Oats ) fm2Oats <- update( fm1Oats, yield ~ ordered(nitro) + Variety ) anova( fm2Oats ) summary( fm2Oats ) fm3Oats <- update( fm1Oats, yield ~ ordered( nitro ) ) summary( fm3Oats ) fm4Oats <- lme( yield ~ nitro, data = Oats, random = ~ 1 | Block/Variety ) summary( fm4Oats ) VarCorr( fm4Oats ) intervals( fm4Oats ) plot(augPred(fm4Oats), aspect = 2.5, layout = c(6, 3), between = list(x = c(0, 0, 0.5, 0, 0))) # produces Figure 1.21 # cleanup proc.time() q("no") nlme/inst/scripts/ch02.R0000644000176000001440000000455610550151372014571 0ustar ripleyusers#-*- R -*- library( nlme ) options( width = 65, digits = 5 ) options( contrasts = c(unordered = "contr.helmert", ordered = "contr.poly") ) pdf( file = 'ch02.pdf' ) # Chapter 2 Theory and Computational Methods for Linear Mixed-Effects Models # 2.2 Likelihood Estimation for LME Models Xmat <- matrix( c(1, 1, 1, 1, 8, 10, 12, 14), ncol = 2 ) Xmat Xqr <- qr( Xmat ) # creates a QR structure qr.R( Xqr ) # returns R qr.Q( Xqr ) # returns Q-truncated qr.Q( Xqr, complete = TRUE ) # returns the full Q fm1Rail.lme <- lme( travel ~ 1, data = Rail, random = ~ 1 | Rail, control = list( msVerbose = TRUE ) ) fm1Rail.lme <- lme( travel ~ 1, data = Rail, random = ~ 1 | Rail, control = list( msVerbose = TRUE, niterEM = 0 )) fm1Machine <- lme( score ~ Machine, data = Machines, random = ~ 1 | Worker ) fm2Machine <- update( fm1Machine, random = ~ 1 | Worker/Machine ) anova( fm1Machine, fm2Machine ) OrthoFem <- Orthodont[ Orthodont$Sex == "Female", ] fm1OrthF <- lme( distance ~ age, data = OrthoFem, random = ~ 1 | Subject ) fm2OrthF <- update( fm1OrthF, random = ~ age | Subject ) orthLRTsim <- simulate.lme( fm1OrthF, m2 = fm2OrthF, nsim = 1000 ) plot( orthLRTsim, df = c(1, 2) ) # produces Figure 2.3 machineLRTsim <- simulate.lme(fm1Machine, m2 = fm2Machine, nsim= 1000) plot( machineLRTsim, df = c(0, 1), # produces Figure 2.4 layout = c(4,1), between = list(x = c(0, 0.5, 0)) ) stoolLRTsim <- simulate.lme( list(fixed = effort ~ 1, data = ergoStool, random = ~ 1 | Subject), m2 = list(fixed = effort ~ Type), method = "ML", nsim = 1000 ) plot( stoolLRTsim, df = c(3, 4) ) # Figure 2.5 data( PBIB, package = 'SASmixed' ) pbibLRTsim <- simulate.lme(list( fixed = response ~ 1, data = PBIB, random = ~ 1 | Block ), m2 = list(fixed = response ~ Treatment, data = PBIB, random = ~ 1 | Block), method = "ML", nsim = 1000 ) plot( pbibLRTsim, df = c(14,16,18), weights = FALSE ) # Figure 2.6 summary( fm2Machine ) fm1PBIB <- lme(response ~ Treatment, data = PBIB, random = ~ 1 | Block) anova( fm1PBIB ) fm2PBIB <- update( fm1PBIB, method = "ML" ) fm3PBIB <- update( fm2PBIB, response ~ 1 ) anova( fm2PBIB, fm3PBIB ) anova( fm2Machine ) # cleanup proc.time() q("no") nlme/inst/scripts/ch06.R0000644000176000001440000000666510550151372014600 0ustar ripleyusers#-*- R -*- # initialization library(nlme) options(width = 65, digits = 5) options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly")) pdf(file = "ch06.pdf") # Chapter 6 Nonlinear Mixed-Effects Models: # Basic Concepts and Motivating Examples # 6.1 Indomethicin Kinetics plot(Indometh) fm1Indom.nls <- nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = Indometh) summary(fm1Indom.nls) plot(fm1Indom.nls, Subject ~ resid(.), abline = 0) (fm1Indom.lis <- nlsList(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = Indometh)) plot(intervals(fm1Indom.lis)) (fm1Indom.nlme <- nlme(fm1Indom.lis, random = pdDiag(A1 + lrc1 + A2 + lrc2 ~ 1), control = list(tolerance = 0.0001))) fm2Indom.nlme <- update(fm1Indom.nlme, random = pdDiag(A1 + lrc1 + A2 ~ 1)) anova(fm1Indom.nlme, fm2Indom.nlme) (fm3Indom.nlme <- update(fm2Indom.nlme, random = A1+lrc1+A2 ~ 1)) fm4Indom.nlme <- update(fm3Indom.nlme, random = pdBlocked(list(A1 + lrc1 ~ 1, A2 ~ 1))) anova(fm3Indom.nlme, fm4Indom.nlme) anova(fm2Indom.nlme, fm4Indom.nlme) plot(fm4Indom.nlme, id = 0.05, adj = -1) qqnorm(fm4Indom.nlme) plot(augPred(fm4Indom.nlme, level = 0:1)) summary(fm4Indom.nlme) # 6.3 Growth of Soybean Plants head(Soybean) plot(Soybean, outer = ~ Year * Variety) (fm1Soy.lis <- nlsList(weight ~ SSlogis(Time, Asym, xmid, scal), data = Soybean)) (fm1Soy.nlme <- nlme(fm1Soy.lis)) fm2Soy.nlme <- update(fm1Soy.nlme, weights = varPower()) anova(fm1Soy.nlme, fm2Soy.nlme) plot(ranef(fm2Soy.nlme, augFrame = TRUE), form = ~ Year * Variety, layout = c(3,1)) soyFix <- fixef(fm2Soy.nlme) options(contrasts = c("contr.treatment", "contr.poly")) (fm3Soy.nlme <- update(fm2Soy.nlme, fixed = Asym + xmid + scal ~ Year, start = c(soyFix[1], 0, 0, soyFix[2], 0, 0, soyFix[3], 0, 0))) anova(fm3Soy.nlme) # The following line is not in the book but needed to fit the model fm4Soy.nlme <- nlme(weight ~ SSlogis(Time, Asym, xmid, scal), data = Soybean, fixed = list(Asym ~ Year*Variety, xmid ~ Year + Variety, scal ~ Year), random = Asym ~ 1, start = c(17, 0, 0, 0, 0, 0, 52, 0, 0, 0, 7.5, 0, 0), weights = varPower(0.95), control = list(verbose = TRUE)) # FIXME: An update doesn't work for the fixed argument when fixed is a list summary(fm4Soy.nlme) plot(augPred(fm4Soy.nlme)) # 6.4 Clinical Study of Phenobarbital Kinetics (fm1Pheno.nlme <- nlme(conc ~ phenoModel(Subject, time, dose, lCl, lV), data = Phenobarb, fixed = lCl + lV ~ 1, random = pdDiag(lCl + lV ~ 1), start = c(-5, 0), na.action = NULL, naPattern = ~ !is.na(conc))) fm1Pheno.ranef <- ranef(fm1Pheno.nlme, augFrame = TRUE) # FIXME: these plots encounter difficulties plot(fm1Pheno.ranef, form = lCl ~ Wt + ApgarInd) plot(fm1Pheno.ranef, form = lV ~ Wt + ApgarInd) options(contrasts = c("contr.treatment", "contr.poly")) ## This fit just ping-pongs ##fm2Pheno.nlme <- ## update(fm1Pheno.nlme, ## fixed = list(lCl ~ Wt, lV ~ Wt + ApgarInd), ## start = c(-5.0935, 0, 0.34259, 0, 0), ## control = list(pnlsTol = 1e-4, maxIter = 500, ## msVerbose = TRUE)) ##summary(fm2Pheno.nlme) ##fm3Pheno.nlme <- ## update(fm2Pheno.nlme, ## fixed = lCl + lV ~ Wt, ## start = fixef(fm2Pheno.nlme)[-5]) ##plot(fm3Pheno.nlme, conc ~ fitted(.), abline = c(0,1)) # cleanup proc.time() q("no") nlme/inst/scripts/ch05.R0000644000176000001440000001650210550151372014566 0ustar ripleyusers#-*- R -*- # initialization library(nlme) options(width = 65, digits = 5) options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly")) pdf(file = "ch05.pdf") # Chapter 5 Extending the Basic Linear Mixed-Effects Models # 5.1 General Formulation of the Extended Model vf1Fixed <- varFixed(~ age) vf1Fixed <- Initialize(vf1Fixed, data = Orthodont) varWeights(vf1Fixed) vf1Ident <- varIdent(c(Female = 0.5), ~ 1 | Sex) vf1Ident <- Initialize(vf1Ident, Orthodont) varWeights(vf1Ident) vf2Ident <- varIdent(form = ~ 1 | Sex, fixed = c(Female = 0.5)) vf2Ident <- Initialize(vf2Ident, Orthodont) varWeights(vf2Ident) vf3Ident <- varIdent(form = ~ 1 | Sex * age) vf3Ident <- Initialize(vf3Ident, Orthodont) varWeights(vf3Ident) vf1Power <- varPower(1) formula(vf1Power) vf2Power <- varPower(fixed = 0.5) vf3Power <- varPower(form = ~ fitted(.) | Sex, fixed = list(Male = 0.5, Female = 0)) vf1Exp <- varExp(form = ~ age | Sex, fixed = c(Female = 0)) vf1ConstPower <- varConstPower(power = 0.5, fixed = list(const = 1)) vf1Comb <- varComb(varIdent(c(Female = 0.5), ~ 1 | Sex), varExp(1, ~ age)) vf1Comb <- Initialize(vf1Comb, Orthodont) varWeights(vf1Comb) fm1Dial.lme <- lme(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB, Dialyzer, ~ pressure + I(pressure^2)) fm1Dial.lme plot(fm1Dial.lme, resid(.) ~ pressure, abline = 0) fm2Dial.lme <- update(fm1Dial.lme, weights = varPower(form = ~ pressure)) fm2Dial.lme anova(fm1Dial.lme, fm2Dial.lme) plot(fm2Dial.lme, resid(., type = "p") ~ pressure, abline = 0) intervals(fm2Dial.lme) plot(fm2Dial.lme, resid(.) ~ pressure|QB, abline = 0) fm3Dial.lme <- update(fm2Dial.lme, weights=varPower(form = ~ pressure | QB)) fm3Dial.lme anova(fm2Dial.lme, fm3Dial.lme) fm4Dial.lme <- update(fm2Dial.lme, weights = varConstPower(form = ~ pressure)) anova(fm2Dial.lme, fm4Dial.lme) plot(augPred(fm2Dial.lme), grid = TRUE) anova(fm2Dial.lme) anova(fm2Dial.lme, Terms = 8:10) options(contrasts = c("contr.treatment", "contr.poly")) fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) fm1BW.lme fm2BW.lme <- update(fm1BW.lme, weights = varPower()) fm2BW.lme anova(fm1BW.lme, fm2BW.lme) summary(fm2BW.lme) anova(fm2BW.lme, L = c("Time:Diet2" = 1, "Time:Diet3" = -1)) cs1CompSymm <- corCompSymm(value = 0.3, form = ~ 1 | Subject) cs2CompSymm <- corCompSymm(value = 0.3, form = ~ age | Subject) cs1CompSymm <- Initialize(cs1CompSymm, data = Orthodont) corMatrix(cs1CompSymm) cs1Symm <- corSymm(value = c(0.2, 0.1, -0.1, 0, 0.2, 0), form = ~ 1 | Subject) cs1Symm <- Initialize(cs1Symm, data = Orthodont) corMatrix(cs1Symm) cs1AR1 <- corAR1(0.8, form = ~ 1 | Subject) cs1AR1 <- Initialize(cs1AR1, data = Orthodont) corMatrix(cs1AR1) cs1ARMA <- corARMA(0.4, form = ~ 1 | Subject, q = 1) cs1ARMA <- Initialize(cs1ARMA, data = Orthodont) corMatrix(cs1ARMA) cs2ARMA <- corARMA(c(0.8, 0.4), form = ~ 1 | Subject, p=1, q=1) cs2ARMA <- Initialize(cs2ARMA, data = Orthodont) corMatrix(cs2ARMA) spatDat <- data.frame(x = (0:4)/4, y = (0:4)/4) cs1Exp <- corExp(1, form = ~ x + y) cs1Exp <- Initialize(cs1Exp, spatDat) corMatrix(cs1Exp) cs2Exp <- corExp(1, form = ~ x + y, metric = "man") cs2Exp <- Initialize(cs2Exp, spatDat) corMatrix(cs2Exp) cs3Exp <- corExp(c(1, 0.2), form = ~ x + y, nugget = TRUE) cs3Exp <- Initialize(cs3Exp, spatDat) corMatrix(cs3Exp) fm1Ovar.lme <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), data = Ovary, random = pdDiag(~sin(2*pi*Time))) fm1Ovar.lme ACF(fm1Ovar.lme) plot(ACF(fm1Ovar.lme, maxLag = 10), alpha = 0.01) fm2Ovar.lme <- update(fm1Ovar.lme, correlation = corAR1()) anova(fm1Ovar.lme, fm2Ovar.lme) if (interactive()) intervals(fm2Ovar.lme) fm3Ovar.lme <- update(fm1Ovar.lme, correlation = corARMA(q = 2)) fm3Ovar.lme anova(fm2Ovar.lme, fm3Ovar.lme, test = F) fm4Ovar.lme <- update(fm1Ovar.lme, correlation = corCAR1(form = ~Time)) anova(fm2Ovar.lme, fm4Ovar.lme, test = F) (fm5Ovar.lme <- update(fm1Ovar.lme, corr = corARMA(p = 1, q = 1))) anova(fm2Ovar.lme, fm5Ovar.lme) plot(ACF(fm5Ovar.lme, maxLag = 10, resType = "n"), alpha = 0.01) Variogram(fm2BW.lme, form = ~ Time) plot(Variogram(fm2BW.lme, form = ~ Time, maxDist = 42)) fm3BW.lme <- update(fm2BW.lme, correlation = corExp(form = ~ Time)) intervals(fm3BW.lme) anova(fm2BW.lme, fm3BW.lme) fm4BW.lme <- update(fm3BW.lme, correlation = corExp(form = ~ Time, nugget = TRUE)) anova(fm3BW.lme, fm4BW.lme) plot(Variogram(fm3BW.lme, form = ~ Time, maxDist = 42)) plot(Variogram(fm3BW.lme, form = ~ Time, maxDist = 42, resType = "n", robust = TRUE)) fm5BW.lme <- update(fm3BW.lme, correlation = corRatio(form = ~ Time)) fm6BW.lme <- update(fm3BW.lme, correlation = corSpher(form = ~ Time)) fm7BW.lme <- update(fm3BW.lme, correlation = corLin(form = ~ Time)) fm8BW.lme <- update(fm3BW.lme, correlation = corGaus(form = ~ Time)) anova(fm3BW.lme, fm5BW.lme, fm6BW.lme, fm7BW.lme, fm8BW.lme) fm1Orth.gls <- gls(distance ~ Sex * I(age - 11), Orthodont, correlation = corSymm(form = ~ 1 | Subject), weights = varIdent(form = ~ 1 | age)) fm1Orth.gls intervals(fm1Orth.gls) fm2Orth.gls <- update(fm1Orth.gls, corr = corCompSymm(form = ~ 1 | Subject)) anova(fm1Orth.gls, fm2Orth.gls) intervals(fm2Orth.gls) fm3Orth.gls <- update(fm2Orth.gls, weights = NULL) anova(fm2Orth.gls, fm3Orth.gls) plot(fm3Orth.gls, resid(., type = "n") ~ age | Sex) fm4Orth.gls <- update(fm3Orth.gls, weights = varIdent(form = ~ 1 | Sex)) anova(fm3Orth.gls, fm4Orth.gls) qqnorm(fm4Orth.gls, ~resid(., type = "n")) # not in book but needed for the following command fm3Orth.lme <- lme(distance~Sex*I(age-11), data = Orthodont, random = ~ I(age-11) | Subject, weights = varIdent(form = ~ 1 | Sex)) anova(fm3Orth.lme, fm4Orth.gls, test = FALSE) fm1Dial.gls <- gls(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB, Dialyzer) plot(fm1Dial.gls, resid(.) ~ pressure, abline = 0) fm2Dial.gls <- update(fm1Dial.gls, weights = varPower(form = ~ pressure)) anova(fm1Dial.gls, fm2Dial.gls) ACF(fm2Dial.gls, form = ~ 1 | Subject) plot(ACF(fm2Dial.gls, form = ~ 1 | Subject), alpha = 0.01) (fm3Dial.gls <- update(fm2Dial.gls, corr = corAR1(0.771, form = ~ 1 | Subject))) intervals(fm3Dial.gls) anova(fm2Dial.gls, fm3Dial.gls) anova(fm3Dial.gls, fm2Dial.lme, test = FALSE) fm1Wheat2 <- gls(yield ~ variety - 1, Wheat2) Variogram(fm1Wheat2, form = ~ latitude + longitude) plot(Variogram(fm1Wheat2, form = ~ latitude + longitude, maxDist = 32), xlim = c(0,32)) fm2Wheat2 <- update(fm1Wheat2, corr = corSpher(c(28, 0.2), form = ~ latitude + longitude, nugget = TRUE)) fm2Wheat2 fm3Wheat2 <- update(fm1Wheat2, corr = corRatio(c(12.5, 0.2), form = ~ latitude + longitude, nugget = TRUE)) fm3Wheat2 anova(fm2Wheat2, fm3Wheat2) anova(fm1Wheat2, fm3Wheat2) plot(Variogram(fm3Wheat2, resType = "n")) plot(fm3Wheat2, resid(., type = "n") ~ fitted(.), abline = 0) qqnorm(fm3Wheat2, ~ resid(., type = "n")) fm4Wheat2 <- update(fm3Wheat2, model = yield ~ variety) anova(fm4Wheat2) anova(fm3Wheat2, L = c(-1, 0, 1)) # cleanup proc.time() q("no") nlme/inst/scripts/ch08.R0000644000176000001440000002676010550151372014600 0ustar ripleyusers#-*- R -*- # initialization library(nlme) library(lattice) options(width = 65, digits = 5) options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly")) pdf(file = "ch08.pdf") # Chapter 8 Fitting Nonlinear Mixed-Effects Models # 8.1 Fitting Nonlinear Models in S with nls and nlsList ## outer = ~1 is used to display all five curves in one panel plot(Orange, outer = ~1) logist <- function(x, Asym, xmid, scal) Asym/(1 + exp(-(x - xmid)/scal)) logist <- deriv(~Asym/(1+exp(-(x-xmid)/scal)), c("Asym", "xmid", "scal"), function(x, Asym, xmid, scal){}) Asym <- 180; xmid <- 700; scal <- 300 logist(Orange$age[1:7], Asym, xmid, scal) fm1Oran.nls <- nls(circumference ~ logist(age, Asym, xmid, scal), data = Orange, start = c(Asym = 170, xmid = 700, scal = 500)) summary(fm1Oran.nls) plot(fm1Oran.nls) plot(fm1Oran.nls, Tree ~ resid(.), abline = 0) Orange.sortAvg <- sortedXyData("age", "circumference", Orange) Orange.sortAvg NLSstClosestX(Orange.sortAvg, 130) logistInit <- function(mCall, LHS, data) { xy <- sortedXyData(mCall[["x"]], LHS, data) if(nrow(xy) < 3) { stop("Too few distinct input values to fit a logistic") } Asym <- max(abs(xy[,"y"])) if (Asym != max(xy[,"y"])) Asym <- -Asym # negative asymptote xmid <- NLSstClosestX(xy, 0.5 * Asym) scal <- NLSstClosestX(xy, 0.75 * Asym) - xmid value <- c(Asym, xmid, scal) names(value) <- mCall[c("Asym", "xmid", "scal")] value } logist <- selfStart(logist, initial = logistInit) class(logist) logist <- selfStart(~ Asym/(1 + exp(-(x - xmid)/scal)), initial = logistInit, parameters = c("Asym", "xmid", "scal")) getInitial(circumference ~ logist(age, Asym, xmid, scal), Orange) nls(circumference ~ logist(age, Asym, xmid, scal), Orange) getInitial(circumference ~ SSlogis(age,Asym,xmid,scal), Orange) nls(circumference ~ SSlogis(age, Asym, xmid, scal), Orange) fm1Oran.lis <- nlsList(circumference ~ SSlogis(age, Asym, xmid, scal) | Tree, data = Orange) fm1Oran.lis <- nlsList(SSlogis, Orange) fm1Oran.lis.noSS <- nlsList(circumference ~ Asym/(1+exp(-(age-xmid)/scal)), data = Orange, start = c(Asym = 170, xmid = 700, scal = 500)) fm1Oran.lis summary(fm1Oran.lis) plot(intervals(fm1Oran.lis), layout = c(3,1)) plot(fm1Oran.lis, Tree ~ resid(.), abline = 0) Theoph[1:4,] fm1Theo.lis <- nlsList(conc ~ SSfol(Dose, Time, lKe, lKa, lCl), data = Theoph) fm1Theo.lis plot(intervals(fm1Theo.lis), layout = c(3,1)) pairs(fm1Theo.lis, id = 0.1) # 8.2 Fitting Nonlinear Mixed-Effects Models with nlme ## no need to specify groups, as Orange is a groupedData object ## random is omitted - by default it is equal to fixed (fm1Oran.nlme <- nlme(circumference ~ SSlogis(age, Asym, xmid, scal), data = Orange, fixed = Asym + xmid + scal ~ 1, start = fixef(fm1Oran.lis))) summary(fm1Oran.nlme) summary(fm1Oran.nls) pairs(fm1Oran.nlme) fm2Oran.nlme <- update(fm1Oran.nlme, random = Asym ~ 1) anova(fm1Oran.nlme, fm2Oran.nlme) plot(fm1Oran.nlme) ## level = 0:1 requests fixed (0) and within-group (1) predictions plot(augPred(fm2Oran.nlme, level = 0:1), layout = c(5,1)) qqnorm(fm2Oran.nlme, abline = c(0,1)) (fm1Theo.nlme <- nlme(fm1Theo.lis)) if (interactive()) intervals(fm1Theo.nlme, which = "var-cov") (fm2Theo.nlme <- update(fm1Theo.nlme, random = pdDiag(lKe + lKa + lCl ~ 1))) fm3Theo.nlme <- update(fm2Theo.nlme, random = pdDiag(lKa + lCl ~ 1)) anova(fm1Theo.nlme, fm3Theo.nlme, fm2Theo.nlme) plot(fm3Theo.nlme) qqnorm(fm3Theo.nlme, ~ ranef(.)) CO2 plot(CO2, outer = ~Treatment*Type, layout = c(4,1)) (fm1CO2.lis <- nlsList(SSasympOff, CO2)) (fm1CO2.nlme <- nlme(fm1CO2.lis)) (fm2CO2.nlme <- update(fm1CO2.nlme, random = Asym + lrc ~ 1)) anova(fm1CO2.nlme, fm2CO2.nlme) plot(fm2CO2.nlme,id = 0.05,cex = 0.8,adj = -0.5) fm2CO2.nlmeRE <- ranef(fm2CO2.nlme, augFrame = TRUE) fm2CO2.nlmeRE class(fm2CO2.nlmeRE) plot(fm2CO2.nlmeRE, form = ~ Type * Treatment) contrasts(CO2$Type) contrasts(CO2$Treatment) fm3CO2.nlme <- update(fm2CO2.nlme, fixed = list(Asym ~ Type * Treatment, lrc + c0 ~ 1), start = c(32.412, 0, 0, 0, -4.5603, 49.344)) summary(fm3CO2.nlme) anova(fm3CO2.nlme, Terms = 2:4) fm3CO2.nlmeRE <- ranef(fm3CO2.nlme, aug = TRUE) plot(fm3CO2.nlmeRE, form = ~ Type * Treatment) fm3CO2.fix <- fixef(fm3CO2.nlme) fm4CO2.nlme <- update(fm3CO2.nlme, fixed = list(Asym + lrc ~ Type * Treatment, c0 ~ 1), start = c(fm3CO2.fix[1:5], 0, 0, 0, fm3CO2.fix[6])) summary(fm4CO2.nlme) fm5CO2.nlme <- update(fm4CO2.nlme, random = Asym ~ 1) anova(fm4CO2.nlme, fm5CO2.nlme) CO2$type <- 2 * (as.integer(CO2$Type) - 1.5) CO2$treatment <- 2 * (as.integer(CO2$Treatment) - 1.5) fm1CO2.nls <- nls(uptake ~ SSasympOff(conc, Asym.Intercept + Asym.Type * type + Asym.Treatment * treatment + Asym.TypeTreatment * type * treatment, lrc.Intercept + lrc.Type * type + lrc.Treatment * treatment + lrc.TypeTreatment * type * treatment, c0), data = CO2, start = c(Asym.Intercept = 32.371, Asym.Type = -8.0086, Asym.Treatment = -4.2001, Asym.TypeTreatment = -2.7253, lrc.Intercept = -4.5267, lrc.Type = 0.13112, lrc.Treatment = 0.093928, lrc.TypeTreatment = 0.17941, c0 = 50.126)) anova(fm5CO2.nlme, fm1CO2.nls) # plot(augPred(fm5CO2.nlme, level = 0:1), ## FIXME: problem with levels # layout = c(6,2)) ## Actually a problem with contrasts. ## This fit just ping-pongs. #fm1Quin.nlme <- # nlme(conc ~ quinModel(Subject, time, conc, dose, interval, # lV, lKa, lCl), # data = Quinidine, fixed = lV + lKa + lCl ~ 1, # random = pdDiag(lV + lCl ~ 1), groups = ~ Subject, # start = list(fixed = c(5, -0.3, 2)), # na.action = NULL, naPattern = ~ !is.na(conc), verbose = TRUE) #fm1Quin.nlme #fm1Quin.nlmeRE <- ranef(fm1Quin.nlme, aug = TRUE) #fm1Quin.nlmeRE[1:3,] # plot(fm1Quin.nlmeRE, form = lCl ~ Age + Smoke + Ethanol + ## FIXME: problem in max # Weight + Race + Height + glyco + Creatinine + Heart, # control = list(cex.axis = 0.7)) #fm1Quin.fix <- fixef(fm1Quin.nlme) #fm2Quin.nlme <- update(fm1Quin.nlme, # fixed = list(lCl ~ glyco, lKa + lV ~ 1), # start = c(fm1Quin.fix[3], 0, fm1Quin.fix[2:1])) fm2Quin.nlme <- nlme(conc ~ quinModel(Subject, time, conc, dose, interval, lV, lKa, lCl), data = Quinidine, fixed = list(lCl ~ glyco, lV + lKa ~ 1), random = pdDiag(diag(c(0.3,0.3)), form = lV + lCl ~ 1), groups = ~ Subject, start = list(fixed = c(2.5, 0, 5.4, -0.2)), na.action = NULL, naPattern = ~ !is.na(conc)) summary(fm2Quin.nlme) # wrong values options(contrasts = c("contr.treatment", "contr.poly")) fm2Quin.fix <- fixef(fm2Quin.nlme) ## subsequent fits don't work #fm3Quin.nlme <- update(fm2Quin.nlme, # fixed = list(lCl ~ glyco + Creatinine, lKa + lV ~ 1), # start = c(fm2Quin.fix[1:2], 0.2, fm2Quin.fix[3:4])) #summary(fm3Quin.nlme) #fm3Quin.fix <- fixef(fm3Quin.nlme) #fm4Quin.nlme <- update(fm3Quin.nlme, # fixed = list(lCl ~ glyco + Creatinine + Weight, lKa + lV ~ 1), # start = c(fm3Quin.fix[1:3], 0, fm3Quin.fix[4:5])) #summary(fm4Quin.nlme) ## This fit just ping-pongs ##fm1Wafer.nlmeR <- ## nlme(current ~ A + B * cos(4.5679 * voltage) + ## C * sin(4.5679 * voltage), data = Wafer, ## fixed = list(A ~ voltage + I(voltage^2), B + C ~ 1), ## random = list(Wafer = A ~ voltage + I(voltage^2), ## Site = pdBlocked(list(A~1, A~voltage+I(voltage^2)-1))), ### start = fixef(fm4Wafer), method = "REML", control = list(tolerance=1e-2)) ## start = c(-4.255, 5.622, 1.258, -0.09555, 0.10434), ## method = "REML", control = list(tolerance = 1e-2)) ##fm1Wafer.nlmeR ##fm1Wafer.nlme <- update(fm1Wafer.nlmeR, method = "ML") (fm2Wafer.nlme <- nlme(current ~ A + B * cos(w * voltage + pi/4), data = Wafer, fixed = list(A ~ voltage + I(voltage^2), B + w ~ 1), random = list(Wafer = pdDiag(list(A ~ voltage + I(voltage^2), B + w ~ 1)), Site = pdDiag(list(A ~ voltage+I(voltage^2), B ~ 1))), start = c(-4.255, 5.622, 1.258, -0.09555, 4.5679))) plot(fm2Wafer.nlme, resid(.) ~ voltage | Wafer, panel = function(x, y, ...) { panel.grid() panel.xyplot(x, y) panel.loess(x, y, lty = 2) panel.abline(0, 0) }) ## anova(fm1Wafer.nlme, fm2Wafer.nlme, test = FALSE) # intervals(fm2Wafer.nlme) # 8.3 Extending the Basic nlme Model #fm4Theo.nlme <- update(fm3Theo.nlme, # weights = varConstPower(power = 0.1)) # this fit is way off #fm4Theo.nlme #anova(fm3Theo.nlme, fm4Theo.nlme) #plot(fm4Theo.nlme) ## xlim used to hide an unusually high fitted value and enhance ## visualization of the heteroscedastic pattern # plot(fm4Quin.nlme, xlim = c(0, 6.2)) #fm5Quin.nlme <- update(fm4Quin.nlme, weights = varPower()) #summary(fm5Quin.nlme) #anova(fm4Quin.nlme, fm5Quin.nlme) #plot(fm5Quin.nlme, xlim = c(0, 6.2)) var.nlme <- nlme(follicles ~ A + B * sin(2 * pi * w * Time) + C * cos(2 * pi * w *Time), data = Ovary, fixed = A + B + C + w ~ 1, random = pdDiag(A + B + w ~ 1), # start = c(fixef(fm5Ovar.lme), 1)) start = c(12.18, -3.298, -0.862, 1)) ##fm1Ovar.nlme ##ACF(fm1Ovar.nlme) ##plot(ACF(fm1Ovar.nlme, maxLag = 10), alpha = 0.05) ##fm2Ovar.nlme <- update(fm1Ovar.nlme, correlation = corAR1(0.311)) ##fm3Ovar.nlme <- update(fm1Ovar.nlme, correlation = corARMA(p=0, q=2)) ##anova(fm2Ovar.nlme, fm3Ovar.nlme, test = FALSE) ##intervals(fm2Ovar.nlme) ##fm4Ovar.nlme <- update(fm2Ovar.nlme, random = A ~ 1) ##anova(fm2Ovar.nlme, fm4Ovar.nlme) ##if (interactive()) fm5Ovar.nlme <- update(fm4Ovar.nlme, correlation = corARMA(p=1, q=1)) # anova(fm4Ovar.nlme, fm5Ovar.nlme) # plot(ACF(fm5Ovar.nlme, maxLag = 10, resType = "n"), # alpha = 0.05) # fm5Ovar.lmeML <- update(fm5Ovar.lme, method = "ML") # intervals(fm5Ovar.lmeML) # fm6Ovar.lmeML <- update(fm5Ovar.lmeML, random = ~1) # anova(fm5Ovar.lmeML, fm6Ovar.lmeML) # anova(fm6Ovar.lmeML, fm5Ovar.nlme) # intervals(fm5Ovar.nlme, which = "fixed") fm1Dial.lis <- nlsList(rate ~ SSasympOff(pressure, Asym, lrc, c0) | QB, data = Dialyzer) fm1Dial.lis plot(intervals(fm1Dial.lis)) fm1Dial.gnls <- gnls(rate ~ SSasympOff(pressure, Asym, lrc, c0), data = Dialyzer, params = list(Asym + lrc ~ QB, c0 ~ 1), start = c(53.6, 8.6, 0.51, -0.26, 0.225)) fm1Dial.gnls Dialyzer$QBcontr <- 2 * (Dialyzer$QB == 300) - 1 fm1Dial.nls <- nls(rate ~ SSasympOff(pressure, Asym.Int + Asym.QB * QBcontr, lrc.Int + lrc.QB * QBcontr, c0), data = Dialyzer, start = c(Asym.Int = 53.6, Asym.QB = 8.6, lrc.Int = 0.51, lrc.QB = -0.26, c0 = 0.225)) summary(fm1Dial.nls) logLik(fm1Dial.nls) plot(fm1Dial.gnls, resid(.) ~ pressure, abline = 0) fm2Dial.gnls <- update(fm1Dial.gnls, weights = varPower(form = ~ pressure)) anova(fm1Dial.gnls, fm2Dial.gnls) ACF(fm2Dial.gnls, form = ~ 1 | Subject) plot(ACF(fm2Dial.gnls, form = ~ 1 | Subject), alpha = 0.05) fm3Dial.gnls <- update(fm2Dial.gnls, corr = corAR1(0.716, form = ~ 1 | Subject)) fm3Dial.gnls intervals(fm3Dial.gnls) anova(fm2Dial.gnls, fm3Dial.gnls) # restore two fitted models fm2Dial.lme <- lme(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB, Dialyzer, ~ pressure + I(pressure^2), weights = varPower(form = ~ pressure)) fm2Dial.lmeML <- update(fm2Dial.lme, method = "ML") fm3Dial.gls <- gls(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB, Dialyzer, weights = varPower(form = ~ pressure), corr = corAR1(0.771, form = ~ 1 | Subject)) fm3Dial.glsML <- update(fm3Dial.gls, method = "ML") anova( fm2Dial.lmeML, fm3Dial.glsML, fm3Dial.gnls, test = FALSE) # cleanup proc.time() q("no") nlme/inst/scripts/ch04.R0000644000176000001440000001566110550151372014572 0ustar ripleyusers#-*- R -*- # initialization library(nlme) library(lattice) options(width = 65, digits = 5) options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly")) pdf(file = 'ch04.pdf') # Chapter 4 Fitting Linear Mixed-Effects Models # 4.1 Fitting Linear Models in S with lm and lmList fm1Orth.lm <- lm(distance ~ age, Orthodont) fm1Orth.lm par(mfrow=c(2,2)) plot(fm1Orth.lm) # Figure 4.1 fm2Orth.lm <- update(fm1Orth.lm, formula = distance ~ Sex*age) summary(fm2Orth.lm) fm3Orth.lm <- update(fm2Orth.lm, formula = . ~ . - Sex) summary(fm3Orth.lm) bwplot(getGroups(Orthodont)~resid(fm2Orth.lm)) # Figure 4.2 fm1Orth.lis <- lmList(distance ~ age | Subject, Orthodont) getGroupsFormula(Orthodont) fm1Orth.lis <- lmList(distance ~ age, Orthodont) formula(Orthodont) fm1Orth.lis <- lmList(Orthodont) fm1Orth.lis summary(fm1Orth.lis) pairs(fm1Orth.lis, id = 0.01, adj = -0.5) # Figure 4.3 fm2Orth.lis <- update(fm1Orth.lis, distance ~ I(age-11)) intervals(fm2Orth.lis) plot(intervals(fm2Orth.lis)) # Figure 4.5 IGF plot(IGF) # Figure 4.6 fm1IGF.lis <- lmList(IGF) coef(fm1IGF.lis) plot(intervals(fm1IGF.lis)) # Figure 4.7 fm1IGF.lm <- lm(conc ~ age, data = IGF) summary(fm1IGF.lm) # 4.2 Fitting Linear Mixed-Effects Models with lme fm1Orth.lme <- lme(distance ~ I(age-11), data = Orthodont, random = ~ I(age-11) | Subject) fm1Orth.lme <- lme(distance ~ I(age-11), data = Orthodont) fm1Orth.lme <- lme(fm2Orth.lis) fm1Orth.lme fm2Orth.lme <- update(fm1Orth.lme, distance~Sex*I(age-11)) summary(fm2Orth.lme) fitted(fm2Orth.lme, level = 0:1) resid(fm2Orth.lme, level = 1) resid(fm2Orth.lme, level = 1, type = "pearson") newOrth <- data.frame(Subject = rep(c("M11","F03"), c(3, 3)), Sex = rep(c("Male", "Female"), c(3, 3)), age = rep(16:18, 2)) predict(fm2Orth.lme, newdata = newOrth) predict(fm2Orth.lme, newdata = newOrth, level = 0:1) fm2Orth.lmeM <- update(fm2Orth.lme, method = "ML") summary(fm2Orth.lmeM) compOrth <- compareFits(coef(fm2Orth.lis), coef(fm1Orth.lme)) compOrth plot(compOrth, mark = fixef(fm1Orth.lme)) # Figure 4.8 ## Figure 4.9 plot(comparePred(fm2Orth.lis, fm1Orth.lme, length.out = 2), layout = c(8,4), between = list(y = c(0, 0.5, 0))) plot(compareFits(ranef(fm2Orth.lme), ranef(fm2Orth.lmeM)), mark = c(0, 0)) fm4Orth.lm <- lm(distance ~ Sex * I(age-11), Orthodont) summary(fm4Orth.lm) anova(fm2Orth.lme, fm4Orth.lm) #fm1IGF.lme <- lme(fm1IGF.lis) #fm1IGF.lme #intervals(fm1IGF.lme) #summary(fm1IGF.lme) pd1 <- pdDiag(~ age) pd1 formula(pd1) #fm2IGF.lme <- update(fm1IGF.lme, random = pdDiag(~age)) (fm2IGF.lme <- lme(conc ~ age, IGF, random = pdDiag(~age))) #anova(fm1IGF.lme, fm2IGF.lme) anova(fm2IGF.lme) #update(fm1IGF.lme, random = list(Lot = pdDiag(~ age))) pd2 <- pdDiag(value = diag(2), form = ~ age) pd2 formula(pd2) lme(conc ~ age, IGF, pdDiag(diag(2), ~age)) fm4OatsB <- lme(yield ~ nitro, data = Oats, random =list(Block = pdCompSymm(~ Variety - 1))) summary(fm4OatsB) corMatrix(fm4OatsB$modelStruct$reStruct$Block)[1,2] fm4OatsC <- lme(yield ~ nitro, data = Oats, random=list(Block=pdBlocked(list(pdIdent(~ 1), pdIdent(~ Variety-1))))) summary(fm4OatsC) ## establishing the desired parameterization for contrasts options(contrasts = c("contr.treatment", "contr.poly")) fm1Assay <- lme(logDens ~ sample * dilut, Assay, random = pdBlocked(list(pdIdent(~ 1), pdIdent(~ sample - 1), pdIdent(~ dilut - 1)))) fm1Assay anova(fm1Assay) formula(Oxide) fm1Oxide <- lme(Thickness ~ 1, Oxide) fm1Oxide intervals(fm1Oxide, which = "var-cov") fm2Oxide <- update(fm1Oxide, random = ~ 1 | Lot) anova(fm1Oxide, fm2Oxide) coef(fm1Oxide, level = 1) coef(fm1Oxide, level = 2) ranef(fm1Oxide, level = 1:2) fm1Wafer <- lme(current ~ voltage + I(voltage^2), data = Wafer, random = list(Wafer = pdDiag(~voltage + I(voltage^2)), Site = pdDiag(~voltage + I(voltage^2)))) summary(fm1Wafer) fitted(fm1Wafer, level = 0) resid(fm1Wafer, level = 1:2) newWafer <- data.frame(Wafer = rep(1, 4), voltage = c(1, 1.5, 3, 3.5)) predict(fm1Wafer, newWafer, level = 0:1) newWafer2 <- data.frame(Wafer = rep(1, 4), Site = rep(3, 4), voltage = c(1, 1.5, 3, 3.5)) predict(fm1Wafer, newWafer2, level = 0:2) # 4.3 Examining a Fitted Model plot(fm2Orth.lme, Subject~resid(.), abline = 0) plot(fm2Orth.lme, resid(., type = "p") ~ fitted(.) | Sex, id = 0.05, adj = -0.3) fm3Orth.lme <- update(fm2Orth.lme, weights = varIdent(form = ~ 1 | Sex)) fm3Orth.lme plot(fm3Orth.lme, distance ~ fitted(.), id = 0.05, adj = -0.3) anova(fm2Orth.lme, fm3Orth.lme) qqnorm(fm3Orth.lme, ~resid(.) | Sex) plot(fm2IGF.lme, resid(., type = "p") ~ fitted(.) | Lot, layout = c(5,2)) qqnorm(fm2IGF.lme, ~ resid(.), id = 0.05, adj = -0.75) plot(fm1Oxide) qqnorm(fm1Oxide) plot(fm1Wafer, resid(.) ~ voltage | Wafer) plot(fm1Wafer, resid(.) ~ voltage | Wafer, panel = function(x, y, ...) { panel.grid() panel.xyplot(x, y) panel.loess(x, y, lty = 2) panel.abline(0, 0) }) with(Wafer, coef(lm(resid(fm1Wafer) ~ cos(4.19*voltage)+sin(4.19*voltage)-1))) nls(resid(fm1Wafer) ~ b3*cos(w*voltage) + b4*sin(w*voltage), Wafer, start = list(b3 = -0.0519, b4 = 0.1304, w = 4.19)) fm2Wafer <- update(fm1Wafer, . ~ . + cos(4.5679*voltage) + sin(4.5679*voltage), random = list(Wafer=pdDiag(~voltage+I(voltage^2)), Site=pdDiag(~voltage+I(voltage^2)))) summary(fm2Wafer) intervals(fm2Wafer) qqnorm(fm2Wafer) qqnorm(fm2Orth.lme, ~ranef(.), id = 0.10, cex = 0.7) pairs(fm2Orth.lme, ~ranef(.) | Sex, id = ~ Subject == "M13", adj = -0.3) fm2IGF.lme c(0.00031074, 0.0053722)/abs(fixef(fm2IGF.lme)) fm3IGF.lme <- update(fm2IGF.lme, random = ~ age - 1) anova(fm2IGF.lme, fm3IGF.lme) qqnorm(fm1Oxide, ~ranef(., level = 1), id=0.10) qqnorm(fm1Oxide, ~ranef(., level = 2), id=0.10) #fm3Wafer <- update(fm2Wafer, # random = list(Wafer = ~voltage+I(voltage^2), # Site = pdDiag(~voltage+I(voltage^2))), # control = list(msVerbose = TRUE, msMaxIter = 200) # ) #fm3Wafer #anova(fm2Wafer, fm3Wafer) #fm4Wafer <- update(fm2Wafer, # random = list(Wafer = ~ voltage + I(voltage^2), # Site = pdBlocked(list(~1, # ~voltage+I(voltage^2) - 1))), # control = list(msVerbose = TRUE, # msMaxIter = 200)) #fm4Wafer #anova(fm3Wafer, fm4Wafer) #qqnorm(fm4Wafer, ~ranef(., level = 2), id = 0.05, # cex = 0.7, layout = c(3, 1)) # The next line is not in the book but is needed to get fm1Machine fm1Machine <- lme(score ~ Machine, data = Machines, random = ~ 1 | Worker) (fm3Machine <- update(fm1Machine, random = ~Machine-1|Worker)) # cleanup proc.time() q("no") nlme/inst/scripts/ch03.R0000644000176000001440000000747110550151372014571 0ustar ripleyusers#-*- R -*- # initialization library(nlme) options(width = 65, digits = 5) options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly")) pdf(file = 'ch03.pdf') # Chapter 3 Describing the Structure of Grouped Data # 3.1 The Display Formula and Its Components formula( Rail ) formula( ergoStool ) formula( Machines ) formula( Orthodont ) formula( Pixel ) formula( Oats ) table( Oxboys$Subject ) table( getGroups( Oxboys ) ) unique( table( getGroups( Oxboys ) ) ) # a more concise result unique( table( getCovariate( Oxboys ), getGroups( Oxboys ) ) ) length( unique( getCovariate( Oxboys ) ) ) unique( getGroups(Pixel, level = 1) ) unique( getGroups(Pixel, level = 2) ) Pixel.groups <- getGroups( Pixel, level = 1:2 ) class( Pixel.groups ) names( Pixel.groups ) unique( Pixel.groups[["Side"]] ) formula( PBG ) PBG.log <- update( PBG, formula = deltaBP ~ log(dose) | Rabbit ) formula(PBG.log) unique( getCovariate(PBG.log) ) unique( getCovariate(PBG) ) # 3.2 Constructing groupedData Objects # The next line is not from the book. # It is added to ensure that the file is available write.table( Oxboys, "oxboys.dat" ) Oxboys.frm <- read.table( "oxboys.dat", header = TRUE ) class( Oxboys.frm ) # check the class of the result dim( Oxboys.frm ) # check the dimensions Oxboys <- groupedData( height ~ age | Subject, data = read.table("oxboys.dat", header = TRUE), labels = list(x = "Centered age", y = "Height"), units = list(y = "(cm)") ) Oxboys # display the object unique( getGroups( Oxboys ) ) plot( BodyWeight, outer = ~ Diet, aspect = 3 ) # Figure 3.3 plot( BodyWeight, outer = TRUE, aspect = 3 ) plot( Soybean, outer = ~ Year * Variety ) # Figure 6.10 plot( Soybean, outer = ~ Variety * Year ) gsummary( BodyWeight, invar = TRUE ) plot( PBG, inner = ~ Treatment, scales = list(x = list(log = 2))) ergoStool.mat <- asTable( ergoStool ) ergoStool.mat ergoStool.new <- balancedGrouped( effort ~ Type | Subject, data = ergoStool.mat ) ergoStool.new # 3.3 Controlling Trellis Graphics Presentations of Grouped Data plot(CO2, layout=c(6,2), between=list(x=c(0,0,0.5,0,0))) plot( Spruce, layout = c(7, 4, 3), skip = c(rep(FALSE, 27), TRUE, rep(FALSE, 27), TRUE, rep(FALSE, 12), rep(TRUE, 2), rep(FALSE,13)) ) plot( Spruce, layout = c(9, 3, 3), skip = c(rep(FALSE, 66), TRUE, TRUE, rep(FALSE, 13)) ) unique( getCovariate(DNase) ) log( unique(getCovariate(DNase)), 2 ) plot( DNase, layout=c(6,2), scales = list(x=list(log=2)) ) plot(Pixel, layout = c(4,5), between = list(x = c(0, 0.5, 0), y = 0.5)) plot( Pixel, displayLevel = 1 ) plot( Wafer, display = 1, collapse = 1 ) plot( Wafer, display = 1, collapse = 1, FUN = function(x) sqrt(var(x)), layout = c(10,1) ) # 3.4 Summaries sapply( ergoStool, data.class ) gsummary( Theoph, inv = TRUE ) gsummary( Theoph, omit = TRUE, inv = TRUE ) is.null(gsummary(Theoph, inv = TRUE, omit = TRUE)) # invariants present is.null(gsummary(Oxboys, inv = TRUE, omit = TRUE)) # no invariants gsummary( Theoph ) gsummary( Theoph, FUN = max, omit = TRUE ) Quin.sum <- gsummary( Quinidine, omit = TRUE, FUN = mean ) dim( Quin.sum ) Quin.sum[1:10, ] Quinidine[Quinidine[["Subject"]] == 3, 1:8] Quin.sum1 <- gsummary( Quinidine, omit = TRUE ) Quin.sum1[1:10, 1:7] summary( Quin.sum1 ) summary( Quinidine ) sum( ifelse(is.na(Quinidine[["conc"]]), 0, 1) ) sum( !is.na(Quinidine[["conc"]]) ) sum( !is.na(Quinidine[["dose"]]) ) gapply( Quinidine, "conc", function(x) sum(!is.na(x)) ) table( gapply(Quinidine, "conc", function(x) sum(!is.na(x))) ) changeRecords <- gapply( Quinidine, FUN = function(frm) any(is.na(frm[["conc"]]) & is.na(frm[["dose"]])) ) changeRecords sort( as.numeric( names(changeRecords)[changeRecords] ) ) Quinidine[29:31,] Quinidine[Quinidine[["Subject"]] == 4, ] # cleanup proc.time() q("no") nlme/inst/mlbook/0000755000176000001440000000000012131311354013467 5ustar ripleyusersnlme/inst/mlbook/README0000644000176000001440000000031710132476060014355 0ustar ripleyusersThe scripts in this directory reproduce some of the examples from the book Snijders, Tom and Bosker, Roel (1999), Multilevel Analysis: An Introduction to Basic and Advanced Multilevel Modeling, Sage. nlme/inst/mlbook/ch05.R0000644000176000001440000000100410357232624014356 0ustar ripleyuserslibrary(nlme) # data(bdf) ## Model with random slope for IQ.ver.cen ## Compare with Table 5.1, p. 71. fm5 <- lme(langPOST ~ IQ.ver.cen + avg.IQ.ver.cen, data = bdf, random = ~ IQ.ver.cen, method = "ML") summary(fm5) VarCorr(fm5) -2 * c(logLik(fm5)) # deviance ## Add centered class size and interaction ## Compare with Table 5.2, p. 75 fm6 <- update(fm5, langPOST ~ avg.IQ.ver.cen + IQ.ver.cen * grpSiz.cen) summary(fm6) VarCorr(fm6) -2 * c(logLik(fm6)) # deviance nlme/inst/mlbook/ch04.R0000644000176000001440000000163010357232614014361 0ustar ripleyuserslibrary(nlme) # data(bdf) ## Fit the null model ## Compare with Table 4.1, p. 47 fm1 <- lme(langPOST ~ 1, data = bdf, random = ~ 1 | schoolNR) VarCorr(fm1) -2*c(logLik(fm1)) # deviance ## Fit model with fixed IQ term and random intercept ## Compare with Table 4.2, p. 49 ## From the results in Tables 4.2 and 4.4, it appears that ## maximum likelihood fits are used, not REML fits. fm2 <- update(fm1, langPOST ~ IQ.ver.cen) summary(fm2) VarCorr(fm2) -2 * c(logLik(fm2)) # deviance ## Purely fixed-effects model for comparison ## Compare with Table 4.3, p. 51 fm3 <- lm(langPOST ~ IQ.ver.cen, data = bdf) summary(fm3) -2 * c(logLik(fm3)) # deviance ## Model with average IQ for the school ## Compare with Table 4.4, p. 55 fm4 <- update(fm2, langPOST ~ IQ.ver.cen + avg.IQ.ver.cen) summary(fm4) VarCorr(fm4) -2 * c(logLik(fm4)) # deviance nlme/tests/0000755000176000001440000000000012223220012012361 5ustar ripleyusersnlme/tests/anova.gls.R0000644000176000001440000000145711241766650014431 0ustar ripleyusers## Example of scoping problem. ## Originally from a report by Markus Jantti: ## https://stat.ethz.ch/pipermail/r-help/2005-November/081382.html library(nlme) ## stolen from example(anova.gls) # AR(1) errors within each Mare fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) # variance changes with a power of the absolute fitted values? fm2 <- update(fm1, weights = varPower()) anova(fm1, fm2) ## now define a little function dummy <- function(obj) anova(obj[[1]], obj[[2]]) dummy(list(fm1, fm2)) ## last failed < 3.1-66 ## PR#13567 fm1Orth.gls <- gls(distance ~ Sex * I(age - 11), Orthodont, correlation = corSymm(form = ~ 1 | Subject), weights = varIdent(form = ~ 1 | age)) anova(fm1Orth.gls, Terms = "Sex") nlme/tests/nlme.R0000644000176000001440000000015710132476001013452 0ustar ripleyuserslibrary(nlme) data(Loblolly) fm1 <- nlsList(SSasymp, Loblolly) fm1 fm2 <- nlme(fm1, random = Asym ~ 1) fm2 q() nlme/tests/lme.Rout.save0000644000176000001440000001240211611301115014751 0ustar ripleyusers R Under development (unstable) (2011-07-19 r56420) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(nlme) > fm1 <- lmList(Oxboys) > fm1 Call: Model: height ~ age | Subject Data: Oxboys Coefficients: (Intercept) age 10 130.2616 3.722915 26 137.9927 5.588783 25 139.2105 4.024081 9 138.1369 6.009057 2 142.8584 5.440176 6 146.7908 3.963171 7 146.1279 4.990050 17 142.9777 8.611780 16 147.5447 4.545196 15 144.2759 7.124260 8 148.2929 6.464712 20 151.4707 4.374466 1 148.1203 7.178151 18 151.1804 5.957793 5 151.4293 6.246128 23 151.0645 7.185123 11 150.0467 8.506082 21 150.5210 7.497794 3 155.6508 4.774669 24 153.1404 6.764705 22 154.5670 8.087514 12 156.8106 7.015468 13 156.0714 8.493806 14 159.4738 8.670886 19 164.5761 9.065620 4 165.0724 9.360561 Degrees of freedom: 234 total; 182 residual Residual standard error: 0.6598878 > fm2 <- lme(fm1) > fm2 Linear mixed-effects model fit by REML Data: Oxboys Log-restricted-likelihood: -362.0455 Fixed: height ~ age (Intercept) age 149.371753 6.525469 Random effects: Formula: ~age | Subject Structure: General positive-definite, Log-Cholesky parametrization StdDev Corr (Intercept) 8.081077 (Intr) age 1.680717 0.641 Residual 0.659889 Number of Observations: 234 Number of Groups: 26 > > # bug report from Arne.Mueller@sanofi-aventis.com > mod <- distance ~ age + Sex > fm3 <- lme(mod, Orthodont, random = ~ 1) > predict(fm3, Orthodont) M01 M01 M01 M01 M02 M02 M02 M02 25.39237 26.71274 28.03311 29.35348 21.61052 22.93089 24.25126 25.57163 M03 M03 M03 M03 M04 M04 M04 M04 22.36689 23.68726 25.00763 26.32800 24.41990 25.74027 27.06064 28.38101 M05 M05 M05 M05 M06 M06 M06 M06 21.28636 22.60673 23.92710 25.24747 24.20379 25.52416 26.84453 28.16490 M07 M07 M07 M07 M08 M08 M08 M08 21.93468 23.25505 24.57542 25.89579 22.04273 23.36310 24.68347 26.00384 M09 M09 M09 M09 M10 M10 M10 M10 23.12326 24.44363 25.76400 27.08437 26.90511 28.22548 29.54585 30.86622 M11 M11 M11 M11 M12 M12 M12 M12 21.82663 23.14700 24.46737 25.78774 22.36689 23.68726 25.00763 26.32800 M13 M13 M13 M13 M14 M14 M14 M14 22.36689 23.68726 25.00763 26.32800 22.90715 24.22753 25.54790 26.86827 M15 M15 M15 M15 M16 M16 M16 M16 23.77158 25.09195 26.41232 27.73269 21.28636 22.60673 23.92710 25.24747 F01 F01 F01 F01 F02 F02 F02 F02 19.56700 20.88737 22.20774 23.52811 20.97168 22.29205 23.61243 24.93280 F03 F03 F03 F03 F04 F04 F04 F04 21.62000 22.94037 24.26074 25.58111 22.59248 23.91285 25.23322 26.55359 F05 F05 F05 F05 F06 F06 F06 F06 20.64753 21.96790 23.28827 24.60864 19.35089 20.67126 21.99163 23.31200 F07 F07 F07 F07 F08 F08 F08 F08 20.97168 22.29205 23.61243 24.93280 21.29584 22.61621 23.93658 25.25695 F09 F09 F09 F09 F10 F10 F10 F10 19.35089 20.67126 21.99163 23.31200 17.08178 18.40215 19.72252 21.04289 F11 F11 F11 F11 23.88911 25.20948 26.52985 27.85022 attr(,"label") [1] "Predicted values (mm)" > > ## bug report and fix from Dimitris Rizopoulos and Spencer Graves: > ## when 'returnObject = TRUE', do not stop() but give warning() on non-convergence: > fm1 <- lme(distance ~ age, data = Orthodont, + control = lmeControl(msMaxIter = 1, returnObject = TRUE)) Warning message: In lme.formula(distance ~ age, data = Orthodont, control = lmeControl(msMaxIter = 1, : nlminb problem, convergence error code = 1 message = iteration limit reached without convergence (10) > > ## based on bug report on R-help > predict(fm3, Orthodont[1,]) M01 25.39237 attr(,"label") [1] "Predicted values (mm)" > # failed in 3.1-88 > > ## wrong results from getData: > load("ss2.rda") > m1 <- lme(PV1MATH ~ ESCS + Age +time , + random = ~ time|SCHOOLID, + data = ss2, + weights = varIdent(form=~1|time), + corr = corCompSymm(form=~1|SCHOOLID/StIDStd), + na.action = na.omit) > plot(m1, resid(.) ~ WEALTH) > > m2 <- lme(PV1MATH ~ ESCS + Age +time , + random = ~ time|SCHOOLID, + data = ss2, + weights = varIdent(form=~1|time), + corr = corCompSymm(form=~1|SCHOOLID/StIDStd), + na.action = na.omit) > plot(m2, resid(.) ~ WEALTH) > nlme/tests/data.frame.R0000644000176000001440000000013210132476001014512 0ustar ripleyuserslibrary(nlme) subs<-rep(LETTERS[1:10],rep(3,10)) resp<-rnorm(30) groupedData(resp~1|subs) nlme/tests/missing.R0000644000176000001440000000123210633742254014177 0ustar ripleyuserslibrary(nlme) options(digits=4) # avoid rounding differences Ovary[c(1,272), 2] <- NA fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare), na.action=na.exclude) fitted(fm1) residuals(fm1) summary(fm1) Orthodont[100:102, 2] <- NA fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1, na.action=na.exclude) fitted(fm2, 0:1) fitted(fm2) residuals(fm2, 0:1) round(residuals(fm2), 2) summary(fm2) Soybean[1:5, "Time"] <- NA fm3 <- gnls(weight ~ SSlogis(Time, Asym, xmid, scal), Soybean, weights = varPower(), na.action=na.exclude) fitted(fm3) residuals(fm3) summary(fm3) nlme/tests/contrMat.R0000644000176000001440000000351710602467112014316 0ustar ripleyusers## problem reported by Christian Ritz on R-help, Tue, 20 Mar 2007 14:55:38 ## Dataset PestSci from package drc PestSci <- data.frame(CURVE = rep(1:5, each=21), HERBICIDE = rep(c("bentazon", "diuron"), times=c(63, 42)), DOSE = rep(c(0, 0.62, 1.85, 5.56, 16.67, 50, 150, 0, 0.62, 1.85, 5.56, 16.67, 50, 150, 0, 0.15, 0.59, 2.34, 9.38, 37.5, 150, 0, 0.01, 0.03, 0.1, 0.3, 1, 3, 0, 0.01, 0.03, 0.1, 0.3, 1, 3), each = 3), SLOPE = c(1.81295, 1.86704, 1.95606, 1.39073, 1.15721, 1.06126, 0.99409, 0.83298, 0.8334, 0.72513, 0.69548, 0.65299, 0.49855, 0.36873, 0.42617, 0.26666, 0.26896, 0.25989, 0.16074, 0.16404, 0.1475, 1.02654, 0.91306, 0.89371, 0.59074, 0.669, 0.5965, 0.37561, 0.44823, 0.42093, 0.31874, 0.27342, 0.2725, 0.27182, 0.21752, 0.19981, 0.17332, 0.17949, 0.15623, 0.12855, 0.14524, 0.11533, 1.03872, 1.0917, 1.10324, 0.94274, 0.91256, 1.02352, 0.78689, 0.69706, 0.65989, 0.5372, 0.51324, 0.54981, 0.37401, 0.34033, 0.32491, 0.30518, 0.24593, 0.289, 0.17414, 0.12275, 0.14788, 2.20963, 2.27931, 2.14703, 2.18831, 2.08863, 2.06676, 2.18827, 2.10748, 1.84474, 1.78805, 1.75547, 1.61381, 0.70295, 0.6983, 0.74045, 0.20673, 0.20784, 0.22402, 0.05268, 0.06519, 0.09258, 1.94033, 1.80193, 1.71586, 1.71586, 1.98471, 1.74905, 1.87795, 1.64081, 1.53094, 1.50709, 1.41035, 1.35367, 0.64427, 0.62185, 0.60337, 0.14073, 0.12928, 0.15016, 8e-05, 0.00262, 0.00303)) library(nlme) sv <- c(0.43355869, 2.49963220, 0.05861799, 1.73290589, 0.38153146, 0.24316978) nlme(SLOPE ~ c + (d-c)/(1+exp(b*(log(DOSE)-log(e)))), fixed = list(b ~ factor(HERBICIDE)-1, c ~ 1, d ~ 1, e ~ factor(HERBICIDE)-1), random = d ~ 1 | CURVE, start = sv, data = PestSci) ## failed in contrMat in 3.1-78 nlme/tests/predict.lme.R0000644000176000001440000000272612223220012014721 0ustar ripleyusers## from PR#8905 library(nlme) fm <- lme(distance ~ poly(age, 3) + Sex, data = Orthodont, random = ~ 1) # data for predictions Newdata <- head(Orthodont) Newdata$Sex <- factor(Newdata$Sex, levels = levels(Orthodont$Sex)) (pr <- predict(fm, Newdata)) stopifnot(all.equal(c(pr), fitted(fm)[1:6])) ## https://stat.ethz.ch/pipermail/r-devel/2013-September/067600.html ## but with a different fix. m0 <- lme(distance ~ Sex, random = ~1|Subject, data = Orthodont) Fitted <- predict(m0, level = 0) Fitted.Newdata <- predict(m0, level = 0, newdata = Orthodont) stopifnot(sum(abs(Fitted - Fitted.Newdata)) == 0) Fitted <- predict(m0, level = 1) Fitted.Newdata <- predict(m0, level = 1, newdata = Orthodont) sum(abs(Fitted - Fitted.Newdata)) stopifnot(sum(abs(Fitted - Fitted.Newdata)) == 0) m1 <- lme(distance ~ 1, random = ~1|Subject, data = Orthodont) Fitted <- predict(m1, level = 0) Fitted.Newdata <- predict(m1, level = 0, newdata = Orthodont) stopifnot(sum(abs(Fitted - Fitted.Newdata)) == 0) Fitted <- predict(m1, level = 1) Fitted.Newdata <- predict(m1, level = 1, newdata = Orthodont) stopifnot(sum(abs(Fitted - Fitted.Newdata)) == 0) m2 <- lme(distance ~ 0, random = ~1|Subject, data = Orthodont) Fitted <- predict(m2, level = 0) Fitted.Newdata <- predict(m2, level = 0, newdata = Orthodont) stopifnot(sum(abs(Fitted - Fitted.Newdata)) == 0) Fitted <- predict(m2, level = 1) Fitted.Newdata <- predict(m2, level = 1, newdata = Orthodont) stopifnot(sum(abs(Fitted - Fitted.Newdata)) == 0) nlme/tests/update.R0000644000176000001440000000042710132476001014001 0ustar ripleyuserslibrary(nlme) data(petrol, package = 'MASS') Petrol <- petrol Petrol[, 2:5] <- scale(Petrol[, 2:5], scale = F) pet3.lme <- lme(Y ~ SG + VP + V10 + EP, random = ~ 1 | No, data = Petrol, method="ML") nform <- as.formula("Y ~ SG + VP + V10") update(pet3.lme, nform) nlme/tests/augPredmissing.R0000644000176000001440000000035710132476001015502 0ustar ripleyuserslibrary(nlme) data(Orthodont) # add a column with an NA that is not used in the fit Orthodont$Others = runif(nrow(Orthodont)) is.na(Orthodont$Others[3]) = TRUE fm1 = lme(Orthodont, random = ~1) augPred(fm1, length.out = 2, level = c(0,1)) nlme/tests/coef.R0000644000176000001440000000071210673465273013453 0ustar ripleyusers## tests of fix for PR#9831 library(nlme) val <- c("10"=1.10,"14"=1.14) vf <- varIdent(value=val, form=~1|age, fixed=c("12"=1.12)) vfi <- Initialize(vf,Orthodont) str(vfi) coef(vfi) coef(vfi, unconstrained = FALSE, allCoef = TRUE) vfiCopy <- vfi # copy of an initialized object length(vfiCopy) # length is 2 coef(vfiCopy) <- c(11,12) # error in 3.1-84 ## error in 3.1-84 gls.error <- gls(distance ~ age, weights = vfi, data=Orthodont) nlme/tests/deparse.R0000644000176000001440000002337310375335051014157 0ustar ripleyusers# Tests to make sure that the deparse(as.vector(x)) construction is not # tripping us up again. library(nlme) data(Loblolly) fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, fixed = Asym + R0 + lrc ~ 1, random = Asym ~ 1, start = c(Asym = 103, R0 = -8.5, lrc = -3.3)) fm1 model <- height ~ SSasymp(age, Asym, R0, lrc) fixed <- Asym + R0 + lrc ~ 1 random <- Asym ~ 1 start <- c(Asym = 103, R0 = -8.5, lrc = -3.3) fm2 <- nlme(model, data = Loblolly, fixed = fixed, random = random, start = start) fm2 ## deparse can give multiple lines ## example from https://stat.ethz.ch/pipermail/r-help/2006-February/086648.html "mydata2" <- structure(list(Tps = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 17, 17, 17, 17, 17, 20, 20, 20, 20, 25, 28, 29, 50, 50, 50, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 17, 17, 17, 17, 17, 20, 20, 20, 20, 25, 28, 29, 50, 50, 50, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 17, 17, 17, 17, 17, 20, 20, 20, 20, 25, 28, 29, 50, 50, 50, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136), Conc = c(0, 0, 0, 0, 0, 0, 0, 0.807852503274902, 0.204371494701886, 0.579222129993907, 0.989062273721619, 0, 1.11728297897571, 1.41057428121324, 0.888883702851307, 1.259907624008, 1.45753269675829, 1.07077516747401, 0.843279379, 0, 0.763110069196737, 1.11297791434297, 1.10087763997637, 0.946929594501016, 1.33112168, 0.654041755, 0.694167499, 1.289548703, 1.117139864, 0.807196192, 0.720221376552025, 0.560082823, 0.476583438, 2.590855204, 0.51510972, 1.072946887, 0.537999938614396, 0.886684225905255, 0.630178116793598, 1.31534758842196, 1.33333958571746, 0.922032210748255, 0.429930193046174, 1.35881467717335, 0.790045927902363, 1.22484702570724, 0.808104508207897, 1.31185966817903, 1.51837686425553, 1.74105163638734, 1.80365598487402, 1.13240352674377, 1.50086243061644, 2.06355364280445, 0.439350890906039, 1.54692793444949, 1.78758216051046, 1.09043400023239, 0.811328376840514, 0.459192443530981, 0.695333473157298, 0.387995007681174, 0.784627063444921, 1.02282256375842, 0.382687104107726, 0.554290634950242, 0.130420456296453, 0.324194753224919, 0.31106140274139, 0.513473505828888, 0.878620320248701, 1.18404358659996, 0.136926837896477, 0, 0, 0.835588760032974, 0.558617235576616, 1.21002805866839, 0.769381068031404, 1.04514254228094, 0.373251847173678, 0.389005898972802, 0.183141006154896, 0.223596336820146, 0.315526423315647, 0.0930349732768131, 0.169959185212759, 0.161878841748425, 0, 0.0483041009105874, 0, 0, 0, 0.0777005553478052, 0, 0.153175826795441, 0.0428171049833677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26.564295705327, 5.5893744508169, 7.22612934071834, 36.6563989567777, 0, 28.8967184437329, 28.4030370337251, 28.0886043901352, 26.1230935842208, 28.8895673910072, 42.6814210131968, 32.3555695551062, 0.76883326657205, 34.6159136622156, 38.329242204291, 56.4476583636484, 26.6249506083603, 31.3001451026823, 23.7339071829084, 23.3702284599355, 36.669903715038, 44.7377244306005, 31.2079335923023, 32.8613384312272, 29.4259634309146, 45.6112405959009, 48.1231689836687, 55.0037961570027, 32.9822316456421, 20.0382768189682, 26.0986380308655, 28.8915584506145, 28.7949023823068, 30.0278417498425, 58.8089779973569, 20.3602570111197, 29.6269605259023, 28.4404986724604, 30.2165182590977, 19.9204461889074, 31.1019196559556, 30.3847467747055, 36.8726911479995, 51.0618036275519, 23.5408013442579, 36.6948355347593, 27.4753860809429, 24.1341667099646, 27.5411488989643, 35.9021799354022, 19.7417897046158, 31.1403887303244, 46.1743622734049, 34.8235854891765, 22.1714704189293, 33.6805966894274, 35.2814908686112, 42.9767437212852, 38.1264997164547, 5.3651357974451, 42.8990434918385, 25.4908883698364, 25.99649502, 36.4958105490917, 40.8004126550705, 5.36867162116895, 0.00898476265269363, 0, 27.6810997945798, 28.7918300045713, 45.7577183830352, 35.9276318604787, 34.9717618087238, 29.620354272564, 24.6537513599869, 13.5363982464958, 25.8289073574818, 12.0090406245759, 4.753436805, 11.849214652228, 8.41410147611612, 0, 1.80855352862552, 1.1987530031681, 1.01148025243171, 0.495675369574172, 1.62701127228732, 0, 16.6288242287241, 1.23656061354912, 0.323708776035328, 0, 0.566916625204436, 0, 0, 0, 0, 0, 0, 0, 2.53578781871283, 3.50083667130797, 0, 0.98049572179098, 0, 3.57129673217304, 2.77298867949388, 2.12302645642669, 4.11923869203499, 4.69069462193674, 2.8698666062651, 2.05079837323067, 0.0602771574448942, 5.96454350250626, 2.26267114439802, 3.06911285674854, 2.04233129537404, 2.62181873844029, 1.51813653072598, 1.46193772981073, 2.69864635755833, 3.44016493913122, 2.50834832469627, 3.48170744166168, 1.00637581555435, 1.67065398473081, 4.18855363095027, 3.39649762611015, 1.72804613460423, 1.40053679329531, 2.37032387724109, 3.19332545080983, 2.49474373894248, 2.17800931288708, 2.7601484443213, 0.91266104095844, 1.93485048639199, 1.19692593420788, 1.79537330666258, 2.14020930767983, 3.0122526724942, 2.81112226980754, 3.54890724398174, 3.01022926452999, 2.38263226710738, 3.53569238341869, 3.47869329713911, 0.679333339820719, 2.4764260756438, 3.82615100065366, 2.20449890383871, 1.371303113329, 1.2427787019995, 1.73319133880954, 0.391268883238408, 1.73610193837913, 2.68494324646718, 1.77065393606844, 1.45079980147062, 0.763775702906329, 0.98566725668627, 0.37838763208699, 0.841811919286804, 1.46436462204795, 1.98409602726, 0.507005887891038, 0.465515668274195, 0, 1.873365675227, 1.69023864630648, 2.65530855919137, 2.34392199908302, 1.61917643594837, 1.05165934333345, 0.564642823436471, 0.121621029620328, 0.515007625737071, 0.524345809084086, 0.130898614090571, 0.332427740242623, 0.110214989555118, 0, 0.128642193589, 0.119407067173878, 0.128926224027295, 0.0622331866694357, 0.215645168287442, 0, 0.859343941945178, 0.0500810300696456, 0, 0, 0.0628746592609754), Organ = structure(as.integer(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)), .Label = c("Carc", "TD", "Foie"), class = c("ordered", "factor"))), .Names = c("Tps", "Conc", "Organ"), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", "250", "251", "252", "253", "254", "255", "256", "257", "258", "259", "260", "261", "262", "263", "264", "265", "266", "267", "268", "269", "270", "271", "272", "273", "274", "275", "276", "277", "278", "279", "280", "281", "282", "283", "284", "285", "286", "287", "288", "289", "290", "291", "292", "293", "294", "295", "296", "297", "298", "299", "300"), class = c("nfnGroupedData", "nfGroupedData", "groupedData", "data.frame"), formula = quote(Conc ~ Tps | Organ), FUN = function (x) max(x, na.rm = TRUE), order.groups = TRUE) mydata2$Dose <- 100 mymod3 <- nlsList(Conc+1 ~ Dose * exp(lKe+lKa-lCl) * (exp(-exp(lKe)*Tps)-exp(-exp(lKa)*Tps)) /(exp(lKa)-exp(lKe)) | Organ, data=mydata2, start= c(lKe=-2.77, lKa=-1.41, lCl=-1.13)) mymod3 nlme/tests/nlme.Rout.save0000644000176000001440000000344510247773204015156 0ustar ripleyusers R : Copyright 2005, The R Foundation for Statistical Computing Version 2.2.0 Under development (unstable) (2005-05-11), ISBN 3-900051-07-0 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for a HTML browser interface to help. Type 'q()' to quit R. > library(nlme) > data(Loblolly) > fm1 <- nlsList(SSasymp, Loblolly) > fm1 Call: Model: height ~ SSasymp(age, Asym, R0, lrc) | Seed Data: Loblolly Coefficients: Asym R0 lrc 329 94.12820 -8.250753 -3.217578 327 94.94058 -7.757495 -3.229325 325 89.88487 -8.759017 -3.086219 307 110.69919 -8.169431 -3.390345 331 111.00287 -8.462608 -3.397574 311 109.98575 -8.558543 -3.362518 315 101.05622 -8.443628 -3.232825 321 127.13400 -7.679356 -3.575331 319 101.08748 -8.502343 -3.214021 301 95.66688 -9.078241 -3.116381 323 95.55627 -9.665035 -3.092266 309 113.51390 -7.595622 -3.352815 303 105.71792 -8.906081 -3.222957 305 99.17191 -9.916654 -3.084841 Degrees of freedom: 84 total; 42 residual Residual standard error: 0.7003965 > fm2 <- nlme(fm1, random = Asym ~ 1) > fm2 Nonlinear mixed-effects model fit by maximum likelihood Model: height ~ SSasymp(age, Asym, R0, lrc) Data: Loblolly Log-likelihood: -114.743 Fixed: list(Asym ~ 1, R0 ~ 1, lrc ~ 1) Asym R0 lrc 101.448300 -8.627494 -3.233730 Random effects: Formula: Asym ~ 1 | Seed Asym Residual StdDev: 3.650645 0.7188624 Number of Observations: 84 Number of Groups: 14 > q() nlme/tests/augPred_lab.R0000644000176000001440000000065610433151560014734 0ustar ripleyuserslibrary(nlme) if(require("Hmisc")) { T.aug <- Orthodont label(T.aug$age) <- 'anyL' foo <- augPred(lme(distance ~ age, random = ~1|Subject, data=T.aug)) ## failed in 3.1-72 } ## failed even if there is a variable with a class that is not being used. T.aug <- Orthodont T.aug$newage <- T.aug$age class(T.aug$newage) <- 'anyC' foo <- augPred(lme(distance ~ age, random = ~1|Subject, data=T.aug)) ## failed in 3.1-72 nlme/tests/ss2.rda0000644000176000001440000001131111611301115013561 0ustar ripleyusers‹ í\y”Õ¹ŸÕaYrTT\ÀÄDºönŸœj@pyá¬c†A`XfïžžÁ¸!Ä—<å7$ÂðÅŒK("žF@ÄgdFd6Aáè»·¾{«ûûj˜ ž¼ÿ¨>çRýýê»ßz¿ûUMÑuÇ€ÑjÞè¼´´´Œ´Œ ÓÓ22Ù׬ öO:¹ldΜ©²/b_۳ёéc7]uñçom½Û>úæãkû9»Î¾þ“çžœk×½t{‡º!éöš{†l9ºì¬ý«‡_þ~Î8ûì•ý{-)Ÿë_:º¬ïΧidñ‰n×ô¶õ©Ùžg?¶®ð¢èÐ%öÆ)¹þö²žÎŠ?öî82ër{cö[é‹Kú8õ«f~ùÊägíMÙ?»ôíÕö±‰=·²)öñ¾÷-þ(¯¯ÝàŠoŽþ)¦O}ÇnþéÊ}Êég¥ÜšffyZÎsÎkY—=VúÖ½ö'ãöë~÷{Ï£c{œ\û¨}4²æÀ¡o8;ui¾à‘×µgª|÷_×:›™qwýü¤³ïg®»cD¡}úðønæf:ÇÞ¿ïÆ3Õ íÓµ\a‰Ý¼éÌ%«f°ŸÛ8ê…yk¯³ßm¼œ[è,wÝ.¶ßßÙåþžÚ¯}òïã=ñ·öæõW7 ?è4_›âU݉ΒµÜ uÎ6ëï¼pä)gëÛ^ò£'?s>¾öût}zµÓÀÍkxÓÙòî«‘Ñïqv_[Z0ÿøç ú¿Yì4C¼&¶ü?Ú[–=Öþ³O·:0pÚ–îö‘KG3Ëz9Íí;]÷fŸƒÎn…®–ݸèÃ^7=uÈ‹ë °ËÞÇáƒkìm=nÊ|©ÁÞžÿòzuãh§aQƬŸÞÒÞ9•6e×C˧Û/MÛÒíØžGí zÖáŠér=H>{Ï®a^öt\ý÷çí}ή>GnûÛ‹Î˧Ÿá39à¯ÝôUÏ{›¶MަíZÓÕl< írŽ@þ­âxBäkýü§Z´ÂÙ[âè¼Á£ù³¸ÝœÕLJÜÛåêÛé‘]‡uà×_ü²ŒŒŒ0÷Z® <ç-Èh‹Þ ‚·6¿-2ÏG[|lçÍok ƒ|ùòÑâ@·—Oœ=±x&ûÖ™¦GÄ— %ä}S¼oª÷M“,ù%Ld/.œ)å{Z'Ž/6ƒ}û6MÜÓFûŒÊã»v”+dŸhèâòÝ·®¼8Ú'tþRÖéÇ^í“Fèp”ó<9=Ýíáù.çIZÊ—ó¼£Ä‰\OŽœ/ô÷!ò<û—’óä(í¤´O>ÑãʼnøçÙ/ôzòå|jô³ŽK>µWÆYúÕ£å8†¢$nÒNê±Û›7Šäi)ɯ´/†åzqXÚrœ<{H¤ož<;¤ßÔ.Ÿÿ2>RŸ”OóIÖ3]w¾|õÔGPA}õÔÇ÷©jÓ’÷´éÁøAŒ`ü ÆùÜ#ãÿÈ÷´ߥÁ]&?çÞ‹Ê;ÖtyÚ®k¦dmù†Tnˆ0nFö)ÆÄÎgïaÇ"v~ »ÅèÄîœoJì†6÷)YW²ó+Øœ`dïHŽÜ;l^öCLçÆÿ:³p=£W¥¥µ[ÊÎý˜Í­`Ç2vœÎ=ÆÎ½Ãøæ³ïo0Þ„ÝldΆ‘3PŒÕ0Ò1ü4ã/a2^ƒ‘†‘UÊÆA†1?²NÂHÿšÛ—¹ÿÁŽµÌž|Ù̧œÆäÈfvdMd2úÂHcögìeØv6æ1f{»›!6Ù_0[ö3>FƧ ûœéÜÆxY òXì3ã ã¼±yÃòä#ÈǹóÁã/‡wQ'ÿ×ÒÅÅ÷½ ùg^àü«/²þuA>~8#ÈÇv ‹: ÷Jmج{Š‹Æ *gØŒ¢Ù…¥ÛrY×â³[ù솋Ï´4!S`çé)ß³RFv ò[’—z_‘•r^Ú“•Âs.2Sx²Rä¤êO-ÉÊ òRÏeLÆ'U>µ‡êL':$–:'ÈG ÿ0hKäçÜMpdQqqá䉂Ì-˜ZX\e¾€Þ“f 4D™­PáTJ µ™BÚµP+²ECÚ5«*Üf Ù¢‡Z¡TD!Ët¤Ý@œâ4tD¡y&²ÅBR,$ÅBR ¢Ð¼°(Á0ÒŽœ›Š„Z¡ÔV(­ ùAvFPŽ"‘©X»¡VI“&MLZ­‘ –ìýWŒ6‘&uLš­‘*Ö«ªçCbE*‘lµJ†1‰Ã®a«4g ›¡a÷5,YÇ¢t̬­’Ø#» cE–lààX”EØ}Sk™ vç`wvç`wvç`wvç`wvç`wvçóØÃ­©M[©àP*Øaœ`/wÕDsÕ0òA3ÐY¯]CÌzyh`# UÁ$2Ò²Ua‰ ‡¨!ÃHr$‚ÏzÛD;(Qoe ZW0­DÈy ÑŠ×Â$MÎx¾1­y›Ð:Ñ— ª -L¶7BçYzULcÿÔ…ô«ª‚ùUMG´¦Z30m ÿT]Áúô9¯… ò¡!Bëx¾aê„Æþ›DŸ©b{­¡ l¯Eü³Â¡±ü0Χš\œ‚6Éy2?b"~-„ù5û£…ðzÖ’Õ.hì¦X(¿šªE0­ãù¡uEô¡’ó(þšAì5LlAì7ðúÖLë35¬ÏÄõ¥Yx½3˳L|>¢¢øê!UÅ4¶OWp>äëÉýTи^tÇ‹-÷¦-¬}0ëU7p¾uSÇòM|átŠ S"èA§:EÐ)‚NtŠ S"èˆn{§€ ÿÙ¯E^±P1Ä}-N´v½ûš¢hmG8ÆŽjü­ççÞäþÆ0ZeÿD«¿s_³MÜx|;üD16BЗÀùºÝ0¿¼ ޳^ý~ÃðõÝ¢ÕÃþ‡}Þ‹ÆÇƒ¾ø·“ø'Z?ŠÿVñùè¯Åã ·B̯+çâ¦GÝa~âI!'Ÿ›Q-ßÿû,ŠÆ÷ƒÜØÍîo(£U‚?¾äÌxw8qSt^Ï•ŒaP41~ ¿ûjn`´lüT2~×­œ!Zs 쫽ð)7€¾¹ËAά÷`^Íîû†¢1ü¨|ì¯ ƒÝµ‹á'¦ñÍp”ñõâ—ÉÅÝŸ»Ê3A_õ@ð+VöW¾ª•`G¼@ø±™¿wê«hý!¯ àwì=8_µü,#ì¿ ì®hºV;+ù±W!~5¿qL@\+—Á¼ø]àgmoÐ;·ô•]ûqü=È›3âU£B<疀܄뤦IäíaˆcÙXweØŸÚ½„-âpBØ]'ò(ÖM¢+¬ëÒðoö '~ŽrÖæ‚¼Ú“àWå ‘÷þ 7Ö æÇîõ„Øz‹~ÓæÕ•‹ýT?k–Ãú‰Ýë±î仼 â4û°¯z%Ì« ód½ÅûˆuZ v?øè­uUñ¹ˆÏà›7Läg§X_å ¿FÔu¼“°Xw«Äü&Qo1ˆCÝFXu_‹xF!eíÀøBQ×ïˆõ¿ì·ð9¿zæŸ!.5O‰õ|!ØWÑ~V¾ë ñ7П˜"ô,ó®ûÔ‹¢?ÏþrâWÓEìO!.Ub¯úe¢ê÷Šú#úR!È•y* ì«:õPyXÔÁ«¢~v‹>¶_¬“£"ÎSž»E䝿Ç;Ãú)ûFÔýh‘Ÿ!n‰ƒÏ ç¡t¹ˆó±tº&ñ-×Dÿü@\7,ë{‚؇O¼Jê ²“¨·ù"¯ÝÀï¹=`ÍÉ»këľ*ëÿY‘—Y §v¡ØWî=±<ñŠñÚæîÛ;ØÍ3/;;lÐ¥½ú/SÇ~³ücgÛ²3MÅ °÷>}ç÷ÍyWÝw½òAeÝkÎÑÙãv¬xñi9ßã—rÄQò9MÓgÍ¿æwž¼Óâu’–vZÎO¾VQÈ¡vJ½T¾ä“óîÙ/ø£™/ýi§¯gP9Η×o(ûêöž}B^4³¾yZÑ€É2žžÕ7á/öôü—ñ’|R®°Ûù¦hÅÍëþzÄÃ…RŽg'+Ñ#õÓ|yvIý2.RÎ þË}ñ§ó$¿´[Æ]æIÚ#íz¼¸Jÿäz8ļ>¼éŒ'GΣG©wÍb·¾Îo¹>|ëš®'é/‘ï­ × >‚úê#¨ >‚ú8úò葾‘´¤pêDùFÒöÌXп@2Ü:£p‚ü5]f?ï‡uY¥ESå÷œ‚þƒ n3PžQvŸÄÇcP9JÄ$ˆ¦„¢û´§& O>o"ˆaQ/"!Âß:Q„úΟ<DUè,UÓ ¢©>D3(bßùS(Š„|DW4ŠT²Në‹?Å¢ˆI-4|~´vøÓ,ŠhT»Ik™?Óò!T²eRžˆJrÁŸmQ„ÚÌŸoù¢KOÝûóäS.ŠÐ¨ò']±¨vö¡Ý%ø/‚˜:Õe¦ø.;ž|.æu<`ÁB÷&‘Á;xÇCïxÐÈÞñ`PÓyÇ#1w<ðއña¢…w<$Õ&;At…"¬çP‹ ¼ãQÄÇcP9¼ãa„w<Œè>í© Hv<ŒðއÞñâv<‚PßÝŽ‡ÞñÂ:FxÇ#ˆfPÄ ¾» !ö!$ƒnÇ#ˆNåðŽGÓ§ÝT©¼ãÄ ^X>ß­0µw<Œ„éJPS|²ãÄ'‡w<„¸# õÔíx„Gñ!ÔS·ãa„w<‚èTŽæCxÇ#ˆA%봾܎G“Zhøü2hí¸ ÕnÒZv;E¨dÞñ0Â;BÜŽGj³Ûñ(Bté©{²ã„FÕíx±¨vÞñBw ·ãa„w<‚¤ø.;žüŸ3^Ç#€A,p¯1`¼ã!€w<ðއLá5w<ÓyÇCïx¡&ZxÇ#@Rm²ãDW(Âzå±Â;E|<•Ã;FxÇÈîÓžš€dÇÃïxá!nÇ#õÝíxá ¬ãa„w<‚hE â»ÛñòñhaB2èv<‚èTïx¡ñ1}ÚM•zÁ;A ê…åóÝ S yÇÃH˜®5uÁ';A|rxÇCˆÛñ0¢POÝŽGxB=u;FxÇ#ˆNåh>„w<‚T²NëËíx1©…†Ï/ƒÖŽÛñ¢Qí&­e·ãQ„Jæ#¼ã!Äíx¡6»"D—žº÷';AhTÝŽG‹jç t—p;FxÇ#ˆJ»“JþzÈ•Ú9Þ_–7¡°´0ÒŒB÷϶î€ÿ¥¿å¡qynlme/tests/varIdent.R0000644000176000001440000000040310642216551014275 0ustar ripleyusers## test for PR#9765 library(nlme) Orth <- subset(Orthodont, Subject %in% c("M01","F01")) # Argument fixed in varIdent is ignored vf <- varIdent(form=~1|Sex,fixed=c(Female=0.5)) vf <- Initialize(vf, data=Orth) stopifnot(varWeights(vf) == rep(c(1,2), each=4)) nlme/tests/updateLme.R0000644000176000001440000000060310132476000014432 0ustar ripleyuserslibrary(nlme) data(Assay) as1 <- lme(logDens~sample*dilut, data=Assay, random=pdBlocked(list( pdIdent(~1), pdIdent(~sample-1), pdIdent(~dilut-1)))) update(as1,random=pdCompSymm(~sample-1)) update(as1,random=pdCompSymm(~sample-1)) update(as1,random=pdCompSymm(~sample-1)) update(as1,random=pdCompSymm(~sample-1)) nlme/tests/missing.Rout.save0000644000176000001440000012211510633745760015675 0ustar ripleyusers R version 2.6.0 Under development (unstable) (2007-06-13 r41937) Copyright (C) 2007 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(nlme) > > options(digits=4) # avoid rounding differences > > Ovary[c(1,272), 2] <- NA > fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, + correlation = corAR1(form = ~ 1 | Mare), na.action=na.exclude) > fitted(fm1) 1 2 3 4 5 6 7 8 9 10 11 NA 12.856 12.061 11.271 10.551 9.960 9.544 9.338 9.359 9.604 10.054 12 13 14 15 16 17 18 19 20 21 22 10.673 11.410 12.205 12.995 13.715 14.307 14.722 14.928 14.907 14.662 14.212 23 24 25 26 27 28 29 30 31 32 33 13.593 12.856 12.061 11.271 10.551 9.960 9.544 13.794 13.010 12.141 11.271 34 35 36 37 38 39 40 41 42 43 44 10.485 9.861 9.459 9.319 9.454 9.852 10.473 11.256 12.125 12.995 13.781 45 46 47 48 49 50 51 52 53 54 55 14.405 14.807 14.947 14.812 14.414 13.794 13.010 12.141 11.271 10.485 9.861 56 57 58 59 60 61 62 63 64 65 66 9.459 13.904 13.098 12.188 11.271 10.448 9.807 9.419 9.325 9.535 10.026 67 68 69 70 71 72 73 74 75 76 77 10.746 11.616 12.542 13.424 14.166 14.688 14.933 14.874 14.518 13.904 13.098 78 79 80 81 82 83 84 85 86 87 88 12.188 11.271 10.448 9.807 9.419 13.593 12.856 12.061 11.271 10.551 9.960 89 90 91 92 93 94 95 96 97 98 99 9.544 9.338 9.359 9.604 10.054 10.673 11.410 12.205 12.995 13.715 14.307 100 101 102 103 104 105 106 107 108 109 110 14.722 14.928 14.907 14.662 14.212 13.593 12.856 12.061 11.271 10.551 9.960 111 112 113 114 115 116 117 118 119 120 121 9.544 13.593 12.856 12.061 11.271 10.551 9.960 9.544 9.338 9.359 9.604 122 123 124 125 126 127 128 129 130 131 132 10.054 10.673 11.410 12.205 12.995 13.715 14.307 14.722 14.928 14.907 14.662 133 134 135 136 137 138 139 140 141 142 143 14.212 13.593 12.856 12.061 11.271 10.551 9.960 9.544 13.593 12.856 12.061 144 145 146 147 148 149 150 151 152 153 154 11.271 10.551 9.960 9.544 9.338 9.359 9.604 10.054 10.673 11.410 12.205 155 156 157 158 159 160 161 162 163 164 165 12.995 13.715 14.307 14.722 14.928 14.907 14.662 14.212 13.593 12.856 12.061 166 167 168 169 170 171 172 173 174 175 176 11.271 10.551 9.960 9.544 13.794 13.010 12.141 11.271 10.485 9.861 9.459 177 178 179 180 181 182 183 184 185 186 187 9.319 9.454 9.852 10.473 11.256 12.125 12.995 13.781 14.405 14.807 14.947 188 189 190 191 192 193 194 195 196 197 198 14.812 14.414 13.794 13.010 12.141 11.271 10.485 9.861 9.459 13.418 12.726 199 200 201 202 203 204 205 206 207 208 209 11.994 11.271 10.607 10.047 9.629 9.382 9.322 9.454 9.769 10.244 10.848 210 211 212 213 214 215 216 217 218 219 220 11.540 12.272 12.995 13.659 14.219 14.637 14.884 14.944 14.812 14.498 14.022 221 222 223 224 225 226 227 228 229 230 231 13.418 12.726 11.994 11.271 10.607 10.047 9.629 14.022 13.195 12.239 11.271 232 233 234 235 236 237 238 239 240 241 242 10.407 9.751 9.382 9.345 9.645 10.244 11.072 12.027 12.995 13.859 14.515 243 244 245 246 247 248 249 250 251 252 253 14.884 14.921 14.622 14.022 13.195 12.239 11.271 10.407 9.751 9.382 13.593 254 255 256 257 258 259 260 261 262 263 264 12.856 12.061 11.271 10.551 9.960 9.544 9.338 9.359 9.604 10.054 10.673 265 266 267 268 269 270 271 272 273 274 275 11.410 12.205 12.995 13.715 14.307 14.722 14.928 NA 14.662 14.212 13.593 276 277 278 279 280 281 282 283 284 285 286 12.856 12.061 11.271 10.551 9.960 9.544 13.794 13.010 12.141 11.271 10.485 287 288 289 290 291 292 293 294 295 296 297 9.861 9.459 9.319 9.454 9.852 10.473 11.256 12.125 12.995 13.781 14.405 298 299 300 301 302 303 304 305 306 307 308 14.807 14.947 14.812 14.414 13.794 13.010 12.141 11.271 10.485 9.861 9.459 attr(,"label") [1] "Fitted values" > residuals(fm1) 1 2 3 4 5 6 7 8 NA 2.14386 6.93937 4.72901 2.44882 0.04046 2.45603 4.66184 9 10 11 12 13 14 15 16 3.64122 10.39585 11.94560 4.32695 6.59002 4.79451 1.00487 4.28507 17 18 19 20 21 22 23 24 -0.30658 1.27786 2.07205 3.09266 3.33803 2.78828 0.40693 -0.85614 25 26 27 28 29 30 31 32 -0.06063 2.72901 -0.55118 1.04046 6.45603 -7.79359 -7.01022 -4.14099 33 34 35 36 37 38 39 40 -4.27099 5.51463 0.13897 3.54090 -0.31891 -2.45420 -3.85170 -2.47253 41 42 43 44 45 46 47 48 -3.25589 -6.12512 -4.99513 -6.78075 -5.40508 -8.80702 -10.94720 -9.81192 49 50 51 52 53 54 55 56 -6.41441 -2.79359 -0.01022 -2.14099 -5.27099 -3.48537 -3.86103 -4.45910 57 58 59 60 61 62 63 64 -0.90420 -2.09816 -2.18752 -5.27099 -2.44787 -3.80737 -0.41890 -0.32454 65 66 67 68 69 70 71 72 0.46546 -2.02612 3.25398 1.38377 1.45755 2.57570 5.83377 6.31217 73 74 75 76 77 78 79 80 10.06742 8.12604 4.48168 8.09580 2.90184 8.81248 7.72901 9.55213 81 82 83 84 85 86 87 88 7.19263 14.58110 -4.59307 -3.85614 -5.06063 -5.27099 -3.55118 -3.95954 89 90 91 92 93 94 95 96 -8.54397 -8.33816 -8.35878 -4.60415 -4.05440 -7.67305 -6.40998 -9.20549 97 98 99 100 101 102 103 104 -6.99513 -5.71493 -8.30658 -9.72214 -8.92795 -6.90734 -3.66197 -0.21172 105 106 107 108 109 110 111 112 -5.59307 -3.85614 -2.06063 -4.27099 -3.55118 -3.95954 1.45603 -3.59307 113 114 115 116 117 118 119 120 -0.85614 -0.06063 5.72901 -1.55118 0.04046 -6.54397 2.66184 3.64122 121 122 123 124 125 126 127 128 -0.60415 -6.05440 -3.67305 -7.40998 -0.20549 1.00487 -1.71493 0.69342 129 130 131 132 133 134 135 136 2.27786 0.07205 -1.90734 3.33803 4.78828 -0.59307 -3.85614 -0.06063 137 138 139 140 141 142 143 144 -3.27099 -0.55118 -4.95954 4.45603 2.40693 4.14386 0.93937 5.72901 145 146 147 148 149 150 151 152 4.44882 -0.95954 -1.54397 -4.33816 -0.35878 -1.60415 -2.05440 2.32695 153 154 155 156 157 158 159 160 2.59002 0.79451 1.00487 0.28507 -3.30658 2.27786 6.07205 6.09266 161 162 163 164 165 166 167 168 6.33803 5.78828 3.40693 5.14386 9.93937 -1.27099 0.44882 1.04046 169 170 171 172 173 174 175 176 2.45603 4.20641 -0.01022 1.85901 0.72901 0.51463 -1.86103 -4.45910 177 178 179 180 181 182 183 184 -1.31891 0.54580 1.14830 -0.47253 0.74411 -2.12512 -3.99513 -1.78075 185 186 187 188 189 190 191 192 -0.40508 1.19298 -1.94720 -3.81192 -1.41441 -0.79359 -2.01022 -1.14099 193 194 195 196 197 198 199 200 -3.27099 3.51463 -5.86103 -2.45910 -0.41772 -3.72591 3.00630 3.72901 201 202 203 204 205 206 207 208 1.39298 -2.04705 0.37076 -3.38206 -0.32236 -1.45420 0.23140 -4.24413 209 210 211 212 213 214 215 216 -2.84839 1.45980 -0.27241 -0.99513 1.34090 6.78094 10.36312 6.11594 217 218 219 220 221 222 223 224 6.05624 9.18808 5.50248 5.97801 4.58228 7.27409 8.00630 7.72901 225 226 227 228 229 230 231 232 1.39298 -3.04706 -1.62924 -4.02199 0.80539 -0.23920 -1.27099 -3.40675 233 234 235 236 237 238 239 240 2.24927 0.61794 -1.34520 0.35541 4.75587 3.92850 -0.02691 6.00487 241 242 243 244 245 246 247 248 1.14063 1.48462 0.11594 2.07908 -0.62153 1.97801 1.80539 -1.23920 249 250 251 252 253 254 255 256 -1.27099 -3.40675 -5.75074 -1.38206 -2.59307 3.14386 2.93937 0.72901 257 258 259 260 261 262 263 264 0.44882 -3.95954 1.45603 2.66184 1.64122 6.39585 4.94560 0.32695 265 266 267 268 269 270 271 272 -4.40998 1.79451 7.00487 8.28507 8.69342 6.27786 6.07205 NA 273 274 275 276 277 278 279 280 7.33803 7.78828 3.40693 4.14386 4.93937 5.72901 3.44882 2.04046 281 282 283 284 285 286 287 288 1.45603 -4.79359 -5.01022 -4.14099 -3.27099 -2.48537 -3.86103 -2.45910 289 290 291 292 293 294 295 296 -1.31891 0.54580 0.14830 3.52747 1.74411 -4.12512 -4.99513 -5.78075 297 298 299 300 301 302 303 304 -5.40508 1.19298 -2.94720 -4.81192 -2.41441 -1.79359 -4.01022 -6.14099 305 306 307 308 -2.27099 -3.48537 -4.86103 -4.45910 attr(,"std") [1] NA 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [13] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [25] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [37] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [49] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [61] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [73] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [85] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [97] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [109] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [121] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [133] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [145] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [157] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [169] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [181] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [193] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [205] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [217] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [229] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [241] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [253] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [265] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 NA 4.581 4.581 4.581 4.581 [277] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [289] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 [301] 4.581 4.581 4.581 4.581 4.581 4.581 4.581 4.581 attr(,"label") [1] "Residuals" > summary(fm1) Generalized least squares fit by REML Model: follicles ~ sin(2 * pi * Time) + cos(2 * pi * Time) Data: Ovary AIC BIC logLik 1560 1579 -775.1 Correlation Structure: AR(1) Formula: ~1 | Mare Parameter estimate(s): Phi 0.7498 Coefficients: Value Std.Error t-value p-value (Intercept) 12.133 0.6574 18.456 0.0000 sin(2 * pi * Time) -2.679 0.6436 -4.162 0.0000 cos(2 * pi * Time) -0.862 0.6902 -1.249 0.2126 Correlation: (Intr) s(*p*T sin(2 * pi * Time) -0.007 cos(2 * pi * Time) -0.295 0.003 Standardized residuals: Min Q1 Med Q3 Max -2.38972 -0.75655 -0.01324 0.63960 3.18298 Residual standard error: 4.581 Degrees of freedom: 306 total; 303 residual > > Orthodont[100:102, 2] <- NA > fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1, + na.action=na.exclude) > fitted(fm2, 0:1) fixed Subject 1 22.95 25.35 2 24.30 26.69 3 25.64 28.04 4 26.98 29.38 5 22.95 21.58 6 24.30 22.92 7 25.64 24.27 8 26.98 25.61 9 22.95 22.34 10 24.30 23.68 11 25.64 25.02 12 26.98 26.36 13 22.95 24.38 14 24.30 25.72 15 25.64 27.07 16 26.98 28.41 17 22.95 21.26 18 24.30 22.60 19 25.64 23.94 20 26.98 25.29 21 22.95 24.17 22 24.30 25.51 23 25.64 26.85 24 26.98 28.19 25 22.95 21.90 26 24.30 23.25 27 25.64 24.59 28 26.98 25.93 29 22.95 22.01 30 24.30 23.35 31 25.64 24.70 32 26.98 26.04 33 22.95 23.09 34 24.30 24.43 35 25.64 25.77 36 26.98 27.12 37 22.95 26.86 38 24.30 28.20 39 25.64 29.55 40 26.98 30.89 41 22.95 21.80 42 24.30 23.14 43 25.64 24.48 44 26.98 25.82 45 22.95 22.34 46 24.30 23.68 47 25.64 25.02 48 26.98 26.36 49 22.95 22.34 50 24.30 23.68 51 25.64 25.02 52 26.98 26.36 53 22.95 22.87 54 24.30 24.22 55 25.64 25.56 56 26.98 26.90 57 22.95 23.74 58 24.30 25.08 59 25.64 26.42 60 26.98 27.76 61 22.95 21.26 62 24.30 22.60 63 25.64 23.94 64 26.98 25.29 65 20.69 19.54 66 22.03 20.89 67 23.37 22.23 68 24.71 23.57 69 20.69 20.94 70 22.03 22.29 71 23.37 23.63 72 24.71 24.97 73 20.69 21.59 74 22.03 22.93 75 23.37 24.28 76 24.71 25.62 77 20.69 22.56 78 22.03 23.90 79 23.37 25.25 80 24.71 26.59 81 20.69 20.62 82 22.03 21.96 83 23.37 23.31 84 24.71 24.65 85 20.69 19.33 86 22.03 20.67 87 23.37 22.01 88 24.71 23.36 89 20.69 20.94 90 22.03 22.29 91 23.37 23.63 92 24.71 24.97 93 20.69 21.27 94 22.03 22.61 95 23.37 23.95 96 24.71 25.30 97 20.69 19.84 98 22.03 21.18 99 23.37 22.52 100 NA NA 101 NA NA 102 NA NA 103 23.37 19.74 104 24.71 21.08 105 20.69 23.85 106 22.03 25.20 107 23.37 26.54 108 24.71 27.88 > fitted(fm2) M01 M01 M01 M01 M02 M02 M02 M02 M03 M03 M03 M03 M04 25.35 26.69 28.04 29.38 21.58 22.92 24.27 25.61 22.34 23.68 25.02 26.36 24.38 M04 M04 M04 M05 M05 M05 M05 M06 M06 M06 M06 M07 M07 25.72 27.07 28.41 21.26 22.60 23.94 25.29 24.17 25.51 26.85 28.19 21.90 23.25 M07 M07 M08 M08 M08 M08 M09 M09 M09 M09 M10 M10 M10 24.59 25.93 22.01 23.35 24.70 26.04 23.09 24.43 25.77 27.12 26.86 28.20 29.55 M10 M11 M11 M11 M11 M12 M12 M12 M12 M13 M13 M13 M13 30.89 21.80 23.14 24.48 25.82 22.34 23.68 25.02 26.36 22.34 23.68 25.02 26.36 M14 M14 M14 M14 M15 M15 M15 M15 M16 M16 M16 M16 F01 22.87 24.22 25.56 26.90 23.74 25.08 26.42 27.76 21.26 22.60 23.94 25.29 19.54 F01 F01 F01 F02 F02 F02 F02 F03 F03 F03 F03 F04 F04 20.89 22.23 23.57 20.94 22.29 23.63 24.97 21.59 22.93 24.28 25.62 22.56 23.90 F04 F04 F05 F05 F05 F05 F06 F06 F06 F06 F07 F07 F07 25.25 26.59 20.62 21.96 23.31 24.65 19.33 20.67 22.01 23.36 20.94 22.29 23.63 F07 F08 F08 F08 F08 F09 F09 F09 F10 F10 24.97 21.27 22.61 23.95 25.30 19.84 21.18 22.52 NA NA NA 19.74 21.08 F11 F11 F11 F11 23.85 25.20 26.54 27.88 attr(,"label") [1] "Fitted values (mm)" > residuals(fm2, 0:1) fixed Subject 1 3.04531 0.648269 2 0.70260 -1.694434 3 3.35990 0.962862 4 4.01719 1.620159 5 -1.45469 -0.081112 6 -1.79740 -0.423816 7 -2.64010 -1.266519 8 -0.48281 0.890777 9 0.04531 0.664764 10 -1.79740 -1.177940 11 -1.64010 -1.020643 12 0.51719 1.136654 13 2.54531 1.117857 14 3.20260 1.775153 15 0.85990 -0.567550 16 0.01719 -1.410254 17 -2.95469 -1.257916 18 -0.79740 0.899380 19 -3.14010 -1.443323 20 -0.98281 0.713973 21 1.54531 0.333321 22 1.20260 -0.009383 23 1.35990 0.147914 24 1.51719 0.305210 25 -0.95469 0.095692 26 -2.29740 -1.247012 27 -1.14010 -0.089715 28 -0.48281 0.567581 29 1.04531 1.987960 30 -2.79740 -1.854744 31 -1.14010 -0.197447 32 -1.48281 -0.540150 33 0.04531 -0.089360 34 -3.79740 -3.932063 35 5.35990 5.225233 36 -0.98281 -1.117470 37 4.54531 0.640022 38 3.70260 -0.202682 39 5.35990 1.454615 40 4.51719 0.611911 41 0.04531 1.203424 42 -1.29740 -0.139280 43 -2.14010 -0.981983 44 -1.98281 -0.824687 45 -1.45469 -0.835236 46 -0.79740 -0.177940 47 -1.64010 -1.020643 48 1.01719 1.636654 49 -5.95469 -5.335236 50 0.20260 0.822060 51 0.35990 0.979357 52 2.51719 3.136654 53 -0.45469 -0.373896 54 1.20260 1.283401 55 -0.14010 -0.059303 56 -0.98281 -0.902006 57 0.04531 -0.735752 58 0.20260 -0.578455 59 0.35990 -0.421158 60 3.01719 2.236138 61 -0.95469 0.742084 62 -2.79740 -1.100620 63 -2.14010 -0.443323 64 -1.98281 -0.286027 65 0.31353 1.455942 66 -2.02917 -0.886762 67 -1.87187 -0.729465 68 -1.71458 -0.572168 69 0.31353 0.055426 70 -0.52917 -0.787277 71 0.62813 0.370020 72 0.78542 0.527316 73 -0.18647 -1.090965 74 1.97083 1.066331 75 1.12813 0.223628 76 1.28542 0.380924 77 2.81353 0.939447 78 2.47083 0.596743 79 1.62813 -0.245960 80 1.78542 -0.088663 81 0.81353 0.878622 82 0.97083 1.035919 83 -0.87187 -0.806785 84 -1.21458 -1.149488 85 -0.68647 0.671406 86 -1.02917 0.328702 87 -2.37187 -1.014001 88 -2.21458 -0.856704 89 0.81353 0.555426 90 0.47083 0.212723 91 -0.37187 -0.629980 92 0.28542 0.027316 93 2.31353 1.732230 94 0.97083 0.389527 95 0.12813 -0.453176 96 -0.71458 -1.295880 97 -0.68647 0.161483 98 -1.02917 -0.181220 99 -1.37187 -0.523924 100 NA NA 101 NA NA 102 NA NA 103 -4.37187 -0.742221 104 -5.21458 -1.584924 105 3.81353 0.646663 106 2.97083 -0.196040 107 4.62813 1.461257 108 3.28542 0.118553 > round(residuals(fm2), 2) M01 M01 M01 M01 M02 M02 M02 M02 M03 M03 M03 M03 M04 0.65 -1.69 0.96 1.62 -0.08 -0.42 -1.27 0.89 0.66 -1.18 -1.02 1.14 1.12 M04 M04 M04 M05 M05 M05 M05 M06 M06 M06 M06 M07 M07 1.78 -0.57 -1.41 -1.26 0.90 -1.44 0.71 0.33 -0.01 0.15 0.31 0.10 -1.25 M07 M07 M08 M08 M08 M08 M09 M09 M09 M09 M10 M10 M10 -0.09 0.57 1.99 -1.85 -0.20 -0.54 -0.09 -3.93 5.23 -1.12 0.64 -0.20 1.45 M10 M11 M11 M11 M11 M12 M12 M12 M12 M13 M13 M13 M13 0.61 1.20 -0.14 -0.98 -0.82 -0.84 -0.18 -1.02 1.64 -5.34 0.82 0.98 3.14 M14 M14 M14 M14 M15 M15 M15 M15 M16 M16 M16 M16 F01 -0.37 1.28 -0.06 -0.90 -0.74 -0.58 -0.42 2.24 0.74 -1.10 -0.44 -0.29 1.46 F01 F01 F01 F02 F02 F02 F02 F03 F03 F03 F03 F04 F04 -0.89 -0.73 -0.57 0.06 -0.79 0.37 0.53 -1.09 1.07 0.22 0.38 0.94 0.60 F04 F04 F05 F05 F05 F05 F06 F06 F06 F06 F07 F07 F07 -0.25 -0.09 0.88 1.04 -0.81 -1.15 0.67 0.33 -1.01 -0.86 0.56 0.21 -0.63 F07 F08 F08 F08 F08 F09 F09 F09 F10 F10 0.03 1.73 0.39 -0.45 -1.30 0.16 -0.18 -0.52 NA NA NA -0.74 -1.58 F11 F11 F11 F11 0.65 -0.20 1.46 0.12 attr(,"label") [1] "Residuals (mm)" > summary(fm2) Linear mixed-effects model fit by REML Data: Orthodont AIC BIC logLik 436.5 449.7 -213.3 Random effects: Formula: ~1 | Subject (Intercept) Residual StdDev: 1.797 1.439 Fixed effects: distance ~ age + Sex Value Std.Error DF t-value p-value (Intercept) 17.584 0.8503 77 20.679 0.0000 age 0.671 0.0636 77 10.562 0.0000 SexFemale -2.268 0.7616 25 -2.978 0.0064 Correlation: (Intr) age age -0.822 SexFemale -0.357 -0.006 Standardized Within-Group Residuals: Min Q1 Med Q3 Max -3.70787 -0.54714 -0.05637 0.46661 3.63142 Number of Observations: 105 Number of Groups: 27 > > Soybean[1:5, "Time"] <- NA > fm3 <- gnls(weight ~ SSlogis(Time, Asym, xmid, scal), Soybean, + weights = varPower(), na.action=na.exclude) > fitted(fm3) 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA 7.0472 10.9577 14.0820 15.8940 16.7560 11 12 13 14 15 16 17 18 19 20 0.1203 0.2977 0.7259 1.7085 3.7237 7.0472 10.9577 15.8940 16.7560 0.1203 21 22 23 24 25 26 27 28 29 30 0.2977 0.7259 1.7085 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 31 32 33 34 35 36 37 38 39 40 0.2977 0.7259 1.7085 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 41 42 43 44 45 46 47 48 49 50 0.2977 0.7259 1.7085 3.7237 7.0472 10.9577 15.8940 0.1203 0.2977 0.7259 51 52 53 54 55 56 57 58 59 60 1.7085 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 61 62 63 64 65 66 67 68 69 70 1.7085 3.7237 7.0472 10.9577 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 71 72 73 74 75 76 77 78 79 80 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 81 82 83 84 85 86 87 88 89 90 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 91 92 93 94 95 96 97 98 99 100 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 101 102 103 104 105 106 107 108 109 110 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 111 112 113 114 115 116 117 118 119 120 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 121 122 123 124 125 126 127 128 129 130 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 131 132 133 134 135 136 137 138 139 140 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 141 142 143 144 145 146 147 148 149 150 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2977 0.7259 1.7085 151 152 153 154 155 156 157 158 159 160 3.7237 7.0472 10.9577 14.0820 15.8940 16.7560 0.1203 0.2617 0.6401 1.5171 161 162 163 164 165 166 167 168 169 170 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 171 172 173 174 175 176 177 178 179 180 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 181 182 183 184 185 186 187 188 189 190 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 191 192 193 194 195 196 197 198 199 200 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 201 202 203 204 205 206 207 208 209 210 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 211 212 213 214 215 216 217 218 219 220 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 221 222 223 224 225 226 227 228 229 230 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 231 232 233 234 235 236 237 238 239 240 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 241 242 243 244 245 246 247 248 249 250 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 251 252 253 254 255 256 257 258 259 260 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 261 262 263 264 265 266 267 268 269 270 0.1203 0.2617 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 271 272 273 274 275 276 277 278 279 280 0.6401 1.5171 3.3548 10.4188 15.7056 17.1274 0.1203 0.2617 0.6401 1.5171 281 282 283 284 285 286 287 288 289 290 3.3548 10.4188 15.7056 17.1274 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 291 292 293 294 295 296 297 298 299 300 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 301 302 303 304 305 306 307 308 309 310 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 311 312 313 314 315 316 317 318 319 320 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 321 322 323 324 325 326 327 328 329 330 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 331 332 333 334 335 336 337 338 339 340 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 341 342 343 344 345 346 347 348 349 350 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 351 352 353 354 355 356 357 358 359 360 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 361 362 363 364 365 366 367 368 369 370 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 371 372 373 374 375 376 377 378 379 380 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 381 382 383 384 385 386 387 388 389 390 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 391 392 393 394 395 396 397 398 399 400 0.9316 2.1566 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 401 402 403 404 405 406 407 408 409 410 4.1212 8.1661 14.4182 16.8967 0.1370 0.3849 0.9316 2.1566 4.1212 8.1661 411 412 14.4182 16.8967 attr(,"label") [1] "Fitted values (g)" > residuals(fm3) 1 2 3 4 5 6 7 8 NA NA NA NA NA -0.817235 -2.247725 -0.732029 9 10 11 12 13 14 15 16 0.447744 0.994846 -0.016267 -0.028703 0.052087 0.411533 -0.793662 -1.757235 17 18 19 20 21 22 23 24 -1.457725 1.072744 0.990716 -0.012267 -0.006703 -0.058913 0.341533 0.086338 25 26 27 28 29 30 31 32 -0.917235 -0.677725 3.997971 4.288544 5.054816 -0.015267 0.001297 0.118087 33 34 35 36 37 38 39 40 -0.388467 -1.483662 -2.367235 -2.137725 1.007971 -1.233956 -2.751384 -0.019267 41 42 43 44 45 46 47 48 -0.024703 0.122087 0.241533 1.046338 -1.037235 -1.047725 3.368344 -0.014267 49 50 51 52 53 54 55 56 0.039297 -0.026913 -0.178467 0.146338 -1.447235 -1.527725 -0.352029 1.486844 57 58 59 60 61 62 63 64 3.176316 -0.018267 -0.022703 0.041087 -0.258467 0.226338 -2.107235 -1.317725 65 66 67 68 69 70 71 72 1.986044 0.968216 -0.017267 -0.024703 0.016087 -0.298467 -0.713662 -1.787235 73 74 75 76 77 78 79 80 -1.147725 -1.232029 2.320214 2.924016 0.010733 0.040297 -0.024913 -0.048467 81 82 83 84 85 86 87 88 0.526338 2.192765 1.192275 2.697971 0.031044 0.516316 0.007733 0.106297 89 90 91 92 93 94 95 96 0.171087 0.071533 0.186338 0.352765 -0.887725 4.777971 1.117744 10.614016 97 98 99 100 101 102 103 104 0.010733 0.081297 0.400087 0.731533 0.166338 -0.137235 1.532275 1.587971 105 106 107 108 109 110 111 112 7.869344 4.734816 0.033733 0.059297 0.455087 0.121533 0.986338 3.662765 113 114 115 116 117 118 119 120 -1.047725 1.427971 -0.936056 5.044016 0.018733 0.030297 0.206087 0.281533 121 122 123 124 125 126 127 128 -0.263662 -0.027235 0.832275 1.747971 0.026874 0.685716 0.018733 0.091297 129 130 131 132 133 134 135 136 0.368087 0.421533 0.316338 0.572765 1.522275 3.847971 -1.472256 13.515716 137 138 139 140 141 142 143 144 0.024733 0.068297 0.073087 -0.098467 -0.213662 -0.257235 -1.007725 0.457971 145 146 147 148 149 150 151 152 3.386044 5.816746 0.009733 0.057297 0.364087 0.571533 0.216338 -2.087235 153 154 155 156 157 158 159 160 -0.037725 -0.062029 2.100244 5.614816 -0.073267 -0.125711 -0.367258 -0.533726 161 162 163 164 165 166 167 168 -1.558134 -6.301675 -4.668445 -6.724066 -0.085267 -0.149711 -0.372091 -0.463729 169 170 171 172 173 174 175 176 -1.639801 -3.690485 -5.392255 -6.039066 -0.076267 -0.115711 -0.279591 -0.742059 177 178 179 180 181 182 183 184 -1.713134 -6.670485 -4.830585 -1.099896 -0.071267 -0.164711 -0.412591 -0.683726 185 186 187 188 189 190 191 192 -2.000801 -4.430485 -5.120585 -6.215966 -0.081267 -0.140711 -0.368424 -0.858726 193 194 195 196 197 198 199 200 -0.964801 -4.935482 -5.768915 -8.239066 -0.091267 -0.169711 -0.389091 -0.975392 201 202 203 204 205 206 207 208 -2.293131 -5.588815 -9.433915 -8.544066 -0.079267 -0.116711 -0.234758 -0.757059 209 210 211 212 213 214 215 216 -1.861468 -4.170485 -4.593885 -8.247396 -0.082267 -0.134711 -0.299924 -0.523059 217 218 219 220 221 222 223 224 -1.073131 -1.912815 -6.732255 -5.495396 -0.050267 -0.053711 -0.039258 0.384608 225 226 227 228 229 230 231 232 -0.389801 -2.275485 -0.005585 2.760904 -0.052267 -0.009711 -0.059591 0.496941 233 234 235 236 237 238 239 240 -0.681468 -1.618815 -1.220585 5.515904 -0.043267 -0.037711 -0.298758 0.222941 241 242 243 244 245 246 247 248 1.169199 1.237885 4.611115 4.274604 -0.021267 -0.063711 -0.148924 -0.312059 249 250 251 252 253 254 255 256 -0.554801 -3.055485 -0.563915 0.059274 -0.052267 -0.029711 -0.204091 -0.073726 257 258 259 260 261 262 263 264 -0.094801 -2.210485 3.701115 -1.465726 -0.057267 -0.052711 0.100742 -0.248729 265 266 267 268 269 270 271 272 0.535199 -1.326815 -1.215585 1.967604 0.012733 0.041289 0.476909 0.662941 273 274 275 276 277 278 279 280 0.181866 2.741185 0.084415 -2.352396 -0.039267 -0.006711 0.124742 -0.423729 281 282 283 284 285 286 287 288 -0.303131 -2.313815 8.718415 1.790904 -0.027755 -0.001035 0.230048 0.183443 289 290 291 292 293 294 295 296 -1.251166 1.372212 -1.734896 1.736669 -0.041962 -0.046535 -0.173286 0.363443 297 298 299 300 301 302 303 304 -1.602836 -3.049448 -5.843196 -2.723331 -0.048962 0.228299 0.383381 0.865113 305 306 307 308 309 310 311 312 1.728834 -0.749448 -3.086496 -0.013331 -0.048243 0.211799 0.143381 0.918443 313 314 315 316 317 318 319 320 -0.162836 -2.132788 -3.981526 0.906639 -0.035662 -0.009535 0.990048 0.050113 321 322 323 324 325 326 327 328 0.643834 0.973882 1.421804 1.211639 -0.027197 0.098465 0.375048 1.798443 329 330 331 332 333 334 335 336 0.183834 -0.134448 1.665134 2.676639 -0.034019 0.029632 0.731714 -0.766557 337 338 339 340 341 342 343 344 -1.119496 -1.321118 1.791804 2.176639 -0.060265 -0.013035 -0.186619 0.090110 345 346 347 348 349 350 351 352 0.373834 -2.491118 1.726804 2.035039 0.011779 0.302132 0.640051 1.656773 353 354 355 356 357 358 359 360 0.690504 3.487212 2.958504 1.000039 0.016797 0.209299 0.268381 0.988443 361 362 363 364 365 366 367 368 -0.317836 -0.749448 -0.838196 3.963339 -0.012795 0.365465 0.526711 3.601773 369 370 371 372 373 374 375 376 1.875504 0.805552 2.653504 0.920039 0.041505 0.495965 0.450048 1.471776 377 378 379 380 381 382 383 384 1.072167 -2.976118 1.361804 4.645009 0.002185 0.070965 0.651711 1.898443 385 386 387 388 389 390 391 392 0.388834 -0.004448 4.296804 1.058339 0.025744 0.388799 0.043381 1.355113 393 394 395 396 397 398 399 400 0.388834 -0.382788 3.700134 -0.949991 -0.026529 0.071132 0.438381 -0.011557 401 402 403 404 405 406 407 408 1.708834 0.637212 -2.183196 0.888339 0.009038 0.178799 0.546711 0.445110 409 410 411 412 2.222164 -2.034448 1.993504 0.050039 attr(,"std") [1] NA NA NA NA NA 2.05137 3.02284 3.76791 4.19054 [10] 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 4.19054 [19] 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 3.76791 [28] 4.19054 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 [37] 3.76791 4.19054 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 [46] 3.02284 4.19054 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 [55] 3.76791 4.19054 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 [64] 3.02284 4.19054 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 [73] 3.02284 3.76791 4.19054 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 [82] 2.05137 3.02284 3.76791 4.19054 4.38951 0.05745 0.12737 0.27864 0.59092 [91] 1.17142 2.05137 3.02284 3.76791 4.19054 4.38951 0.05745 0.12737 0.27864 [100] 0.59092 1.17142 2.05137 3.02284 3.76791 4.19054 4.38951 0.05745 0.12737 [109] 0.27864 0.59092 1.17142 2.05137 3.02284 3.76791 4.19054 4.38951 0.05745 [118] 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 3.76791 4.19054 4.38951 [127] 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 3.76791 4.19054 [136] 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 3.76791 [145] 4.19054 4.38951 0.05745 0.12737 0.27864 0.59092 1.17142 2.05137 3.02284 [154] 3.76791 4.19054 4.38951 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 [163] 4.14689 4.47486 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 [172] 4.47486 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 [181] 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 0.05745 [190] 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 0.05745 0.11374 [199] 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 0.05745 0.11374 0.24949 [208] 0.53236 1.06887 2.89187 4.14689 4.47486 0.05745 0.11374 0.24949 0.53236 [217] 1.06887 2.89187 4.14689 4.47486 0.05745 0.11374 0.24949 0.53236 1.06887 [226] 2.89187 4.14689 4.47486 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 [235] 4.14689 4.47486 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 [244] 4.47486 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 [253] 0.05745 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 0.05745 [262] 0.11374 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 0.05745 0.11374 [271] 0.24949 0.53236 1.06887 2.89187 4.14689 4.47486 0.05745 0.11374 0.24949 [280] 0.53236 1.06887 2.89187 4.14689 4.47486 0.06440 0.15959 0.34691 0.72506 [289] 1.28057 2.33481 3.84680 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 [298] 2.33481 3.84680 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 [307] 3.84680 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 [316] 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 4.42186 [325] 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 4.42186 0.06440 [334] 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 4.42186 0.06440 0.15959 [343] 0.34691 0.72506 1.28057 2.33481 3.84680 4.42186 0.06440 0.15959 0.34691 [352] 0.72506 1.28057 2.33481 3.84680 4.42186 0.06440 0.15959 0.34691 0.72506 [361] 1.28057 2.33481 3.84680 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 [370] 2.33481 3.84680 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 [379] 3.84680 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 [388] 4.42186 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 4.42186 [397] 0.06440 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 4.42186 0.06440 [406] 0.15959 0.34691 0.72506 1.28057 2.33481 3.84680 4.42186 attr(,"label") [1] "Residuals (g)" > summary(fm3) Generalized nonlinear least squares fit Model: weight ~ SSlogis(Time, Asym, xmid, scal) Data: Soybean AIC BIC logLik 987.3 1007 -488.6 Variance function: Structure: Power of variance covariate Formula: ~fitted(.) Parameter estimates: power 0.8783 Coefficients: Value Std.Error t-value p-value Asym 17.38 0.5251 33.11 0 xmid 51.93 0.5982 86.80 0 scal 7.64 0.1415 53.96 0 Correlation: Asym xmid xmid 0.788 scal 0.488 0.842 Standardized residuals: Min Q1 Med Q3 Max -2.306636 -0.654470 -0.001905 0.501223 4.967561 Residual standard error: 0.3692 Degrees of freedom: 407 total; 404 residual > nlme/tests/getData.R0000644000176000001440000000034510437331376014104 0ustar ripleyuserslibrary(nlme) fm1 <- lme(distance ~ age, Orthodont) str(o1 <- getData(fm1)) df <- Orthodont # note that the name conflicts with df in the stats fm2 <- lme(distance ~ age, df) str(o2 <- getData(fm2)) stopifnot(identical(o1, o2)) nlme/tests/lmList.R0000644000176000001440000000042611247246724014001 0ustar ripleyusers## PR#13788 library(nlme) qm <- lmList(height ~ age | Subject, data = Oxboys) nd <- with(Oxboys, expand.grid(age = seq(min(age),max(age),length=50), Subject = levels(Subject)) ) ## failed in 3.1-92 res <- predict(qm, nd, se=TRUE) nlme/tests/gls.R0000644000176000001440000000140111125344647013312 0ustar ripleyusers## reported by simon bond to R-help 2007-03-16 library(nlme) x <- rnorm(10, 0.1, 1) try(gls(x ~ 0)) # segfaulted in 3.1-79 ## PR#10364 # copied verbatim from Pinheiro & Bates 8.3.3 fm1Dial.gnls <- gnls(rate ~ SSasympOff(pressure, Asym, lrc, c0), data = Dialyzer, params = list(Asym + lrc ~ QB, c0 ~ 1), start = c(53.6, 8.6, 0.51, -0.26, 0.225)) (p1 <- predict(fm1Dial.gnls)) (p2 <- predict(fm1Dial.gnls, newdata = Dialyzer)) # failed, factor levels complaint # also, missed row names as names stopifnot(all.equal(as.vector(p1), as.vector(p2)), # 'label' differs identical(names(p1), names(p2))) ## PR#13418 fm1 <- gls(weight ~ Time * Diet, BodyWeight) Variogram(fm1, form = ~ Time | Rat)[1:10,] ## failed in 3.1-89 nlme/tests/lme.R0000644000176000001440000000212711611301115013267 0ustar ripleyuserslibrary(nlme) fm1 <- lmList(Oxboys) fm1 fm2 <- lme(fm1) fm2 # bug report from Arne.Mueller@sanofi-aventis.com mod <- distance ~ age + Sex fm3 <- lme(mod, Orthodont, random = ~ 1) predict(fm3, Orthodont) ## bug report and fix from Dimitris Rizopoulos and Spencer Graves: ## when 'returnObject = TRUE', do not stop() but give warning() on non-convergence: fm1 <- lme(distance ~ age, data = Orthodont, control = lmeControl(msMaxIter = 1, returnObject = TRUE)) ## based on bug report on R-help predict(fm3, Orthodont[1,]) # failed in 3.1-88 ## wrong results from getData: load("ss2.rda") m1 <- lme(PV1MATH ~ ESCS + Age +time , random = ~ time|SCHOOLID, data = ss2, weights = varIdent(form=~1|time), corr = corCompSymm(form=~1|SCHOOLID/StIDStd), na.action = na.omit) plot(m1, resid(.) ~ WEALTH) m2 <- lme(PV1MATH ~ ESCS + Age +time , random = ~ time|SCHOOLID, data = ss2, weights = varIdent(form=~1|time), corr = corCompSymm(form=~1|SCHOOLID/StIDStd), na.action = na.omit) plot(m2, resid(.) ~ WEALTH) nlme/src/0000755000176000001440000000000012242131024012013 5ustar ripleyusersnlme/src/rs.f0000644000176000001440000004767712242150465012645 0ustar ripleyusers DOUBLE PRECISION FUNCTION EPSLON (X) DOUBLE PRECISION X C C ESTIMATE UNIT ROUNDOFF IN QUANTITIES OF SIZE X. C DOUBLE PRECISION A,B,C,EPS C C THIS PROGRAM SHOULD FUNCTION PROPERLY ON ALL SYSTEMS C SATISFYING THE FOLLOWING TWO ASSUMPTIONS, C 1. THE BASE USED IN REPRESENTING FLOATING POINT C NUMBERS IS NOT A POWER OF THREE. C 2. THE QUANTITY A IN STATEMENT 10 IS REPRESENTED TO C THE ACCURACY USED IN FLOATING POINT VARIABLES C THAT ARE STORED IN MEMORY. C THE STATEMENT NUMBER 10 AND THE GO TO 10 ARE INTENDED TO C FORCE OPTIMIZING COMPILERS TO GENERATE CODE SATISFYING C ASSUMPTION 2. C UNDER THESE ASSUMPTIONS, IT SHOULD BE TRUE THAT, C A IS NOT EXACTLY EQUAL TO FOUR-THIRDS, C B HAS A ZERO FOR ITS LAST BIT OR DIGIT, C C IS NOT EXACTLY EQUAL TO ONE, C EPS MEASURES THE SEPARATION OF 1.0 FROM C THE NEXT LARGER FLOATING POINT NUMBER. C THE DEVELOPERS OF EISPACK WOULD APPRECIATE BEING INFORMED C ABOUT ANY SYSTEMS WHERE THESE ASSUMPTIONS DO NOT HOLD. C C THIS VERSION DATED 4/6/83. C A = 4.0D0/3.0D0 10 B = A - 1.0D0 C = B + B + B EPS = DABS(C-1.0D0) IF (EPS .EQ. 0.0D0) GO TO 10 EPSLON = EPS*DABS(X) RETURN END DOUBLE PRECISION FUNCTION PYTHAG(A,B) DOUBLE PRECISION A,B C C FINDS DSQRT(A**2+B**2) WITHOUT OVERFLOW OR DESTRUCTIVE UNDERFLOW C DOUBLE PRECISION P,R,S,T,U P = DMAX1(DABS(A),DABS(B)) IF (P .EQ. 0.0D0) GO TO 20 R = (DMIN1(DABS(A),DABS(B))/P)**2 10 CONTINUE T = 4.0D0 + R IF (T .EQ. 4.0D0) GO TO 20 S = R/T U = 1.0D0 + 2.0D0*S P = U*P R = (S/U)**2 * R GO TO 10 20 PYTHAG = P RETURN END SUBROUTINE RS(NM,N,A,W,MATZ,Z,FV1,FV2,IERR) C INTEGER N,NM,IERR,MATZ DOUBLE PRECISION A(NM,N),W(N),Z(NM,N),FV1(N),FV2(N) C C THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF C SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK) C TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED) C OF A REAL SYMMETRIC MATRIX. C C ON INPUT C C NM MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL C ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM C DIMENSION STATEMENT. C C N IS THE ORDER OF THE MATRIX A. C C A CONTAINS THE REAL SYMMETRIC MATRIX. C C MATZ IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF C ONLY EIGENVALUES ARE DESIRED. OTHERWISE IT IS SET TO C ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS. C C ON OUTPUT C C W CONTAINS THE EIGENVALUES IN ASCENDING ORDER. C C Z CONTAINS THE EIGENVECTORS IF MATZ IS NOT ZERO. C C IERR IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR C COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR TQLRAT C AND TQL2. THE NORMAL COMPLETION CODE IS ZERO. C C FV1 AND FV2 ARE TEMPORARY STORAGE ARRAYS. C C QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, C MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY C C THIS VERSION DATED AUGUST 1983. C C ------------------------------------------------------------------ C IF (N .LE. NM) GO TO 10 IERR = 10 * N GO TO 50 C 10 IF (MATZ .NE. 0) GO TO 20 C .......... FIND EIGENVALUES ONLY .......... CALL TRED1(NM,N,A,W,FV1,FV2) CALL TQLRAT(N,W,FV2,IERR) GO TO 50 C .......... FIND BOTH EIGENVALUES AND EIGENVECTORS .......... 20 CALL TRED2(NM,N,A,W,FV1,Z) CALL TQL2(NM,N,W,FV1,Z,IERR) 50 RETURN END SUBROUTINE TQL2(NM,N,D,E,Z,IERR) C INTEGER I,J,K,L,M,N,II,L1,L2,NM,MML,IERR DOUBLE PRECISION D(N),E(N),Z(NM,N) DOUBLE PRECISION C,C2,C3,DL1,EL1,F,G,H,P,R,S,S2,TST1,TST2,PYTHAG C C THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE TQL2, C NUM. MATH. 11, 293-306(1968) BY BOWDLER, MARTIN, REINSCH, AND C WILKINSON. C HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 227-240(1971). C C THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS C OF A SYMMETRIC TRIDIAGONAL MATRIX BY THE QL METHOD. C THE EIGENVECTORS OF A FULL SYMMETRIC MATRIX CAN ALSO C BE FOUND IF TRED2 HAS BEEN USED TO REDUCE THIS C FULL MATRIX TO TRIDIAGONAL FORM. C C ON INPUT C C NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL C ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM C DIMENSION STATEMENT. C C N IS THE ORDER OF THE MATRIX. C C D CONTAINS THE DIAGONAL ELEMENTS OF THE INPUT MATRIX. C C E CONTAINS THE SUBDIAGONAL ELEMENTS OF THE INPUT MATRIX C IN ITS LAST N-1 POSITIONS. E(1) IS ARBITRARY. C C Z CONTAINS THE TRANSFORMATION MATRIX PRODUCED IN THE C REDUCTION BY TRED2, IF PERFORMED. IF THE EIGENVECTORS C OF THE TRIDIAGONAL MATRIX ARE DESIRED, Z MUST CONTAIN C THE IDENTITY MATRIX. C C ON OUTPUT C C D CONTAINS THE EIGENVALUES IN ASCENDING ORDER. IF AN C ERROR EXIT IS MADE, THE EIGENVALUES ARE CORRECT BUT C UNORDERED FOR INDICES 1,2,...,IERR-1. C C E HAS BEEN DESTROYED. C C Z CONTAINS ORTHONORMAL EIGENVECTORS OF THE SYMMETRIC C TRIDIAGONAL (OR FULL) MATRIX. IF AN ERROR EXIT IS MADE, C Z CONTAINS THE EIGENVECTORS ASSOCIATED WITH THE STORED C EIGENVALUES. C C IERR IS SET TO C ZERO FOR NORMAL RETURN, C J IF THE J-TH EIGENVALUE HAS NOT BEEN C DETERMINED AFTER 30 ITERATIONS. C C CALLS PYTHAG FOR DSQRT(A*A + B*B) . C C QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, C MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY C C THIS VERSION DATED AUGUST 1983. C C ------------------------------------------------------------------ c c unnecessary initialization of C3 and S2 to keep g77 -Wall happy c C3 = 0.0D0 S2 = 0.0D0 C IERR = 0 IF (N .EQ. 1) GO TO 1001 C DO 100 I = 2, N 100 E(I-1) = E(I) C F = 0.0D0 TST1 = 0.0D0 E(N) = 0.0D0 C DO 240 L = 1, N J = 0 H = DABS(D(L)) + DABS(E(L)) IF (TST1 .LT. H) TST1 = H C .......... LOOK FOR SMALL SUB-DIAGONAL ELEMENT .......... DO 110 M = L, N TST2 = TST1 + DABS(E(M)) IF (TST2 .EQ. TST1) GO TO 120 C .......... E(N) IS ALWAYS ZERO, SO THERE IS NO EXIT C THROUGH THE BOTTOM OF THE LOOP .......... 110 CONTINUE C 120 IF (M .EQ. L) GO TO 220 130 IF (J .EQ. 30) GO TO 1000 J = J + 1 C .......... FORM SHIFT .......... L1 = L + 1 L2 = L1 + 1 G = D(L) P = (D(L1) - G) / (2.0D0 * E(L)) R = PYTHAG(P,1.0D0) D(L) = E(L) / (P + DSIGN(R,P)) D(L1) = E(L) * (P + DSIGN(R,P)) DL1 = D(L1) H = G - D(L) IF (L2 .GT. N) GO TO 145 C DO 140 I = L2, N 140 D(I) = D(I) - H C 145 F = F + H C .......... QL TRANSFORMATION .......... P = D(M) C = 1.0D0 C2 = C EL1 = E(L1) S = 0.0D0 MML = M - L C .......... FOR I=M-1 STEP -1 UNTIL L DO -- .......... DO 200 II = 1, MML C3 = C2 C2 = C S2 = S I = M - II G = C * E(I) H = C * P R = PYTHAG(P,E(I)) E(I+1) = S * R S = E(I) / R C = P / R P = C * D(I) - S * G D(I+1) = H + S * (C * G + S * D(I)) C .......... FORM VECTOR .......... DO 180 K = 1, N H = Z(K,I+1) Z(K,I+1) = S * Z(K,I) + C * H Z(K,I) = C * Z(K,I) - S * H 180 CONTINUE C 200 CONTINUE C P = -S * S2 * C3 * EL1 * E(L) / DL1 E(L) = S * P D(L) = C * P TST2 = TST1 + DABS(E(L)) IF (TST2 .GT. TST1) GO TO 130 220 D(L) = D(L) + F 240 CONTINUE C .......... ORDER EIGENVALUES AND EIGENVECTORS .......... DO 300 II = 2, N I = II - 1 K = I P = D(I) C DO 260 J = II, N IF (D(J) .GE. P) GO TO 260 K = J P = D(J) 260 CONTINUE C IF (K .EQ. I) GO TO 300 D(K) = D(I) D(I) = P C DO 280 J = 1, N P = Z(J,I) Z(J,I) = Z(J,K) Z(J,K) = P 280 CONTINUE C 300 CONTINUE C GO TO 1001 C .......... SET ERROR -- NO CONVERGENCE TO AN C EIGENVALUE AFTER 30 ITERATIONS .......... 1000 IERR = L 1001 RETURN END SUBROUTINE TQLRAT(N,D,E2,IERR) C INTEGER I,J,L,M,N,II,L1,MML,IERR DOUBLE PRECISION D(N),E2(N) DOUBLE PRECISION B,C,F,G,H,P,R,S,T,EPSLON,PYTHAG C C THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE TQLRAT, C ALGORITHM 464, COMM. ACM 16, 689(1973) BY REINSCH. C C THIS SUBROUTINE FINDS THE EIGENVALUES OF A SYMMETRIC C TRIDIAGONAL MATRIX BY THE RATIONAL QL METHOD. C C ON INPUT C C N IS THE ORDER OF THE MATRIX. C C D CONTAINS THE DIAGONAL ELEMENTS OF THE INPUT MATRIX. C C E2 CONTAINS THE SQUARES OF THE SUBDIAGONAL ELEMENTS OF THE C INPUT MATRIX IN ITS LAST N-1 POSITIONS. E2(1) IS ARBITRARY. C C ON OUTPUT C C D CONTAINS THE EIGENVALUES IN ASCENDING ORDER. IF AN C ERROR EXIT IS MADE, THE EIGENVALUES ARE CORRECT AND C ORDERED FOR INDICES 1,2,...IERR-1, BUT MAY NOT BE C THE SMALLEST EIGENVALUES. C C E2 HAS BEEN DESTROYED. C C IERR IS SET TO C ZERO FOR NORMAL RETURN, C J IF THE J-TH EIGENVALUE HAS NOT BEEN C DETERMINED AFTER 30 ITERATIONS. C C CALLS PYTHAG FOR DSQRT(A*A + B*B) . C C QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, C MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY C C THIS VERSION DATED AUGUST 1983. C C ------------------------------------------------------------------ c c unnecessary initialization of B and C to keep g77 -Wall happy c B = 0.0D0 C = 0.0D0 C IERR = 0 IF (N .EQ. 1) GO TO 1001 C DO 100 I = 2, N 100 E2(I-1) = E2(I) C F = 0.0D0 T = 0.0D0 E2(N) = 0.0D0 C DO 290 L = 1, N J = 0 H = DABS(D(L)) + DSQRT(E2(L)) IF (T .GT. H) GO TO 105 T = H B = EPSLON(T) C = B * B C .......... LOOK FOR SMALL SQUARED SUB-DIAGONAL ELEMENT .......... 105 DO 110 M = L, N IF (E2(M) .LE. C) GO TO 120 C .......... E2(N) IS ALWAYS ZERO, SO THERE IS NO EXIT C THROUGH THE BOTTOM OF THE LOOP .......... 110 CONTINUE C 120 IF (M .EQ. L) GO TO 210 130 IF (J .EQ. 30) GO TO 1000 J = J + 1 C .......... FORM SHIFT .......... L1 = L + 1 S = DSQRT(E2(L)) G = D(L) P = (D(L1) - G) / (2.0D0 * S) R = PYTHAG(P,1.0D0) D(L) = S / (P + DSIGN(R,P)) H = G - D(L) C DO 140 I = L1, N 140 D(I) = D(I) - H C F = F + H C .......... RATIONAL QL TRANSFORMATION .......... G = D(M) IF (G .EQ. 0.0D0) G = B H = G S = 0.0D0 MML = M - L C .......... FOR I=M-1 STEP -1 UNTIL L DO -- .......... DO 200 II = 1, MML I = M - II P = G * H R = P + E2(I) E2(I+1) = S * R S = E2(I) / R D(I+1) = H + S * (H + D(I)) G = D(I) - E2(I) / G IF (G .EQ. 0.0D0) G = B H = G * P / R 200 CONTINUE C E2(L) = S * G D(L) = H C .......... GUARD AGAINST UNDERFLOW IN CONVERGENCE TEST .......... IF (H .EQ. 0.0D0) GO TO 210 IF (DABS(E2(L)) .LE. DABS(C/H)) GO TO 210 E2(L) = H * E2(L) IF (E2(L) .NE. 0.0D0) GO TO 130 210 P = D(L) + F C .......... ORDER EIGENVALUES .......... IF (L .EQ. 1) GO TO 250 C .......... FOR I=L STEP -1 UNTIL 2 DO -- .......... DO 230 II = 2, L I = L + 2 - II IF (P .GE. D(I-1)) GO TO 270 D(I) = D(I-1) 230 CONTINUE C 250 I = 1 270 D(I) = P 290 CONTINUE C GO TO 1001 C .......... SET ERROR -- NO CONVERGENCE TO AN C EIGENVALUE AFTER 30 ITERATIONS .......... 1000 IERR = L 1001 RETURN END SUBROUTINE TRED1(NM,N,A,D,E,E2) C INTEGER I,J,K,L,N,II,NM,JP1 DOUBLE PRECISION A(NM,N),D(N),E(N),E2(N) DOUBLE PRECISION F,G,H,SCALE C C THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE TRED1, C NUM. MATH. 11, 181-195(1968) BY MARTIN, REINSCH, AND WILKINSON. C HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 212-226(1971). C C THIS SUBROUTINE REDUCES A REAL SYMMETRIC MATRIX C TO A SYMMETRIC TRIDIAGONAL MATRIX USING C ORTHOGONAL SIMILARITY TRANSFORMATIONS. C C ON INPUT C C NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL C ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM C DIMENSION STATEMENT. C C N IS THE ORDER OF THE MATRIX. C C A CONTAINS THE REAL SYMMETRIC INPUT MATRIX. ONLY THE C LOWER TRIANGLE OF THE MATRIX NEED BE SUPPLIED. C C ON OUTPUT C C A CONTAINS INFORMATION ABOUT THE ORTHOGONAL TRANS- C FORMATIONS USED IN THE REDUCTION IN ITS STRICT LOWER C TRIANGLE. THE FULL UPPER TRIANGLE OF A IS UNALTERED. C C D CONTAINS THE DIAGONAL ELEMENTS OF THE TRIDIAGONAL MATRIX. C C E CONTAINS THE SUBDIAGONAL ELEMENTS OF THE TRIDIAGONAL C MATRIX IN ITS LAST N-1 POSITIONS. E(1) IS SET TO ZERO. C C E2 CONTAINS THE SQUARES OF THE CORRESPONDING ELEMENTS OF E. C E2 MAY COINCIDE WITH E IF THE SQUARES ARE NOT NEEDED. C C QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, C MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY C C THIS VERSION DATED AUGUST 1983. C C ------------------------------------------------------------------ C DO 100 I = 1, N D(I) = A(N,I) A(N,I) = A(I,I) 100 CONTINUE C .......... FOR I=N STEP -1 UNTIL 1 DO -- .......... DO 300 II = 1, N I = N + 1 - II L = I - 1 H = 0.0D0 SCALE = 0.0D0 IF (L .LT. 1) GO TO 130 C .......... SCALE ROW (ALGOL TOL THEN NOT NEEDED) .......... DO 120 K = 1, L 120 SCALE = SCALE + DABS(D(K)) C IF (SCALE .NE. 0.0D0) GO TO 140 C DO 125 J = 1, L D(J) = A(L,J) A(L,J) = A(I,J) A(I,J) = 0.0D0 125 CONTINUE C 130 E(I) = 0.0D0 E2(I) = 0.0D0 GO TO 300 C 140 DO 150 K = 1, L D(K) = D(K) / SCALE H = H + D(K) * D(K) 150 CONTINUE C E2(I) = SCALE * SCALE * H F = D(L) G = -DSIGN(DSQRT(H),F) E(I) = SCALE * G H = H - F * G D(L) = F - G IF (L .EQ. 1) GO TO 285 C .......... FORM A*U .......... DO 170 J = 1, L 170 E(J) = 0.0D0 C DO 240 J = 1, L F = D(J) G = E(J) + A(J,J) * F JP1 = J + 1 IF (L .LT. JP1) GO TO 220 C DO 200 K = JP1, L G = G + A(K,J) * D(K) E(K) = E(K) + A(K,J) * F 200 CONTINUE C 220 E(J) = G 240 CONTINUE C .......... FORM P .......... F = 0.0D0 C DO 245 J = 1, L E(J) = E(J) / H F = F + E(J) * D(J) 245 CONTINUE C H = F / (H + H) C .......... FORM Q .......... DO 250 J = 1, L 250 E(J) = E(J) - H * D(J) C .......... FORM REDUCED A .......... DO 280 J = 1, L F = D(J) G = E(J) C DO 260 K = J, L 260 A(K,J) = A(K,J) - F * E(K) - G * D(K) C 280 CONTINUE C 285 DO 290 J = 1, L F = D(J) D(J) = A(L,J) A(L,J) = A(I,J) A(I,J) = F * SCALE 290 CONTINUE C 300 CONTINUE C RETURN END SUBROUTINE TRED2(NM,N,A,D,E,Z) C INTEGER I,J,K,L,N,II,NM,JP1 DOUBLE PRECISION A(NM,N),D(N),E(N),Z(NM,N) DOUBLE PRECISION F,G,H,HH,SCALE C C THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE TRED2, C NUM. MATH. 11, 181-195(1968) BY MARTIN, REINSCH, AND WILKINSON. C HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 212-226(1971). C C THIS SUBROUTINE REDUCES A REAL SYMMETRIC MATRIX TO A C SYMMETRIC TRIDIAGONAL MATRIX USING AND ACCUMULATING C ORTHOGONAL SIMILARITY TRANSFORMATIONS. C C ON INPUT C C NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL C ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM C DIMENSION STATEMENT. C C N IS THE ORDER OF THE MATRIX. C C A CONTAINS THE REAL SYMMETRIC INPUT MATRIX. ONLY THE C LOWER TRIANGLE OF THE MATRIX NEED BE SUPPLIED. C C ON OUTPUT C C D CONTAINS THE DIAGONAL ELEMENTS OF THE TRIDIAGONAL MATRIX. C C E CONTAINS THE SUBDIAGONAL ELEMENTS OF THE TRIDIAGONAL C MATRIX IN ITS LAST N-1 POSITIONS. E(1) IS SET TO ZERO. C C Z CONTAINS THE ORTHOGONAL TRANSFORMATION MATRIX C PRODUCED IN THE REDUCTION. C C A AND Z MAY COINCIDE. IF DISTINCT, A IS UNALTERED. C C QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, C MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY C C THIS VERSION DATED AUGUST 1983. C C ------------------------------------------------------------------ C DO 100 I = 1, N C DO 80 J = I, N 80 Z(J,I) = A(J,I) C D(I) = A(N,I) 100 CONTINUE C IF (N .EQ. 1) GO TO 510 C .......... FOR I=N STEP -1 UNTIL 2 DO -- .......... DO 300 II = 2, N I = N + 2 - II L = I - 1 H = 0.0D0 SCALE = 0.0D0 IF (L .LT. 2) GO TO 130 C .......... SCALE ROW (ALGOL TOL THEN NOT NEEDED) .......... DO 120 K = 1, L 120 SCALE = SCALE + DABS(D(K)) C IF (SCALE .NE. 0.0D0) GO TO 140 130 E(I) = D(L) C DO 135 J = 1, L D(J) = Z(L,J) Z(I,J) = 0.0D0 Z(J,I) = 0.0D0 135 CONTINUE C GO TO 290 C 140 DO 150 K = 1, L D(K) = D(K) / SCALE H = H + D(K) * D(K) 150 CONTINUE C F = D(L) G = -DSIGN(DSQRT(H),F) E(I) = SCALE * G H = H - F * G D(L) = F - G C .......... FORM A*U .......... DO 170 J = 1, L 170 E(J) = 0.0D0 C DO 240 J = 1, L F = D(J) Z(J,I) = F G = E(J) + Z(J,J) * F JP1 = J + 1 IF (L .LT. JP1) GO TO 220 C DO 200 K = JP1, L G = G + Z(K,J) * D(K) E(K) = E(K) + Z(K,J) * F 200 CONTINUE C 220 E(J) = G 240 CONTINUE C .......... FORM P .......... F = 0.0D0 C DO 245 J = 1, L E(J) = E(J) / H F = F + E(J) * D(J) 245 CONTINUE C HH = F / (H + H) C .......... FORM Q .......... DO 250 J = 1, L 250 E(J) = E(J) - HH * D(J) C .......... FORM REDUCED A .......... DO 280 J = 1, L F = D(J) G = E(J) C DO 260 K = J, L 260 Z(K,J) = Z(K,J) - F * E(K) - G * D(K) C D(J) = Z(L,J) Z(I,J) = 0.0D0 280 CONTINUE C 290 D(I) = H 300 CONTINUE C .......... ACCUMULATION OF TRANSFORMATION MATRICES .......... DO 500 I = 2, N L = I - 1 Z(N,L) = Z(L,L) Z(L,L) = 1.0D0 H = D(I) IF (H .EQ. 0.0D0) GO TO 380 C DO 330 K = 1, L 330 D(K) = Z(K,I) / H C DO 360 J = 1, L G = 0.0D0 C DO 340 K = 1, L 340 G = G + Z(K,I) * Z(K,J) C DO 360 K = 1, L Z(K,J) = Z(K,J) - G * D(K) 360 CONTINUE C 380 DO 400 K = 1, L 400 Z(K,I) = 0.0D0 C 500 CONTINUE C 510 DO 520 I = 1, N D(I) = Z(N,I) Z(N,I) = 0.0D0 520 CONTINUE C Z(N,N) = 1.0D0 E(1) = 0.0D0 RETURN END nlme/src/matrix.c0000644000176000001440000001442312242150465013501 0ustar ripleyusers/* Basic matrix manipulations and QR decomposition Copyright 1997-2005 Douglas M. Bates , Jose C. Pinheiro, Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include "matrix.h" /* find qr decomposition, dqrdc2() is basis of R's qr(), also used by nlme */ void F77_NAME(dqrdc2)(double *x, int *ldx, int *n, int *p, double *tol, int *rank, double *qraux, int *pivot, double *work); void F77_NAME(dqrls)(double *x, int *n, int *p, double *y, int *ny, double *tol, double *b, double *rsd, double *qty, int *k, int *jpvt, double *qraux, double *work); void d_axpy(double *y, double a, double *x, longint n) { /* y <- a * x + y */ while (n-- > 0) { *y++ += a * *x++; } } double d_sum_sqr( double *x, longint n ) { /* sum(x * x) */ double accum = 0.0; while (n-- > 0) { accum += *x * *x; x++; } return accum; } double d_dot_prod( double *x, longint incx, double *y, longint incy, longint n ) { /* sum(x * y) */ double accum = 0.0; while (n-- > 0) { accum += *x * *y; x +=incx; y += incy; } return accum; } double * copy_mat(double *y, longint ldy, double *x, longint ldx, longint nrow, longint ncol) { /* y <- x */ double * ret = y; while (ncol-- > 0) { Memcpy(y, x, nrow); y += ldy; x += ldx; } return ret; } double * copy_trans(double *y, longint ldy, double *x, longint ldx, longint nrow, longint ncol) /* y <- t(x) */ { double * ret = y; longint i, j; for (i = 0L; i < nrow; i++) { for (j = 0L; j < ncol; j++) { y[j] = x[i + j * ldx]; } y += ldy; } return ret; } double * mult_mat(double *z, longint ldz, double *x, longint ldx, longint xrows, longint xcols, double *y, longint ldy, longint ycols) { /* z <- x %*% y */ double *t, *tmp = Calloc((size_t)(xrows * ycols), double); int i, j; /* use tmp so z can be either x or y */ t = tmp; for (i = 0; i < ycols; i++) { for (j = 0; j < xcols; j++) { d_axpy(t, y[j], x + j * ldx, xrows); } t += xrows; y += ldy; } copy_mat(z, ldz, tmp, xrows, xrows, ycols); Free(tmp); return z; } static void zero_mat(double *y, longint ldy, longint nrow, longint ncol) { /* y[,] <- 0 */ while (ncol-- > 0) { int i; for (i = 0; i < nrow; i++) { y[i] = 0.0; } y += ldy; } } QRptr QR(double *mat, longint ldmat, longint nrow, longint ncol) { /* Constructor for a QR object */ QRptr value = Calloc((size_t) 1, struct QR_struct); longint j; double *work; if (sqrt_eps == 0.) { sqrt_eps = sqrt(DOUBLE_EPS); } value->mat = mat; value->ldmat = ldmat; value->nrow = nrow; value->ncol = ncol; value->qraux = Calloc((size_t) ncol, double); value->pivot = Calloc((size_t) ncol, longint); for (j = 0; j < ncol; j++) { (value->pivot)[j] = j; } work = Calloc( 2 * ncol, double ); F77_CALL(dqrdc2) (mat, &ldmat, &nrow, &ncol, &sqrt_eps, &(value->rank), value->qraux, value->pivot, work); Free(work); return value; } void QRfree(QRptr this) { /* destructor for a QR object*/ Free(this->pivot); Free(this->qraux); Free(this); } longint QRqty(QRptr this, double *ymat, longint ldy, longint ycol) { /* ymat <- qr.qty(this, ymat) */ longint j, info, task = 1000L; for (j = 0; j < ycol; j++) { double *col = ymat + j * ldy; F77_CALL(dqrsl) (this->mat, &(this->ldmat), &(this->nrow), &(this->ncol), this->qraux, col, DNULLP, col, DNULLP, DNULLP, DNULLP, &task, &info); } return info; } longint QRsolve( QRptr this, double *ymat, longint ldy, longint ycol, double *beta, longint ldbeta ) { /* beta <- qr.beta(this, ymat) */ longint j, info, task = 1100L; double *qty = Calloc( this->nrow, double ), *bb = Calloc( this->ncol, double ); for (j = 0; j < ycol; j++) { Memcpy( qty, ymat, this->nrow ); F77_CALL(dqrsl) (this->mat, &(this->ldmat), &(this->nrow), &(this->ncol), this->qraux, qty, DNULLP, qty, bb, DNULLP, DNULLP, &task, &info); Memcpy( beta, bb, this->ncol ); ymat += ldy; beta += ldbeta; } Free( qty ); Free( bb ); return info; } double QRlogAbsDet(QRptr this) { /* log(abs(det(upper triangle))) */ longint j; double accum = 0.0; for (j = 0; j < this->rank; j++) accum += log(fabs(this->mat[j * (this->ldmat + 1L)])); return accum; } void QRstoreR(QRptr this, double *dest, longint ldDest) { /* store the R part into dest */ int i; for (i = 0; i < this->ncol; i++) { Memcpy(dest + this->pivot[i] * ldDest, this->mat + i * this->ldmat, ((i + 1) > this->rank) ? this->rank : i + 1); } } longint QR_and_rotate(double *mat, longint ldmat, longint nrow, longint ncol, double *DmHalf, longint qi, longint ndecomp, double *logdet, double *store, longint ldstr) /* Append DmHalf to the bottom of mat and take a QR decomposition of the first ndecomp columns. Apply the rotations to the other columns. Return the rank and increment log(abs(det(R11))). */ { longint rank, arow = nrow + qi, /* number of rows in augmented matrix */ ndrow = ((arow > ndecomp) ? ndecomp : arow); double *aug = Calloc((size_t) arow * ncol, double); QRptr aQR; copy_mat(aug, arow, mat, ldmat, nrow, ncol); copy_mat(aug + nrow, arow, DmHalf, qi, qi, qi); aQR = QR(aug, arow, arow, ndecomp); if (logdet != DNULLP) { *logdet += QRlogAbsDet(aQR); } QRqty(aQR, aug + ndecomp * arow, arow, ncol - ndecomp); if (ldstr > 0) { QRstoreR(aQR, store, ldstr); copy_mat(store + ndecomp * ldstr, ldstr, aug + ndecomp * arow, arow, ndrow, ncol - ndecomp); } if (qi < ndecomp) { zero_mat(mat, ldmat, nrow, ncol); } copy_mat(mat + ndecomp * ldmat, ldmat, aug + ndecomp * (arow + 1L), arow, arow - ndrow, ncol - ndecomp); rank = aQR->rank; QRfree(aQR); Free(aug); return rank; } nlme/src/Makevars0000644000176000001440000000003410357165056013525 0ustar ripleyusersPKG_CFLAGS=$(C_VISIBILITY) nlme/src/pdMat.h0000644000176000001440000000173012242150465013244 0ustar ripleyusers/* header file for the nlme package Copyright 1999 Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #ifndef NLME_PDMAT_H #define NLME_PDMAT_H #include "base.h" extern void compSymm_pd(double *, longint *, double *); extern void matrixLog_pd(double *, longint *, double *); extern void logChol_pd(double *, longint *, double *); #endif /* NLME_BASE_H */ nlme/src/nlOptimizer.h0000644000176000001440000000205512242150465014514 0ustar ripleyusers/* header file for the nlme package Copyright 1999 Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #ifndef NLME_NLOPTIMIZER_H #define NLME_NLOPTIMIZER_H #include "base.h" #ifdef R_S_H #include "Rinternals.h" #endif extern int evaluate(double *, longint aMOD, double ** aSEV); extern void fit_gnls(double *, longint *, double *, double *, longint *, double *, double *, longint *, longint * aMOD); #endif /* NLME_NLOPTIMIZER_H */ nlme/src/base.h0000644000176000001440000000347112242150465013115 0ustar ripleyusers/* header file for the nlme package Copyright 1999-2001 Saikat DebRoy, Douglas Bates This file is part of the nlme package for S and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #ifndef NLME_BASE_H #define NLME_BASE_H #include "S.h" #include #ifdef R_S_H #include #include #include //#include #ifdef ENABLE_NLS #include #define _(String) dgettext ("nlme", String) #else #define _(String) (String) #endif #else #include "nonlin.h" #endif #define DNULLP (double *) 0 #ifndef SPLUS_VERSION /* F77_CALL and F77_NAME used as in S-PLUS */ #ifdef S_VERSION /* S VERSION 4 */ #define F77_CALL F77_SUB #define F77_NAME F77_SUB #endif /* S_VERSION */ #endif /* SPLUS_VERSION */ #ifndef R_S_H extern void F77_NAME(dtrsl)(); extern void F77_NAME(dqrsl)(); #define longint long int #endif /* R_S_H */ #ifdef R_S_H #define MOD , model #define aMOD , SEXP model #else #define MOD #define aMOD #endif /* R_S_H */ #if( defined(SPLUS_VERSION) && SPLUS_VERSION >= 5000 ) #define SEV , S_evaluator #define aSEV , s_evaluator *S_evaluator #else #define SEV #define aSEV #define S_EVALUATOR #endif /* SPLUS_VERSION */ extern double sqrt_eps; extern double xlower; #endif /* NLME_BASE_H */ nlme/src/nlmefit.h0000644000176000001440000000654112242150465013642 0ustar ripleyusers/* header file for the nlme package Copyright 1999-2001 Saikat DebRoy, Douglas Bates This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #ifndef NLME_NLMEFIT_H #define NLME_NLMEFIT_H #include "base.h" #include // for nlm internals typedef struct dim_struct { longint N, /* number of observations in original data */ ZXrows, /* number of rows in ZXy */ ZXcols, /* number of columns in ZXy */ Q, /* number of levels of random effects */ Srows, /* number of rows in decomposition */ *q, /* dimensions of the random effects */ *ngrp, /* numbers of groups at each level */ *DmOff, /* offsets into the DmHalf array */ *ncol, /* no. of columns decomposed at each level */ *nrot, /* no. of columns rotated at each level */ **ZXoff, /* offsets into ZXy */ **ZXlen, /* groups lengths */ **SToff, /* offsets into storage */ **DecOff, /* offsets into decomposition */ **DecLen; /* decomposition group lengths */ } *dimPTR; typedef struct state_struct { dimPTR dd; double *ZXy; longint *pdClass, *RML; } *statePTR; extern dimPTR dims(longint *); extern dimPTR dimS(SEXP); extern int count_DmHalf_pars(dimPTR, longint *); extern double * generate_theta(double *, dimPTR, longint *, double *); extern double * generate_DmHalf(double *, dimPTR, longint *, double *); extern void dimFree(dimPTR); extern void mixed_decomp(double *, longint *); extern void mixed_fcn(longint, double *, double *, void *); extern void mixed_grad(longint, double *, double *, void *); extern void internal_decomp(dimPTR, double *); extern void mixed_loglik(double *, longint *, double *, longint *, double *, double *); extern double internal_loglik(dimPTR, double *, double *, longint *, double *, double *); extern void mixed_estimate(double *, longint *, double *, longint *, double *, double *, longint *); extern void internal_estimate(dimPTR, double *); extern void mixed_EM(double *, longint *, double *, longint *, longint *, longint *, double *, double *, double *); extern void internal_EM(dimPTR, double *, double *, int, longint *, longint *, double *, double *, double *); extern void mixed_combined(double *, longint *, double *, longint *, longint *, longint *, double *, double *, double *, longint *); extern void mixed_calcf(longint *, double *, longint *, double *, longint *, double *, void (*)(void)); extern void mixed_calcgh(longint *, double *, longint *, double *, double *, longint *, double *, void (*)(void)); extern void gls_loglik(double *, longint *, double *, double *); extern void gls_estimate(double *, longint *, double *, double *, double *, double *, longint *, longint *); #endif /* NLME_NLMEFIT_H */ nlme/src/nlme.c0000644000176000001440000003702312242150465013131 0ustar ripleyusers/* Routines for fitting nlme models Copyright 1997-2001 Douglas M. Bates , Jose C. Pinheiro, Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include "nlOptimizer.h" #include "matrix.h" #include "nlmefit.h" extern void corStruct_recalc(double *, longint *, longint *, double *); #ifdef R_S_H #define is_na_DOUBLE(x) ISNA(*(x)) #endif /* R_S_H */ /* nlme functions and variables */ typedef struct nlme_struct { /* Nonlinear mixed-effects structure */ double *residuals, *gradient, *DmHalf, *corFactor, *varWeights, *newtheta, *theta, *incr, *add_ons, new_objective, objective, RSS; longint corOpt, varOpt, nparTot, ngrpTot, nrdof, *sgroups, *corDims, *npar, *pdClass, *pdims, *ZXoff, *ZXlen; double *result[1]; dimPTR dd, d1; #ifdef R_S_H SEXP model; #endif /* R_S_H */ int conv_failure; } *nlmePtr; double sqrt_eps = 0.0; static longint * make_sequential(longint *dest, longint *src, longint n) { /* copy the pattern from src to dest */ /* but in sequential values starting */ /* from 0 */ longint val = 0, *ret = dest, sval; if (n <= 0) return dest; sval = *src++; *dest++ = val; while (--n) { if (*src != sval) {sval = *src; val++;} src++; *dest++ = val; } return ret; } static nlmePtr nlme_init(double *ptheta, double *pDmHalf, longint *pgroups, longint *pdims, longint *pdClass, double *pcorFactor, double *pvarWeights, longint *pcorDims, double *additional, longint *pcorOpt, longint *pvarOpt aMOD) { longint i, *src, nResult; nlmePtr nlme = Calloc(1, struct nlme_struct); nlme->pdims = pdims; nlme->DmHalf = pDmHalf; nlme->pdClass = pdClass; nlme->corFactor = pcorFactor; nlme->varWeights = pvarWeights; nlme->corDims = pcorDims; nlme->dd = dims(pdims); nlme->npar = Calloc(nlme->dd->Q + 1, longint); for(i = 0, nlme->nparTot = 0; i <= nlme->dd->Q; i++) { nlme->npar[i] = (nlme->dd->ncol)[i] * (nlme->dd->ngrp)[i]; nlme->nparTot += nlme->npar[i]; } nlme->nrdof = nlme->dd->N - nlme->nparTot; nlme->sgroups = pgroups; for(i = 0, src = nlme->sgroups; i < nlme->dd->Q; i++) { make_sequential(src, src, nlme->dd->N); src += nlme->dd->N; } nlme->corOpt = *pcorOpt; nlme->varOpt = *pvarOpt; nlme->theta = ptheta; nlme->add_ons = additional; nlme->ngrpTot = 0; for (i = 0; i < (nlme->dd->Q + 2); i++) { nlme->ngrpTot += nlme->dd->ngrp[i]; } nlme->ZXoff = Calloc(nlme->ngrpTot, longint); Memcpy(nlme->ZXoff, nlme->dd->ZXoff[0], nlme->ngrpTot); nlme->ZXlen = Calloc(nlme->ngrpTot, longint); Memcpy(nlme->ZXlen, nlme->dd->ZXlen[0], nlme->ngrpTot); nlme->newtheta = Calloc(nlme->nparTot, double); nlme->incr = Calloc(nlme->nparTot, double); #ifdef R_S_H nlme->model = model; nlme->result[0] = DNULLP; nResult = evaluate(ptheta, nlme->nparTot MOD, nlme->result SEV); nlme->result[0] = Calloc(nResult, double); #endif /* R_S_H */ return(nlme); } static void nlmeFree(nlmePtr nlme) { Free(nlme->newtheta); Free(nlme->incr); Free(nlme->npar); Free(nlme->ZXoff); Free(nlme->ZXlen); #ifdef R_S_H Free(nlme->result[0]); #endif Free(nlme); } static void /* undo changes in dd from internal_decomp */ restore_dims(nlmePtr nlme) { nlme->dd->ZXrows = nlme->dd->N; Memcpy(nlme->dd->ZXoff[0], nlme->ZXoff, nlme->ngrpTot); Memcpy(nlme->dd->ZXlen[0], nlme->ZXlen, nlme->ngrpTot); } static void nlme_wtCorrAdj(nlmePtr nlme) { longint i, j; if(nlme->varOpt) { /* variance function adjustment */ for(i = 0; i < nlme->dd->N; i++) { for(j = 0; j < nlme->dd->ZXcols; j++) { *(nlme->result[0] + i + j * nlme->dd->N) *= nlme->varWeights[i]; } } } if(nlme->corOpt) { /* correlation structure adjustment */ corStruct_recalc(nlme->result[0], nlme->corDims, &nlme->dd->ZXcols, nlme->corFactor); } } static double nlme_RSS(nlmePtr nlme) { nlme->residuals = nlme->result[0] + (nlme->dd->ZXcols - 1) * nlme->dd->N; nlme->gradient = nlme->result[0]; nlme->RSS = d_sum_sqr(nlme->residuals, nlme->dd->N); return(nlme->RSS); } static double nlme_objective(nlmePtr nlme) { longint i; double RSS, *srcB; RSS = nlme->RSS; for(i = 0, srcB = nlme->newtheta; i < nlme->dd->Q; i++) { double *work = Calloc(nlme->npar[i], double); mult_mat(work, (nlme->dd->ncol)[i], nlme->DmHalf + (nlme->dd->DmOff)[i], (nlme->dd->ncol)[i], (nlme->dd->ncol)[i], (nlme->dd->ncol)[i], srcB, (nlme->dd->ncol)[i], (nlme->dd->ngrp)[i]); RSS += d_sum_sqr(work, nlme->npar[i]); srcB += nlme->npar[i]; Free(work); } return(RSS); } static void nlme_workingRes(nlmePtr nlme) { longint i, j, k; double *theta = nlme->theta; for(j = 0; j < nlme->dd->Q; j++) { longint nb = nlme->dd->ncol[j]; double *res = nlme->gradient + nlme->dd->ZXrows * (nlme->dd->ZXcols - 1); for(k = 0; k < nlme->dd->ngrp[j]; k++) { double *Zjk = nlme->gradient + nlme->dd->ZXoff[j][k]; for(i = 0; i < nlme->dd->ZXlen[j][k]; i++) { *res += d_dot_prod(Zjk + i, nlme->dd->ZXrows, theta, 1, nb); res++; } theta += nb; } } } /* static double */ /* nlme_RegSS(nlmePtr nlme, double *mat) */ /* { */ /* longint i, j, nq; */ /* double regSS = 0, aux = 0, *src; */ /* double *incr = nlme->incr; */ /* for(i = 0; i < nlme->dd->N; i++) { */ /* for(j = 0, nq = 0, aux = 0; j < nlme->dd->Q; j++) { */ /* aux += d_dot_prod(mat + (nlme->dd->ZXoff)[j][0] + i, */ /* nlme->dd->ZXrows, */ /* incr+nq+(nlme->sgroups+j*nlme->dd->ZXrows)[i] */ /* * nlme->dd->ncol[j], 1L, nlme->dd->ncol[j]); */ /* nq += nlme->npar[j]; */ /* } */ /* aux += d_dot_prod(mat + (nlme->dd->ZXoff)[nlme->dd->Q][0] + i, */ /* nlme->dd->N, incr + nq, 1L, (nlme->dd->ncol)[nlme->dd->Q]); */ /* regSS += aux * aux; */ /* } */ /* for(i = 0, src = incr; i < nlme->dd->Q; i++) { */ /* double *work = Calloc((nlme->npar)[i], double); */ /* mult_mat(work, (nlme->dd->ncol)[i], nlme->DmHalf + (nlme->dd->DmOff)[i], */ /* (nlme->dd->ncol)[i], (nlme->dd->ncol)[i], (nlme->dd->ncol)[i], */ /* src, (nlme->dd->ncol)[i], (nlme->dd->ngrp)[i]); */ /* regSS += d_sum_sqr(work, (nlme->npar)[i]); */ /* src += (nlme->npar)[i]; */ /* Free(work); */ /* } */ /* return(regSS); */ /* } */ static double nlme_increment(nlmePtr nlme) { double predObj, *dest, *src, logLik, lRSS, *Ra = Calloc( nlme->dd->DmOff[nlme->dd->Q], double), *dc = Calloc(nlme->dd->Srows * nlme->dd->ZXcols, double) /* , *auxGrad = Calloc(nlme->dd->N * (nlme->dd->ZXcols - 1), double) */ ; double *incr = nlme->incr; double *theta = nlme->theta; longint i, j, start, RML = 0; if (!sqrt_eps) sqrt_eps = sqrt(DOUBLE_EPS); /* Memcpy(auxGrad, nlme->gradient, (nlme->dd->ZXcols - 1) * nlme->dd->N); */ internal_decomp(nlme->dd, nlme->gradient); nlme_workingRes(nlme); internal_EM(nlme->dd, nlme->gradient, nlme->DmHalf, 20, nlme->pdClass, &RML, &logLik, Ra, &lRSS); { statePTR st = Calloc(1, struct state_struct); int ntheta = count_DmHalf_pars( nlme->dd, nlme->pdClass ), itrmcd, itncnt, msg, iagflg; double epsm, *theta = Calloc(ntheta, double), *typsiz = Calloc(ntheta, double), *grad = Calloc(ntheta, double), *newtheta = Calloc(ntheta, double), *a = Calloc(ntheta * ntheta, double), *work = Calloc(ntheta * 9, double); st->dd = nlme->dd; st->ZXy = nlme->gradient; st->pdClass = nlme->pdClass; st->RML = &RML; generate_theta(theta, nlme->dd, nlme->pdClass, nlme->DmHalf); epsm = DBL_EPSILON; msg = 9; /* don't inhibit checks but suppress output */ for (i = 0; i < ntheta; i++) { typsiz[i] = 1.0; } /* iagflg = 1; */ /* for (i = 0; i < nlme->dd->Q; i++) { */ /* if (nlme->pdClass[i] < 1 || nlme->pdClass[i] == 3 || nlme->pdClass[i] > 4) { */ /* iagflg = 0; */ /* break; */ /* } */ /* } */ iagflg = 0; /* temporary modification */ optif9(ntheta, ntheta, theta, (fcn_p) mixed_fcn, (fcn_p) mixed_grad, (d2fcn_p) 0, st, typsiz, 1.0 /*fscale*/, 1 /*method*/, 1 /*iexp*/, &msg, -1 /*ndigit*/, 20 /*itnlim*/, iagflg, 0 /*iahflg*/, -1. /*dlt*/, pow(epsm, 1.0/3.0) /*gradtl*/, 0. /*stepmx*/, sqrt(epsm) /*steptl*/, newtheta, &logLik, grad, &itrmcd, a, work, &itncnt); if (msg == 0) { generate_DmHalf(nlme->DmHalf, nlme->dd, nlme->pdClass, theta); } Free(work); Free(a); Free(newtheta); Free(grad); Free(typsiz); Free(theta); Free(st); } nlme->objective = nlme_objective(nlme); internal_loglik(nlme->dd, nlme->result[0], nlme->DmHalf, &RML, dc, DNULLP); internal_estimate(nlme->dd, dc); src = dc + (nlme->dd->ZXcols - 1) * nlme->dd->Srows; dest = incr; for(i = 0, start = 0; i <= nlme->dd->Q; i++) { for(j = 0; j < (nlme->dd->ngrp)[i]; j++) { Memcpy(dest, src + ((nlme->dd->SToff)[i][j] - start), (nlme->dd->ncol)[i]); dest += (nlme->dd->ncol)[i]; } start += (nlme->dd->ncol)[i] * nlme->dd->Srows; } for(i = 0; i < (nlme->nparTot - nlme->npar[nlme->dd->Q]); i++) { incr[i] -= theta[i]; } predObj = dc[nlme->dd->ZXcols * nlme->dd->ZXrows - 1]; predObj = predObj * predObj; /* regSS = nlme_RegSS(nlme, auxGrad); */ /* Regression Sum of Squares */ Free(Ra); Free(dc); /* Free(auxGrad); */ return(sqrt(((double) nlme->nrdof) * (nlme->objective - predObj) / (((double) nlme->nparTot) * predObj))); } static longint nlme_iterate(nlmePtr nlme, double *settings aSEV) { double factor, criterion; #ifdef R_S_H SEXP model = nlme->model; #endif /* R_S_H */ double *newtheta = nlme->newtheta; double *theta = nlme->theta; longint iteration; long maxIter = (long) settings[0]; double minFactor = settings[1]; double tolerance = settings[2]; S_EVALUATOR ; Memcpy(newtheta, theta, nlme->nparTot); evaluate(theta, nlme->nparTot MOD, nlme->result SEV); nlme_wtCorrAdj(nlme); nlme_RSS(nlme); settings[3] = nlme->conv_failure = 0; for (factor = 1.0, iteration = 1; iteration <= maxIter; iteration++) { /* outer iteration loop */ /* increment and convergence criterion */ criterion = nlme_increment(nlme); if (nlme->conv_failure) return(iteration); /* Unable to make increment */ if (criterion < tolerance) return(iteration); /* successful completion */ do { /* inner loop for acceptable step size */ if (factor < minFactor) { settings[3] = 1; return(iteration); } Memcpy(newtheta, theta, nlme->nparTot); d_axpy(newtheta, factor, nlme->incr, nlme->nparTot); evaluate(newtheta, nlme->nparTot MOD, nlme->result SEV); restore_dims(nlme); nlme_wtCorrAdj(nlme); nlme_RSS(nlme); nlme->new_objective = nlme_objective(nlme); if (nlme->conv_failure) return(iteration); /* unable to evaluate objective */ factor /= 2.0; } while (nlme->new_objective >= nlme->objective); factor *= 4.0; if (factor > 1.0) factor = 1.0; nlme->objective = nlme->new_objective; Memcpy(theta, newtheta, nlme->nparTot); } settings[3] = 2; /* Maximum number of iterations exceeded */ return(iteration - 1); } static void nlme_wrapup(nlmePtr nlme aSEV) { #ifdef R_S_H SEXP model = nlme->model; #endif S_EVALUATOR evaluate(nlme->theta, nlme->nparTot MOD, nlme->result SEV); Memcpy(nlme->add_ons, nlme->result[0], nlme->dd->N * nlme->dd->ZXcols); nlme->objective = nlme_objective(nlme); Free(nlme->npar); dimFree(nlme->dd); } void fit_nlme(double *ptheta, double *pDmHalf, longint *pgroups, longint *pdims, longint *pdClass, double *pcorFactor, double *pvarWeights, longint *pcorDims, double *settings, double *additional, longint *pcorOpt, longint *pvarOpt aMOD) { nlmePtr nlme; S_EVALUATOR ; #ifdef R_S_H PROTECT(model); #endif /* R_S_H */ nlme = nlme_init(ptheta, pDmHalf, pgroups, pdims, pdClass, pcorFactor, pvarWeights, pcorDims, additional, pcorOpt, pvarOpt MOD); if(!sqrt_eps) sqrt_eps = sqrt(DOUBLE_EPS); settings[4] = (double) nlme_iterate(nlme, settings SEV); nlme_wrapup(nlme SEV); settings[5] = nlme->objective; nlmeFree(nlme); #ifdef R_S_H UNPROTECT(1); #endif /* R_S_H */ } void nlme_one_comp_open (longint *nrow, double *Resp, double *inmat) { longint i, nn = *nrow; double ke, ka, tl = 0, delta, C = 0, Ca = 0, interval, *Subject, *Time, *Conc, *Dose, *Interval, *V, *Ka, *Ke, sl = DOUBLE_EPS; /* sl is last subject number, usually */ /* an integer but passed as double. */ /* It is started at an unlikely value. */ Subject = inmat; Time = inmat + nn; Conc = inmat + 2 * nn; Dose = inmat + 3 * nn; Interval = inmat + 4 * nn; V = inmat + 5 * nn; Ka = inmat + 6 * nn; Ke = inmat + 7 * nn; for(i = nn; i--; Resp++, Subject++, Time++, Conc++, Dose++, Interval++, V++, Ka++, Ke++) { ke = *Ke; ka = *Ka; if (*Subject != sl) { /* new Subject */ sl = *Subject; tl = *Time; *Resp = 0; if (!is_na_DOUBLE(Interval)) { /* steady-state dosing */ interval = *Interval; C = *Dose * ka * (1/(1 - exp(-ke * interval)) - 1/(1 - exp(-ka * interval)))/ (*V * (ka - ke)); Ca = *Dose / (*V * (1 - exp(-ka * interval))); } else { /* non-steady-state */ C = 0; Ca = *Dose/ *V; } } else { /* same Subject */ if (!is_na_DOUBLE(Dose)) { if (!is_na_DOUBLE(Interval)) { /* steady-state dosing */ interval = *Interval; C = *Dose * ka * (1/(1 - exp(-ke * interval)) - 1/(1 - exp(-ka * interval)))/ (*V * (ka - ke)); Ca = *Dose / (*V * (1 - exp(-ka * interval))); } else { /* non-steady-state */ delta = *Time - tl; C = C*exp(-ke * delta) + Ca*ka*(exp(-ke*delta) - exp(-ka*delta))/(ka -ke); Ca = Ca * exp(-ka*delta) + *Dose / *V; } tl = *Time; *Resp = 0; } else if (!is_na_DOUBLE(Conc)) { delta = *Time - tl; *Resp = C * exp(-ke * delta) + Ca * ka * (exp(-ke * delta) - exp(-ka * delta))/(ka - ke); } else *Resp = 0; } } } /* Phenobarbital Model */ void nlme_one_comp_first (longint *nrow, double *Resp, double *inmat) { longint i, j, nn = *nrow, mm = 0; double v, cl, *tl = Calloc(nn, double), *ds = Calloc(nn, double), *Subject, *Time, *Dose, *V, *Cl, sl = DOUBLE_EPS; /* sl is last subject number, usually */ /* an integer but passed as double. */ /* It is started at an unlikely value. */ Subject = inmat; Time = inmat + nn; Dose = inmat + 2 * nn; V = inmat + 3 * nn; Cl = inmat + 4 * nn; for(i = nn; i--; Resp++, Subject++, Time++, Dose++, V++, Cl++) { v = *V; cl = *Cl; *Resp = 0; if (*Subject != sl) { /* new Subject */ if (is_na_DOUBLE(Dose)) { error(_("First observation on an individual must have a dose")); } sl = *Subject; mm = 0; tl[mm] = *Time; ds[mm] = *Dose; } else { /* same Subject */ if (!is_na_DOUBLE(Dose)) { /* Dose measurement */ mm++; tl[mm] = *Time; ds[mm] = *Dose; } else { /* Concentration measurement */ for(j = 0; j <= mm; j++) { *Resp += ds[j] * exp(-cl * (*Time - tl[j]) / v) / v; } } } } Free(ds); Free(tl); } nlme/src/chol.f0000644000176000001440000000444712242150465013132 0ustar ripleyusersc----------------------------------------------------------------------- c c R : A Computer Langage for Statistical Data Analysis c Copyright (C) 1996, 1997 Robert Gentleman and Ross Ihaka c Copyright (C) 2001 The R Core Team c c This program is free software; you can redistribute it and/or modify c it under the terms of the GNU General Public License as published by c the Free Software Foundation; either version 2 of the License, or c (at your option) any later version. c c This program is distributed in the hope that it will be useful, c but WITHOUT ANY WARRANTY; without even the implied warranty of c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the c GNU General Public License for more details. c c You should have received a copy of the GNU General Public License c along with this program; if not, a copy is available at c http://www.r-project.org/Licenses/ c c----------------------------------------------------------------------- c c chol performs the choleski decomposition of a symmetric c positive-definite matrix. this is just a wrapper for the c linpack routine dpofa. c c on entry c c a double precision(lda,n) c the upper triangle of the matrix to be factorized c is contained in the upper triangle of a. c c lda integer c the leading dimension of a. c c n integer c the number or rows and columns of the matrix c to be factorized. c c on return c c v double precision(n,n) c the square-root (choleski) factor. c c info integer c the error indicator from dpofa. this will be c zero unless the matrix being factorized is c not positive definite. c c this version dated aug 25, 1996. c ross ihaka, university of auckland. c subroutine chol(a, lda, n, v, info) c implicit none integer n, lda, info double precision a(lda, n), v(n,n) integer i, j c do 20 i = 1,n do 10 j = 1,n if(i .gt. j) then v(i,j) = 0.0d0 else v(i,j) = a(i,j) end if 10 continue 20 continue call dpofa(v, n, n, info) return end nlme/src/nlmefit.c0000644000176000001440000010527312242150465013637 0ustar ripleyusers/* Routines for calculation of the log-likelihood or restricted log-likelihood with mixed-effects models. Copyright 1997-2005 Douglas M. Bates , Jose C. Pinheiro, Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include "nlmefit.h" #include "matrix.h" #include "pdMat.h" #ifndef SPLUS_VERSION #ifdef S_VERSION #define msmnh dmnh #endif /* S_VERSION */ #endif /* SPLUS_VERSION */ extern void F77_NAME(msmnh)(); static longint ** setOffsets(longint ** base, longint * ngrp, longint Qp2) { longint i, **ptrVec = Calloc((size_t) Qp2, longint *); for (i = 0; i < Qp2; i++) { ptrVec[i] = *base; *base += ngrp[i]; } return ptrVec; } dimPTR dims(longint *pdims) { /* constructor for a dims object */ dimPTR value = Calloc((size_t) 1, struct dim_struct); longint *base, Qp2, *ngrp; value->N = (int) pdims[0]; value->ZXrows = pdims[1]; value->ZXcols = pdims[2]; value->Q = pdims[3]; Qp2 = (value->Q) + 2; value->Srows = pdims[4]; value->q = pdims + 5; ngrp = value->ngrp = value->q + Qp2; value->DmOff = value->ngrp + Qp2; value->ncol = value->DmOff + Qp2; value->nrot = value->ncol + Qp2; base = value->nrot + Qp2; value->ZXoff = setOffsets(&base, ngrp, Qp2); value->ZXlen = setOffsets(&base, ngrp, Qp2); value->SToff = setOffsets(&base, ngrp, Qp2); value->DecOff = setOffsets(&base, ngrp, Qp2); value->DecLen = setOffsets(&base, ngrp, Qp2); return value; } SEXP getListElement(SEXP list, char *str) { SEXP elmt = R_NilValue, names = getAttrib(list, R_NamesSymbol); int i; for (i = 0; i < length(list); i++) if(strcmp(CHAR(STRING_ELT(names, i)), str) == 0) { elmt = VECTOR_ELT(list, i); break; } return elmt; } dimPTR /* create a dimensions object directly */ dimS(SEXP d) /* from an SEXP */ { int i, Qp2; SEXP tmp; dimPTR value = Calloc((size_t) 1, struct dim_struct); value->N = INTEGER(coerceVector(getListElement(d, "N"), INTSXP))[0]; value->ZXrows = INTEGER(coerceVector(getListElement(d, "ZXrows"), INTSXP))[0]; value->ZXcols = INTEGER(coerceVector(getListElement(d, "ZXcols"), INTSXP))[0]; value->Q = INTEGER(coerceVector(getListElement(d, "Q"), INTSXP))[0]; value->Srows = INTEGER(coerceVector(getListElement(d, "Srows"), INTSXP))[0]; Qp2 = value->Q + 2; value->q = INTEGER(coerceVector(getListElement(d, "q"), INTSXP)); value->ngrp = INTEGER(coerceVector(getListElement(d, "ngrp"), INTSXP)); value->DmOff = INTEGER(coerceVector(getListElement(d, "DmOff"), INTSXP)); value->ncol = INTEGER(coerceVector(getListElement(d, "ncol"), INTSXP)); value->nrot = INTEGER(coerceVector(getListElement(d, "nrot"), INTSXP)); value->ZXoff = Calloc(Qp2, int *); tmp = coerceVector(getListElement(d, "ZXoff"), VECSXP); for (i = 0; i < Qp2; i++) { (value->ZXoff)[i] = INTEGER(coerceVector(VECTOR_ELT(tmp, i), INTSXP)); } value->ZXlen = Calloc(Qp2, int *); tmp = coerceVector(getListElement(d, "ZXlen"), VECSXP); for (i = 0; i < Qp2; i++) { (value->ZXlen)[i] = INTEGER(coerceVector(VECTOR_ELT(tmp, i), INTSXP)); } value->SToff = Calloc(Qp2, int *); tmp = coerceVector(getListElement(d, "SToff"), VECSXP); for (i = 0; i < Qp2; i++) { (value->SToff)[i] = INTEGER(coerceVector(VECTOR_ELT(tmp, i), INTSXP)); } value->DecOff = Calloc(Qp2, int *); tmp = coerceVector(getListElement(d, "DecOff"), VECSXP); for (i = 0; i < Qp2; i++) { (value->DecOff)[i] = INTEGER(coerceVector(VECTOR_ELT(tmp, i), INTSXP)); } value->DecLen = Calloc(Qp2, int *); tmp = coerceVector(getListElement(d, "DecLen"), VECSXP); for (i = 0; i < Qp2; i++) { (value->DecLen)[i] = INTEGER(coerceVector(VECTOR_ELT(tmp, i), INTSXP)); } return value; } void dimFree(dimPTR this) { Free(this->DecOff); Free(this->DecLen); Free(this->SToff); Free(this->ZXlen); Free(this->ZXoff); Free(this); } int count_DmHalf_pars( dimPTR dd, longint *pdClass ) { int i, result; for ( i = 0, result = 0; i < dd->Q; i++ ) { switch( pdClass[ i ] ) { case 0: case 4: result += ( (dd->q)[ i ] * ( (dd->q)[ i ] + 1 ) ) / 2; break; case 1: result += (dd->q)[ i ]; break; case 2: result += 1; break; case 3: result += 2; } } return result; } double * generate_DmHalf( double *DmHalf, dimPTR dd, longint *pdClass, double *pars ) { /* Expand parameters to DmHalf arrays */ int i, j, q, Q = dd->Q; double diag; for (i = 0; i < Q; i++) { q = (dd->q)[ i ]; switch (pdClass[i]) { case 0: /* default: unstructured */ matrixLog_pd( DmHalf + (dd->DmOff)[ i ], dd->q + i, pars ); pars += (q * (q + 1))/2; break; case 1: /* diagonal */ for (j = 0; j < q; j++) { DmHalf[ (dd->DmOff)[i] + j * (q + 1) ] = exp( *pars++ ); } break; case 2: /* multiple of identity */ diag = exp( *pars ); for (j = 0; j < q; j++) { DmHalf[ (dd->DmOff)[i] + j * (q + 1) ] = diag; } pars++; break; case 3: /* compound symmetry */ compSymm_pd( DmHalf + (dd->DmOff)[ i ], dd->q + i, pars ); pars += 2; break; case 4: /* unstructured with log-cholesky parametrization */ logChol_pd(DmHalf + (dd->DmOff)[ i ], dd->q + i, pars ); pars += (q * (q + 1))/2; break; } } return DmHalf; } #ifdef Debug static void print_mat( char *msg, double *x, longint ldx, longint nrow, longint ncol ) { /* print matrix and message */ int i, j; printf( "%s\n", msg ); for (i = 0; i < nrow; i++) { for (j = 0; j < ncol; j++) { printf( " %10.5g", x[i + j * ldx ] ); } printf( "\n" ); } printf( "\n" ); } #endif /* Debug */ static double * scale_mat(double *y, longint ldy, double a, double *x, longint ldx, longint nrow, longint ncol) { /* y <- a * x */ int i, j; double * ret = y; for (j = 0; j < ncol; j++) { for (i = 0; i < nrow; i++) { y[i] = a * x[i]; } y += ldy; x += ldx; } return ret; } static double * plus_equals_mat(double *y, longint ldy, double *x, longint ldx, longint nrow, longint ncol) { /* y <- y + x */ double * ret = y; int i, j; for (j = 0; j < ncol; j++) { for (i = 0; i < nrow; i++) { y[i] += x[i]; } y += ldy; x += ldx; } return ret; } static longint /* backsolve and update */ backsolve(double *mat, longint ldmat, longint nupdate, longint ncol, longint nrot, longint ny) { longint i, j, ONE = 1L, info; double *y = mat + (int) ((ncol + nrot - ny) * ldmat); mat = mat - (int) nupdate; for (i = 0; i < ny; i++) { /* usually ny = 1 but just in case ... */ F77_CALL(dtrsl) (mat + (int) nupdate, &ldmat, &ncol, y, &ONE, &info); if (info != 0) { return info; } for (j = 0; j < ncol; j++) { d_axpy(y - (int) nupdate, - y[j], mat + (int) (j * ldmat), nupdate); } y += (int) ldmat; } return info; } static longint /* invert an upper-triangular matrix in place*/ invert_upper(double *mat, longint ldmat, longint ncol) { longint i, j, ONE = 1L, info = 0L; double *b = Calloc((size_t) ncol, double); for (i = ncol; i > 1L; i--) { for (j = 0; j < (i - 1L); j++) { b[j] = 0.0; } b[((int) i) - 1] = 1.0; F77_CALL(dtrsl) (mat, &ldmat, &i, b, &ONE, &info); if (info != 0) { Free(b); return info; } Memcpy(mat + (i - 1) * ldmat, b, (int) i); } if (*mat == 0.0) { Free(b); return 1L; } *mat = 1.0 / (*mat); Free(b); return 0L; } static longint /* invert a block in the virtual R array */ invert_block(double *mat, longint ldmat, longint nabove, longint ncol, longint nright) { double * tpblk = mat - (int) nabove; longint info = invert_upper(mat, ldmat, ncol); if (info != 0L) return info; if (nright > 0) { double *ntri = Calloc((size_t) (ncol * ncol), double), *rtblk = mat + ncol * ldmat; scale_mat(ntri, ncol, -1.0, mat, ldmat, ncol, ncol); mult_mat(rtblk, ldmat, ntri, ncol, ncol, ncol, rtblk, ldmat, nright); Free(ntri); if (nabove > 0L) { double *tmp = Calloc((size_t)(nabove * nright), double); plus_equals_mat(rtblk - (size_t)nabove, ldmat, mult_mat(tmp, nabove, tpblk, ldmat, nabove, ncol, rtblk, ldmat, nright), nabove, nabove, nright); Free(tmp); } } if (nabove > 0L) { mult_mat(tpblk, ldmat, tpblk, ldmat, nabove, ncol, mat, ldmat, ncol); } return 0L; } void /* return the decomposition for ZXy */ mixed_decomp(double *ZXy, longint *pdims) { dimPTR dd = dims(pdims); /* Create a dimensions structure */ internal_decomp(dd, ZXy); dimFree(dd); } void internal_decomp(dimPTR dd, double *ZXy) { /* decompose ZXy and re-write the dims */ longint i, j, Qp2 = (dd->Q) + 2; double *dc; if ((dd->Srows) >= (dd->ZXrows)) /* decomposition is not worthwhile */ return; dc = Calloc((size_t) ((dd->Srows) * (dd->ZXcols)), double); for (i = 0; i < Qp2; i++) { for(j = 0; j < (dd->ngrp)[i]; j++) { QR_and_rotate(ZXy + (dd->ZXoff)[i][j], dd->ZXrows, (dd->ZXlen)[i][j], (dd->ncol)[i] + (dd->nrot)[i], DNULLP, 0L, (dd->ncol)[i], DNULLP, dc + (dd->SToff)[i][j], dd->Srows); } } Memcpy(ZXy, dc, dd->Srows * dd->ZXcols); for (i = 0; i < Qp2; i++) { /* re-write the offsets and lengths */ for (j = 0; j < (dd->ngrp)[i]; j++) { (dd->ZXoff)[i][j] = (dd->DecOff)[i][j]; (dd->ZXlen)[i][j] = (dd->DecLen)[i][j]; } } dd->ZXrows = dd->Srows; /* and the total number of rows */ Free(dc); } double /* evaluate the log-likelihood pieces */ internal_loglik(dimPTR dd, double *ZXy, double *DmHalf, longint *RML, double *dc, double *lRSS) { /* if dc is NULL, don't attempt storage */ longint i, j, Q = dd->Q, Qp2 = Q + 2, qi, ldstr = (dc != DNULLP) ? (dd->Srows) : 0L; double accum, *dmHlf, *lglk = Calloc( Qp2, double ); QRptr dmQR; for (i = 0; i < Qp2; i++) { qi = (dd->q)[i]; for (j = 0; j < (dd->ngrp)[i]; j++) { if (qi > QR_and_rotate(ZXy + (dd->ZXoff)[i][j], dd->ZXrows, (dd->ZXlen)[i][j], (dd->ncol)[i] + (dd->nrot)[i], DmHalf + (dd->DmOff)[i], qi, (dd->ncol)[i], lglk + i, dc + (dd->SToff)[i][j], ldstr)) { warning("Singular precision matrix in level %ld, block %ld", (long int) (i - (dd->Q)), j + 1L); return -DBL_MAX; } } } for(i = 0, accum = 0; i < Q; i++) { qi = (dd->q)[i]; dmHlf = Calloc( (size_t) qi * qi, double ); dmQR = QR( copy_mat( dmHlf, qi, DmHalf + (dd->DmOff)[i], qi, qi, qi ), qi, qi, qi); accum += (dd->ngrp)[i] * QRlogAbsDet( dmQR ) - lglk[i]; QRfree( dmQR ); Free( dmHlf ); } accum -= *RML * lglk[ Q ] + (dd->N - *RML * dd->ncol[ Q ]) * lglk[Q + 1]; if (lRSS != DNULLP) *lRSS = lglk[Q + 1]; /* return log(RSS)/2 */ Free( lglk ); return accum; } void internal_estimate(dimPTR dd, double *dc) { /* solve for Beta and b_i estimates */ longint i, j, Qp1 = (dd->Q) + 1L; for (i = (dd->Q); i >= 0; i--) { for (j = 0; j < (dd->ngrp)[i]; j++) { if (backsolve(dc + (dd->SToff)[i][j], dd->Srows, (dd->SToff)[i][j] - (dd->DecOff)[i][j], (dd->ncol)[i], (dd->nrot)[i], (dd->ncol)[Qp1]) != 0) { error(_("Singularity in backsolve at level %ld, block %ld"), (long int) (i - (dd->Q)), j + 1L); } } } } static void internal_R_invert(dimPTR dd, double *dc) { /* Invert the virtual R matrix in place */ int i, j; for (i = (dd->Q); i >= 0; i--) { for (j = 0; j < (dd->ngrp)[i]; j++) { invert_block(dc + (dd->SToff)[i][j], dd->Srows, (dd->SToff)[i][j] - (dd->DecOff)[i][j], (dd->ncol)[i], (dd->nrot)[i] - 1L); } } } static double cube_root_eps = 0.; static double * pt_prod( double *prod, double *a, double *b, longint len ) { /* prod <- a * b */ longint i; double *ret = prod; for (i = 0; i < len; i++) { *prod++ = *a++ * *b++; } return ret; } static void finite_diff_Hess( double (*func)(double*), double *pars, int npar, double *vals ) { /* use Koshal design for finite-differences */ int i, j, nTot = 1 + npar + ( npar * ( npar + 1 ) ) / 2; double *incr = Calloc( npar, double), *ppt, *xpt, *dpt, *parray = Calloc( nTot * npar, double ), /* array of parameters */ *div = Calloc( nTot, double ), /* divisors */ *Xmat = Calloc( nTot * nTot, double ); /* regressor matrix */ QRptr xQR; if (!cube_root_eps) cube_root_eps = exp( log( DOUBLE_EPS ) / 3.); div[ 0 ] = 1.0; ppt = parray + npar * ( 2 * npar + 1 ); /* location of first cross term */ xpt = Xmat + nTot * ( 2 * npar + 1 ); /* location of first cross column */ dpt = div + 2 * npar + 1; for (i = 0; i < npar; i++) { incr[i] = (pars[ i ] != 0.0) ? cube_root_eps * pars[ i ] : cube_root_eps; div[ i + 1 ] = 1.0 / incr[ i ]; div[ npar + i + 1 ] = 2.0 / ( incr[ i ] * incr[ i ] ); parray[ npar + i * (npar + 1) ] = 1.0; parray[ (npar + i) * (npar + 1) ] = -1.0; for (j = i + 1; j < npar; j++) { ppt[ i ] = ppt[ j ] = 1; ppt += npar; } for (j = 0; j < nTot; j++) { Xmat[ j + (i + 1) * nTot ] = parray[ i + j * npar ]; } pt_prod( Xmat + (npar + i + 1) * nTot, Xmat + (i + 1) * nTot, Xmat + (i + 1) * nTot, nTot ); for (j = 0; j < i; j++) { pt_prod( xpt, Xmat + (i + 1) * nTot, Xmat + (j + 1) * nTot, nTot ); xpt += nTot; *dpt++ = 1.0 / ( incr[ i ] * incr[ j ] ); } } #ifdef Debug print_mat( "parray", parray, npar, npar, nTot ); #endif /* Debug */ vals[ 0 ] = (*func)( pars ); Xmat[ 0 ] = 1.0; for (i = 1; i < nTot; i++) { Xmat[i] = 1.0; /* column of 1's for constant */ Memcpy( parray, pars, npar ); for (j = 0; j < npar; j++) { parray[ j ] += parray[ j + i * npar ] * incr[ j ]; } vals[i] = (*func)( parray ); } #ifdef Debug print_mat( "Xmat", Xmat, nTot, nTot, nTot ); #endif /* Debug */ xQR = QR( Xmat, (longint) nTot, (longint) nTot, (longint) nTot ); QRsolve( xQR, vals, (longint) nTot, 1L, vals, (longint) nTot ); pt_prod( vals, vals, div, nTot ); /* re-arrange the Hessian terms */ xpt = vals + npar + 1; Memcpy( div, vals + npar + 1, nTot - ( npar + 1 ) ); dpt = div + npar; /* first off-diagonal */ for (i = 0; i < npar; i++) { xpt[ i * ( npar + 1 ) ] = div[ i ]; /* diagonals */ for (j = 0; j < i; j++) { xpt[ i + j * npar ] = xpt[ j + i * npar ] = *dpt++; } } QRfree( xQR ); Free( incr ); Free( parray ); Free( div ); Free( Xmat ); return; } void /* For optif9 */ mixed_fcn(longint n, double *pars, double *g, void *state) { statePTR st = (statePTR) state; double *zxcopy = Calloc(st->dd->ZXrows * st->dd->ZXcols, double), *Delta = Calloc(st->dd->DmOff[st->dd->Q], double); Memcpy(zxcopy, st->ZXy, st->dd->ZXrows * st->dd->ZXcols); *g = -internal_loglik(st->dd, zxcopy, generate_DmHalf(Delta, st->dd, st->pdClass, pars), st->RML, DNULLP, DNULLP); Free(Delta); Free(zxcopy); } void /* For optif9 */ mixed_grad(longint n, double *pars, double *g, void *state) { statePTR st = (statePTR) state; double *zxcopy = Calloc(st->dd->ZXrows * st->dd->ZXcols, double), *Delta = Calloc(st->dd->DmOff[st->dd->Q], double), *dc = Calloc((size_t) ((st->dd->Srows) * (st->dd->ZXcols)), double), *DmHalf, sigmainv, *pt, *res; double sqrtDF = sqrt((double) (st->dd->N - *(st->RML)*(st->dd->ncol[st->dd->Q]))); longint i, j, offset; DmHalf = generate_DmHalf(Delta, st->dd, st->pdClass, pars), Memcpy(zxcopy, st->ZXy, st->dd->ZXrows * st->dd->ZXcols); /* needed ? */ internal_loglik(st->dd, zxcopy, DmHalf, st->RML, dc, DNULLP); internal_estimate(st->dd, dc); internal_R_invert(st->dd, dc); sigmainv = *(dc + (size_t)((st->dd->Srows) * (st->dd->ZXcols)) - 1)/sqrtDF; sigmainv = 1.0/((sigmainv < 0.0) ? - sigmainv : sigmainv); offset = ((st->dd->ZXcols) - 1L) * (st->dd->Srows); for (i = 0L; i < (st->dd->Q); i++) { longint ncol = (st->dd->q)[i], nright = (st->dd->nrot)[i] - (st->dd->nrot)[(st->dd->Q) - ( (*(st->RML)) ? 0 : 1 )]; longint nrow = (ncol + nright + 1L) * (st->dd->ngrp)[i]; QRptr qq; pt = res = Calloc((size_t) (ncol * nrow), double); for (j = 0L; j < (st->dd->ngrp)[i]; j++) { copy_trans(pt, nrow, dc + (st->dd->SToff)[i][j], st->dd->Srows, ncol, ncol + nright); pt += ncol + nright; scale_mat(pt++, nrow, sigmainv, dc + offset + (st->dd->SToff)[i][j], 1L, 1L, ncol); } offset -= (st->dd->Srows) * ncol; qq = QR(res, nrow, nrow, ncol); QRstoreR(qq, res, ncol); QRfree(qq); switch (st->pdClass[i]) { case 0: /* unstructured with matrix-logarithm parametrization */ error(_("analytic gradient is not available with matrix logarithm")); break; case 1: /* diagonal */ for (j = 0; j < ncol; j++) { double tmp = DmHalf[ (st->dd->DmOff)[i] + j * (ncol + 1)]; *g++ = st->dd->ngrp[i] - tmp*tmp*d_sum_sqr(res + j * ncol, j + 1L); } break; case 2: /* multiple of identity */ { double tmp = 0.0; for(j = 0; j < ncol; j++) { tmp += d_sum_sqr( res + j * nrow, j + 1L ); } *g = tmp; tmp = DmHalf[ (st->dd->DmOff)[i] + j * (ncol + 1)]; *g *= tmp * tmp; *g = ncol*st->dd->ngrp[i] - *g; g++; break; } case 3: /* compound symmetry */ { error(_("analytic gradient is not available with compound symmetry")); break; } case 4: /* unstructured with log-cholesky parametrization */ { int j1; double *col_j = Calloc(ncol, double); for (j1 = 0; j1 < ncol; j1++) { int i1; for(i1 = 0; i1 < j1; i1++) col_j[i1] = d_dot_prod(res + i1*ncol, 1, res + j1*ncol, 1, 1+i1); for(i1 = j1; i1 < ncol; i1++) col_j[i1] = d_dot_prod(res + i1*ncol, 1, res + j1*ncol, 1, 1+j1); for (i1 = 0; i1 <= j1; i1++) { int k1; double sum = 0.0; for (k1 = i1; k1 < ncol; k1++) { sum += DmHalf[(st->dd->DmOff)[i] + i1*ncol + k1] * col_j[k1]; } if (i1 == j1) *g++ = st->dd->ngrp[i] - sum*DmHalf[(st->dd->DmOff)[i] + i1*(ncol + 1)]; else *g++ = -sum; } } break; } } Free(res); } Free(dc); Free(Delta); Free(zxcopy); } /* In gcc we can use nested function definitions but not for other compilers */ static double *zxcopy, *zxcopy2, *Delta, *values; static dimPTR dd; static longint *setngs, *pdC; size_t zxdim; static double logLik_fun( double *pars ) { /* defined for finite differences */ Memcpy( zxcopy2, zxcopy, zxdim ); return internal_loglik(dd, zxcopy2, generate_DmHalf( Delta, dd, pdC, pars ), setngs, DNULLP, DNULLP ); } static double negLogLik_fun( double *pars ) { /* defined for finite differences */ Memcpy( zxcopy2, zxcopy, zxdim ); return - internal_loglik(dd, zxcopy2, generate_DmHalf( Delta, dd, pdC, pars ), setngs, DNULLP, DNULLP ); } void mixed_loglik(double *ZXy, longint *pdims, double *pars, longint *settings, double *logLik, double *lRSS) { /* evaluate the log-likelihood */ dd = dims(pdims); /* settings gives RML, asDelta, gradHess, and pdClass in that order */ if (settings[ 1 ]) { /* gradHess not used and pdClass ignored */ *logLik = internal_loglik( dd, ZXy, pars, settings, DNULLP, lRSS); } else { /* generate the Delta arrays from pars */ setngs = settings; pdC = setngs + 3; Delta = Calloc( (dd->DmOff)[ dd->Q ], double ); if (settings[ 2 ] == 0) { /* no gradient or Hessian */ *logLik = internal_loglik( dd, ZXy, generate_DmHalf( Delta, dd, pdC, pars ), settings, DNULLP, lRSS ); } else { int npar = count_DmHalf_pars( dd, pdC ); zxdim = (dd->ZXrows) * (dd->ZXcols); zxcopy = Calloc( zxdim, double ); zxcopy2 = ZXy; Memcpy( zxcopy, ZXy, zxdim ); finite_diff_Hess( logLik_fun, pars, npar, logLik); Free( zxcopy ); } Free( Delta ); } dimFree( dd ); } void /* loglikelihood and parameter estimates */ mixed_estimate(double *ZXy, longint *pdims, double *DmHalf, longint *RML, double *logLik, double *dc, longint *invert) { /* dc receives the decomposed ZXy array */ dimPTR dd = dims(pdims); *logLik = internal_loglik(dd, ZXy, DmHalf, RML, dc, DNULLP); internal_estimate(dd, dc); if (*invert != 0) { internal_R_invert( dd, dc ); } dimFree(dd); } void /* EM iterations for mixed-effects models */ internal_EM(dimPTR dd, double *ZXy, double *DmHalf, int nn, longint *pdClass, longint *RML, double *logLik, double *Ra, double *lRSS) { double sigmainv, *res, *pt, *dc = Calloc((size_t) ((dd->Srows) * (dd->ZXcols)), double), *zxcopy = Calloc((size_t) ((dd->ZXrows) * (dd->ZXcols)), double); double sqrtDF = sqrt((double) (dd->N - *RML * (dd->ncol[dd->Q]))); longint i, j, k, offset; while (nn-- > 0) { copy_mat(zxcopy, dd->ZXrows, ZXy, dd->ZXrows, dd->ZXrows, dd->ZXcols); *logLik = internal_loglik(dd, zxcopy, DmHalf, RML, dc, DNULLP); internal_estimate( dd, dc ); internal_R_invert( dd, dc ); sigmainv = *(dc + (size_t)((dd->Srows) * (dd->ZXcols)) - 1)/sqrtDF; sigmainv = 1.0/((sigmainv < 0.0) ? - sigmainv : sigmainv); offset = ((dd->ZXcols) - 1L) * (dd->Srows); for (i = 0L; i < (dd->Q); i++) { longint ncol = (dd->q)[i], nright = (dd->nrot)[i] - (dd->nrot)[(dd->Q) - ( (*RML) ? 0 : 1 )]; longint nrow = (ncol + nright + 1L) * (dd->ngrp)[i]; QRptr qq; pt = res = Calloc((size_t) (ncol * nrow), double); for (j = 0L; j < (dd->ngrp)[i]; j++) { copy_trans(pt, nrow, dc + (dd->SToff)[i][j], dd->Srows, ncol, ncol + nright); pt += ncol + nright; scale_mat(pt++, nrow, sigmainv, dc + offset + (dd->SToff)[i][j], 1L, 1L, ncol); } offset -= (dd->Srows) * ncol; qq = QR(res, nrow, nrow, ncol); QRstoreR(qq, Ra + (dd->DmOff)[i], ncol); QRfree(qq); scale_mat(res, nrow, sqrt(1.0/((dd->ngrp)[i])), Ra + (dd->DmOff)[i], ncol, ncol, ncol); switch (pdClass[i]) { case 0: case 4: /* default: unstructured */ invert_upper(res, nrow, ncol); copy_trans(DmHalf + (dd->DmOff)[i], ncol, res, nrow, ncol, ncol); break; case 1: /* diagonal */ for (j = 0; j < ncol; j++) { DmHalf[ (dd->DmOff)[i] + j * (ncol + 1)] = 1. / sqrt( d_sum_sqr( res + j * nrow, j + 1L ) ); } break; case 2: /* multiple of identity */ { double aux = 0.0; for(j = 0; j < ncol; j++) { aux += d_sum_sqr( res + j * nrow, j + 1L ); } aux = sqrt(ncol / aux); for(j = 0; j < ncol; j++) { DmHalf[(dd->DmOff)[i] + j * (ncol + 1)] = aux; } } break; case 3: /* compound symmetry */ { double trA = 0.0, trAJ = 0.0, *auxRes; longint l; for(j = 0; j < ncol; j++) { for(k = 0; k <= j; k++) { trA += res[k + j * nrow] * res[k + j * nrow]; for(l = j + 1; l < ncol; l++) { trAJ += res[k + j * nrow] * res[k + l * nrow]; } } } trAJ = 2 * trAJ + trA; trA = (ncol - 1) / (ncol * trA - trAJ); trAJ = 1/trAJ - trA; trA = ncol * trA + trAJ; auxRes = DmHalf + (dd->DmOff[i]); for(j = 0; j < ncol; j++) { auxRes[j * (ncol + 1)] = trA; for(k = (j + 1); k < ncol; k++) { auxRes[j * ncol + k] = auxRes[j + k * ncol] = trAJ; } } #ifdef USING_R F77_CALL(chol)(auxRes, &ncol, &ncol, auxRes, &l); #else zero = 0L; F77_CALL(chol)(auxRes, &ncol, res, &zero, &zero, &l); #endif /* USING_R */ } break; } Free(res); } } copy_mat(zxcopy, dd->ZXrows, ZXy, dd->ZXrows, dd->ZXrows, dd->ZXcols); *logLik = internal_loglik(dd, zxcopy, DmHalf, RML, dc, lRSS); Free(dc); Free(zxcopy); } void mixed_EM(double *ZXy, longint *pdims, double *DmHalf, longint *nIter, longint *pdClass, longint *RML, double *logLik, double *Ra, double *lRSS) { dimPTR dd = dims(pdims); internal_EM(dd, ZXy, DmHalf, *nIter, pdClass, RML, logLik, Ra, lRSS); dimFree(dd); } void /* to be called by Fortran msmnh */ mixed_calcf(longint *n, double *theta, longint *nf, double *f, longint *uiparm, double *urparm, void (*ufparm)(void)) { Memcpy( zxcopy2, zxcopy, zxdim ); *f = - internal_loglik(dd, zxcopy2, generate_DmHalf( Delta, dd, pdC, theta ), setngs, DNULLP, DNULLP ); } void /* to be called by Fortran msmnh */ mixed_calcgh(longint *n, double *theta, longint *nf, double *g, double *h, longint *uiparm, double *urparm, void (*ufparm)(void)) { longint i, nn = *n; double *hpt = values + nn + 1; finite_diff_Hess( negLogLik_fun, theta, (int) nn, values ); Memcpy( g, values + 1, nn ); for( i = 1; i <= nn; i++ ) { /* copy upper triangle of Hessian */ Memcpy( h, hpt, i ); h += i; hpt += nn; } } static double * crossprod_mat(double *y, longint ldy, double *x, longint ldx, longint nrow, longint ncol) /* y <- t(x) %*% x */ { longint i, j; for( i = 0; i < ncol; i++ ) { y[ i * ldy + i ] = d_dot_prod( x + i * ldx, 1L, x + i * ldx, 1L, nrow ); for( j = 0; j < i; j++) { y[ i * ldy + j ] = y[ j * ldy + i ] = d_dot_prod( x + i * ldx, 1L, x + j * ldx, 1L, nrow ); } } return y; } /* Forming the parameter structure from the Delta matrix */ /* Not sure if these will ever be called from S. */ /* Will leave open the possibility. */ static void Delta2MatrixLog( double *theta, longint *q, double *Delta ) { longint i, j, qq = *q, one = 1L, info = 0L; if ( qq == 1 ) { *theta = log(*Delta * *Delta)/2.; } else { double *vectors = Calloc((size_t) qq * qq, double), *DtransD = Calloc((size_t) qq * qq, double), *workmat = Calloc((size_t) qq * qq, double), *work2 = Calloc((size_t) qq, double), *values = Calloc((size_t) qq, double), *pt; crossprod_mat(DtransD, qq, Delta, qq, qq, qq); /* form t(Delta) %*% Delta */ F77_CALL(rs) (q, q, DtransD, values, &one, vectors, workmat, work2, &info); if (info != 0L) { error(_("Unable to form eigenvalue-eigenvector decomposition")); } copy_mat(workmat, qq, vectors, qq, qq, qq); for(i = 0; i < qq; i++) { values[i] = log(values[i])/2; for(j = 0; j < qq; j++) { workmat[i * qq + j] *= values[i]; } } copy_trans(DtransD, qq, workmat, qq, qq, qq); mult_mat(workmat, qq, vectors, qq, qq, qq, DtransD, qq, qq); for( i = 0, pt = theta; i < qq; i++ ) { for( j = 0; j <= i; j++ ) { *pt++ = workmat[ i * qq + j ]; } } Free(vectors); Free(DtransD); Free(workmat), Free(work2); Free(values); } } static void Delta2LogCholesky(double *theta, longint *q, double *Delta ) { longint i, qq = *q, info = 0L; if ( qq == 1 ) { *theta = log(*Delta * *Delta)/2.; } else { double *ll = theta + qq, *DtransD = Calloc((size_t) qq * qq, double); crossprod_mat(DtransD, qq, Delta, qq, qq, qq); /* form t(Delta) %*% Delta */ F77_CALL(chol) (DtransD, &qq, &qq, Delta, &info); /* re-writes Delta */ if (info != 0L) error(_("Unable to form Cholesky decomposition")); *theta = log(Delta[0]); for(i = 1; i < qq; i++) { theta[i] = log(Delta[i * (qq + 1)]); Memcpy(ll, Delta + i * qq, i); ll += i; } Free(DtransD); } } double * generate_theta( double *theta, dimPTR dd, longint *pdClass, double *DmHalf ) { /* Expand parameters to DmHalf arrays */ int i, j, q, Q = dd->Q; for (i = 0; i < Q; i++) { q = (dd->q)[ i ]; switch (pdClass[i]) { case 0: /* default: unstructured */ Delta2MatrixLog( theta, dd->q + i, DmHalf + (dd->DmOff)[ i ] ); theta += (q * (q + 1))/2; break; case 1: /* diagonal */ for (j = 0; j < q; j++) { *theta++ = log( DmHalf[ (dd->DmOff)[i] + j * (q + 1) ] ); } break; case 2: /* multiple of identity */ *theta++ = log( DmHalf[(dd->DmOff)[i]] ); break; case 3: /* compound symmetry */ error(_("Haven't written the compound symmetry case for this yet")); break; case 4: /* default: unstructured */ Delta2LogCholesky( theta, dd->q + i, DmHalf + (dd->DmOff)[ i ] ); theta += (q * (q + 1))/2; break; } } return theta; } void /* both EM and Newton-Raphson iterations */ mixed_combined(double *ZXy, longint *pdims, double *DmHalf, longint *nIter, longint *pdClass, longint *RML, double *logLik, double *R0, double *lRSS, longint *info) { longint i, j; double *Ra, *dc, *work; dd = dims(pdims); /* Using global dd, pdC, setngs, and Delta */ pdC = pdClass; setngs = RML; dc = Calloc((size_t) ((dd->Srows) * (dd->ZXcols)), double); Ra = Calloc( dd->DmOff[dd->Q], double); internal_decomp( dd, ZXy ); /* take decomp if useful */ /* check for non-zero entries in DmHalf */ if ( d_sum_sqr( DmHalf, dd->DmOff[ dd->Q ]) == 0. ) { work = ZXy; /* create starting estimates */ Delta = DmHalf; for( i = 0; i < dd->Q; i++ ) { for ( j = 0; j < (dd->q)[i]; j++ ) { *Delta = 0.375 * sqrt( d_sum_sqr( work, dd->ZXrows ) / (dd->ngrp)[i]); Delta += (dd->q)[i] + 1; work += dd->ZXrows; } Delta -= (dd->q)[i]; /* have moved too far - step back */ } } internal_EM(dd, ZXy, DmHalf, *nIter, pdClass, RML, logLik, Ra, lRSS); #ifdef USING_R { statePTR st = Calloc(1, struct state_struct); int ntheta = count_DmHalf_pars( dd, pdC ), itrmcd, itncnt, p = dd->ncol[dd->Q], iagflg; double *theta = Calloc(ntheta, double), *typsiz = Calloc(ntheta, double), *grad = Calloc(ntheta, double), *newtheta = Calloc(ntheta, double), *a = Calloc(ntheta * ntheta, double), *work = Calloc(ntheta * 9, double); st->dd = dd; st->ZXy = ZXy; st->pdClass = pdClass; st->RML = RML; generate_theta(theta, dd, pdClass, DmHalf); *info = 9; /* don't inhibit checks but suppress output */ for (i = 0; i < ntheta; i++) { typsiz[i] = 1.0; } /* iagflg = 1; */ iagflg = 0; for (i = 0; i < dd->Q; i++) { if (pdClass[i] < 1 || pdClass[i] == 3 || pdClass[i] > 4) { iagflg = 0; break; } } optif9(ntheta, ntheta, theta, (fcn_p) mixed_fcn, (fcn_p) mixed_grad, (d2fcn_p) 0, st, typsiz, 1.0 /*fscale*/, 1 /*method*/,1 /*iexp*/, info, -1 /*ndigit*/, 50 /*itnlim*/, iagflg, 0 /*iahflg*/, 1. /*dlt*/, pow(DBL_EPSILON, 0.25) /*gradtl*/, 0. /*stepmx*/, sqrt(DBL_EPSILON) /*steptl*/, newtheta, logLik, grad, &itrmcd, a, work, &itncnt); if (*info == 0) { *logLik = internal_loglik( dd, ZXy, generate_DmHalf( DmHalf, dd, pdC, theta ), setngs, dc, lRSS ); copy_mat(R0, p, dc + (dd->SToff)[(dd->Q)][0], (dd->Srows), p, p + 1); } Free(work); Free(a); Free(newtheta); Free(grad); Free(typsiz); Free(theta); Free(st); } #else /* USING_R */ { int ntheta = count_DmHalf_pars( dd, pdC ); longint p, *iv, liv, lv, uiparm[1]; /* for msmnh */ double *theta, *scale, ufparm[1]; Delta = DmHalf; p = (dd->ncol)[(dd->Q)]; zxdim = (dd->ZXrows) * (dd->ZXcols); /* global zxdim, zxcopy, and zxcopy2 */ zxcopy = Calloc( zxdim, double ); zxcopy2 = ZXy; Memcpy( zxcopy, ZXy, zxdim ); /* keep a copy before we mess it up */ theta = Calloc((size_t) ntheta, double); generate_theta( theta, dd, pdClass, DmHalf ); values = Calloc( (size_t) ntheta * (ntheta + 1) + 1, double ); /* global */ liv = 60; iv = Calloc( (size_t) liv, longint ); lv = 78 + ntheta * (ntheta + 12); work = Calloc( (size_t) lv, double ); scale = Calloc( (size_t) ntheta, double ); for( i = 0; i < ntheta; i++ ) { scale[i] = 1.; } F77_CALL(msmnh) (&ntheta, scale, theta, mixed_calcf, mixed_calcgh, iv, &liv, &lv, work, uiparm, ufparm, abort); *info = iv[0]; Memcpy( zxcopy2, ZXy, zxdim ); *logLik = internal_loglik( dd, zxcopy2, generate_DmHalf( Delta, dd, pdC, theta ), setngs, dc, lRSS ); copy_mat(R0, p, dc + (dd->SToff)[(dd->Q)][0], (dd->Srows), p, p + 1); Free(scale); Free(work); Free(iv); Free(values); Free(theta); Free(zxcopy); } #endif /* USING_R */ dimFree( dd ); Free( dc ); Free( Ra ); } /* functions for calculating df's for fixed effects tests */ static double inner_perc(double *x, longint *grp, longint n) /* percentage of groups for which x is inner */ { /* x - column of X matrix to be assessed grp - integer vector with groups n - length of x and grp data are assumed to be ordered by grp */ longint currGrp, nn = 0, isInner; double nInner = 0., nGrp = 0., currVal; while (nn < n) { currGrp = grp[nn]; currVal = x[nn]; nGrp++; isInner = 0; do { if (isInner == 0 && x[nn] != currVal) { nInner++; isInner = 1; } nn++; } while (nn < n && currGrp == grp[nn]); } return(nInner/nGrp); } void inner_perc_table(double *X, longint *grps, longint *p, longint *Q, longint *n, double *pTable) /* constructs an p x Q "inner-percentage" table for a fixed effects matrix X and a set of grouping vectors grps */ { longint i, j, pp = *p, nn = *n, ipp = 0, inn = 0; for(i = 0; i < *Q; i++) { for(j = 0; j < pp; j++) { pTable[j + ipp] = inner_perc(X + j * nn, grps + inn, nn); } ipp += pp; inn += nn; } } /* gls functions */ void gls_loglik(double *Xy, longint *pdims, double *logLik, double *lRSS) { longint i, N = pdims[0], p = pdims[1], RML = pdims[2], Np1 = N + 1, Nr = N - RML * p, rnkm1; QRptr dmQR; dmQR = QR(Xy, N, N, p + 1); rnkm1 = (dmQR->rank) - 1; if(rnkm1 != p) { *logLik = -DBL_MAX; } else { *lRSS = log(fabs (dmQR->mat[p * Np1])); *logLik -= Nr * (*lRSS); if (RML == 1) { for(i = 0; i < p; i++) { *logLik -= log(fabs(dmQR->mat[i * Np1])); } } } QRfree(dmQR); } #if 0 /* gls functions */ void gls_loglik(double *Xy, longint *pdims, double *logLik, double *lRSS) { longint i, N = pdims[0], p = pdims[1], RML = pdims[2], Np1 = N + 1, Nr = N - RML * p; QRptr dmQR; dmQR = QR(Xy, N, N, p + 1); *lRSS = log(fabs(dmQR->mat[p * Np1])); *logLik -= Nr * (*lRSS); if (RML == 1) { for(i = 0; i < p; i++) { *logLik -= log(fabs(dmQR->mat[i * Np1])); } } QRfree(dmQR); } #endif void gls_estimate(double *Xy, longint *pdims, double *beta, double *sigma, double *logLik, double *varBeta, longint *rank, longint *pivot) { longint i, N = pdims[0], p = pdims[1], RML = pdims[2], pp1 = p + 1, Nr = N - RML * p, rk, rkm1, rkp1; QRptr dmQR; double *R = Calloc((size_t) (pp1 * pp1), double); dmQR = QR(Xy, N, N, pp1); *rank = rk = dmQR->rank; rkm1 = rk - 1; rkp1 = rk + 1; Memcpy(pivot, dmQR->pivot, pp1); for(i = 0; i < rk; i++) { Memcpy(R + i * rk, dmQR->mat + i * N, i + 1); } *sigma = fabs(R[rk * rk - 1]); *logLik -= Nr * log(*sigma); *sigma /= sqrt(((double) Nr)); if (RML == 1) { for(i = 0; i < rkm1; i++) { *logLik -= log(fabs(R[i * (rkp1)])); } } copy_mat(varBeta, rkm1, R, rk, rkm1, rkm1); invert_upper(varBeta, rkm1, rkm1); mult_mat(beta, rkm1, varBeta, rkm1, rkm1, rkm1, R + rkm1 * rk, rk, 1L); QRfree(dmQR); Free(R); } nlme/src/pdMat.c0000644000176000001440000000637012242150465013244 0ustar ripleyusers/* Routines for dealing with pdMat objects Copyright 1997-2005 Douglas M. Bates , Jose C. Pinheiro, Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include "pdMat.h" #include "matrix.h" /* Positive definite matrices */ static void Chol_pd(double *L, longint *q, double *l) { longint i, qq = *q; for(i = 0; i < qq; i++) { Memcpy(L + i * qq, l, i + 1); l += i + 1; } } void /* general pd, logChol parametrization */ logChol_pd(double *L, longint *q, double *l) { longint i, qq = *q; double *ll = l + qq; L[0] = exp(*l); for(i = 1; i < qq; i++) { L[i * (qq + 1)] = exp(l[i]); Memcpy(L + i * qq, ll, i); ll += i; } } void matrixLog_pd(double *L, longint *q, double *l) { longint i, j, qq = *q, one = 1L, info = 0L; if ( qq == 1 ) { *L = exp( *l ); } else { double *vectors = Calloc((size_t) qq * qq, double), *work1 = Calloc((size_t) qq, double), *work2 = Calloc((size_t) qq, double), *values = Calloc((size_t) qq, double); Chol_pd(L, q, l); for(i = 0; i < qq - 1; i++) { copy_mat(L + (i * (qq + 1) + 1), 1L, L + i * (qq + 1) + qq, qq, 1L, qq - (i + 1)); } F77_CALL(rs) (q, q, L, values, &one, vectors, work1, work2, &info); for(i = 0; i < qq; i++) { values[i] = exp(values[i]); for(j = 0; j < qq; j++) { vectors[i * qq + j] *= values[i]; } } copy_trans(L, qq, vectors, qq, qq, qq); Free(vectors); Free(work1); Free(work2); Free(values); } } void natural_pd(double *L, longint *q, double *l) /* natural parametrization */ { longint i, j, qp1 = *q + 1, info; double *std = l, *corr = l + *q, *work = Calloc(*q, double); for(i = 0; i < *q; i++) std[i] = exp(std[i]); for(i = 0; i < *q; i++) { L[i * qp1] = std[i] * std[i]; for(j = i + 1; j < *q; j++) { *corr = exp(*corr); *corr = (*corr - 1)/(*corr + 1); L[i * (*q) + j] = L[j * (*q) + i] = std[i] * std[j] * (*corr); corr++; } } #ifdef R_S_H F77_CALL(chol) (L, q, q, L, &info); #else zero = 0L; F77_CALL(chol) (L, q, work, &zero, &zero, &info); #endif /* R_S_H */ Free(work); } void compSymm_pd(double *L, longint *q, double *l) /* compound symmetry */ { longint i, j, qp1 = *q + 1; double aux = exp(l[0]), aux1 = exp(l[1]), aux2; aux1 = (aux1 - 1.0/((double) *q - 1.0))/(aux1 + 1.0); aux2 = aux * sqrt(1.0 - aux1); aux1 = aux * sqrt((1.0 + (*q - 1.0) * aux1) / ((double) *q)); for(i = 0; i < *q; i++) { L[i * (*q)] = aux1; } for(i = 1; i < *q; i++) { aux = -aux2/sqrt(i * (i + 1)); for(j = 0; j < i; j++) { L[i + (j * (*q))] = aux; } L[i * qp1] = -aux * i; } } nlme/src/nls.c0000644000176000001440000000322412242150465012766 0ustar ripleyusers/* nls functions used in predict.nls Copyright 1999 Saikat DebRoy This file is part of the nlme package for S and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include "base.h" #ifndef R_S_H static double xlower = 0.0; static double est_delta(double *x, longint i) { double xx; if(!sqrt_eps) sqrt_eps = sqrt(DOUBLE_EPS); if(!xlower) xlower = 100.*DOUBLE_XMIN; /* should sometime use the strategy of */ /* the grd routine in dmnf */ xx = fabs(x[i]); if (xx < xlower) return sqrt_eps; else return xx*sqrt_eps; } void nls_diff_gradient(longint *pnpar, longint *pnobs, double *theta, double *base, double *gradient, longint *pneg aSEV) { longint i, j, npar = *pnpar, nobs = *pnobs, neg = *pneg; double xx, *gcol, di; S_EVALUATOR for(i=0, gcol = gradient; i, Jose C. Pinheiro, Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include "nlOptimizer.h" #include "matrix.h" #include "nlmefit.h" extern void corStruct_recalc(double *, longint *, longint *, double *); /* gnls functions and variables */ typedef struct gnls_struct { /* Generalized nonlinear least squares structure */ double *residuals, *gradient, *corFactor, *varWeights, minFactor, tolerance, *newtheta, *theta, *incr, *add_ons, new_objective, objective; double *result[1]; longint corOpt, varOpt, npar, ncol, N, nrdof, maxIter, *corDims; #ifdef R_S_H SEXP model; #endif int conv_failure; } *gnlsPtr; static gnlsPtr gnls_init(double *ptheta, longint *dims, double *corFactor, double *varWeights, longint *corDims, double *settings, double *additional, longint corOpt, longint varOpt aMOD) { longint nResult; gnlsPtr gnls = Calloc(1, struct gnls_struct); gnls->theta = ptheta; gnls->corFactor = corFactor; gnls->varWeights = varWeights; gnls->corDims = corDims; gnls->npar = dims[0]; gnls->N = dims[1]; gnls->nrdof = gnls->N - gnls->npar; gnls->ncol = gnls->npar + 1; gnls->maxIter = (int) settings[0]; gnls->minFactor = settings[1]; gnls->tolerance = settings[2]; gnls->newtheta = Calloc(gnls->npar, double); gnls->incr = Calloc(gnls->npar, double); gnls->varOpt = varOpt; gnls->corOpt = corOpt; gnls->add_ons = additional; #ifdef R_S_H gnls->model = model; gnls->result[0] = DNULLP; nResult = evaluate(ptheta, gnls->npar MOD, gnls->result SEV); gnls->result[0] = Calloc(nResult, double); #endif return gnls; } static void gnlsFree( gnlsPtr gnls ) { Free(gnls->newtheta); Free(gnls->incr); #ifdef R_S_H Free(gnls->result[0]); #endif Free(gnls); } static double gnls_objective(gnlsPtr gnls) { longint i, j; if(gnls->varOpt) { /* variance function correction */ for(i = 0; i < gnls->N; i++) { for(j = 0; j < gnls->ncol; j++) { *(gnls->result[0] + i + j * gnls->N) *= gnls->varWeights[i]; } } } if(gnls->corOpt) { /* correlation structure correction */ corStruct_recalc(gnls->result[0], gnls->corDims, &gnls->ncol, gnls->corFactor); } gnls->residuals = gnls->result[0] + gnls->npar * gnls->N; gnls->gradient = gnls->result[0]; return(d_sum_sqr(gnls->residuals, gnls->N)); } /* static double */ /* gnls_RegSS(gnlsPtr gnls) */ /* { */ /* longint i; */ /* double regSS = 0, aux; */ /* for(i = 0; i < gnls->N; i++) { */ /* aux = d_dot_prod(gnls->gradient + i, gnls->N, gnls->incr, 1L, gnls->npar); */ /* regSS += aux * aux; */ /* } */ /* return(regSS); */ /* } */ static double gnls_increment(gnlsPtr gnls) { double regSS = 0, *auxRes; QRptr aQR; longint i; if (!sqrt_eps) sqrt_eps = sqrt(DOUBLE_EPS); auxRes = Calloc(gnls->N, double); Memcpy(auxRes, gnls->residuals, gnls->N); aQR = QR(gnls->gradient, gnls->N, gnls->N, gnls->npar); QRsolve(aQR, gnls->residuals, gnls->N, 1L, gnls->incr, gnls->npar); QRqty(aQR, auxRes, gnls->N, 1L); for(i=0; i < gnls->npar; i++) { regSS += auxRes[i] * auxRes[i]; } QRfree(aQR); Free(auxRes); return(sqrt(((double) gnls->nrdof) * regSS / ((double) gnls->npar) * (gnls->new_objective - regSS))); } static longint gnls_iterate(gnlsPtr gnls aSEV) { double factor, criterion; longint iteration; #ifdef R_S_H SEXP model = gnls->model; #endif S_EVALUATOR Memcpy(gnls->newtheta, gnls->theta, gnls->npar); evaluate(gnls->theta, gnls->npar MOD, gnls->result SEV); gnls->new_objective = gnls->objective = gnls_objective(gnls); gnls->conv_failure = 0; for (factor = 1.0, iteration = 1; iteration <= gnls->maxIter; iteration++) { /* outer iteration loop */ /* increment and convergence criterion */ criterion = gnls_increment(gnls); if (gnls->conv_failure) return(iteration); /* Unable to make increment */ if (criterion < gnls->tolerance) return(iteration); /* successful completion */ do { /* inner loop for acceptable step size */ if (factor < gnls->minFactor) { gnls->conv_failure = 1; return(iteration); } Memcpy(gnls->newtheta, gnls->theta, gnls->npar); d_axpy(gnls->newtheta, factor, gnls->incr, gnls->npar); evaluate(gnls->newtheta, gnls->npar MOD, gnls->result SEV); gnls->new_objective = gnls_objective(gnls); if (gnls->conv_failure) return(iteration); /* unable to evaluate objective */ factor /= 2.0; } while (gnls->new_objective >= gnls->objective); factor *= 4.0; if (factor > 1.0) factor = 1.0; gnls->objective = gnls->new_objective; Memcpy(gnls->theta, gnls->newtheta, gnls->npar); } gnls->conv_failure = 2; /* Maximum number of iterations exceeded */ return(iteration - 1); } static void gnls_wrapup(gnlsPtr gnls aSEV) { #ifdef R_S_H SEXP model = gnls->model; #endif S_EVALUATOR evaluate(gnls->theta, gnls->npar MOD, gnls->result SEV); Memcpy(gnls->add_ons, gnls->result[0] + gnls->npar * gnls->N, gnls->N); gnls->objective = gnls_objective(gnls); } void fit_gnls(double *ptheta, longint *pdims, double *pcorFactor, double *pvarWeights, longint *pcorDims, double *settings, double *additional, longint *pcorOpt, longint *pvarOpt aMOD) { gnlsPtr gnls; S_EVALUATOR #ifdef R_S_H PROTECT(model); #endif /* R_S_H */ if(!sqrt_eps) sqrt_eps = sqrt(DOUBLE_EPS); gnls = gnls_init(ptheta, pdims, pcorFactor, pvarWeights, pcorDims, settings, additional, *pcorOpt, *pvarOpt MOD); settings[4] = (double) gnls_iterate(gnls SEV); gnls_wrapup(gnls SEV); settings[3] = gnls->conv_failure; settings[5] = gnls->objective; gnlsFree(gnls); #ifdef R_S_H UNPROTECT(1); #endif /* R_S_H */ } nlme/src/init.c0000644000176000001440000001421512242150465013137 0ustar ripleyusers/* This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include #include #include #define longint int #include "nlmefit.h" #include "nlOptimizer.h" #include "pdMat.h" extern void corStruct_factList(double *, longint *, double *, double *); extern void corStruct_recalc(double *, longint *, longint *, double *); extern void symm_fullCorr(double *, longint *, double *); extern void symm_matList(double *, longint *, longint *, longint *, double *); extern void symm_factList(double *, longint *, longint *, longint *p, double *, double *); extern void symm_recalc(double *, longint *, longint *, double *, longint *, longint *, double *); extern void nat_fullCorr(double *, longint *, double *); extern void nat_matList(double *, longint *, longint *, longint *, double *); extern void nat_factList(double *, longint *, longint *, longint *, double *, double *); extern void nat_recalc(double *, longint *, longint *l, double *, longint *, longint *, double *); extern void AR1_matList(double *, longint *, double *); extern void AR1_factList(double *, longint *, double *, double *); extern void AR1_recalc(double *, longint *, longint *, double *, double *); extern void CAR1_matList(double *, double *, longint *, double *); extern void CAR1_factList(double *, double *, longint *, double *, double *); extern void CAR1_recalc(double *Xy, longint *pdims, longint *ZXcol, double *par, double *time, double *logdet); extern void ARMA_constCoef(longint *, longint *, double *); extern void ARMA_unconstCoef(longint *, longint *, double *); extern void ARMA_matList(double *, longint *, longint *, longint *, longint *, longint *, double *); extern void ARMA_factList(double *, longint *, longint *, longint *, longint *, longint *, double *, double *); extern void ARMA_recalc(double *, longint *, longint *, double *, longint *, longint *, longint *, longint *, double *); extern void compSymm_matList(double *, double *, longint *, double *); extern void compSymm_factList(double *, double *, longint *, double *, double *); extern void compSymm_recalc(double *, longint *, longint *, double *, double *, double *); extern void spatial_matList(double *, longint *, double *, longint *, double *, double *); extern void spatial_factList(double *, longint *, double *, longint *, double *, double *, double *); extern void spatial_recalc(double *, longint *, longint *, double *, double *, double *, longint *, double *); extern void fit_nlme(double *, double *, longint *, longint *, longint *, double *, double *, longint *, double *, double *, longint *, longint * aMOD); extern void nlme_one_comp_first (longint *, double *, double *); extern void nlme_one_comp_open (longint *, double *, double *); extern void mixed_estimate(double *, longint *, double *, longint *, double *, double *, longint *); extern void inner_perc_table(double *, longint *, longint *, longint *, longint *, double *); extern void natural_pd(double *, longint *, double *); R_CMethodDef CEntries[] = { {"corStruct_factList", (DL_FUNC) &corStruct_factList, 4}, {"corStruct_recalc", (DL_FUNC) &corStruct_recalc, 4}, {"symm_factList", (DL_FUNC) &symm_factList, 6}, {"symm_matList", (DL_FUNC) &symm_matList, 5}, {"symm_fullCorr", (DL_FUNC) &symm_fullCorr, 3}, {"symm_recalc", (DL_FUNC) &symm_recalc, 7}, {"nat_factList", (DL_FUNC) &nat_factList, 6}, {"nat_matList", (DL_FUNC) &nat_matList, 5}, {"nat_fullCorr", (DL_FUNC) &nat_fullCorr, 3}, {"nat_recalc", (DL_FUNC) &nat_recalc, 7}, {"AR1_factList", (DL_FUNC) &AR1_factList, 4}, {"AR1_matList", (DL_FUNC) &AR1_matList, 3}, {"AR1_recalc", (DL_FUNC) &AR1_recalc, 5}, {"CAR1_factList", (DL_FUNC) &CAR1_factList, 5}, {"CAR1_matList", (DL_FUNC) &CAR1_matList, 4}, {"CAR1_recalc", (DL_FUNC) &CAR1_recalc, 6}, {"ARMA_constCoef", (DL_FUNC) &ARMA_constCoef, 3}, {"ARMA_unconstCoef", (DL_FUNC) &ARMA_unconstCoef, 3}, {"ARMA_factList", (DL_FUNC) &ARMA_factList, 8}, {"ARMA_matList", (DL_FUNC) &ARMA_matList, 7}, {"ARMA_recalc", (DL_FUNC) &ARMA_recalc, 9}, {"compSymm_factList", (DL_FUNC) &compSymm_factList, 5}, {"compSymm_matList", (DL_FUNC) &compSymm_matList, 4}, {"compSymm_recalc", (DL_FUNC) &compSymm_recalc, 6}, {"spatial_factList", (DL_FUNC) &spatial_factList, 7}, {"spatial_matList", (DL_FUNC) &spatial_matList, 6}, {"spatial_recalc", (DL_FUNC) &spatial_recalc, 8}, {"gls_loglik", (DL_FUNC) &gls_loglik, 4}, {"gls_estimate", (DL_FUNC) &gls_estimate, 8}, {"fit_gnls", (DL_FUNC) &fit_gnls, 10}, {"inner_perc_table", (DL_FUNC) &inner_perc_table, 6}, {"mixed_loglik", (DL_FUNC) &mixed_loglik, 6}, {"mixed_decomp", (DL_FUNC) &mixed_decomp, 2}, {"mixed_EM", (DL_FUNC) &mixed_EM, 9}, {"nlme_one_comp_first", (DL_FUNC) &nlme_one_comp_first, 3}, {"nlme_one_comp_open", (DL_FUNC) &nlme_one_comp_open, 3}, {"fit_nlme", (DL_FUNC) &fit_nlme, 13}, {"matrixLog_pd", (DL_FUNC) &matrixLog_pd, 3}, {"logChol_pd", (DL_FUNC) &logChol_pd, 3}, {"natural_pd", (DL_FUNC) &natural_pd, 3}, {"compSymm_pd", (DL_FUNC) &compSymm_pd, 3}, {"mixed_estimate", (DL_FUNC) &mixed_estimate, 7}, {"mixed_combined", (DL_FUNC) &mixed_combined, 10}, {NULL, NULL, 0} }; #include void #ifdef HAVE_VISIBILITY_ATTRIBUTE __attribute__ ((visibility ("default"))) #endif R_init_nlme(DllInfo *dll) { R_registerRoutines(dll, CEntries, NULL, NULL, NULL); R_useDynamicSymbols(dll, FALSE); #if defined(R_VERSION) && R_VERSION >= R_Version(2, 16, 0) R_forceSymbols(dll, TRUE); #endif } nlme/src/corStruct.c0000644000176000001440000006636012242150465014174 0ustar ripleyusers/* Routines dealing with correlation structures. Copyright 1997-2005 Douglas M. Bates , Jose C. Pinheiro, Saikat DebRoy This file is part of the nlme package for R and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #include "matrix.h" #include /* Factor list and Recalc for general corStruct object */ void corStruct_factList(double *mat, longint *pdims, double *FactorL, double *logdet) { longint i, j, M = pdims[1], *len = pdims + 4, job = 11L, info; #ifndef USING_R longint zero = 0L; #endif double *work, *work1; for(i = 0; i < M; i++) { longint li = len[i], lisq = li * li, lip1 = li + 1; work = Calloc(li, double); work1 = Calloc(lisq, double); #ifdef USING_R F77_CALL(chol) (mat, &li, &li, mat, &info); #else F77_CALL(chol) (mat, &li, work, &zero, &zero, &info); #endif for(j = 0; j < li; j++) { work1[j * lip1] = 1; F77_CALL(dtrsl) (mat, &li, &li, work1 + j * li, &job, &info); *logdet -= log(fabs(mat[j * lip1])); } Memcpy(FactorL, work1, lisq); Free(work); Free(work1); FactorL += lisq; mat += lisq; } } void corStruct_recalc(double *Xy, longint *pdims, longint *ZXcol, double *Factor) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; for(i = 0; i < M; i++) { mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Factor += (len[i] * len[i]); } } /* symm class - unstructured correlation - based on spherical parametrization */ void symm_fullCorr(double *par, longint *maxC, double *crr) /* calculates full correlation structure */ { double *work, aux, aux1, *src = par, *src1, *dest; longint i, j, n = *maxC; /* first get upper-triangular factor */ dest = work = Calloc(n * (n + 1) / 2, double); for(i = 0; i < n; i++) { aux = 1.0; for(j = 0; j < i; j++) { aux1 = exp(*src); aux1 = PI * aux1/(1 + aux1); /* untransforming */ *dest = aux * cos(aux1); aux *= sin(aux1); dest++; src++; } *dest = aux; dest++; } /* getting the correlations */ for(i = 0, dest = crr, src = work; i < n - 1; i++) { longint ip1 = i + 1; src += i; for(j = ip1, src1 = src; j < n; j++) { src1 += j; *dest = d_dot_prod(src, 1L, src1, 1L, ip1); dest++; } } Free(work); } static void symm_mat(double *crr, longint *time, longint *n, longint *maxC, double *mat) { longint i, j, k, np1 = *n + 1, n1, n2; for(i = 0; i < *n; i++) { mat[i * np1] = 1.0; for(j = i + 1; j < *n; j++) { n1 = (time[i] < time[j]) ? time[i] : time[j]; n2 = time[i] + time[j] - 2 * n1 - 1; k = n1 * *maxC - n1 * (n1 + 1) / 2 + n2; *(mat + i + j * (*n)) = *(mat + j + i * (*n)) = crr[k]; } } } void symm_matList(double *pars, longint *time, longint *maxC, longint *pdims, double *mat) { double *crr = Calloc(*maxC * (*maxC - 1) / 2, double); longint i, M = pdims[1], *len = pdims + 4; /* parameters assumed in unconstrained form */ symm_fullCorr(pars, maxC, crr); for(i = 0; i < M; i++) { symm_mat(crr, time, &len[i], maxC, mat); mat += len[i] * len[i]; time += len[i]; } Free(crr); } static void symm_fact(double *crr, longint *time, longint *n, longint *maxC, double *mat, double *logdet) { longint job = 11L, info, i, nsq = *n * (*n), np1 = *n + 1; #ifndef USING_R longint zero = 0L; #endif double *work = Calloc(*n, double), *work1 = Calloc(nsq, double); symm_mat(crr, time, n, maxC, mat); #ifdef USING_R F77_CALL(chol) (mat, n, n, mat, &info); #else F77_CALL(chol) (mat, n, work, &zero, &zero, &info); #endif for(i = 0; i < *n; i++) { work1[i * np1] = 1; F77_CALL(dtrsl) (mat, n, n, work1 + i * (*n), &job, &info); *logdet -= log(fabs(mat[i * np1])); } Memcpy(mat, work1, nsq); Free(work); Free(work1); } void symm_factList(double *pars, longint *time, longint *maxC, longint *pdims, double *FactorL, double *logdet) { double *crr = Calloc(*maxC * (*maxC - 1L) / 2L, double); longint i, M = pdims[1], *len = pdims + 4; /* parameters assumed in unconstrained form */ symm_fullCorr(pars, maxC, crr); for(i = 0; i < M; i++) { symm_fact(crr, time, &len[i], maxC, FactorL, logdet); FactorL += len[i] * len[i]; time += len[i]; } Free(crr); } void symm_recalc(double *Xy, longint *pdims, longint *ZXcol, double *pars, longint *time, longint *maxC, double *logdet) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; double *crr = Calloc(*maxC * (*maxC - 1) / 2, double); /* parameters assumed in unconstrained form */ symm_fullCorr(pars, maxC, crr); for(i = 0; i < M; i++) { double *Factor = Calloc((len[i] * len[i]), double); symm_fact(crr, time + start[i], &len[i], maxC, Factor, logdet); mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Free(Factor); } Free(crr); } /* nat class - unstructured correlation - natural parametrization */ void nat_fullCorr(double *par, longint *maxC, double *crr) /* calculates full correlation structure */ { double aux; longint i, npar = *maxC * (*maxC - 1) / 2; for(i = 0; i < npar; i++) { aux = exp(par[i]); crr[i] = (aux - 1)/(aux + 1); } } void nat_matList(double *pars, longint *time, longint *maxC, longint *pdims, double *mat) { double *crr = Calloc(*maxC * (*maxC - 1) / 2, double); longint i, M = pdims[1], *len = pdims + 4; /* parameters assumed in unconstrained form */ nat_fullCorr(pars, maxC, crr); for(i = 0; i < M; i++) { symm_mat(crr, time, &len[i], maxC, mat); mat += len[i] * len[i]; time += len[i]; } Free(crr); } void nat_factList(double *pars, longint *time, longint *maxC, longint *pdims, double *FactorL, double *logdet) { double *crr = Calloc(*maxC * (*maxC - 1L) / 2L, double); longint i, M = pdims[1], *len = pdims + 4; /* parameters assumed in unconstrained form */ nat_fullCorr(pars, maxC, crr); for(i = 0; i < M; i++) { symm_fact(crr, time, &len[i], maxC, FactorL, logdet); FactorL += len[i] * len[i]; time += len[i]; } Free(crr); } void nat_recalc(double *Xy, longint *pdims, longint *ZXcol, double *pars, longint *time, longint *maxC, double *logdet) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; double *crr = Calloc(*maxC * (*maxC - 1) / 2, double); /* parameters assumed in unconstrained form */ nat_fullCorr(pars, maxC, crr); for(i = 0; i < M; i++) { double *Factor = Calloc((len[i] * len[i]), double); symm_fact(crr, time + start[i], &len[i], maxC, Factor, logdet); mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Free(Factor); } Free(crr); } /* AR1 class */ static void AR1_mat(double *par, longint *n, double *mat) { longint i, j; double aux; for(i = 0; i < *n; i++) { *(mat + i * (*n + 1)) = 1.0; for(j = i + 1; j < *n; j++) { aux = pow(*par, j - i); *(mat + i + j * (*n)) = *(mat + j + i * (*n)) = aux; } } } static double safe_phi(double x) /* returns (exp(x) - 1)/(exp(x) + 1), x < 0 */ { /* or (1 - exp(-x))/(1 + exp(-x)), x > 0 */ double ex; if (x < 0.0) { ex = exp(x); return (ex - 1.0)/(ex + 1.0); } ex = exp(-x); return (1.0 - ex)/(1.0 + ex); } void AR1_matList(double *par, longint *pdims, double *mat) { longint i, M = pdims[1], *len = pdims + 4; /* par assumed in unconstrained form */ *par = safe_phi( *par ); for(i = 0; i < M; i++) { AR1_mat(par, &len[i], mat); mat += len[i] * len[i]; } } static void AR1_fact(double *par, longint *n, double *mat, double *logdet) { longint i, np1 = *n + 1; double aux = sqrt(1 - *par * (*par)), aux1 = - (*par)/aux; *logdet -= (*n - 1) * log(aux); aux = 1/aux; mat[0] = 1; for(i = 1; i < *n; i++) { mat[i * np1] = aux; mat[i + *n * (i - 1)] = aux1; } } void AR1_factList(double *par, longint *pdims, double *FactorL, double *logdet) { longint i, M = pdims[1], *len = pdims + 4; /* par assumed in unconstrained form */ *par = safe_phi( *par ); for(i = 0; i < M; i++) { AR1_fact(par, &len[i], FactorL, logdet); FactorL += len[i] * len[i]; } } void AR1_recalc(double *Xy, longint *pdims, longint *ZXcol, double *par, double *logdet) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; double *Factor; /* par assumed in unconstrained form */ *par = safe_phi( *par ); for(i = 0; i < M; i++) { Factor = Calloc(len[i] * len[i], double); AR1_fact(par, &len[i], Factor, logdet); mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Free(Factor); } } /* Continuous AR1 class */ static void CAR1_mat(double *par, double *time, longint *n, double *mat) { longint i, j; double aux; for(i = 0; i < *n; i++) { *(mat + i * (*n + 1)) = 1.0; for(j = i + 1; j < *n; j++) { aux = pow(*par, fabs(time[j] - time[i])); *(mat + i + j * (*n)) = *(mat + j + i * (*n)) = aux; } } } void CAR1_matList(double *par, double *time, longint *pdims, double *mat) { longint i, M = pdims[1], *len = pdims + 4; double aux = exp(*par); /* parameter assumed in unconstrained form */ *par = aux / (1.0 + aux); for(i = 0; i < M; i++) { CAR1_mat(par, time, &len[i], mat); mat += len[i] * len[i]; time += len[i]; } } static void CAR1_fact(double *par, double *time, longint *n, double *mat, double *logdet) { longint job = 11L, info, i, nsq = *n * (*n), np1 = *n + 1; double *work = Calloc(*n, double), *work1 = Calloc(nsq, double); CAR1_mat(par, time, n, mat); #ifdef USING_R F77_CALL(chol) (mat, n, n, mat, &info); #else longint zero = 0L; F77_CALL(chol) (mat, n, work, &zero, &zero, &info); #endif for(i = 0; i < *n; i++) { work1[i * np1] = 1; F77_CALL(dtrsl) (mat, n, n, work1 + i * (*n), &job, &info); *logdet -= log(fabs(mat[i * np1])); } Memcpy(mat, work1, nsq); Free(work); Free(work1); } void CAR1_factList(double *par, double *time, longint *pdims, double *FactorL, double *logdet) { longint i, M = pdims[1], *len = pdims + 4; double aux = exp(*par); /* parameter assumed in unconstrained form */ *par = aux / (1.0 + aux); for(i = 0; i < M; i++) { CAR1_fact(par, time, &len[i], FactorL, logdet); FactorL += len[i] * len[i]; time += len[i]; } } void CAR1_recalc(double *Xy, longint *pdims, longint *ZXcol, double *par, double *time, double *logdet) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; double aux = exp(*par); /* parameter assumed in unconstrained form */ *par = aux / (1.0 + aux); for(i = 0; i < M; i++) { double *Factor = Calloc(len[i] * len[i], double); CAR1_fact(par, time + start[i], &len[i], Factor, logdet); mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Free(Factor); } } /* ARMA class */ static void ARMA_transPar(longint N, double *pars, double sgn) { longint i, j, n, n2; double ps, D, aux; for(n = N - 1; n > -1; n--) { if ((ps = pars[n] * pars[n]) >= 1.0) error(_("All parameters must be less than 1 in absolute value")); if (n) { D = 1 - ps; n2 = (n - 1)/2; for(i = 0; i <= n2; i++) { if ((j = n - i -1) > i) { aux = (pars[i] + sgn * pars[j] * pars[n])/D; pars[j] = (pars[j] + sgn * pars[i] * pars[n])/D; pars[i] = aux; } else { pars[i] /= (1 - sgn * pars[n]); } } } pars[n] = log((1 + pars[n])/(1 - pars[n])); } } void ARMA_unconstCoef(longint *p, longint *q, double *pars) { ARMA_transPar(*p, pars, 1.0); ARMA_transPar(*q, pars + *p, -1.0); } static void ARMA_untransPar(longint N, double *pars, double sgn) { longint i, j; double *aux; if (N) { aux = Calloc(N, double); for(i = 0; i < N; i++) { pars[i] = exp(-pars[i]); aux[i] = pars[i] = (1 - pars[i])/(1 + pars[i]); if (i) { for(j = 0; j < i; j++) { pars[j] = aux[j] + sgn * pars[i] * aux[i - j - 1]; } Memcpy(aux, pars, i); } } Free(aux); } } void ARMA_constCoef(longint *p, longint *q, double *pars) { ARMA_untransPar(*p, pars, -1.0); ARMA_untransPar(*q, pars + *p, 1.0); } static void ARMA_cross(longint *p, longint *q, double *pars, double *psi) { longint i, j, M = *q + 1, PM; M = (*p > M ? *p : M); psi[0] = 1; for(i = 1; i < M; i++) { psi[i] = ((*q < i) ? 0 : pars[*p + i - 1]); PM = (*p < i ? *p : i); for(j = 0; j < PM; j++) { psi[i] += pars[j] * psi[i - j - 1]; } } } static void ARMA_corr(longint *p, longint *q, longint *maxlag, double *pars, double *psi, double *crr) { longint P = *p + 1, Pp1 = P + 1, i, j, k, minPQ, Mlag, maxPQ, *pivot = Calloc(P, longint); double *coef = Calloc(P * P, double), *src, *qraux = Calloc(P, double), *work = Calloc(P * P, double), *work1; if (!sqrt_eps) sqrt_eps = sqrt(DOUBLE_EPS); if ((maxPQ = ((*p > *q) ? *p : *q))) { for(i = 0, src = coef; i < P; i++, src += Pp1) { crr[i] = 0; *src = 1; } Mlag = ((*maxlag > *q) ? *maxlag : *q); Mlag = ((Mlag > *p) ? Mlag : *p) + 1; work1 = Calloc(Mlag, double); for(i = P; i < Mlag; i++) { crr[i] = 0; } crr[0] = 1; for(i = 1, src = pars + *p; i <= *q; i++, src++) { crr[0] += (*src) * psi[i]; } if (*p) { if ((minPQ = ((*p < *q) ? *p : *q))) { for(i = 1, src = pars + *p - 1; i <= minPQ; i++) { for(j = i; j <= *q; j++) { crr[i] += *(src + j) * psi[j - i]; } } } for(i = 0, src = coef; i < P; i++, src++) { for(j = 0; j < *p; j++) { k = i - j - 1; k = ((k > 0) ? k : -k); *(src + (k * P)) -= pars[j]; } } /* F77_CALL(dqrdca) (coef, &P, &P, &P, qraux, pivot, work, &i, &sqrt_eps); */ F77_CALL(dqrdc2) (coef, &P, &P, &P, &sqrt_eps, &i, qraux, pivot, work); if (i < P) error(_("Coefficient matrix not invertible" )); i = 100L; F77_CALL(dqrsl) (coef, &P, &P, &P, qraux, crr, DNULLP, crr, work1, DNULLP, DNULLP, &i, &j); Memcpy(crr, work1, Mlag); } for(i = P; i <= *q; i++) { for(j = 0; j < *p; j++) { crr[i] += pars[j] * crr[i - j - 1]; } for(j = i, src = pars + i - 1; j <= *q; j++, src++) { crr[i] += *src * psi[j - i]; } } for(i = maxPQ + 1; i < Mlag; i++) { for(j = 0; j < *p; j++) { crr[i] += pars[j] * crr[i - j - 1]; } } for(i = 1; i < Mlag; i++) { crr[i] /= crr[0]; } Free(qraux); Free(work); Free(coef); Free(pivot); Free(work1); } crr[0] = 1; } static void ARMA_fullCorr(longint *p, longint *q, longint *maxlag, double *pars, double *crr) { longint M = *q + 1; double *psi; M = ((M < *p) ? *p : M); psi = Calloc(M, double); ARMA_cross(p, q, pars, psi); ARMA_corr(p, q, maxlag, pars, psi, crr); Free(psi); } static void ARMA_mat(double *crr, longint *time, longint *n, double *mat) { longint i, j, k; for(i = 0; i < *n; i++) { for(j = i; j < *n; j++) { k = time[j] - time[i]; k = ((k < 0) ? -k : k); *(mat + i + j * (*n)) = *(mat + j + i * (*n)) = crr[k]; } } } void ARMA_matList(double *pars, longint *p, longint *q, longint *time, longint *maxlag, longint *pdims, double *mat) { double *crr = Calloc(*maxlag + 1L, double); longint i, M = pdims[1], *len = pdims + 4; /* parameters assumed in unconstrained form */ ARMA_constCoef(p, q, pars); ARMA_fullCorr(p, q, maxlag, pars, crr); for(i = 0; i < M; i++) { ARMA_mat(crr, time, &len[i], mat); mat += len[i] * len[i]; time += len[i]; } Free(crr); } static void ARMA_fact(double *crr, longint *time, longint *n, double *mat, double *logdet) { longint job = 11L, info, i, nsq = *n * (*n), np1 = *n + 1; double *work = Calloc(*n, double), *work1 = Calloc(nsq, double); #ifndef USING_R longint zero = 0L; #endif ARMA_mat(crr, time, n, mat); #ifdef USING_R F77_CALL(chol) (mat, n, n, mat, &info); #else F77_CALL(chol) (mat, n, work, &zero, &zero, &info); #endif for(i = 0; i < *n; i++) { work1[i * np1] = 1; F77_CALL(dtrsl) (mat, n, n, work1 + i * (*n), &job, &info); *logdet -= log(fabs(mat[i * np1])); } Memcpy(mat, work1, nsq); Free(work); Free(work1); } void ARMA_factList(double *pars, longint *p, longint *q, longint *time, longint *maxlag, longint *pdims, double *FactorL, double *logdet) { double *crr = Calloc(*maxlag + 1L, double); longint i, M = pdims[1], *len = pdims + 4; /* parameters assumed in unconstrained form */ ARMA_constCoef(p, q, pars); ARMA_fullCorr(p, q, maxlag, pars, crr); for(i = 0; i < M; i++) { ARMA_fact(crr, time, &len[i], FactorL, logdet); FactorL += len[i] * len[i]; time += len[i]; } Free(crr); } void ARMA_recalc(double *Xy, longint *pdims, longint *ZXcol, double *pars, longint *p, longint *q, longint *time, longint *maxlag, double *logdet) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; double *crr = Calloc(*maxlag + 1L, double); /* parameters assumed in unconstrained form */ ARMA_constCoef(p, q, pars); ARMA_fullCorr(p, q, maxlag, pars, crr); for(i = 0; i < M; i++) { double *Factor = Calloc(len[i] * len[i], double); ARMA_fact(crr, time + start[i], &len[i], Factor, logdet); mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Free(Factor); } } /* Compound symmetry */ static void compSymm_mat(double *par, longint *n, double *mat) { longint i, j; for(i = 0; i < *n; i++) { mat[(*n + 1) * i] = 1.0; for(j = i + 1; j < *n; j++) { *(mat + i + j * (*n)) = *(mat + j + i * (*n)) = *par; } } } void compSymm_matList(double *par, double *inf, longint *pdims, double *mat) { longint i, M = pdims[1], *len = pdims + 4; /* parameter assumed in unconstrained form */ double aux = exp(*par); *par = (aux + *inf)/(aux + 1.0); for(i = 0; i < M; i++) { compSymm_mat(par, &len[i], mat); mat += len[i] * len[i]; } } static void compSymm_fact(double *par, longint *n, double *mat, double *logdet) { longint i, j, np1 = *n + 1, nsq = *n * (*n); double aux, aux1, *work = Calloc(nsq, double); aux = 1 + (*n - 1) * (*par); *logdet -= log(aux)/2; aux = 1/sqrt(aux * (*n)); for(i = 0; i < nsq; i += *n) { work[i] = aux; } aux = 1 - (*par); *logdet -= (*n - 1) * log(aux)/2; for(i = 1; i < *n; i++) { aux1 = -1/sqrt(aux * i * (i + 1)); for(j = 0; j < i; j++) { work[i + j * (*n)] = aux1; } work[i * np1] = -i * aux1; } Memcpy(mat, work, nsq); Free(work); } void compSymm_factList(double *par, double *inf, longint *pdims, double *FactorL, double *logdet) { longint i, M = pdims[1], *len = pdims + 4; /* parameter assumed in unconstrained form */ double aux = exp(*par); *par = (aux + *inf)/(aux + 1.0); for(i = 0; i < M; i++) { compSymm_fact(par, &len[i], FactorL, logdet); FactorL += len[i] * len[i]; } } void compSymm_recalc(double *Xy, longint *pdims, longint *ZXcol, double *par, double *inf, double *logdet) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; double aux = exp(*par); /* parameter assumed in unconstrained form */ *par = (aux + *inf)/(aux + 1.0); for(i = 0; i < M; i++) { double *Factor = Calloc(len[i] * len[i], double); compSymm_fact(par, &len[i], Factor, logdet); mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Free(Factor); } } /* Huyn-Feldt class */ static void HF_mat(double *par, longint *time, longint *n, double *mat) { longint i, j, np1 = *n + 1; for(i = 0; i < *n; i++) { mat[i * np1] = par[time[i]]; for(j = i + 1; j < *n; j++) { *(mat + i + j * (*n)) = *(mat + j + i * (*n)) = 0.5 * (par[time[i]] + par[time[j]]) - 1.0; } } } void HF_matList(double *par, longint *maxC, longint *time, longint *pdims, double *mat) { longint i, M = pdims[1], *len = pdims + 4; /* parameter assumed in unconstrained form */ double inf = -1.0/(2.0 * ((double) *maxC)); for(i = 0; i < *maxC; i++) { par[i] = 2.0 * (exp(par[i]) + inf) + 1.0; } for(i = 0; i < M; i++) { HF_mat(par, time, &len[i], mat); mat += len[i] * len[i]; time += len[i]; } } static void HF_fact(double *par, longint *time, longint *n, double *mat, double *logdet) { longint job = 11L, info, i, nsq = *n * (*n), np1 = *n + 1; double *work = Calloc(*n, double), *work1 = Calloc(nsq, double); #ifndef USING_R longint zero = 0L; #endif HF_mat(par, time, n, mat); #ifdef USING_R F77_CALL(chol) (mat, n, n, mat, &info); #else F77_CALL(chol) (mat, n, work, &zero, &zero, &info); #endif for(i = 0; i < *n; i++) { work1[i * np1] = 1; F77_CALL(dtrsl) (mat, n, n, work1 + i * (*n), &job, &info); *logdet -= log(fabs(mat[i * np1])); } Memcpy(mat, work1, nsq); Free(work); Free(work1); } void HF_factList(double *par, longint *maxC, longint *time, longint *pdims, double *FactorL, double *logdet) { longint i, M = pdims[1], *len = pdims + 4; /* parameter assumed in unconstrained form */ double inf = -1.0/(2.0 * ((double) *maxC)); for(i = 0; i < *maxC; i++) { par[i] = 2.0 * (exp(par[i]) + inf) + 1.0; } for(i = 0; i < M; i++) { HF_fact(par, time, &len[i], FactorL, logdet); FactorL += len[i] * len[i]; time += len[i]; } } void HF_recalc(double *Xy, longint *pdims, longint *ZXcol, double *par, longint *time, longint *maxC, double *logdet) { longint N = pdims[0], M = pdims[1], *len = pdims + 4, *start = len + M, i; double inf = -1.0/(2.0 * ((double) *maxC)); /* parameter assumed in unconstrained form */ for(i = 0; i < *maxC; i++) { par[i] = 2.0 * (exp(par[i]) + inf) + 1.0; } for(i = 0; i < M; i++) { double *Factor = Calloc(len[i] * len[i], double); HF_fact(par, time + start[i], &len[i], Factor, logdet); mult_mat(Xy + start[i], N, Factor, len[i], len[i], len[i], Xy + start[i], N, *ZXcol); Free(Factor); } } /* Spatial correlation structures */ /* Spherical class */ static double spher_corr(double val) { if (val < 1) return(1.0 - 1.5 * val + 0.5 * pow(val, 3)); else return(0.0); } /* Exponential class */ static double exp_corr(double val) { return(exp(-val)); } /* Gaussian class */ static double Gaus_corr(double val) { return(exp(-(val * val))); } /* Linear class */ static double lin_corr(double val) { if (val < 1) return(1.0 - val); else return(0.0); } /* Rational class */ static double ratio_corr(double val) { double val2 = val * val; return(1/(1+val2)); } /* Dummy class */ static double dummy_corr(double val) { error(_("Unknown spatial correlation class")); return(0.0); /* -Wall */ } /* methods for the virtual class */ static void spatial_mat(double *par, double *dist, longint *n, longint *nug, double (*corr)(double ), double *mat) { longint i, j, np1 = *n + 1; double aux, *sdist, ratio = 1.0; sdist = dist; if (*nug) ratio = par[1]; for(i = 0; i < *n; i++) { mat[i * np1] = 1.0; for(j = i + 1; j < *n; j++, sdist++) { aux = *sdist / *par; *(mat + i + j * (*n)) = *(mat + j + i * (*n)) = ratio * corr(aux); } } } void spatial_matList(double *par, longint *nug, double *dist, longint *pdims, double *minD, double *mat) { longint i, M = pdims[1], spClass = pdims[2], *len = pdims + 4, *start = len + M; double aux, (*corr)(double ) = dummy_corr; /* parameter assumed in unconstrained form */ par[0] = exp(par[0]); if (*nug == 1) { aux = exp(par[1]); par[1] = 1 / (1.0 + aux); /* 1 - nugget */ } switch(spClass) { case 1: /* spherical */ corr = spher_corr; par[0] += *minD; break; case 2: /* exponential */ corr = exp_corr; break; case 3: /* Gaussian */ corr = Gaus_corr; break; case 4: /* linear */ corr = lin_corr; par[0] += *minD; break; case 5: /* rational quadratic */ corr = ratio_corr; break; default: error(_("Unknown spatial correlation class")); break; } for(i = 0; i < M; i++) { spatial_mat(par, dist + start[i], &len[i], nug, corr, mat); mat += len[i] * len[i]; } } static void spatial_fact(double *par, double *dist, longint *n, longint *nug, double (*corr) (double ), double *mat, double *logdet) { longint job = 11L, info, i, nsq = *n * (*n), np1 = *n + 1; double *work = Calloc(*n, double), *work1 = Calloc(nsq, double); #ifndef USING_R longint zero = 0L; #endif spatial_mat(par, dist, n, nug, corr, mat); #ifdef USING_R F77_CALL(chol) (mat, n, n, mat, &info); #else F77_CALL(chol) (mat, n, work, &zero, &zero, &info); #endif for(i = 0; i < *n; i++) { work1[i * np1] = 1; F77_CALL(dtrsl) (mat, n, n, work1 + i * (*n), &job, &info); *logdet -= log(fabs(mat[i * np1])); } Memcpy(mat, work1, nsq); Free(work); Free(work1); } void spatial_factList(double *par, longint *nug, double *dist, longint *pdims, double *minD, double *FactorL, double *logdet) { longint i, M = pdims[1], spClass = pdims[2], *len = pdims + 4, *start = len + M; double aux, (*corr)(double ) = dummy_corr; /* parameter assumed in unconstrained form */ par[0] = exp(par[0]); if (*nug == 1) { aux = exp(par[1]); par[1] = 1 / (1.0 + aux); /* 1 - nugget */ } switch(spClass) { case 1: /* spherical */ corr = spher_corr; par[0] += *minD; break; case 2: /* exponential */ corr = exp_corr; break; case 3: /* Gaussian */ corr = Gaus_corr; break; case 4: /* linear */ corr = lin_corr; par[0] += *minD; break; case 5: /* rational quadratic */ corr = ratio_corr; break; default: error(_("Unknown spatial correlation class")); break; } for(i = 0; i < M; i++) { spatial_fact(par, dist + start[i], &len[i], nug, corr, FactorL, logdet); FactorL += len[i] * len[i]; } } void spatial_recalc(double *Xy, longint *pdims, longint *ZXcol, double *par, double *dist, double *minD, longint *nug, double *logdet) { longint N = pdims[0], M = pdims[1], spClass = pdims[2], *len = pdims + 4, *start = len + M, i; double aux, (*corr)(double ) = dummy_corr, *sXy; /* parameter assumed in unconstrained form */ par[0] = exp(par[0]); if (*nug == 1) { aux = exp(par[1]); par[1] = 1 / (1.0 + aux); /* 1 - nugget */ } switch(spClass) { case 1: /* spherical */ corr = spher_corr; par[0] += *minD; break; case 2: /* exponential */ corr = exp_corr; break; case 3: /* Gaussian */ corr = Gaus_corr; break; case 4: /* linear */ corr = lin_corr; par[0] += *minD; break; case 5: /* rational quadratic */ corr = ratio_corr; break; default: error(_("Unknown spatial correlation class")); break; } for(i = 0, sXy = Xy; i < M; i++) { double *Factor = Calloc(len[i] * len[i], double); spatial_fact(par, dist + start[i], &len[i], nug, corr, Factor, logdet); mult_mat(sXy, N, Factor, len[i], len[i], len[i], sXy, N, *ZXcol); sXy += len[i]; Free(Factor); } } nlme/src/matrix.h0000644000176000001440000000377412242150465013515 0ustar ripleyusers/* header file for the nlme package Copyright 1999-2001 Saikat DebRoy This file is part of the nlme package for S and related languages and is made available under the terms of the GNU General Public License, version 2, or at your option, any later version, incorporated herein by reference. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ */ #ifndef NLME_MATRIX_H #define NLME_MATRIX_H #include "base.h" void F77_NAME(chol)(double *a, int *lda, int *n, double *v, int *info); int F77_NAME(rs)(int *nm, int *n, double *a, double *w, int *matz, double *z, double *fv1, double *fv2, int *ierr); #include typedef struct QR_struct { double *mat, *qraux; longint *pivot, rank, ldmat, nrow, ncol; } *QRptr; extern void d_axpy(double *, double, double *, longint); extern double d_dot_prod(double *, longint, double *, longint, longint); extern double d_sum_sqr( double *, longint); extern double *copy_mat(double *, longint, double *, longint, longint, longint); extern double *copy_trans(double *, longint, double *, longint, longint, longint); extern double *mult_mat(double *, longint, double *, longint, longint, longint, double *, longint, longint); extern QRptr QR(double *, longint, longint, longint); extern void QRfree(QRptr); extern longint QRqty(QRptr, double *, longint, longint); extern longint QRsolve(QRptr, double *, longint, longint, double *, longint); extern double QRlogAbsDet(QRptr); extern void QRstoreR(QRptr, double *, longint); extern longint QR_and_rotate(double *, longint, longint, longint, double *, longint, longint, double *, double *, longint); #endif /* NLME_MATRIX_H */ nlme/NAMESPACE0000644000176000001440000003242612222471724012466 0ustar ripleyusersuseDynLib(nlme, .registration=TRUE) importFrom(graphics, pairs, plot) importFrom(lattice, Rows, bwplot, dotplot, llines, lpoints, lsegments, ltext, panel.abline, panel.bwplot, panel.dotplot, panel.grid, panel.histogram, panel.linejoin, panel.loess, panel.superpose, panel.xyplot, splom, strip.default, trellis.par.get, xyplot) importFrom(stats, anova, coef, fitted, formula, logLik, nobs, predict, qqnorm, residuals, update, vcov) export(ACF, allCoef, asOneFormula, asTable, augPred, balancedGrouped, "coef<-", "coefficients<-", collapse, compareFits, comparePred, corAR1, corARMA, corCAR1, corCompSymm, corExp, corFactor, corGaus, corIdent, corLin, corMatrix, corNatural, corRatio, corSpatial, corSpher, corSymm, "covariate<-", Dim, fdHess, fixed.effects, fixef, gapply, getCovariate, getCovariateFormula, getData, getGroups, getGroupsFormula, getResponse, getResponseFormula, getVarCov, gls, glsControl, glsStruct, gnls, gnlsControl, gnlsStruct, groupedData, gsummary, Initialize, intervals, isBalanced, isInitialized, LDEsysMat, lme, lmeControl, lmeScale, lmeStruct, lmList, logDet, "matrix<-", Names, "Names<-", needUpdate, nfGroupedData, nlme, nlmeControl, nlmeStruct, nlsList, nmGroupedData, pdBlocked, pdCompSymm, pdConstruct, pdDiag, pdFactor, pdIdent, pdLogChol, pdMat, pdMatrix, pdNatural, pdSymm, phenoModel, pooledSD, quinModel, random.effects, ranef, recalc, reStruct, simulate.lme, splitFormula, varComb, varConstPower, VarCorr, varExp, varFixed, varFunc, varIdent, Variogram, varPower, varWeights) # called directly via do.call export(anova.lme, nlsList.formula, plot.lme) # needed as name stored in the call via match.call export(lme.formula, lme.lmList, lmList.formula, nlme.formula, nlme.nlsList) # exported for package rms export(glsApVar, glsEstimate) S3method("[", groupedData) S3method("[", pdBlocked) S3method("[", pdMat) S3method("[", reStruct) S3method("[<-", pdMat) S3method(ACF, gls) S3method(ACF, lme) S3method(anova, gls) S3method(anova, lme) S3method(as.data.frame, groupedData) S3method(as.matrix, corStruct) S3method(as.matrix, pdMat) S3method(as.matrix, reStruct) S3method(asTable, groupedData) S3method(augPred, gls) S3method(augPred, lme) S3method(augPred, lmList) S3method(coef, corAR1) S3method(coef, corARMA) S3method(coef, corCAR1) S3method(coef, corCompSymm) S3method(coef, corIdent) S3method(coef, corLin) S3method(coef, corNatural) S3method(coef, corSpatial) S3method(coef, corSpher) S3method(coef, corStruct) S3method(coef, corSymm) S3method(coef, gls) S3method(coef, gnls) S3method(coef, lme) S3method(coef, lmList) S3method(coef, modelStruct) S3method(coef, pdBlocked) S3method(coef, pdCompSymm) S3method(coef, pdDiag) S3method(coef, pdIdent) S3method(coef, pdMat) S3method(coef, pdNatural) S3method(coef, pdSymm) S3method(coef, reStruct) S3method(coef, summary.nlsList) S3method(coef, varComb) S3method(coef, varConstPower) S3method(coef, varExp) S3method(coef, varFixed) S3method(coef, varFunc) S3method(coef, varIdent) S3method(coef, varPower) S3method("coef<-", corAR1) S3method("coef<-", corARMA) S3method("coef<-", corCAR1) S3method("coef<-", corCompSymm) S3method("coef<-", corIdent) S3method("coef<-", corNatural) S3method("coef<-", corSpatial) S3method("coef<-", corStruct) S3method("coef<-", corSymm) S3method("coef<-", modelStruct) S3method("coef<-", pdBlocked) S3method("coef<-", pdMat) S3method("coef<-", reStruct) S3method("coef<-", varComb) S3method("coef<-", varConstPower) S3method("coef<-", varExp) S3method("coef<-", varFixed) S3method("coef<-", varIdent) S3method("coef<-", varPower) S3method(collapse, groupedData) S3method(comparePred, gls) S3method(comparePred, lme) S3method(comparePred, lmList) S3method(corFactor, compSymm) S3method(corFactor, corAR1) S3method(corFactor, corARMA) S3method(corFactor, corCAR1) S3method(corFactor, corNatural) S3method(corFactor, corSpatial) S3method(corFactor, corStruct) S3method(corFactor, corSymm) S3method(corMatrix, corAR1) S3method(corMatrix, corARMA) S3method(corMatrix, corCAR1) S3method(corMatrix, corCompSymm) S3method(corMatrix, corIdent) S3method(corMatrix, corNatural) S3method(corMatrix, corSpatial) S3method(corMatrix, corStruct) S3method(corMatrix, corSymm) S3method(corMatrix, pdBlocked) S3method(corMatrix, pdCompSymm) S3method(corMatrix, pdDiag) S3method(corMatrix, pdIdent) S3method(corMatrix, pdMat) S3method(corMatrix, reStruct) S3method("covariate<-", varFunc) S3method(Dim, corSpatial) S3method(Dim, corStruct) S3method(Dim, default) S3method(Dim, pdCompSymm) S3method(Dim, pdDiag) S3method(Dim, pdIdent) S3method(Dim, pdMat) S3method(Dim, pdNatural) S3method(Dim, pdSymm) S3method(fitted, gls) S3method(fitted, glsStruct) S3method(fitted, gnls) S3method(fitted, gnlsStruct) S3method(fitted, lme) S3method(fitted, lmeStruct) S3method(fitted, lmList) S3method(fitted, nlmeStruct) S3method(fixef, lme) S3method(fixef, lmList) S3method(formula, corStruct) S3method(formula, gls) S3method(formula, gnls) S3method(formula, groupedData) S3method(formula, lme) S3method(formula, lmList) S3method(formula, modelStruct) S3method(formula, nlme) S3method(formula, nlsList) S3method(formula, pdBlocked) S3method(formula, pdMat) S3method(formula, reStruct) S3method(formula, varComb) S3method(formula, varFunc) S3method(getCovariate, corSpatial) S3method(getCovariate, corStruct) S3method(getCovariate, data.frame) S3method(getCovariate, varFunc) S3method(getData, gls) S3method(getData, gnls) S3method(getData, lme) S3method(getData, lmList) S3method(getData, nlme) S3method(getData, nls) S3method(getGroups, corStruct) S3method(getGroups, data.frame) S3method(getGroups, gls) S3method(getGroups, lme) S3method(getGroups, lmList) S3method(getGroups, varFunc) S3method(getGroupsFormula, default) S3method(getGroupsFormula, gls) S3method(getGroupsFormula, lme) S3method(getGroupsFormula, lmList) S3method(getGroupsFormula, reStruct) S3method(getResponse, data.frame) S3method(getResponse, gls) S3method(getResponse, lme) S3method(getResponse, lmList) S3method(getVarCov, gls) S3method(getVarCov, lme) S3method(Initialize, corAR1) S3method(Initialize, corARMA) S3method(Initialize, corCAR1) S3method(Initialize, corCompSymm) S3method(Initialize, corIdent) S3method(Initialize, corLin) S3method(Initialize, corNatural) S3method(Initialize, corSpatial) S3method(Initialize, corSpher) S3method(Initialize, corStruct) S3method(Initialize, corSymm) S3method(Initialize, glsStruct) S3method(Initialize, gnlsStruct) S3method(Initialize, lmeStruct) S3method(Initialize, reStruct) S3method(Initialize, varComb) S3method(Initialize, varConstPower) S3method(Initialize, varExp) S3method(Initialize, varFixed) S3method(Initialize, varFunc) S3method(Initialize, varIdent) S3method(Initialize, varPower) S3method(intervals, gls) S3method(intervals, lme) S3method(intervals, lmList) S3method(isBalanced, groupedData) S3method(isInitialized, pdBlocked) S3method(isInitialized, pdMat) S3method(isInitialized, reStruct) S3method(lme, formula) S3method(lme, groupedData) S3method(lme, lmList) S3method(lmList, formula) S3method(lmList, groupedData) S3method(logDet, corIdent) S3method(logDet, corStruct) S3method(logDet, pdBlocked) S3method(logDet, pdCompSymm) S3method(logDet, pdDiag) S3method(logDet, pdIdent) S3method(logDet, pdMat) S3method(logDet, pdNatural) S3method(logDet, pdSymm) S3method(logDet, reStruct) S3method(logLik, corStruct) S3method(logLik, gls) S3method(logLik, glsStruct) S3method(logLik, gnls) S3method(logLik, gnlsStruct) S3method(logLik, lme) S3method(logLik, lmeStruct) S3method(logLik, lmeStructInt) S3method(logLik, lmList) S3method(logLik, reStruct) S3method(logLik, varComb) S3method(logLik, varFunc) S3method("matrix<-", pdBlocked) S3method("matrix<-", pdMat) S3method("matrix<-", reStruct) S3method(model.matrix, reStruct) S3method(Names, formula) S3method(Names, listForm) S3method(Names, pdBlocked) S3method(Names, pdMat) S3method(Names, reStruct) S3method("Names<-", pdBlocked) S3method("Names<-", pdMat) S3method("Names<-", reStruct) S3method(needUpdate, corStruct) S3method(needUpdate, default) S3method(needUpdate, modelStruct) S3method(needUpdate, reStruct) S3method(needUpdate, varComb) S3method(needUpdate, varIdent) S3method(nlme, formula) S3method(nlme, nlsList) S3method(nlsList, formula) S3method(nlsList, selfStart) S3method(nobs, gls) S3method(nobs, gnls) S3method(nobs, lme) S3method(pairs, compareFits) S3method(pairs, lme) S3method(pairs, lmList) S3method(pdConstruct, pdBlocked) S3method(pdConstruct, pdCompSymm) S3method(pdConstruct, pdDiag) S3method(pdConstruct, pdIdent) S3method(pdConstruct, pdLogChol) S3method(pdConstruct, pdMat) S3method(pdConstruct, pdNatural) S3method(pdConstruct, pdSymm) S3method(pdFactor, pdBlocked) S3method(pdFactor, pdCompSymm) S3method(pdFactor, pdDiag) S3method(pdFactor, pdIdent) S3method(pdFactor, pdLogChol) S3method(pdFactor, pdMat) S3method(pdFactor, pdNatural) S3method(pdFactor, pdSymm) S3method(pdFactor, reStruct) S3method(pdMatrix, pdBlocked) S3method(pdMatrix, pdCompSymm) S3method(pdMatrix, pdDiag) S3method(pdMatrix, pdIdent) S3method(pdMatrix, pdMat) S3method(pdMatrix, pdNatural) S3method(pdMatrix, pdSymm) S3method(pdMatrix, reStruct) S3method(plot, ACF) S3method(plot, augPred) S3method(plot, compareFits) S3method(plot, gls) S3method(plot, intervals.lmList) S3method(plot, lme) S3method(plot, lmList) S3method(plot, nffGroupedData) S3method(plot, nfnGroupedData) S3method(plot, nls) S3method(plot, nmGroupedData) S3method(plot, pdMat) S3method(plot, ranef.lme) S3method(plot, ranef.lmList) S3method(plot, simulate.lme) S3method(plot, Variogram) S3method(predict, gls) S3method(predict, gnls) S3method(predict, lme) S3method(predict, lmList) S3method(predict, nlme) S3method(print, anova.lme) S3method(print, compareFits) S3method(print, corNatural) S3method(print, correlation) S3method(print, corStruct) S3method(print, corSymm) S3method(print, gls) S3method(print, groupedData) S3method(print, intervals.gls) S3method(print, intervals.lme) S3method(print, intervals.lmList) S3method(print, lme) S3method(print, lmList) S3method(print, modelStruct) S3method(print, pdMat) S3method(print, ranef.lme) S3method(print, reStruct) S3method(print, simulate.lme) S3method(print, summary.corNatural) S3method(print, summary.corStruct) S3method(print, summary.corSymm) S3method(print, summary.gls) S3method(print, summary.lme) S3method(print, summary.lmList) S3method(print, summary.modelStruct) S3method(print, summary.pdMat) S3method(print, summary.varComb) S3method(print, summary.varFixed) S3method(print, summary.varFunc) S3method(print, varComb) S3method(print, VarCorr.lme) S3method(print, VarCov) S3method(print, varFunc) S3method(qqnorm, gls) S3method(qqnorm, lm) S3method(qqnorm, lme) S3method(qqnorm, lmList) S3method(qqnorm, nls) S3method(ranef, lme) S3method(ranef, lmList) S3method(recalc, corAR1) S3method(recalc, corARMA) S3method(recalc, corCAR1) S3method(recalc, corCompSymm) S3method(recalc, corIdent) S3method(recalc, corNatural) S3method(recalc, corSpatial) S3method(recalc, corStruct) S3method(recalc, corSymm) S3method(recalc, modelStruct) S3method(recalc, reStruct) S3method(recalc, varFunc) S3method(recalc, varIdent) S3method(residuals, gls) S3method(residuals, glsStruct) S3method(residuals, gnls) S3method(residuals, gnlsStruct) S3method(residuals, lme) S3method(residuals, lmeStruct) S3method(residuals, lmList) S3method(residuals, nlmeStruct) S3method(solve, pdBlocked) S3method(solve, pdDiag) S3method(solve, pdIdent) S3method(solve, pdLogChol) S3method(solve, pdMat) S3method(solve, pdNatural) S3method(solve, pdSymm) S3method(solve, reStruct) S3method(summary, corAR1) S3method(summary, corARMA) S3method(summary, corCAR1) S3method(summary, corCompSymm) S3method(summary, corExp) S3method(summary, corGaus) S3method(summary, corIdent) S3method(summary, corLin) S3method(summary, corNatural) S3method(summary, corRatio) S3method(summary, corSpher) S3method(summary, corStruct) S3method(summary, corSymm) S3method(summary, gls) S3method(summary, lme) S3method(summary, lmList) S3method(summary, modelStruct) S3method(summary, nlsList) S3method(summary, pdBlocked) S3method(summary, pdCompSymm) S3method(summary, pdDiag) S3method(summary, pdIdent) S3method(summary, pdLogChol) S3method(summary, pdMat) S3method(summary, pdNatural) S3method(summary, pdSymm) S3method(summary, reStruct) S3method(summary, varComb) S3method(summary, varConstPower) S3method(summary, varExp) S3method(summary, varFixed) S3method(summary, varFunc) S3method(summary, varIdent) S3method(summary, varPower) S3method(update, corStruct) S3method(update, gls) S3method(update, gnls) S3method(update, groupedData) S3method(update, lme) S3method(update, lmList) S3method(update, modelStruct) S3method(update, nlme) S3method(update, nlsList) S3method(update, reStruct) S3method(update, varComb) S3method(update, varConstPower) S3method(update, varExp) S3method(update, varFunc) S3method(update, varPower) S3method(VarCorr, lme) S3method(VarCorr, pdBlocked) S3method(VarCorr, pdMat) S3method(Variogram, corExp) S3method(Variogram, corGaus) S3method(Variogram, corLin) S3method(Variogram, corRatio) S3method(Variogram, corSpatial) S3method(Variogram, corSpher) S3method(Variogram, default) S3method(Variogram, gls) S3method(Variogram, lme) S3method(varWeights, glsStruct) S3method(varWeights, lmeStruct) S3method(varWeights, varComb) S3method(varWeights, varFunc) S3method(vcov, gls) S3method(vcov, lme) nlme/GPL-20000644000176000001440000004313311606532720011747 0ustar ripleyusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. nlme/data/0000755000176000001440000000000012131311354012140 5ustar ripleyusersnlme/data/Cefamandole.rda0000644000176000001440000000167010132476005015036 0ustar ripleyusers‹í–ILA†kvÆWD…Áe@@Üí–ÕQ‘—43ÝfÌL7ö ¸ÆxÑ“‰Ox2Ñ3/^<èÅÄx3ñ¢/4ÁÐÿu½˜AÎÙN¾yUÿT¿÷jéªêkl †…^á áñ£è÷âÇ#D¤¶´M7´´f&¬”.D¨’v>l¿óZqxŠÄ_$" ‰¯8ò†>˜ÒGõTêBéÕOª§Ñ-ls -n¡É-4»…í>ñ”–q]z¹UȲº­'¸4´xÖ²Qš†RN3­nÎ£ÆØ6³Ý϶ó–´=\ï{&íëçXbÝ`ÝdÝf}”õÿñþÇû‡x¹uzžõ~n×õ¤‰µmBÚ¯èy­nûhУÖÒnd})[¿Ô•©áGïÂû.)“ÒŸò‘õ·Ïï‰~‘ËsàŽôÓËy¶—I?;ùÿ†Ê1<ÔÚ&™G5Çp¼yì’ ?V>Á;B(ïÆ#×>t+/{?ß^ó´O«Òß)Žs’ýw³m½+ýíåþíº•?þQŽW5&óYÌz©ÌKùÉvY Õx(ÿ?Ëãz²BæßÍýkã8;ºe½…Ç{û­bëc¿?d\å+Û÷OŽ)oî9V-ŽgÌÿÀ}é·—Ç­ƒÇa?÷£‰íf¶5ÜÏJïrž·I©+ŠÈªV°ÞNs½‡ßëÉHÛÁó·›ý¶pû­l×qÜå\wçóÇûB³¹^¸›ZZwwc‹¡#Cõx–«þþdZwËqËŒK¾_üšŸwírÓ0»lkdXO´kYÕù¦1W,½0G 'P޶F±òr,±­Ë17O÷ا£Ø+sίtì…uÝqI‘@¥A ‚€’^héÑu"–€¥` !¬+ÀJ° ¬kÀZ@Kj¨ëm5A ¨QPh n[MmEõ àè8GLAŸŽIASºÐ'» ì{À^°ÐÖ¥ÐÜ‚ ´vÐ:A8Ãà Oó( ­î8zA8!Ç3oÀC†e§GR˜_°`®=îk’÷fY¬ÃMÚ–™ÖM,1%œ#<÷¿ç¦Èݾf¯'G Înx£°¡\„yÚÌ:u‚LϹ½hCÎí%X!_ÌëA99¬¶2Ù­ +£ü[9ëÒYE9¢?¶–MZ¦ âwÄë&|Å-\ýC*3™ý[&h:iÖˆó¢éø…útª®¨xeÎ}*æ|eôÕ„ÅÌ֪߆¶Ášw nlme/data/Quinidine.rda0000644000176000001440000003326110132476007014570 0ustar ripleyusers‹í œ]UçßÙ@@VEE(Á% b’" u a'+P•¤’$UI%$ y„DCP@Ô±µµ;‚:¶Ýv÷ˆŒÓ£o´»§ÇѧGÛeÆž ‚ H³±ïÝÿ9¯îyurÏÝÞ}RŸÏ?¿º÷ÝålßÿùŸÿ½õ2Öâɇ,>¤R©ð S• “øUrüÃ*•c†ì m£§mMhÈÙnÊÁ.oƒ½ÃÃÞŸÒ·É®"›“Àn±ì¢”6ƒlbû`ÎöF»&Æníp»° ãdÁ>ìúö¾œl}›í¼}ؤvÙk=­ŸluF“û°ÍÙümÂ{Ãæe´ 9Úª6ÚT‡ ŒbçxÚ)mfζ"¡Mö´S¥»yJ³4“g˜_»Í-'MmVkªÙiŠkNçSÌÕ§5 dÄÕ›%n¶…i~úôæÇæ–“GiªÑmáôæÍ›¿™BNm6A³ºOo–­yÇnSvÓ˜|r󆧛š‹Ok^¼YÛ‰ÍûŒ(¤i«ÓÍuf˜»t›+6Ë0­Ù%u‡2s½ifÌ4»Ã\xr³€Í.2ƒb†ùtƈ®6'O2xº©ûTSªéÍ®œ4bÌ4Ç”¹áÔ]iưéèîf{4klî7cÄ]š]ÕÝÜ;qÄÍ®6%Ÿ:âÈfÇt›&˜ÚÎÝÍnvæÄfÑGÜhÄÞƒÆÜ~rs7)ož3±Ù®¦Ó›cÁôl³”ÓÍ3F Ýæ­GÀÐì S ¦+Κ~¨ÙóæÆSF\Ï{Š)C³y¦5]R³Í(4§N5Wžj.2Å\dR³ ô>fN˜npJ“5³oZsx›’L©:Ò«e«ûÖkWÌé°ñCÃËû‡û—Óæ¸}Ë6 ÕŸ²½‚=‡ÓÓÌÆOpéq¤I§“¤³HÏÛj_øA°t"i-Ôåt\?é Ò•¤«N½sÉ„g¿cîßw_ºß•´½„î{ßdÒ™¤óI—’“n"ÝFº+Ô¯üseäOðæJtÛ.ß»HO'=Ã*çLÒÙÇ~|Î\çxÒSI»I§TC]Dõ¹¬Fú÷'<0ïÑÁbÚí¿’¶¯"]Bû—v‘î u]wÙîP—÷†ÚOÇõÿ$Ô´½â«¡ÒñC´è®P×ÿ Ô ½•‘?f¼L L:£âwÜlºßÜZôø‹©üsI¯¤z.©FcEhé`˜¶‡©Ü[é¼­týÛhû¶['·í ·?¶œtG¨ßü©Öïáçûqå7ŸÛüÄ“sHÏ%=Ÿô"ÒKIçõFï½m%øÖÖ?ßqÂóÍ~~ï9síçíó‚#¬rvéúT©œ¤g‡g³µþ(:žíú¾•Tó;•ô}¤g“Î ¹f…7æÐþ H/&K:ʳ€¶Òöe´}9m_AÛWÒö’Ù ~Ly]ãOû™³H ¿µH½ƒóhÿ…¤—èrÒý¨åƒ´½ˆ¶/ Héz+zI×’Òñ+—Fýa\y{èz‹i›üƒþéùÝÚúX\CŸ_Óù¼åú“H§‘ºø}»ãø÷և߼ǂ3iûlª×,Ò9¤Î BGõX@ÛË»Bí?.zÿ.ÒØy‰TstÑîèuN˜sß1[<ÏÌS˺¬Ï+ÑíÄãÆ*‡çx1÷;ƒoûRÝ­Lüá–Qä`*éûHϾîÌz›ûÍ>$ÜžCû/ ½˜tî”p>™÷µPÐöBÚ¾ŒÊuÏG7îùéWB½wé'H?ßPSnÍ¿níï4÷ºœÚÏέú‹ÐŸëížZÔõü€ŽÛvL@„;ýúǾn< ÓhPs}¹éïfíŽ~~œuü¡ÑrÛóVÏúüRíW§’êvÖþàòð„à *¯™çhûjÚ¾–¶{{Cíë uéÛ K'ÐvXþ`§yZN÷é§ÏµZIŸ¯:ˆôR:n€Ž»ŽŽ»Ž®s=}¾š>_CŸÒðcÁ ]ÇÄtÜZÚ¿–üßZŠ+ÖQü¸ŽâuO„:<—”â“õtþú +ôÓ:ÿ^Þ"x7mëx‹üšñSçP¹Ï­†ªýÓ¥Vü¦¯Û_ u%µÃ*:Õ]•‘?zœóH—j¥zÞóÒ§HŸ‰žÿÒõ)ÕÝï#Ô¹$ôó¡v¼ãÐèuNúqØh{ÃáuÜOl©—öoÝt¿î…¡Ÿqú¹O„ó¢ñkߨ~Sp'Õïιà®0>ór¨Ÿ=&ÔÝß%ýéã¤/†ú¹ñÕ†ÞKÛŸ—ÓÝÝÝmÊ­9ì"›tœq~-Ô]TÏ]4Î>]ÏŸæ~:ŽÓãFû‹AÒaºÞðb*ïy¤D®?¯S»›yý‘°]M|vdp$Õãé,RŠëïùéè÷5q‰Öj¨æ~´}mS¼mâˆki»—Ô¬ÿèó¥aÙu_ÿCáöíz|Òþ;ÎýÄ4>îè%%þ﨑RÿÜÙEJþàNºÿ·h=÷­?"ýÓj¤ÞzÝuËžP·ÑyÛ¾[‰×eµ‹^gj¬ëß«uzô|}=Ï]H÷³çý¹»ÂþÔóÿ|ÚoÇ‹6Ò¼|]xü‘j5ûÓÄA¨«hÿ*ºÿ í_ÛEJǯ}!â?{¢î§¼ÃÚÖjs6ƒ®é|ÁÈß}áéFA‚/Ò¼óEò _¤r~1 (‚?;‰ôm¤)—‰®ë õzÚ¾ž®»žøXOõ^¿=Z¯.G½¨Â͸2ŒÇÌyIãB½¾Üê•ghw¨k{£åÒêZ¯éû:×[ÕÈõzžm §ÍñIãØóŽ×Ù×S{^¿6Z^]¾™T/=Ÿ~ˆæ¹¯í$¿¸“ò1;¿DJÇÝFûo£ý·Ñþ]ßìZEJŸï¢Ïo§Ïo§ÏoÿR´|GÕGûœû‚·S\0éáz¥›t除gÓü6‹TÏwsHÏû2ÅÙ´}1éÜ B^ç~—8?£¡¦vœriÜ8 tûj w4ým÷íÕøãZ¨Ëh[ç…–ÓñÆOÓq+èüÕ´öÓx5õ8‰Ö'Ú-<´‘/ ®§ë®>*ôï›h»J~½úíè¼êÍÑÆ°}Íü®ïM^Ñø5*ïvªÇö¿ˆÞOódÚççáüdüÆ^ª÷èõwùÑ`í‹!_먾ëhž^Gå0ó77|KxÞð§BÝLÇm¡ëo¡í›hû&Ú~ÿÜÊÈŸž'mŒWS?ßöì¡rêõé…4~õxYú‹H>¢g/§ý‡o~¯¥©þ3©>Îõ2·ŠÊ3ðÙF?™ûšöþ•è}gÓ}Ì<]‹^×Åëi¤SHßKÐõÎ!Õy$í/$½”ö_º'T“!]Dz9©Îÿ^µ'Z>wèòè|LéFZ7Ü@qÔM´îºYE×O®öÓqïUTn÷m‰Ž§h¬³ƒ­tüVß·ÐñÛ."¥8mÕgÛß…z+wk@JçÝJÇÑ´l´†ëžítÜv:nÍû:°ƒÖ!;ˆëN'¥yæƒôùéóÑç¢ûì¢ykíß5“Ö[´ý‘Y¤wß½„´7Ì3}ü3áöÇ?ê')ÞýäÌÊÈŸÔù-“Gzº¾<ꮥm½ÞÛ¨õÖp^ÛJít ÕO÷Ïv­Ô?wÑxùh/éêHyµ?0å×ãg+¯óî[÷„júóo£çi¾|¹2yE*ÿ,ºŸæ¸·‹ôÅh>U¯«tÜ6ZGl£ü¿Y/Û¨?·éòÓzÛŒOâèVªç­tÞ:~Gè’ƒ´½ó‰h½MpQ8ͧzè<÷tŸM´½‰>ßT u3}¾™®³™â¡Û©<¦ú}˜>¿“ο“ÊsW)ww—îªÏ]ÿHªÏÓã‚âÀ»©|w­Ÿžgµ?Ñ~Dǧ&ŽYͳèq¯ýfê¼{-Zž“'$‹ß{ìëÿˆò¦{"÷1×;ÞÚÖjÇï´®j–sw¨šÛØõuX¯`õ·^ÿ­°âݸ8Ss6)Zn3ÏëþÑy{³¸3ô«qý1ß.wW¨&Þ¤ñÕÿ³0N4ë×7†ÛzÞ×ëXŸMŒÖ3é¼?“žç$ÍÓ/$5ýFã_÷S¯ÕþÖúÞì?™t7ƒ4 úÒó6s|©~žèšôùú¾Ä#æ!RºÏÝ»Iéø» õc]¤çFóåo¢u“~^©óhº½ÌsJº¾Ž_n ûÜ@óê4nÚêfºŸñ_´K@J󦎃·ü°2òÇäííüÉB:þ~zàþAÒÕP?@Û&½›”üÞýBúMÒ ý'Ò!ýWRÊ_Þÿ0)å1ïŽô•P¿®‰½àëÐ6÷õ'«‘zéñ«Ÿ|<¬wð‰w‘Ί¶ÃñÔ?ÛÉ›ç!ÇDÓœxÇÅ3>…ŸO›¼à’?Ž®3´ÚþM?÷è¦òO'=‹tf@×'CëºKh{^éîhùí÷&ôõu>_Ç»z}¡ã=è÷(t«ß›¸†ö_KÛ½á}ƒ¾ÞPÍû´_¿G±¼-eÔM>U?—^Lª×­úù´)éÕ¤×^ûH4oõ9äù4òæz]¤-þ„îP}[âÎð:Á%Öõ\ås½@ë#ý£Ÿ›9¯gæwë=£e”W0ëô]ѸOŸ¯ë§ÛG×ç’ïFëq$=í¢üÆ»HO§¼ü¤Á©a;œóåèùZ]y;íÿõû ½Z©^´=09º¾zº¾žß}ã,ýž‰~ÏÂÌsáÍü»rMt}4©^oèçY tI¬zºÆ§é¿=¡.è¾&oDŸëç‰kzC:6ÌÓ Ñq”/ ÖÑqëè¼áÝ¡®§ýëõ6Å­ëŸ ó4hÿFÊÓÜ@Ç›y‹Ž7q7Åû&Cûu^æfºÿÍa"½eý³U¯h^ÞIý½3¬þ &P»LÐÏÿi¿æhê1ôm›÷jHçÔHé¾ö{5ä_ÍýôøéÒ÷'µòm›÷¶h¿ÉƒÒöBÒËöDË¡ïoû#]O½.ÒóÑ•‹¢ï÷ØïíéëlísÈ·ÞnÉké÷Z4Ÿ®¸Ss¶øÉÝ~õ#kŽ;±ÝÖýc¿_û~E”â]Ï’.ܽ… ¦}o+ÜHÇo¢q»éÈ0¯³‰öo¦ãu·…¶·ÐöMÇFŸ3=Kïߘù©-‡ö#ïÔ®ÛÜóõ\æTº¯Îè<œÎ¿ÿµ°=®¦ú];!ïú® gž}ÿƬ#Âú˜yܬöDËyl¤ÚÍøFç=¦Òuôûc—kýjô¼“é>®yÜðBç›ç¸¤½¤}ºœ¤ËèyÊ2òS-ïóžJïyж~_TçÅ)ãl¤ý?ú]ý<ÀøQš¿wÐs¡ô>Ã.z?s}~÷vÒ‘úëñdÚC¯sµŸšC÷Óùäyß=®Òë+_jk7½:§)Gð–jtÛ5ŽÌ¼ûÑÑó¯‰ß#ë UÇ‘:ÐGºô Ó“q½~ÿ{kÃÿ¿'©ö<·¢ñ“ö|¿x/éÍn³Í3Þÿ¨ï5žWµì—£ïO|}éW¿à èý‚×G뙾}“ÕÃu|pð§ãÅôû+~íÞó´_=t\ÛóÓè}Ìýˆ¶cðZkØÛÇF¯Œ½¼-íάz¾0zyòÿÞýb•¿ç¥ÑÛÕ.oPÉg7¯í‡Ô~ÃQþ¼Õwœ:Ï9çö‹ñIýŽíÿeß½Ñû‡&»~Ò~êy8c{[ü÷ü2ŸqÒó¤Å…ÕÁQV;åäÿ½ËgõSâócü”ÿø½ÞÚ?·ÿ¦œîkù©àpk\Ûþý5£ W<`sÜr?+±ýmP‰~nóàÈhy\ó˜«3Ÿœæ¡žgò÷Yýn^÷Éê¿[â̓÷=ÞƒÃ,?óÇ8µükú–¿¥œÌŽ’]×w<ÙíïòC¶óÛíùÇ.wÚqo·¹ž5߸æË¸yÑnï¤qX‹?²·×k‰ìñdLJV\—ê÷,Ìöá£÷SÏcÅ̳Áxkܸâeküºæ?;®2ûíy"f½•´½u> é7¬y+&N±ýBkyìyÑ/·.¿áØ÷Kì×N Ïo‰óªsÿoÓÅ-vûøª+Žmño9ÇÁÖøÌš/±8޵ÊoÏ)×y.Þ_çè|®ã¼þQ~íYL9Zæ…˜øÄ{¼ZÜ;ýƒ5^íøÑ>Þuœ{ï;noî·â;þ·üŠ]ß¼UÚqÞ2o$ì7Ûÿ‡¤Œƒ¬|DK¹lÿû:ëø×¦äÛŶ“5¯ÇÍoÞå±â©¼óSÁqÅ£íé}½#²ùñ¤õt®·íþ±Æƒw\²ƒ×9Ú5¯ü¹ÃoÛq—3n´ç_{}舋Sû‘ñû®·k^mñ>[8±âWœÓ’oÉëùŠ=ÿÙy#ÛÏ'õÓžÏoœþÔ®weô뵬CbúÑyÇ<—ŸlŽëÑë‘ôyžk›vqäѼ¯kפóºßXùûz¾ùõž½Ñë¦w[æç”þÄÎgÚ~Û^/ùrçWÌßcÄäÙZühÆx:í8­Ÿƒ³ ’ì~IÇiÖzµ¬C3®ã\õMê×ZžûÚÛÿlϳqÇûòŸÙo:Ƈk=äÊo·äù\õuÄmÞ嵟'&|Îä›÷tæ3ãòWž~3-O±×µò—={s/žóIÞýá;îƒJ¶ú¶¬Ó]ÏìyÖ^ÚóEÂ÷^zöd«GÒ<¶3Þ±žSõ¼°¥<ö¼lÏ·®Îvó­ÿ0}ïŸC[ê³ÕºŸ½íÙ¯‰ëå9¾âú)-WÞã6f\$ǾåpÕ+)¾åJÚ¾iëï[ΔåpúgOî“ö·s[pŒ&m¿¼ÛÛ×eõûiý[Öråu¿ØóSŽ'×øuò•°Þ.¿bÏ›ö<â=_YÇ·ÜÏþ<îxÏqêêçq:Èêç\ÇÅÄ-íwüæ'ö©æ:öçÖ¼Þ¢1×uÞ'm»¤—q|d«2Æ)‰ý[Òv‹™âÚ-ëõÓÆÿÞíš°_³Æ‘Îq㟼ý˜ío\ýqþÈ:.òò[yÇû±û=ý§ëóØý¶¿»±×úœÊ¥•¾·°¥ÞŽÏ}ý„ï¼–8NIدyûÙÄ\zÆÏ-q´ÞŸ0nHËe^õN;>×'¯øÛáï¼ó$Iç#Ïu_Ö~Í:¯&w}ýjêø%mZÛÎqç§ãÆmJ.ŒÚ~y³u¼µØfÌs$m‡Äý˜´½|ýÝŽyù‰8¿‘×ú,©ŒñëiÇgjà9¿øÆS-ÇmŽïÚï:/ë<×þuZ/Ý×V¿òÅ•£ìu§ó¸ŒŠæÄ»ýú[oÿŸ÷:"§ø°m놼ʛ÷qži¹¼9LdIÇQ\¹Íñ1ïËÆÅG¾ã0ë÷›ëWõ~E©þòº¿ùÚ\²ÛÑ·}ãöÕ-ßgoweÛNz\Ùêj¸v9 ­™ýW'¯?ÖÚ#u;u­vê”þÉ«¿Òö·_Ÿsý˜ûåUï±Æã«]“ö{æqê:.n¼Æ_{» nÓ–×»ýõri^ýw½¼ãHïr%)û¡Óý\Úù"k¿µ;ÞJÍÍ-ó ]ÿ„~¤èqá;îÓîo÷ølûx±ú+w¿”óõh¶þ(ÜßtÅlÌŸ÷<S®N]'ûþ?e¯»Êßöü5V8*[“ÆÅ¹ùƒŒ÷ëÍ+Ÿœw{¤Íו/;þò^Tßy¦èù¨´önÓ}³ò‘wåOÚÕÏeåu‹nç¶·[W¸]Ö¼—zYçåÖ>öu3¶KâuÎ÷/ªŸbóÊ)9êNRß?§ÿ§°¬ù¾SËÝ)šú9@Áí^š°¶;¥íÎû¶½þ޼‚ïþÌçglßW‹¦SÒæ­Ûµž/‹vùŸÂçÉ„yÁNYû–;¯÷‹?¾íœù¹uÂö(l\'¼®«ÿ³æµ“Žgóýß—ÐýËÒ¹µÎЕ¨^“^¶ŸêÅžziBç©óƒ‚´jießzaµ=:ÇÒó+£ë…–^TÍW/8 …jËøK¨ ‚}ë¼j2_+Wóâç’W‹jÜñyëÂJ‡hLóªÿÜ ª¶ŸõœóE5ªq~n®¥—Wö­vüp@Û£ö¸É]«É´cêS‰ÑÚÕj±ºÈÒ¼âÊ‹«åhÙë»Âµ:ºú®Ob9‰Ñ¼ãë¤óRVµÛÃŽ¿Êö§NNkÙ4­N%ռ׳I×߉µÚÙZzçÎú|±¨y®¬|‚o¾2ïñùjÕvÇOYÇ{^šÙ?Qu­»Zžûé4q;×üÔηk=Ú®çt±ïýU³iÖqÔ®xÆŽãÒæíÊ^”­¶I¼N®å£öó‘Äþ?a¹sRóþwÙyìŽÑZ1Zv>¨°ÚÏQÍ:ŽZîì[[òRÕ}kÙœ¼Zµè燉ŸÿT2j5-»_ ëï¢5ˆj^ñrYíUö:¡,õw3û‰ ½Úî÷cJÿ{‡–¶Þ¯«¹·SµX-{Ä®_:DËn‡ÜÆSNº¿Å‰íV;?TÚû“Õ6«uÿN_ׯa5Íú÷ ö:ý€&Ó²×S‰ýh`i-¥VÛ£yýD^Zvÿ­iÿ °÷írVóÕvÇÛEå}Ê~Ž–TËÎ/8Ÿ‹Öö :SËŽ» [§VjÕOs_w$-gF-ƒkþ¤Óú§%[ÍGsXͦ…ÿ’Ô·|¥ÿË~¢e¿'SšV³i˺º6ºÚã6uÞ%H¨qõך²þûÍsâZ6ÍW¶‹ó–ù£–NËŽÃK׊¥µdš[|f•cŒÄ·æýï+©ei§<¿<ˆj^Ïý®ÈY/¯´GUc4ðÓ¤<åý÷øIua5ªqÏ?ìã‹ÒËjQ½Šîe-ª—Q½¢’¯ÚåètÕíT–^Y‰êâê¾5ësËÕ}kÒüöU•rÕÏi5.¶ÿ¾lQ¥½ZösƒØ¼Iut]RÉGíù×¾ÍÑeÕdº°ÕØïÓ³4îûåm?|@Û¤A±š4Ÿ7Åhìû©U?‹ËÊ~žV³þ?ZÏu¨½^3ª£ë¢ZTmÿ“U}ßÏñÓǪºÚqÍO³ÎÛ™ß3 ’iÞñ©=žV,­æ«y­Ól¿¹0}¿¯Ÿõþ{‚5ïç‡që¬û½Õr5v}PñÓÄóyÕ¤œ·h%›æõý¬y}G»Ÿ/䵎ìµýtQí¦ýªKóÊ“úªÍUaÏÝ«­UòQß8Ò9/Vj퀎Ԣçg[ãx6q”Cíò§}š6Ÿ›8Þ ,­”«iãN_uÆÕ|Õ¤ýþÛÂÆ}Õ«kùª']”«iãËÅ•±¥³ª©.^?ï«dS_?ïÒÌßë[Úq¯‹û¶Åc•dêz¾âÊó¹žÏÛyj×óÚÜŸC·Yóþ{¼µ%_–³.©å«yÇ3YŸwØ~=s>•4é÷ôf]G%õÏióHíR×ÿ/okæ¼iéï!ûÖ§â§Î¿s¬Œ®mÏ©CÔ;ÿP]í¸ÅÙÏ=ÒÆI9ò]§´|ÿ~›Ôùÿìå¬q~.k¼›5ŸZVþ2íz¹è~µ˜O¿äÝ×E2¦îi+‹±ýÁòî˲, ?cÑ:­Ï²Ì7eöSQe*ÓŸ°|ÆD'”¡ ó)_š¸“¬ì1öj±ýU®ù0ÙIsSÙ~ae×Ï÷~YÊÖÉ}VöxÝÇt–¶í:c=¶.{ü”5.“\£€±/q>ÿôˆJcüȃ¡ŸÓ·qYßú¾AÚ¡.êÛ0`6f®î[v}xªÐ§2úpÜŠ¾e††ñÛ+9&Øó숲„Oçå9ÀŠ6KùÇš3é”ò•qï²ÆY’q—¤¾e×£Ú0i›”í+ÛÉMÙe뜎֖e—ã€%ï³²­ìv m[v}ŠªoÙåî{5µ[Þujw{•Ñ'cÍtBЍO;û®ì:E;Цcײp‘WŸ·›ó²Úp¬1‘gY h‡H‚S–œÑobsÿúD©ô¬SüþüþVC8w…F»VÜ‹¨féËvõ_’ñ^&ƒy²é{Íý}Ì¥éÓ2Æ]'™O=²ÌWV·N)o練=–öW+Òß'ñí(G»ç°WÛÞæŒ2Ú¥ì¶)›©Ni‡<Ú«¨{¾šçÒ<ëžvýSv0?ÛüK™VfÞ ˆþNzݱ>N²´ÿþ4g¤éÛ m7ê»êrph°Ÿ~¿lãðpÿà“@^Ó?ÜÖôzžÓcÑC1¡[ô"#Ïí4Ԋ꟱4E—Í[QÓnÖ±°?NIÛ>íuÒø³N¬w㬓Ùkç|¶¯1QDût7Y­1ÅX3cÅŠêñbeÏ}ûƒ•áûŠ,WÙõIz½vµg§ÛH®‹ê£<}O'Ì[Y¸É³Þc‘Ó¤íUdÙʬÙsx§Ïó¾ý·Ï·÷Å\Yý[ÆÚÆg‘~ØÃFM¯¿dè=¬^N›]<´¼¸oƒÎ¸[ÐCÿp[SìæÆ;É´ÁK2N²ž_Æš¦\IÏ+»:ÁöwŸ‘$ì*»¬û³eõ Eú¢2üY÷+±BsJÑå‹íÙNÊhƒ2Ú¬èúµ{¬y¿vŒ‡²Çe;­¨y£c¾S}XÙüÝŽe—w,[;Ú³ìñß m[Tû•]Dz۵Ó|nܱyÜ'CFý2ù¾®)õw«Ÿuf¸ÁG¤Óõ㇆—÷÷/-».¯g×{~væÚ{|È™©õÉoß¹d³ßI­ÏT?þ:ïÑ'<0ßèK¸ .•YŸ>¤Q!£ÏÔ÷Nx.³>ß1[œs_¬¾@í‘V_i\æ˜Äúbýß-ý}½Yç=ÖªÏ3úõœzökPy Ñ¡=¿¡~µõ±F7¢5á~­=/ÓçZ÷Òõ÷:ÆÖ£þ×úÕO«=.l}ò„zÁO,\^Ñø1ú8µ—­¿¥rkÝ[ï…µŸÏMMãµh}¢1Fã=«>Eó€­Ï9ôEj߬j÷‡ígŸ£ñ¡Õ5¾H\Øú µ“Öß~ªþói£¿¢ñ¦õ74oh}’ŽÓú]Wkã²îˆÕ‰Ã¼õ%ªVÝ«çϬJã©h}¨1|Ö9Õö'IÕjŸ@†ííÔƒCžcU…ó­±ãÐWŸ¦rk}’üŒÖßÐ|ãRßyÚöCö}´>CõÑú$õO¬êë’ÚóÝoÈ_'UŸöüî[.[íyÿq·¥TÛOÛþKëCt?­vMãÈ¥ÏÒy¾j¯W^ ñ¥5k?Ùñç³Ô~ZŸ£þÓú<ÕÃVßujÂõ~ È_’öüüÎ3T^­ÏÒx²õ)âÇVW?ÇiÒxXëcÄ›­P¥Õ¥Õçh 5ãú/àáu´Æ®g~Oü%Ô@†Mã'oµýÏó´?£—‰jË|b¯7}ÛíE:>©Ú~âyj_[íó¢ñ¥ÕžOÓú­Ióö¼£ýš§Œú‰¥¼¿K­üBÀm%¾¸žïbòcYófö|dW¼™TíyG†qbn:>¬w^š›ÿzYçOcô%º¯¥£õ i˺Ã×ßX×éíyÆ¡­v|kÇeF)Ñjç9^¦q—V_ .Hƒ ÍÓíy–Æ»­Öº `wYÚGÙÏsž rµ¨•—ÍZoS«_öêüÕ£B~‹Ôn¯xõŒkZýmçËœXy¬gµÿK¨®ùÐ.WV}‘âZ[ãÖ?.uåo¦ù;­þ’®¯Õίĩ7ØŸûæI- 8=ÇÒZ¡ýIÕŽ\ϹâÔŽGZòJó¢Ïã\ëy[!ÿ¨õ j7­:n´ç ;ßk¯cì¸ ©ÚùÛ´ú<Í£Zí<ñ“žíd«~›TŸ¥y'©Úã¡%šð9‚+_â›'×j?O¶×;®|™çÒêʸ4éó²8}ŠÆ³­Îç1Žz·¬û¬q¨õ%â9­Úþ=í{qú2õ­{©Ý\êý|)[Þév^ÙÎçdUW¼–V}Ÿ'ºÞ/°õ9jß´ú´~ÿ†Ôæ]«7³ÛÝ.×ÏÉÏûª=ÿ$Õ¤ãÆå‡­ë‚æ÷¢Uê÷jÈßÛóœ+nH;ߨó–wqÌÏiÕ•_°ã=[]ó¡­ÏÐ|h«ýÜÒÕ¿qëOû}1ç?!㫾ñÞãTO­ÞÏGãÔjµÇm\=qo4¿ï«-~ÝZ¸âô¸òk}žøÔjåZÕz_!iÞ,.ü+g¶>i='Ž{~ãj—Nq¡OÍkÝãZÿ¸ò&áÊ›Øy¶˜çœ¿§ó´ÚïÄ=—mY_Zêûž‹ý<™ÿ"µÇ‘ë¹eRuùG­V¿…/Œ×ß0?¦ñù`ßšÆ+Z{üpÚ9~ÁÆ¥×õ/Û@›rÃÀš~ýû²¡Áeú÷åCëõþƒ7ôßзš¶ÅÙ+õGãÎëX¹J_lÜå#·äü¾eú8µ`ÍÐõzcüì «ú‡ôåÔyý}Ãú¤CÎîïÛ0080hN]¹zó²!«jÝxš®žþFýÖ~ý‹ldýÌz‘ê÷«×¡~Rýú°×À…6Kåµ°z ; v4ìر°×Á^;öØao‚{3ì؉°.Ø[`'ÁN†½ö6ØÛaï€M€;öNØ»`ï†{l"ll2¬v:l l*ll:lì Ø{aïƒ ;«>ü*᣼³a3açÀfÁfÃÎ…Í;vìBØE°‹a—À.…͇̓ͅ-€-„-‚]»¶vìJØU°%°«a×À®…õÂú`KaC•å0ô`c²²¶ 6»v= _Y„¡s+kaë`õ¿c@ŸV0*a7Àn„m‚m†mÝ»ö~Ø`[aUØ-°m°[aÛa;`„}¶vlìv؇aÝ»v죰»aƒ}ö Ø€}öG°OÁ> ûcØg`Ÿ…ý ìOa»aŸƒÝ»öyØ`_„ýGØ—`û2ìÏaûKØ}°¯À¾ û+Ø_ÃþöŸ`_ƒÝû:ìØ†}ö_` û¯°oÂêc¿ûo°oþû;ØßÃþößaÿû°ïÂþ'ì{°ïÃþ ö¿`?€ýoØ?Ãþ쇰ÁþöcØO`?…ý öaÿösØ¿Âþ?lìAØ/`¿„ý öìaدaõŒãoaÀ…=ûìqØ¿ÁêžôIØS°§auÏû,ì9Øó°z÷ìEØK°z„÷ûJão^* ?¬Á? ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðϺ`àŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþYÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏÀ?ÿ ü3ðÏzaàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþYþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøgàŸþøg ?Êÿ¼þ—uàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9øçàŸƒþ9ø¯ÿ%mã»+Á¿¨ÿÁ,6øà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þøà_€þEP_–ÁÀ¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/À¿ÿü ð/ÀãäÁ¿¤¿¬—õ/­Å þ%ø—à_þµ¼ÿüËCüAýïååkÉÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/ëìþ%ø—à_‚ þ%ø—à_‚ þ%ø—ï­Y üKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿr^=gÿüKð/Á¿ÿüKð/Á¿ÿüKð/Á¿ÿüKð/—ÖÓHõô¬þ}Àõœø—à_‚ þ%ø—à_‚ þe=¹þ%ø—õÿ¦¯žÓ©ÿç}à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_‚ þ%ø—à_Ö¿óâaªOþøWà_a§ÿ ü+ð¯À¿ÿ ü+ð¯êyÃú÷e€þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þÕ™õ/ þøWà_þøWà_Í©çXaà_þøWà_þøWà_ͯçjaà_þøWà_þøWà_þøWà_þøWà_µ¢žÀ…þøWà_µ¦ž¢†þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøWà_þøW࿞ûŽ|QL}î«çº\18gxhãÚþå³ú6ôÑÞÃW´î|ÍÊ–]‡,Çï§­î[Cßën’ïãëÿ¡êÆÕõpo\eô¯|o9óÐÓfÞ00<4¸¦ñß³š žþ¼žÎ©Œ<I4öyàÍöásŒÈ¾æ£ŽÆM^± 3nußÒþÕlãŽOŒÔ k!.صbxhM×Ú¾ (oWý1ÈÀàÊ®õ6.ßlÿæýÃ×t­Û808°|`°¿«^rœ1Œ“‡Ã[Ë_åVc“þeó(T6¸Ê§&¬>íkç¸ kV¾ç¢S|ïÚ¿UêWînlme/data/Gun.rda0000644000176000001440000000133710132476007013373 0ustar ripleyusers‹ÍTïjÛ0—ãüi²¶tt öÍŒ~Hhñ¹MÒ …ví—–Ñ?Яn"·†XÞœ8K`Œ½F÷{í5ö£ídëtN”¶1ØDýîNºßÝù¤“½ Z¹¨BrÄ(bäÌçÄŸAÈ“²X̓˜RZMôâ·,ֵΦ“ŽÎ†—ŽN“¤£³úÖ³1>¡¼+…}Ͱ+ù›ôS­/ÉøÚ©iöu°o);Èmà«+þò\ôê¼’w@v@nC<äÖgégômØoï6ÄU‡UñÙ’_Ôk)©“,#Éý?ȩ̈-öÙˆõB»ÖD›;j ¢Ú‰B·ïÔ¶=·; #î´Ä Ù4é,Á4a`–aæ`a.ÀüK~’4r÷y"7ϧ Ò 6v3m 63m顤4ïµê–¨Ç"Öû¥Ú©\T®ÿH?S;SE~Ú÷¯®‡*­Ý‹Ü+bṣɔ`¶Û¸0ÕmyÕ´QóÞ@IGlxö@ÊŸ17¼ðúz2ð߯LsZòÂ(ˆû®¬¨¨:Û2srÑÞç#? yÀ¸È›ÜÊÑn|ÈîÚl¨Ø¸õ½¾Uå1£…|R½8å(|gOh ¢7Ôõ5¨Ž› l)ÐT ¥@[mõ 4êˆðihPD¢MD[ˆšˆZˆÚˆƒ"EŠ9(rPä ÈA‘ƒ"E9äpÃA9äpšZ³äÁ²Ì=ï@|è7¬·ç]Ð.ñ”®æT•žÀ¶‰ï8÷8»—éã\\…ÖœnѧÇqpÉ"+ô,Ùd–çË+•ܲ©†–í6yèvÅÜþÌÿbUº}ø¼ö;^ÍWçǧ©g3ã¨Ë4–ç^Ì»C?äVu\³æòêxÃâ®ÖKëìä|¿Ý«ù3Æâï;§oV>ñ"¯Ñãûù÷DxÊÊÔ[§'°˜¾Nvú©ó{ÉÝëm Z3 nlme/data/Relaxin.rda0000644000176000001440000000277010132476005014244 0ustar ripleyusers‹í˜il”EÇßÝíA—°-rÈQäj9Ji¥¥\» …¶RÚî–^ЂK»‹ÕÝwëöàTñET¼@TÅ ñ@AIL011ƘøAcbbäƒÑ@Bô?ûügC·4ñËÆ/Ýä·Ï̼ÏÌüßgŽ73ž’†|{ƒÝ0 «aI4 K’ VüY #36Ùã x×·™He kƒMƒ=ĉ¤8‘'ã„%N¤Ä‰ä8a¶øÐcù$|ݾ@J‡H”T©e–NÌÖ‰b(Љ›t"_'Štb¦NÆt—ØðvèÞ¬ôJ…[}a_+³I~oKg(ŒÔ” ‚=ã8zjWSöùÓŽïú°¿fnü¹ôpf/{áÚÖ©–~½ìõ}ØI}ØÂkÛ~½ýzûõöëí×ûÿè~7.¹ß:æ˜Çi?«~_;‡Ðo¸?òsf±<›åY’Ÿ²Eò³bgþ°¿½Î’Œõs–¿’$i§òœäkËÅoÛ¯?-þÍû¥àlž&þÞâW·'RÏqIë¤ÆvÒ™ÅüÚRw.mQ‡ôWÌç &‰-e¹gŸ´SN½žyb—3_½[ü«¥½úÉ×þ$ù¦o%¿²Qô^VáuŸs¦R_zŒþqŒç8¶“A]S¨7ï/)ŸzDìl‰ƒÓÅz–Wg\³¤^Ù6Æ}‰Ø¾_Í ¾×vño¼(¶®;âç¸H½iÔ£ugÐ¥¾Ñ1ñH]ùœÌÏ:)ù9©RßIÝÔWo“~¨£–zë9V³üúÕÉóFéßñGd¹lrümŸß~à{»ÓJ]Éì?…ï‘I;’ï1†~“Gˆ_ý§óyuÏÝ!yW@l%ËËùÞ¥:þ¬_Éy¼HÆß¹ô ôSÅù{žñL½Þéu§ãI½ô<`¾ˆó¡qtñ=*9ÿ–r½Uq41~+è×Àùé õ[Z8Ÿ7K¾õ+ñ÷KŽ?E6ˆhÓ¨[[íÆmõNf\ò¯"Æqçábê*£_9õ×}Ã}€ó`9í*ÎïÕÄzX¿™í6‹þèzJ]éÔ= fÞê}b4ŸO¢Íã¸Mc|‹©o.÷7ã_¦ÇõlÏ}¢‚ïëþQòîvæ_=ßëÆ‹µªÏé]ÑuŸÎøéýAï¿cù>£¨3‡åùZ7籃ëoáiÏŸVëþ©Ûý›øWñ¹»ñæs½ß5^àz”vcO+¦7èÓ§ mž.“É„–ÙM»–UÇÔO ‡Öåê6ô­„:áêÓ>«ÏŸ:IªÛUQ]x ©@ÕSËg0P:®*Œê¶# ê39 ¨å¥¦èHpFƒ1`,P«fPÛÚx –ßD >§“ú æµ=OÓÀt >/3@ÀÙÎÀ‰ÏÀ9ÐÀÐÀQÑPŸ]þ œ 9`.˜æƒÀ¡Æ¸ÀB°”€Å` (e@m=7ƒ¥ ,•  ¨¯’x@ XjA¨  ¬+Ah«Àjp ð‚5gàÈiø€¬·‚6p¸@`ÀP³ý §S£tn°¬ÀF° lw‚»ÀÝ` ¸Ü î÷ƒ­`x<¶ƒ‡ÀÃ`xì»À£à1ð8Ø žO‚§ÀÓà°ìÏ‚}à9ð'Áçà8 ¾_‘u¡Ží®µ^ 2ýfi8ÔÕîk-ñvzYšfú{\Û«ÈÞŠt®?Œ{iè…ƒ]8Ú’bº¶èK‰¨K𩹋Íî¶pÈ úL5ú—È5Eô¹E õÕ¸/DÊ’®vÜÜË1²™ô(“½&ÒÁ•^7Þ5‘‹›¤ ©ÔCýðEh ÃÞζ™òg…õ5i¿a®`¨ËìTJ§òòy;"W1ªI«½^'6\CRb—ÙÖÙ—¢älsíŒ` '¦ØžÝ ||òŸúþÙX nlme/data/Orthodont.rda0000644000176000001440000000211610132476006014615 0ustar ripleyusers‹í˜MoÛF†—”,ÙŠí¦uú}al $~3±›pØSZ i€\‰rUP¤AQ© …ÿw‘¸+iç]rENjïf8»Ügf¹»”ýâüµÝ{ÝB˜ÂØÂhK·mÊCˆ{ÒîýRV¿ã"¯„è­Zåï¡´ÙÓGbýó4RöLÙ'Êz×ë+¨ø#vMí¡º~¬®£ëæ5Ý÷Xõs• ‡ò ù8*~JýEÓRâP>Tòw¯›uŸò>Íö'ì~XŸq)NùÐxCž·º>£úX¾ël¹ÿei^xÈêçýX;æO4ópYœçº—žçaÑø<ÖoÛú$ζçCùòñù| ”u³[ê:mZì3KÅ¿WöXÙ‡Ê޵ߵߵt»|¯ÈLê¦S—éÉd:`Úaê0ÝcºÏÔfÚeÚcê1í3L˜¾dúšé¦Ï™Ž˜¾`úŠé3¦O™¾mªñE¥“¥oÓl.£÷Uë*Úz>ôá<íÚºÃPGí†ÚutßÚmµ¨«ûF:Z£Õr¨õÕàá€Ü¸æêÁb=B¬o‹uA±N=ֵźŠXWëâuñõiÜeÉœfÑTýºE9NËt¬.;“dT¥ôÞ×6_Lÿ7ñÍÿ×ê©›7ìA·Ÿ'YJO9Ng›+ÙÚ¢žÆ‡Ö@såÉ,¥ÔVÁÝñt^%ù(U×­ä‚ÜîËÅ›ßÓQE-/Ó%ÿ¤,þè×GÍTmƒ–¼A«Ü 5nÐ1h ´U Úm4»Ïı`bÓ›Øó&¶¼‰mnâ¤1‡¼6666666666..........>>>>>>>>>>!!!!!!!!!!^vÃÁ@»CíÚÚu´ëj×Ó®¯Ý@»!?ªŠE•Ê3¬ÕÙrÊu'E9[d »o¿ÿ,;-‹|–®þ/"ÞmŽA´‰Í9k45:*i+Ìa>É*‹Åe:>OªDEòÉíཋ[¡ÞXúýI)H–§Nÿ_VؽÑÕìÞ°"jgø:Þ©Wü'¯x}À7Bú _Oot²äÍú \çhsc#ÏÖ«ñ!ç\åcMÊbf]N«Å´JÊ+«*¬Kù\¯.ŠY²œfÙ*6™Îç‹RMP»öÞÛ¤¿$çê™í,òiµ-±öñUyr+6›|ª¿úY‚Z|næÅ¢ñ øn²ÈGÕ´È­ãå‰%k=^>´ò¤_ά3ëׯž¨©~dž[å þVõÇØ’ƒlr=ºá“°X{Bçáéﯿ(ö×kt~»¯xÿœ®Œ)qnlme/data/Ovary.rda0000644000176000001440000000423110132476007013736 0ustar ripleyusers‹í™{tÔÅÇ“lB@¡XcÓjZ×l ºæA«e©R¶… K² [÷a–M$­ÔVkP£iÑT´ŠT(+Š¥X!¦¬T1…‚M‰F ˜„R³ÚÚ–ýÎî_Èåìñ¿äÔºç|öÎܹ3¿¹3sç·;3»`nΰ¹Ã ÃH0D’a ’–| ÃH ™tc…#PiC.D&r8ÊÆ!=dH@† bHRËrÞ ’< Ž~›^²ÇYáô,…vdl„-J«¶½X"‡ ÙÙZ5^'òtb¢N˜6ùfµ,­ÊÕ‰ |ß-ñ8–ê$Õ Ôp–R6Ùå( úHf„êaxW°xmëÚð …Mk—lø]xcLô‘”—T.É^6P~ZáÃmIȦàüq5Ë“åùi937o”ÍTÞb«^=ú`‘<œvM´ƅò(µûn°øÌ‘U²µ³.×›zP¶S½Ž¦ «eÌ3òxa“sû®å²³Î¶fÆ”»dµÓýdçþmEóä©´Â}v•=ÕëÅeK²ä{Ôî{uW%mL鑽Ô~Äv¿åî'v†_Î~Â;V«Ïšð¦˜4ý¤¼¤rIöråÉî ÒtE?òm*?´O}ö÷ùGú6²o§òcT¯“ìN]7Ù$»²3ý"}/ÙGbåáWòÚwÞ|qB¸.²¢lÙ k8©Ú½90Âô‹ò’Ê%Ù˽‘ª5;æ\'›k'W7\+äuŒ©k÷ÊæÚü´.±R¶Pù‘›šïé,óÉ£d×ZU¿u½ýÙNöÃoÉx`¯<^›×:)½Xž˜¾`Þ¬Ð)Ù©jtO¼Cž\·å‚ÆÖC²‡Ú1ýi®Ýнr›ìÝ’yõâMóe¤ª¾³hòÈÿ›õø™ŸŸ.??­ûËK±òðóvû ËLwø)»½ìC·Íô‹ò’Ê%ÙËÝvû£]U¹7*¹¨r„éßë¡ÐkåÓ+å›v{ö}õ+ä[¤o!ýaÒ›~Úí‹'­«—­¡Ð#»ÈvÒwþéMIßEú“¤?EúÒ›~‡ž¶ŒÎ|VöÚçœniž-#ä/õ?\_öêÉí§†7—5L{<ÿ¸é7å%•›þî£|SCú½ëïœÕçg[MAÓ®LyˆÊMÿÈ®­fÂáU—zL¿Ž§—½h›ò–ì¤z¦?e KŽÖÊž mÅË·ôùÑVó\võC²·!½èýÇ.‘‘˜_ŸÅßÿvüéßiSÇÅì¦RäMÍ%™Er,ÉQ$3I^ÁÊu;ù¬½’Ù¬^Ëg1»œO¨ŸÉ¤Öë~^ÎÚý"“V’éÌN××~e0;^ßG¯í3XùH’©Ì^÷—·®ÇŸŸÊì/S÷/ƒÉQÌŽÏ+Ÿ=Ïy$'’OR¯Ÿ|V/•ëvô¼NˆÓ?î7Ë÷­óþÒ]/…éSX¹•åy}]®Çù ¦çã™Î¤n‡Ï_Çztž?g¾Œ£çýÑíðuÄçÝÆd¼uÀ÷›xåZ¯ŸÃãA?‡ï7|þôþ1ŽÉœ8z½®õs´¿¼Ÿ|y|s=¯o¼r™>‹åùûŽ—óuÂãÞÊìx}¾.ùþÄËã=_?W÷“ÿÐï>_ã™–ÙŸ ãÅU¼}‚KþÑúQLò}%^{ú¹z|øzàë™ÿàï¹Ôþ’ŸÆù^§>K$¥åzGÀ©ÓsÜ^êò{<îO´ÂÙ­ øo³é–ô=Š:Oˆµ=GVgåê¼UÝw¨—ª¨î Ô9ïùõ uô9 zsø—oFÀ_~«³´Àtv¸Ïu®ò¼Å稆•"msj‡í·¡qùÞr “Ù£…¾21MúÕ<ßVè«pü>¯ÓkS$Ÿm};³¦×A]ìu}Ì™s.œ‹¢NÉÆjõó!Uµfuû¬Î¥Á@ùRkI%úÁl®¼¡Ü»È°ú]V…#àvø¬f­S¬ÙYV¯×f-ucƒÎ@ìñ=X Úe:QÙ×QãÌÇ< ú& nlme/data/Tetracycline1.rda0000644000176000001440000000136010132476006015344 0ustar ripleyusers‹íUMLÔ@ž.¥ Ë?¬ÿ UüY.@dö€¢G\Jw 5í»]5ÞøÎôã¡eáõð}ºêñÑo~8Ãô“˜ç^ÕäC¾¢Ü‡ žZQ?OpmÁõ$Êÿß?pú²¦ ¹š ÕrH#v¹‹Í3«ÜÃw²àJ×Cb($CâZH $L5ë–V -¥P*í¸æ²~*†¦{Ž Ôv$aI'“ÿã}eªš¬Õó_¥Yf!£%`,ð@¡)Tö =ž8®Ù,LœŒLYw¸Ò¦ÍN—¦ï1ÝÃ϶›Žk—,Í3ž0Ûê:úCÓÑT§°ÏdìGE˜%€xŒÛí¡'Þ‡CáÞÀQ€xƒ³€c€ã€qNNÎÎκ=ppÐ ¸¸¸ ¸øËœŒ™ëäuÒ+Œhž†Ünìf¶Íìbe @÷®&RKPÚrG*û­.Ólï¿ÁçM×á6ãP ò;¨jm_zZï¬h5}ž|’ JãÕKî’lÅÒ¦ý+¬taF#èÕ¢Éu¦ÜÒŒªl“›EèU왨tï8sK¶*¼…ÈÕ1Ôè_pp¼¹A(Cba¯/qÓÛÏG97ëö%3Ÿ»}÷ªmõýÝi&çÌý㺦«õ¶TÙß°°d{‹O¹nlme/data/Remifentanil.rda0000644000176000001440000005321110132476006015254 0ustar ripleyusers‹í |]Uµÿoæ©P° -:ÐRÚæì3wÊNš¡i’fh:Cé”––N´Ê / ""Oå#ú°8â<>}*øŠ *}àÌqEDe*ü“ìßÚkå\¯iiÒ{O{Îçsò»çÞsÏÞgíµ¿{í!ç¶U/RG.:2—Ë Î :$—4´ëåÐÁ]år'Ñ¥G·ul\·¦cÓö›ÖmÈåÞý^×9Çær‡O«x:׳eZ\Õ¹L÷«žiQuX¦%¡'fš =9Ó’Ò‘™–„–eZRzV¦©Ò1™¦BÇeúšt|¦ûUÏÉtŸôÜLT'gÚ¯Zži¿¨“i¿ªÊt@ÕÍtÔË´_ÔÏ´_4È´_4Ì´_5ÊtŸ4δ_uj¦ûE§eÚ¯:=Ó~Ñ™ö‹Î:å{Ù°W€ûÌd?ýØÏ8@öÊt×à>¦„÷0¥ûÄ߃”íãR²ONÁ>6%»“²ýìÜÏIÁ>8û)؇¦d?¥Ä÷!)ÙIá~lJöCS°’‚}P÷¼ÖÏ»?ÀûëhwhŸ1@»€=Þ{ÔÏûôÚËxŸ6@ûÉ´ŸÖÏû‘¸àýèÚ‡ ð~ÂîÇÐ~âíSx?µŸ÷ãh?iösh?k÷ ¸{¼O€ýÌÚÇð>i÷Ãh?jàö^¿{q膎K;6lëz·»5¨ìÒîw»åôJ9ö•o_¹öUl_Eö»Š^žýÔ¾çÙ«ö•ÚóûʾçÛ«x6 ßæÏ³9ðìw}›gߦáÚ«¸öSïÃ~êÛ÷ ::þ”÷um·ès«ÞÞõÆ·uùÑ÷um?Ðêø?½éôÿjã4á}ï&ó¾ëûï4àüà}æz!>ñy„t"|ãó©Ðiø|:tÆ™]ï^ñk=Ç÷Y‰|WAgÔe†ñ×Õ8®}G×Y3.ÖõÃ=ÞÜ=Ð- ]Ùl}R·Þhî§ýXcŸ·tgãJ½÷±ô=ÝÉÏær¸Â|žƒÝm9ôdk†>: ö>¡¯òÀ}å•Ç讫lùˆ>Ÿ+œŸW°«üÚrÀùyåp›±g»F·šóbOÅu¦A§ã{3[Èg^9ÀÞÕÃŒýóÊá]¦œæ¢¼l9¼Õ(ÊíÝjò‘ƒ]“~Ÿgo¨µ7Ž ú?îÇú?ì^~XO¹çû?Þ÷ÞlÔÚ~dýÿckº7âØú?Ž#“ÿOƒ&í]‰rž­†Ö¾ÝäßÚõ=Ư­]çö\H·¾ÍÜw;Î[€ãÅ#Lþ—!½7˜zÕÑ’“ÛŸ¸{´?®w"ŽO†ÿçÙ÷gíë‹óËÉï“ö§cò{âü<Àq€ÏC\'Äç–?ä÷8ž µüYf>Ÿ|Ï„Z¿‡WÁ®³p\ã‚~ë[¿›)§öiæxò½ØÜ—Ã}¦Üm=ø°ñÓÃ×?;þ@ü·Ü¡rHÖƒ$wà÷¶@ ¶°s^9ð}Ë*ؽ`9L6ö˜†|N‡Úv P9$ù3ߨ;¯¨žŒìq¸ür‚z‚öm1¾·ô.s¼ ùXñVó~GKÏõóë µ}Õ—=-§FScÐ>çñª¯ö:ÙN$ëK¡öÇI^MÅum}Áu ¶°cñŒêK²À÷pLõÅ–µÓï0÷·øxSKßÛcx½ôg=õ¡ïò zÍk?’ü‚–áû–_…â'Ø© ¿`oß³åAív’_TøÜÆO8žŠüÙz3ÎÜW¿`ïJ\×–ÅOe&Ÿµ¸~=êIÃçÌ}¶¬0ùoû¾ù¼ýtS. ÞoêÑâ“zÒ˜Ï —C2nÂqÁz‘Œ›`ϳpžmG(nB¹¬…ÚÔû¼z‘,ªI~Q{>ÑØÃò‹Êêòeã'”K^{³¹¿z¼ŸǶÿo}—±{;Úõ8^|ª‰W—(ÇöWá~l»{çq qy^\•ˆcmy—úêWPyP{ÒW»Nõ‚âYâÔò‰ê•Ô–ñ)YÉv×ki7ùÊëOÜdòaû(—e'^­@»vD¯óL}Ûp×ÖØ/¯þ$9V¨¼ qloË‹Ú*/Šƒ©¼¨])T^Ô®àý¼x<›‰ø `¹%ûTn£Œ?7|ÒÜ·-·Bq2µÿH)ú…¶ÜÞfòÓÑÔs][N/À¾yñ2qŽâ4*'ÔC[Nu¦þŽ„–¡þœµqÅËH‡x7 ŸOÆçS(žÆ}”£ÿç ~8_2Ÿ«ÈÜ—úºÉ ~yÔ>Qý£r¤våBíÏt”ÏÌ©æ:ù©„ýg¡¼kGõ¶[^?/ÙNj õó_ëß°ùùX|>?Çäÿ ç ÿ©^ “pþä„}œ§pìR;Cí ù}¢½ >ÍÄ1ÅM–?è?Ôï“ýhËaæ>­ÿwÞ™èOÀy<é«_ä ÅEÉ~uÒÞ°£µw¢}ȳ7µPë×Ä%Ü—“hß­½áyö†ßW¨=®„ý ŽÞö×}å1ù+®WÐ~гq}k?Ÿµö#…ZE½ÍóWê×Q}§zNí)Å—Ôƒ+Q¯-wÉ_§XEöå‡É¸“ê3üñæžÛqOãJÄý}Æñɸ(1ŽÝgOqe2ŽOŒßåÅE…ÚíhoÐîT¾#1Îy§¹ë8n}wbÜý¼q2¯D~m?ˆÆe ¶ÿ¸¯öÃõòxˆ÷'!?Ö©_IqO2®¤~Σq4k?Ôkêç[ûáóÚ˜ø§þ,S¯íxµ×7ôØ-ÏŽ¶½F~ ú#ì–çdÏäüU!{âs§“=)ޤ8úñ…ü1Göå‰ñ`œ‰ø³õÙÆ?T¿i|‘ÆG0¾Õ>¨'½=#É?‰“T¿É?a/ÛoÄxyANR?jý³@¿Çú%Êu2æM¬a/ÿsi^Ƕ}IŽ&íæÙ‘ê5ùåˆýF²ùc_ñ#üo¯Ç9ðþ8\ßúc¡xgOýí¬µ#ÅãäÔo¤všúÝhÏm¿ü«ÆøP-æ5ëaç¹(¿ÖN“^{¯ææŸ¬ÇHÖïBãFÉñ6òG²'¾—gO¼oíIñM_õ;ß@óÚ\'9þ`|.Bûnûáä—8?¯½!¿¤þÍ_Ì}´"^lÇõí|Ú7 w—v&ìLq$´OŽ&Úõ2ù³vNŽ?÷ÅÑd½';Š“’~‹÷­ß&9JíR²]ÇùÓq']c®oÛ%ðÀö{¨þS¼nÆýó9ïLÚ“Úù¾Öµà¼>9@öLú-q”8˜·±ö¤v¾Pœ”äÙ“xJóbøœæaòü–ìIíÙÓ´û{ÞŠÛaŸ½ŽÛÉ/“ý›ä8f’§…ê_í;Åï…âMßHÚ1¿“©i¾_˜£É¸39ÞVÈQÏÏ„ÝFßÙ{<“ÚŠÇÉ.“q}k´Ô¾xÛŒ?¨…Æy4ú/4Ts»¹Ù¨—szãê¾O÷9 ÷}"ø4Çe8¿ ç'×ë‘?ØûÃy“1킆ƒM¼C?<¤ß`ò= ï×à˜à<çMæ{Mø~ëà^þÏù‡C¾É¿÷xœJùu_4ö§¸©Äú‹Y»ÑN_mÊ»ùn@?»¥²'ÿ…íKùƒ]GRý‚ŽCú6>A>hü…òçà:4ãý™´Þv¤,¨í4Z¨i·à'ô@ËñEž]‡?gêÏiPÊ?ùGrÜiù=t"î‡~¸8€ýè½ôSª`ÏÜWü`ÎáÆn8n¹¯×ød¾?P=%Æy}ù-è¹dw(ý0¦Í÷Ù&޲ùdì_ŽÏÁq£YgÈù…ƒ¿R>Ï€óìšœ¯ÆqÒ®Sᯰ;ý°Iõ+Æ.u× K[»~Ë|åòKítöµþµv%HÚµ?ÀnU¨o5øœPoóÝ™È'òw­ §zGùÄç´Nc õ³åNñ•­Ôî#çÙú‡ñ¸Jä·ù¯…mýÃñ\·¾Åäëïòîã0´+…øQÈÞtåðë·ˆ§+ð~â¹Ô¿:Ûú†ã–»{Åqyõ-é¿{]¿úòø§õßîºe—Ñ<ÿ…ޏ)Ï/ðùhÔ»<.ãøœD¾'=mââƒå2x`Û‘«ÌømG^ñ0ؽÇMø¼ÕøQ~þaçãàÃ<¶ñòcÛÊo‚ÔßéÎÀçyíµ{8¦“Ûvä {jÿöÎãZ²þáx2¾ç žñ7™v9¦yªo6š×þQ¾áϨœ_¿IÄ''¸A\>“üŸŸcÊg²}¶v…Tã}kWøyŽóâ‰$)Ÿ8Îk—“õúA‰8#¯þÁŽÓÐß¶õïzÃ[ÿh~Ç”ïÿî¹n¾$ó =­P}+à¿“ùµvœ¨oÄáB~ô_'ÇY^EûpØÏß%í^0¢ø8É»w¢¡y2ßÜ?µ×ã>Ô^×À¿óx‡þ xÇö†R»AœH¶IÎÅ1ù±µûyÆ_‰sÔžX»ãº3ð½Jü?‹åâÍ‚œ»&ÑîAûò—Bíßh”Åt?I?÷D’â$já×µèGÕQýìËÏvßã¸Z(n>v(7~ÛŽÏ@}¶ù¦8iÛ¿ÌwŸùí3ž#¿¦|®¿k¸Q~¯ù¾ÿ{ÃSÛŽC­_ãØúu³¹®mǿ݇_€‡Éö¯_“=ɯ©?’ä‰ ;絇°§õkp¼þ¯¦~6\Žqð²õÊ^óýÏGð>ÙûäÇm;ƒôÇ&ò­ãÓ‰(ïYä8žã98n~å_Ç9GãÄ…ü¶P\%Húm5ŽëÈ®8NÄu}úÃ^ׯqr^ÿ‰Úmjÿ qá\HŒÛ~¸Zp€â ²'¾7j9ŒöšâŒ¼vq\íç71k9öksd~mýJæ7·%ÖQS»aÛkŠ7ÑNØ|S\.ÈwÅ«°§­_°S’y~Q€gyý~Š‹pž‹`Ï<žáxû%°w^{°·Ígb½DÞ8Σñ¬Bñ}r\k6Žàïsqßèäò—½­‡Ä5[q½Bã–°¯­‡ˆ/ZÌ|ç³PŠþtŸãZÉq šçJäÛÇq^\‘È·å윗_ò‹×í1—“ýmÇ´gyýíéyâþ›ú< ýnšÏÍë§À©ýNö÷vü0¯ŸòÃ…>ëcÂOl}„?²{¡úií~k0ÇÜoAÿ |S;ˆûÞS?IŽ $ókÇ)ßä×4Ÿƒ÷í¸"­‹¤y¬çãGÉ|Ó¸"¸Ñˆc/›ç;ü[ϼêaÒ£aŸ³)]š·ü’QZ·P~ÖyáýsÑ®NÁüÍwN¢óð9©‹ï¹8ß3çÛ|øèw9øþè8|ô­æþF#Ÿg¢þŸ »ŸIó»hwFÂïO†ßÿ¬¯ÿ?õ‹ôp¤7¤Ç¬W¼bü­b·¹^ų&½Š˜ëTÄÄÕ»‰;°÷㦾Uüœù©™?²Ü¹ÇàM^=¨gÁOçà¾0¿§ÛÐ~´½`ÞoñùNsß-xÞo¯5çÏÇõàx!Êe®¿åµøÇ½ëÁRØ}!ü õfsýPÚ\\·ö®C>é|éÿÇ«Iñ½J|^ {OÇ÷§Ai^œÊ•Ú)‡êÒOåö€áÜ©´¾ß§yü#‰c¨GG»ð êËoPž›ïUñÇöÿ•‘ÎÔ\ïò˜†÷ÉoiÝÅc6ŽÀç?P¼iãS2çÓs@Êš8útÄQ§ÂÞ¶}‡ßGãxÿÓú½Á&_/‚KOÃï‹÷…rú1Ú*d½ ¸ÔÚÚu¤KãI!µóxŸ4Æçd×ix?";ãúÄÿi8žŽã™Fm~¨]¢ëQùѺ4ã˜þ‡Úm*7ò+ò³qÈ×\ï,ØŸÚÓÐ~ ~*+ãú´>šú)G Þ ‚]_D¼û7s^ÅÓhW~‰öÿgxŸêG"β÷?Ϙ>Ë?aÞ_‰óW|ͯ½ÜhÇyæü3­×༵÷˜ï¯¯7ç­ßbì³ÁÌcè æ{6?›î…àÏJ\w9ìHù\ÿX„ü-8íÖ¡½Û³ù(ô[u#Ê…~xy6ʯv§¸cÒ'Îyx ¾Gq6էሓ©ÞŠöóaÇñS—¡\¨]ù5âŠÏ~ˆz†x˜9>Üäë<äc î÷|äw9Þ¿`Êi±¹?ÒÕ¸Ž'MþW}Ì|¿c¤9^»Îœ·ë|©Ü6¢Úø•Þõ‡Þ'?X…õ+M WÀ¾Ë˜t.Àù”ÿ¥h¯#_‹‘Ïù»Ìq;>oƒ¿5ãzsÑîÌÆyÕ¨//P? ¦úJñÒ-Ãy#(ŽÆ÷‡¢½„r ø™Úû_ _óc”Û}ú‡1ægf`~]w˜t(?ïÏ2^=댗£Üj°žDÊpAÇðSä³<©{´ç~8îXaâњϿ¬ú…¹þLš7E/0ëµu1¥¾Žq#øq9üz"â§³a·±˜—ëѸÔ(ðíuˆƒ‡¡òKã[9ðè9s}îg`ü¦æ{æþëPÎu§œ {Íß7£\›Á¹Ó1îCÏÂúÐvc_›NëEÆ®­¦ã£Û0oÜ€q²Y׫4öÕwšô+oÁx%ÆÉ¦â~CÄMŠÆÝ`Ÿrü­“¦u¿£áwePšg>‰æé`ϣРñ¿!.}ýµ' *ÃçÖ?ÁêOß?Núé¬eÇÆýÎÆ¸üJ7 ¾4ÀÞ´ óaz.ž‹Òôm¬{‚›OíÉŸM§¹ÝÜ_ãçL½˜u›ñÓ™æá_ÆÑ|Ø“þÏØ­2öV¨7ͳ#ãÁqðW²ï(ôÏFà¼ÐŽÚq øãÔça_âôï0žôï›óí}UÒº5ZŸòŸÆ~õ¨Gõæºö­ÛiòѼÒä£é“~#Ú±fŒ»¶'â¦6øêÖß;ÒÿµUÝeÒ×7nP¿h*ü;€½<”³B;8þUŽãI ;Òº´oT¿O…]í8êÆ!ôØëEÄÏ ^ùâuw#?íË?)¾ÓXwNã5kÍ}ÑêFAßkΟmÖ)ÙtêCc÷:3¨+ÐoŽ`Ïè7ƾoøhÿ=¤Kíød´G“à¿SP~£i}/ú‰g¢?xÇÓzU\ç(´çC`ÇìEãë')Ž¥8‰Æwã[ö>«Ñóï>jŽ['cþì¯Æo›04õr.ê77¿šPŸç ïÍk»ŽØMAyNļ͇Pœtìy:ò9‚üíí0Ô‡!h·©ŸýWØ‹ú –ŸˆS)þD=·ã†IûF(¿íB ☺³M9ÎF7íÙl´+³Á‡ZøálÜïìåÆ.s~Ñ;&اq˜Fÿo*ü>†B´“´žÏÚ툂?–#}zÎòh¤&ø:å4~IóÓÃóBÏ"^ú üòPæpü\û4"ŸÍÄ;Ä¡_ÎÿÏ¡ÿB½›ƒòoBÿ³ qßÜ;{ó£ qµOܪ|Ú´·3·NC;3õ<¤yspÇEEó Sלƒû ÿ;иÛÉàöë¨ÝÝ©~B;òwøÍßÝhüÆ}0ŸÀó5f]àwþOL=ˆÀõídÅM¦<+pŸöÿ&·­B¹Wá>g}º÷xA5Êiâ„©ÄEœOÏ ðÁ z>Í'Mß;Hç\ðq,Êûlø!=ê4´ß4N9íât}8ìJÏOÁzŠg0®ü$xIñúОS{¬·SQ.ïÕ"_µ›}ëÀ­zpk6êYÚU[OÑþ4|³w« þ]‡þÓLä*âõóðê«ÿ+s;?Œrs(Âû“ï èÏŒEùŒÆñ™ÐSa·“`ÇãÁòCÌ3V¼„v„æQ,qü08HñϽƯí}z¨?´N›ægâ>+?;ï€ø|Ö"sÕˆ‡ªÇÕ\fìRóbï~Nú)3P|Cv£çù*´³Úmz>‹÷E9ŒGCÏsýáÞó·ô¼‰×á~ŽÃõÅçƒa?jOÐß¶qãÿÁi¼üÆÑ©]¹+Q¿}Ô·PþÄ­™àŒFý™Ž|ë%½×S…è7ÍE;¼pMïñ¥9冇زãºÔOôPÏi|‡ú‡åhW&¡h¾ýlø×´edGøÛ)(—ãá—4/„úlÇóž‡}ˆ‹TŸÉž4/DóªÉ8œæYªQï*Á¥jô§k‡™û¦u}5wc}‘éWë*ÄÉ4^T ;Õ>Þ»ßX‹¸ŠžGR¿ý>ÛŽP<ƒûvÀ“rŒ#MD}ž„ïO@=‡ú2ã£a/ZßAól'£NënP.Ç ÃŽx.jÅÓà$Í÷üüLÌóØûœŽvF£>TÃgÃ~sЯ›Ð8pS‹¹¿¹8.Ú‰&´óÍ•½9ÒŒöºþ\‰ócŠ©> ½ a7ú¼qQŸØ ÆAÎýÆ¡ß=÷EÜ<þKö´ñÞ?þœC½§ñ"ǤygŠË)§zNJë^¾–®„ŸU#_³i\íy=êQý±èÿ¡>‡ÖÎ7ùk¢ø ýø9ÆÜ.¡þV¡ß9< á·Þ*c?®–c<Žžã2qgŒEyOGy{Ÿ ®¼v¦õw´>v0ê5õÉO©ø(x@q9Õšw!;'ç%«ÑO¬ÏêQŸëѸpí,“ÿÙðŸ”{ýLsÿôÿ ¯ÞÞ;FÄûµˆªÀåJôGfÂ~ÓÍÀ—ž†¸›ú•øÀN4o§Ð”£›.œ~ÏXjïáï#‘µ÷Ã`ÿ£à?‹ñŒ?ÂîI¾þ8ÁÓYç£?·þ†ëÍAÜKãⵈgê~ìKó³qõàúßÜ?À¼Iì®Ñߤç£Q;Àž8§÷*”_98DÏWXWxìHãC§!8‘ÆÛPÏ£xv{þFqÍ/?“ëÛ’í»H7¤ñY”Ń1êÇÔæó©è¿Í€¿‡cÄKži¿l:cÑ_ ?>‹ÚcØëtÜ×éàéi°ïëP®´NíXÔkZ8ã/à>ÿ‚û¦õOd‡¼q\”ÍcX7ûlÁsØ[×÷$hÏŸnÓøMÕls3À¹åÀÏh½ó9hÎ@=:íã¡ðkŠÓl?÷Cý¬‡ñ~2›…têQ¯žìÝOjByÑóM}øÝðm¾7õ|8ì{ìHë`hÞx÷Sp­À:2ž—ú©ñ×–)Æ?šPÞÍH¯ÕnÇÚ0o4﫽ùPùÌc Þ¸ð‡rÔßrÄqãá×gÂ߇Óü#ìú"ÊûiØó·°/›Óüp!{Ó8M+â¿ö#Lz-Oöž›·ýlÌÛD¨_ íÀøÁdôCÆ"^‰üS—Œßþˆ¸ƒúg?A>ÉO’þ[gftûP“Ÿ…‡Y ÿXð5ÄàóTÄkâSñÀDpç,Ô³ð³£iŸ‚_?µóÈïƒàc¡ùÝ&äc.æi›àoô;óÐ_¬BžÃå¢] ç÷Ðú¨³qÞðï¨ÿ ? þ¯]׉|'ûˆ™ GúTcâY»ÞlÁ{MþÛoèý½ÄO5hŸg‚1â‚võOL€¿¤8í‡ ‚=ÿŽüÒ8Üo`÷G‘Ô»¼8©ühCœ‰ùE=ïw½Û•:s!@WǨo vßhÞŠúÉÏ£~Ѻªw4¾@ã5¨wl¯jðàyc…¦`ô"Ä]s0®§1>î8ì¢ý,G|0ñ­: ~Aãć ¥ö‚â%ŠG)ßTï’ùöb.úŸ4‰ç®è&Ø·í½Ëþ¨íÙLÄ©Óh¼í}9ò9~=ŠÆ¹ÑÞQ;ÿC«xñ‹]W†|ÿ÷™äñlŒ;µœcò;ñæ|sA½ð½yØû×Ðz ôcé¹PÄZ2 JõqVÅ+‰vä÷°2þOÖÃfØk.ú3-àrËIðëÿ¦ÿªÀ¼WÞùூ¿ï¨CíÈpìïà­;N®›,´Þ¾ý’%z۱퓾6ãˆÚ‡Ý¦€`¯3QÿF!_G ?4/LëÕÈO‰ò§~i">ÍËß,Äõu˜ªC\Óˆq¤¦zûËTƒß;ˆ &kÐÎŒŽ„ÿÒﮆüí†ÝèÿH¨üNÔ7§H¶-ÓM}›wÖI þ´ =igìÙv¤I·æqŒ£aÜaâÝý»Žþpâ ê7 ÇaCþð7gR9ý“qý_X}ƒ¹^â°:ô_›¿gò[û?æó˜ú‹§£uõÄ…³ÐnŒßûQ›üøÏ(‡ßA)¦õINÔ n¬¿Ë\·~Úˆø¦ÙôïtëzÏÏT¢Œàg.¾7~AÏíöãTŠ;á/‡ zvµí6ìJóõÏQ}LŽkµ~ÕÔï¶W'?aÒw©±_[b~³a§)÷Yo5öoźͩ°kˆù÷?íQü†ž{8výÇ‘½×P{Mö¦ö0Ï5ÀÚ`ÿV¬h37ª[?ڻݮºþŒ~:­ãŸ¿=íÒY°ï(Ä©ÃÀÝÝðŠçÈÎÉv»P½œó1Ì ßhʹu«±K›q8=ïoA¼©Q¦6çèÓzá‰ðïqÈ÷iˆÿŽ¥þìKþAñ2õ÷h<žÆ’ükû¹ñ‹Ì µa¼±ë/Û>lìÙöíÞþQ‹qHö’Ö·„h=´“Sà÷ÔO…8­ó—“ÿßEýìÄ8Mž_ÓúÅEÓzûÍ<ÄôœÕ‰ðOú6zn)­»=z$Ò§ùÞç= ûÑ8ñ-Yï’ã ˆZ saßf´/Í´ëª|Œ‹NŸ'¢> ^Œ¯OÃ1ÅqßïFûøWøq²½¦øžÖI%¹Ü‚q©ó|xÝnúuìß—¡ß=˜;Ò¼çDÄÅ£Á¹SQÏŽ&žÁ~´.ö¯àÛïãTÞ…æ3ëQ¾-X×Ýô]“~êõKZÆ"ÎÀ%é§vÞý'zþ[ÖûTaˆž×?õ)‚pÖE½¢ÿ8<¦ÿ“§ÿ¿8þkíMñ¸`ã%Ø;ÉßFÄá³0ï;çYsýÆ‹w8_~Á¤Gë âúZ74õõ øýÿá!ðÏ—aOË3Ø™úÓÔ^P|Th<œæ©›À©Fj?ÐOš·Ë·£üÁ¿Zc= å^IãEðßÚ”ÃXpì4èñ¸/j÷^ ~ ¿I?/4.P‹ùŒ:øËÂ`< ñG “¢_ÁÞvÞ~0÷AóäÑÏ#Ѿ B¹SúϨÔo¢vâé$ßj‘zN$Í7V#ÕÇöž ·¿U蔣]žˆx™þo•þO~ü˜Ö1>¿ yv¤ñDo!Næ·þÖ€ú݈ù¡úç]š®ë=o\‰~–ö×E»MóDô|åñà;ý:[Eþ€r§q-âHòÿ7¨>>‡s}|—¹îÌï´,2é·À¯[>Žu.ðã\ñЮ8¨“À˱È÷éàö ð—#ÀÁÁh?(ß…}G»gÿŸça½DÿêNÓp“ï&ô÷æ`Ü»öÄÞí̬‰æ|O§û°¨¼£uq§â¾Žýiœèyä‹â}Ê/ñšÆ?“õ¯Ü­Å8óìOšòo@:M/÷ÿœŽykêŸ(ø…¡x,ôtâìL㵔߿ ßø?j¿éùºãEÖÜA¾éfŒ»Y‹m‡ýµé庤ô`Ûô….–ˆÛÅÚô¥%¥ÙöÏ7½å&^+-¶=нé Ì@T©h±íQ¬MŸIéÁ¾ék¾SRšmÿzÓoÞRRšmÿ|Ó늣ißô¦ûE³ÍlzCÙ~ÑuÓ[?eâºÖbßg±6½aÿèÁ²é­w˜y¦Öbßç@ozÃòý¢Ë–µC»éÍË÷‹¦}Óë±^n€µØ÷9Л^ƒyàÖbßç@oz=þb€´Ø÷·¿6½òþý¢˦Wµì=P7½¢e¿èÁ²éXŸ8ÀZìû,ö¦;n6íïk±ïsmzã×à_«Å¾ÏÞôê«L\3ÀZìûèMwœ¼_´Ô6}ᮽÒRÛôòGÿ¥{Ó[.Ü+-µMoÀÿÓõ¡ÅÎ'mz ÚÓ>´Øù¤Mo@¾ h±ó—Üô¶G÷H‹½é­æwöV‹ï䦷|~´X›Þ¸ó_j©mi?×ÖøëjÑó»åѽÒbozKË?ÕRÙôê5¦|÷P‹_ÚRg¦ÍÞ+ñ<«½Ôbç›6Ý1 ã"{¦ÅÎ/mi›‡Ðëñ\¹>´Øù¤M¯ë|MZ*›^{ÿ?ÕRÙôÚ{¤¥²é‹À¯ZìüѶ§õ¬Tê›Þ´wZ*[¡úUªõ6½¥s¯´Ô6½Å<­;´¥®®?ñži±ó›ÜôEË÷HKmÓŽ6vÝC-z~ה핖Άç;,yÏ¥Áóª¾úñë¾5î ö¸æÙ?ýàã3õÌé篺¾ã]ºõ’ÑúÀe·Øç3´MÚœ»ð¡ >¿a%>_‰ë®¨ö?–Ýjß_±ìÔà±?,¶5нéE#^:é?·ýIÏüåeÎÛï>DW๠ú¸—¿Öeq{lß_þõ­oü¤žq˳Oÿ¢ú~~NÃÿ.z씎su ¾7ףϗãý &¸ëΞ ·òøÇGýþýú|sbÛamöwœ[0îßü i7[´ùœÞ·ÇP:o9~¸àshÞÇ[pþf|ŸæE6ŸWÛß›ÞzÝø1Gí¢®1~¸øgǽãÝßxŸ^øX fMÒ‹¾|ƃÿ¶J/Âs’ï_]‹÷íóès︳vÛ~þ°ÞqëðOœS>_ï ÷wU·?~I_ö¦97žÔøÞbÛ£X›~þ¿²ã}Æ/i<°cœ_[‹q6ú|MgïóóžÓðŒñëKÑN_†ï_W ÅyV±näM¥9T*›¾ü+~ÅU¾I/ÇsVT>ºþë˺8sï®kNØÌÇôù{þã‹“Ž] —Ϙrê¿yYÞs.Æù[ßož—µ×éÄùo8éËñ¢a+uçŸ|óö;ÖóqÛφž|ó%ŶG±7½ö&c¯f=§aù{vüd÷3_Ñçý¼ËÚW¿¨—­^õ Ö›ÛÞóïÍLÓ[pÝMÓM;¾é¡7:æ—SôÆ?ÏûÇQl{kÓknÇsö0Î@:÷Bó´¦ÐÄ¡tÜl~`A7âyoç_cÚƒe#ÍuÎû“‰‡—w.×fêË&|¾×£cÒ ßéy^[1mQ ›~Û Ãýmxζe½·O0þž÷þ3ÆÞ×à}ûœ†›Œý¯ù»ùüZ|ÿfߌÏoÆùVk:÷ó­§rÓ7¡¾\¶¥·R{¾c9ÞüŸŸ—÷œÏèõæ‡ÄõuÏ}ϧ¡[þ¹¾ûÿúõ¾´MoÛit~§Ñ%ÐÅø|)t!ô||Þ]÷ûz®ÃåeFwô_Þ‹¹éËw^€ß7X¶Ó¼úaç}ß(}ž|ÓSà?¾·çÑñÆÒ\_Z¬M_‚u·çk£ç•%ôóÞ‡Úõ?8ï¢wô~ÿ¢ûQ|úªå&Î[uä÷ºn½²ÁÄñ+ž<Ü÷ÄåzÕúe]§øs<·aeç9lÃyÛ^øæ¥]¯ô–Ý—Zìû,Ö¦/Áóv—à9ççãù¾çáóóð»0Kñ]û>t#ú³ëñ}z®ÃF\g½yÎîþ¿³âlúª+ϺÿwË«ôJÇáÉï¼ÿ£¿iϾù¿[^ù–°Ø÷9Л¾äð7ó@}½ô‡ðËåæszŸŽíçx?ïyxÿ"œwÑu=Ï»ÞÿwVœÍ¶CÔ®P{DqR¡ã¼v¨€¢]:X7}ÙõF—ã÷ –t|Áróy!Í{žÃçM?šŽ7mîé~¸•Ýôö‘oõ®7ª—ày Kvÿ¦{ÀÆ/~ê‰?Ùý,žPû‡¯ùå”Swæ=ßaݧ&väû>zÓ[î1vZ0ÜÄ5 ®íŽœËÇ}(=Çaí­&Zý¼ñSzÇžÏÞôöæîáÄÕzýìîáÆZ½ôÄ;ºõÒ|º;ÀÔK°N2©´~ò"œ¿~è/»ŠíûëÌïÐûþöצ7|ÏüNDÆOæ¡ýn£ßÃû¤íøýÕÖ¹†“ô‡UøÞJ|oU¹áàŠGJbÌþÚôÆ%øÝT¬ÿOjûØ÷lc§y_4ç·ãw*W.ÂÿÍÖ¡>?d~ïcÅ ¬³þÆýw½ž~öj[Œßo¬ÅïóÝÞûó–ÀŽGaþãáöy8ŸŽ—o=¨æçô¥OuuÃ?ñ²>yYwÇD_pÏÐî‰0}Þ=ÿKWܾ¿ìæ6½çß[ôçšvž>ߌã8žë°é‘>øº7OÔÝü•šÛØ÷YìMo™lâ˜ùX±ð¦Þ¶w›g×5öýBºúßÌ|ÍÚ“ºŠë¥?èÕ6óbk¢ž~#}^ìûÜ_›¾ô= ]x«^Öjæ'ÏÇüzR—=aæÏ{KØõ…§õùg^¸õóewëM‡ôŒÙç9lþ¡)‡ 3Ìï\A‹}Ÿ½éÍc̼w;žÇ°§:ïSf^}õïŒW¡{Úþ¼ç;¬z¤gž·Ø÷9ЛÞ2Úh;ææ£_>ÿÚÞÇöók{wÌ5ºíÐú{nø½Qÿé½×¸é˜qÆu3M»z!ÖC^8È´Ë—Ÿn™ßï*v~“›ÞòÖ·=jŽ­~¹$Ö«éÎ×ÝrôD(ü¢Ç× ¹ë{ÓoºË¬§±Ïs˜S€ÏÔWáxpO3vZ±óI›î¼Ý¬G±Ïsx|ØÊ¦ýMo™¹ {=PWyô´'ÅÎ'mú*äóõ›LÑ 2}ñ¼.¯^2Ê>×á w›ù×ÞTÿW¥;Ñ>_`]'~_žëÐy¯yÿ-¥ñÝù_&?ÿö¼ùÓ-ãJjžToÿ²×\µû™®žçÿðónù`÷ĹÞ~rO{WñâÈžqÒbç—6gz®ÃŽN3ŽóÆöülqrYxÓÛ~c~··cˆG!µvWÝݨSŠOÚôVüŸóЇ6tððs:Œßl-û|ÙwÞÿ1}Å{â }ØëÞÏá¢/˜ü^.êù7¶¢?tU_AÏoØlæã’Ïu¸ü 3’ëúÛ;¿ÉM_yi—7Î1ãö¹§˜úyÅú/n.ó7}U9Æ=ñÿ¡½Þü¿á¦!†ÓWoþnÐ3%áßúÒ2£k™ø§ã³†#ô\|^ñriÅCöù3ßi8—iq5zÜŒ{dºt殞Zi±ôv”C¦EÕª?šù£LK[§£¼2- 2- ÚMü”iihˆrÉ4:µÓÄc™–¶â?\3ÝKžé~UÝ™é¾h”Ët uF¦ýªÅ.ÏEgfÚ¯:«3ÓÔŠ\¦{¢ÅæJ¦™J-v|{ h±ûµšz™î“êLûU‹ÍéƒE‹]o4-v¿ë@Ñ8Ó~Qÿ ÕæÎtkC®´µ:åZ—2­I™»þì­V§D[›i¿j±yº¯Úš2­îL—ÎÛUÚŠÿÌIŸê”ë¾Þÿ~ÖvnmëL©êtië®”igºµ}W‰kgºt¾N‡ÎéL—ÖçÒ©Ånw_«6v¦[‹Þ.ì¡6u¦Kçétk{.ÚЙ.-ö¸ÊkÔ\î°cºŸïÐõbp¶g{¶g{¶g{¶g{¶g{¶g{¶gûkÜe{¶g{¶g{¶Ä{ZÛÙbÇÙžíý±»þg{¶§aÏêazm›íÙ^Œ½Øõê5ìC»ò=øÕ.fîaè]zhmÇÆ:p4´É¼îút9ˆÎ\³bÕöÍ[»^½b£cy®{˴Ⱥ¶,Óý©«s™S‹]þ™íЙ¦A‹í'™öÖŽG3- Ý™i)éiªôÑLÓ k;3}-º&ÓýªÅ.ïÔ룙¤½½=Àô²LûC‹_pª3P}4Ó=Ñ¢ ºº,Ó~Ñå™fZzºjW¦û¤;3íO-v{w°h±Ëù@Ó¢÷ -v{xÀè΃TËR®–¶®É¥[;R¦kÊÒ¥)Óµ¹th±ÇÓúMw•¶vè”é£)×}½ÿý¬ÅæëÞjÑãоtgJµ¿î?ÓƒCs™îíXž2Í¥[‹^¯úÐUéÒbן=®g:]za.ZìúóZµèý̃D‹ÞÛK]³3åªÓ©ÅŽ´¸¢€Úç;û÷‰25Zìß_>Ø´EgZL]Ô™i)è‚LS¡Åþ½íL{kû®LKBs™–’ûwì3Ý;]Ø™itq.Ó×¢íÛÜî-Óý¤m»ŒÝ3}mºèÑLRÛvfÚŸZl¾(Úöh¦ýª»2Hmÿýšî-Ó>´u§±W¦û¦M÷um?ÈtµØåx h}.Ó~Õ/™þc¦¯MkŸÉ´?uÞ£Æ/3Xmü˜‰“2íwO¦ý¡ Úøg¦û¨àéÁ¦-æþÓªµ%®óM·Î«oR¢ Ny_×vKjtÞѦ¿›]¿.u]¾¥]hs?¥ªÅ^²·Ú–r]x³ñ‹´h±×£î­ÎßUÚÚ໦M‹'î«Û~{«³Ñ^§U›ø(mÚú%cÿÔè“ÆÞ©Ñœ©iÕæ]%®éÒ¶CM¿¯Ôµèõf/µ=gì›6-zýyº —n£ñ›R×b׫½Ömh§SªmÚøGêñQZ´©Óä;eJÏw¨Ø½ñîŸE×-δغeêKWß”Ët?é‹>>³jÉS™Gõ o-yjÕ7dZdÍ<ö›|DgZÚZñÊ…½õÓ“i‰è«÷.üøuß:;Óbë}íÆ«ÇgZ*zmÓ ©ÿïÙ¦Cõ æK/øÅg>i‰ëà3æ¿ÆaßËt/5wÆ G þÕ L÷—šv Óרƒç<ûô/ªïÏt`´â•;?zü½4ÓþQ=xdž³.<â§™î›V¼zÃÿ}í¹Å_δŸô•{ÅpÝœéÀ¨ÎíRûðù«3ý×Z±ûö»Ú¿ÿ¦§3ÝG}á+ÿvÂÏ·eºúòÄž œé>ê󋆭lúÑß2í/=ñ7wüxÉu™¾Fý{Wçfø'ÎÉ´ŸôÕà±?œ5)ÓÖNýà7/ýÞ—3í'}õúŽw~®ùØL÷Q_Ðs?rû]ó3ÝWÝuÍ ›Þóï¾4nÄ]w~ô„Ôê?>ÿ–g·µ—ªê\ÛӃ㽴jÅî'Ž{ak]MZTç.¸þ?]›­ØýÛ±Ÿý½óBZTž3:Þõ§§J^ÝÕ3ðŸzÍýâ3Ÿúàü÷—ªV¼rå_¹{ãùéÑm'¿Ü2{DZUçºíæG¦¥Gßý扃ž“­x凇]°ùGe%«/l¿cýÕ/<”:}iõ’‘Ÿ>ÜI­¾0­çEjôÝ£è'¿œZ}aÁГoÞ~Gêô%ŒË¥Ew/¯|KØðÝÔèËKÎüTpEjõÅ¿õ"¥«C>÷Õ®®TjôåãÞñîo¼÷{%¯»õW;½÷¤EuîŽ[Ÿüï/,M›¿þ¼6Õ¹Ÿì~æ+5J¯~®ù˜k›•ºVì~ä#¿ûþ¨Ôè+³^9ï¦æ¦W/ÿØuÜøÔéîîî`ý×S£/žÞýŸM›Òót£~î[o?oB¦EÖ†©+®:íÿZ3ÝOZ_nžw’iq´õùîá©Ñ™Y›ßþ·ß¾í†­™–¸6îzà«#=–i‰h³þÕ®ÿá–L‹¬s[.ùûî3_Í´Tôçù/N:6Ó”hë…ã»; ™–¸¶mõ+®úóM™î¥6ßý£¿~â¥?dº¿tØU×þçÃ÷dúµí3æÿæ3múvÏþLûIÛÿï/,]X‘é>êÜÛ>¼iò¾“i?iÓoj>Õõ™¶4ßßÕ`ý2Ó>´qÕŠázîG3ÝG­¹QÝ»ðãoÎtµî‘Ÿ®ùßÊ¿eº:ëû;ºWàdÚ_úÉ_×}öÄ+3}Z5Í´Ë™ö6T™ÿÇÌt`µú¾ž8É´Ÿ´áËo»áâ_­Ïtµú±«_xè¬2ÝG­Y÷õe~Åë:­Eœ˜V­úRÏÿy”¬¶œíýì¶¿K­Ö¢{É)©Ñ–y/mô‡>müýi‡ß2ø’ÔhÛ›?ùƒ[¯ùmÉk럻âæÔkËn[ñÛ¬)Ymºíè/¾ë‰ÇÒ£Wá;êÞE©Õ–×óçñ7þ!5Ú4ôêñcŽÚ‘­¿ôïýîco,Y­9n]õÚhTê´nÒÝOˆO­V?|Ós§ý 5:kθÎÿ¨oK­ÖùËn¹¨5uZ·jýºz&©ÑúÅf\;-:瓎]0ô”ÔjíOüúóoÙY²Zó¡_åøêˆÔhÝ[{þ¸äµñèžç[§F[.þn÷:§NëƒÙ|ÔR§-÷=vJÇÄŸ¤Wo鞎ZSòÚøÓL>ÒpÏÇÿrkjµi¥™?K›Ö/ö†þqΩњ_}äö»ÚïM›ærCçr¹A¹Ü‰Gté!›VlìØÖõæ°®ƒ£ñæàúj¼:lÞ%+×w¬ÚŽÃ¡íë6vÐëU›7­¢×m+¶ÓûC*7n·/×Úwçu젫ϦÏ/´gVÍ«¤—UM‰L±uóe“EFŸÖ¥Ý rè…¢.½ðè…O/zÒ‹ˆ^Äx1Ø)·¯ûJÙW®}åÙW¾}ØW¡}ÙW6 eÓP6 eÓP6 eÓP6 eÓP6 eÓP6 צáÚ4\›†kÓpm®Mõi¸6 צáÚ4<›†gÓðlžMóix6 ϦáÙ4<›†gÓðm¾M÷iø6 ߦáÛ4|›†oÓðm¾M#°i6À¦Ø4›F`ÓlM#°i6ЦÚ4B›FhÓm¡M#´i„6ЦÚ4"›FdÓˆl‘M#²iD6ȦÙ4"›FdÓˆm±M#¶iÄ6ئÛ4b›FlÓˆm1¥1Ä)/ç—¿TüÒå—¿ôùeÀ/C~ñKNÍáÔNÍáÔNÍáÔNÍáÔNÍáÔNMqjŠSSœšâÔ§¦85Å©)NMqjŠSs95—Ss95—Ss95—Ss95—Ss95—Só85Só85Só85Só85Só85Só95ŸSó95ŸSó95ŸSó95ŸSó95ŸS 8µ€S 8µ€S 8µ€S 8µ€S 8µ€S 9µS 9µS 9µS 9µS 9µS‹8µˆS‹8µˆS‹8µˆS‹8µˆS‹8µˆS‹9µ˜S‹9µ˜S‹9µ˜S‹9µ˜S‹95f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰b–(f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–¸Ì—Yâ2K\f‰Ë,q™%.³Äe–xÌYâ1K³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–øÌŸYâ3K|f‰Ï,ñ™%>³Äg–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÀ, ˜%³$`–Ì’€Y0KfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–„Ì’Y2KBfIÈ, ™%!³$d–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÄ,‰˜%³$b–DÌ’ˆY1K"fIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$f–ÄÌ’˜Y3KbfIÌ,‰™%1³$¶,ê”[˜t¿vÄk%^»âµ'^ûâu ^‡âu$^‹t‘®#ÒuDºŽH×é:"]G¤ëˆt‘®#ÒU"]%ÒU"]%ÒU"]%ÒU"]%ÒU"]%ÒuEº®H×éº"]W¤ëŠt]‘®+ÒuEº®H×éz"]O¤ë‰t=‘®'ÒõDºžH×éz"]_¤ë‹t}‘®/ÒõEº¾H×éú"]_¤ë‹t‘n Ò DºH7é"Ý@¤ˆt‘n Ò Eº¡H7é†"ÝP¤ŠtC‘n(Ò Eº¡H7éF"ÝH¤‰t#‘n$ÒDº‘H7éF"ÝX¤‹tc‘n,ÒEº±H7éÆ"ÝX¤+xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#xå^9‚WŽà•#x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚WJðJ ^)Á+%x¥¯”à•¼R‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚W®à•+xå ^¹‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚Wžà•'xå ^y‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚W¾à•/xå ^ù‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚WàU x^‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W¡àU(x ^…‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W‘àU$x ^E‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^Å‚W±àU,x ^‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•Xß®Äúv%Ö·+±¾]‰õíJ¬oWb}»ëÛ•YßÞë±ù›/ÙÞ±5—r¨ù`È«9óýAøÒak6oÝxɆ‰ï=¹fÓ¥ë¶nÞ´±cÓö®ãÝ]û+âóAWwý‘_0ÏÍï>§×uøò{˜ƒÃ^åÔ5‘åßóÞ¡27W%O4ÏÿïõÿD@Ï$szè†+;6lëz1Ü|±W&Ïè¾`Ùš­›7–­ìX»nÓ¦u›Ö–m^S¶nÓšK¶­Û¼)qú¨Y]í²ÜÖÛ»>ì>qkÇÆukºÞY±iÝ“òP2Ä`º‹ôâò’¿C.Ù´n;eoP"½CÆo\·iB⺃Äuó.7¤vþÜ®‹ IZaÛæK¶®êH\þÌ5—lZÕs'ãwL(Û¸bÇøç–mZ1yëÆ²eímók&À¨»—ëIú%|(KlH×EÌ­5y£=îzóHófÏžÌþÑ›·®îØ:yíÖÍ—lÙÖûÜ^N6wpì¦5›êºOîX]½bû ¼{̦5ùoµ6ï­#Ww½ž¼f늧êñžÿ=#§:nlme/data/PBG.rda0000644000176000001440000000150210132476010013236 0ustar ripleyusers‹íV[OÔ@žîvwÙå" Þ뼬² ¨`vƒkÐD“†ð€]:]št[ÒÝEIŒáêðÑG11‚ç´gÊv` šcb“¯ßéôÌí›33g©¾R)­”c¦åÓt0õ ¼4ÆF‹ÀYsa‘±Â˜ð_ž¯~`ÑS;F|™ø!ñÂV̵ø»ú‰ø ý&ž ž#~D~é»Oâ›Ä÷ˆï§Û­~£òqâiâÚVŠ…_â?J|‡x†¸"µ/Æ%Æ‘øAzÞÕ¯NôT¿OG˜—‰ç¥v3q½d¾b\BWÑþŸ÷ÕÏqûI»¢ÞUb¡S–ütiÞ¢ž˜é%Ö¹v’Ê'¥þŸ¿$v‰ÿûÿSþ°¯á…QXR O‚Eò äÐÈ*Q@Û©#.ïñ t8žµŽ¥™å»‰5“XÓ‰UI¬)a™I 3ñ3?3iÅœ’F[õ¬¶@†Ü AhóÛô™w¬ÕN‚µÝ³nªy6º6PµÌŽ$TñEý¹1[G(gzÖ*o±Vøk¿TR‰¿qªÈUÍê/õ›R2GÊh"€5¿šÐTÑ«MI²$^ÓÑî[-ÞÞí:*,ØÜëX &}êvÐæ"Yêúd—CnuZÜ»d5nGꡯʢ±À •%aPd<‚ðØÂ# +â‘×`=¼p¤G˜ð`*„óqÀ À<|ONÎÎÎÎ À^´—˜0]àE} €‰Ú×7˜èÜ`¢p€‰ èÎ0!ÁKX+†ü,!<ì1Q˜‹ç›Z#eÈwüÅ0è®s»nu,*ô½…ýÍ=E%첂°’à'[]³yÅ®ÛuIÕ(?ñ7Ü0ðãEe?â€IþkoYrâHç{}ßH¾E©²$b¢näØÌ{V#º ò#Ú½s«C{FàëkÜßôn³kù®Í%·ñÇk–ßä†ë /lc=äív7$Õôžûµ06÷Û.]ßí¨F¤Ot›“²Ò­–ñ4*þƒÞ\ßçá×±°³»f};’Ô½»U¨Í¶ÓÕt nlme/data/Phenobarb.rda0000644000176000001440000001336610132476007014547 0ustar ripleyusers‹íKŒÇyÇgÉ%)R”,YŠ#)¶³z„"%†Ú©WÏð!6—´(:|ˆK®ø¦vv¹”»Ä.©H@ðÀ€¾:'!| Sn ŸtòM@!|p  ˆàXÎrû«úm×Lsºgf9Œ¥…J_WMUýëù«êžæÔ䡳jËÙ-µZm]mdC­62º|9ºnù#µÚÓ›—íæ·Þ››_˜i-ÎÔj›žZØ´üßcËñÿcùz¬¢ÛÖ‡{´÷bncî¥>ÜS}º×út;àþ´·µÀ½Ú§s}ºoÀ}¯G— ÈýyŸî¹>ÝŸ À½Ò‡ûîÜã÷q܇Û= §ìvUt/—pëÄméàÖ÷áž÷H÷G]ܳ%œ©àþ¤·£O÷ýºzî[ÜÓ%ÝHI·YÜwúpUtV¹' \³7Þ§Û3@÷BÎöé¶wqªG·©‹]åž©èžïÃ5ús¹üÆësïÏ]_Z}"ëÉÑ{¡ëŒòWªá¯ô¸¿².ÄóW#6|®tÈÄè]Ó'Aõzˆ’*’U“„ŒCŠºñÙ…MøP cBÆ!Ì’]ø´NeCbÔ,Ä«ûâ„h6|h}ØH(fȶ‚¦%²¡”:„©ÐuŸb¤‚ˆz$Äh:\YZ„Zч¡Luº)݆\LÐP!?; ± ³×[K~„­“h›¯Ì-Î]ïÆ«­Ù[ ‹ËW_-‡<~ïFrÿ_]ù[3û?µ•¿¯ýõ'÷þ~ñÀìZ÷_l¿Ð+ÜþFÚwXvXõööA÷óÃf«¶×Éü–ýÏŸÞûûû¯½}Ðí>ìyÛa·ÿ°¹ù°Øaõÿÿʸ¶íq?“>’¥àvs6~»ÿsY‡R›n•þZ#»ÿ+ÑëÓ¶µkÙù;¬yíCÒ­2>l÷ÿVx1d›ŽJ¿Øí~l­ùÞÍ{Zd4Ÿ+Û²û–Aë2d‡~îí¯¤½ÖÊôO:*ü*iØz8ìy5ìý~‘Çë×Åö˽ßè·Ÿÿ]ÊÙ´–å¿Vvhüò¼ZõBV·/²b·¹×ëËQý¸ªõónÃ]¯eö®ÊË E®ß2trÃèÿAŒ…A¸~æÍj7ÌqyÏ•}™â~nØ}x¿qßÏËDëäÑÆ^läóq׊?UÊÛ-¯ÑîAÍŸ~çÿ ÚÖ»N/Ó•uÆÿ YèÇo?s½êÜ+3ÙeÝ ×Á~Æßð7éuŽ{Wµ½†Øo÷Þ–Y÷{yAfKü>Qx?(¼1ÅÛDþ…ðZQx *¼ý³ê!y1g½—*ó.N¸‡Ôº÷ûÆ}ãþðÝ ö´Ã®ÃZ×ïasÃnÓa»oÚèÁ´éZi¬uß3þÿ»?Ð>ÎÝC¬“üú½cþaôõ}+×ëVíÿGŠ_¾¯É_êí±;™û¦„Ïb¦“c™:•}¹sVüÄ^«­þ ù?!v\ìùçø(öÄÝ̾%þSbß{NìE±ïˆþMN7¼Dö²ØDês@ò?,öØÏV¾ÌI'¥~§?“úIº¸~—½žä7ýoòeŒèÊ—iév‰×8šùdß§onÍü^÷˜„ŸÌÞÚHO‹=#ö¼ØKb§ÏåôBû=±b}ÿ“úÿd-ª§Ø µŽõl«ßËÙ—PiòI¾~‡ÅV­ßåY¼é³|[¿ì\Ïm^WÚuBúíÍg³ðãÛ¤?—²|'%ÿ©§d¼Š½ ö²Øéeég²š^ùÇ|¿ú—9B½?Îü²r¦‡Å{ò×Yù&¯gö´øÏˆ=/ö’Øé÷³r·²oÓ™·WlÐ÷/?l“r8?®Ä{ìœèÿsfOÿ\ô¥ŸÎH¿œ{Iì´ÌçÖ¿ˆý4³K?ʷâŸ5óÕ4ÿÉç°”ó˜Ø“¢ò“¨bÏ‹½$vZòmýk®þ]çñÑ»¹qÆ‹Ÿ¯ˆ |ÿ›2~*Ï‹¿“vûIæ_ HÍë6ÅNˆNàªØãb'ÅNI¼³â¿ ö²ôÏ´Ôwf,³³evn,¯¿NÚq`óôÓˆC7¥ü|ý2³‹+o£ü‚vr8' ±2_}9Nþ8+ß”Ä?+œ¼ ö²Xßîaž¸ü8y!jÿ]Ro+ó#•ö|CìQ‰wTü'¥ýO‹=#ö¼ØKb§³…,mý“ôƒÔgv<ß1—S±~ü†õU¬“Oå¹åû¡€ÏéŒøg§óú»Œƒx=:)ýÆÁÇyÆAÔÿ\Ì÷¿_÷_æ¡oÉ'¬Sâ÷íÖcÏo ü.j‡»ùv(êxôûœi¾?<ÎHyŠúa:Ò}BÚ{LÚÿ5±{åóƒÒGÄž{JæÉÛRÏsâ¿(þ‹âGü­Í²~Iþ7ä×Oßψõû0_¿;r'_þmb=C¿eõLK½ýþâäGb?‹ÚÍŸÏ¢v~¶òºáår_Žçº”û‡²îÅûÆSR®nûÇ–ØáZ Š„{ëÇ’z[ñ'2O¼’}ˆOÇ¥~=ŒÇÕÛe¶hž_žÎ¬g-_"ù¼h}œö»¾ŸeÖÏ/?®}ÿ\ø(—Øÿl—ñê+ã-Ìßhÿ#ë}ÜŽÁïÛÓ—{"Í•7Äg¥»Ä¿[¸~PÆË±'ÄN ϦĞ•r_{Y§¥Ü×óófþ¶‚qèËm¥~^„ý¾´SàŠÔ/âZÈ×ÏÏïˆmç2žü}Ò[ù–,Ü—‡u¾`}ŸÊÚ!”Ãÿã‹]bå“t؃RáDzÂ×ënf§Äž½›¯Ÿ·mý-þ¢u0ì‡Äß…»éRN¶}äûgb[4OÅNÊø*º_ëž¿_îΊöËÎ÷ƒ/K¾þ¾%ì—ýþ+ZO‹=#6ì¿dÜ^òãöš¬¿¿}ñ_ÿU±KWró0ü£’bb'¤œoŠ=.vRê?%þ³²ß¹à­´ïeñOË~îæ¹ý™ŸOa<<.ºODýæí÷¡°|â÷ó Ûxi+ϼ®·~}óºñþ¤m_"þ¢ýÉ%±þ>´•¥íþ'Þ÷úuѯga.z‡£ò?&ãõE¿¯‰Ý#üØ'ö ìŽˆ=!éNˆRöCSbÏŠ½ði~ýí:nÅFã6¤÷<7¹à0ÙÇyî{þ4â pqRî§Ä†ûò´cþéóq=üz÷y~~ÇÏ%Ûž»Èü>/Ÿ‡çtv^_ÃxŽ×÷«Ñú.ùøçƒ…÷•c™?¬óÒ3çD?{ŽîŸïüíÊóæMÿ0¨ôòÛùýzÙÅVß–îõH×σ’¶jº_E~¿+°eã¦ÛÕóQ™¶l¼ÂtHÏs¹À–×5½Žüë¥|]lÕø…é+Ö{PíPØÏÿ~ÕtqüÂrTåA¯ ÷§%Ûkwäß"óÇïs½¿Oçü~ííÆèsñÚ†ü]Tÿ²ézÕ+ ßoï¶þt?øu{{T¿Z#Næçòý_¶½û'!½‰Ê#þn?:âWü±Ÿ.¤I>©K¾kÍÏùÝ·nýN.6„ûûÞmÙ|â}XÛ~ÌϋȆÏGþïK¼.¶jü¶tþ¹œØžJü—ªÙ¢ñX:]ÔnáGY¢rwûQŸ_‡jy>¯•û<øOÞÉâùï#â|Þ5Ý;Ë_Òާ._¢ïM{Ýîí2.›=ò7¯=r¼|=dý‰ú'Õùþ\k›¦Ñýـǫÿ÷¥ã¿žÕßÿ;0Âóþ¾Ë5Ñ™³©Šú£ˆ£ñº£ÊÕÓÿ{ ¶ð^¥¯ôÈÃW£ûÁ‚u1­x?¹'ºÿz5j§ñû×'5ïÿäýäö|*ò­Ýìèq?uèÇùv?´-›çò}öüüJU:Íù9õë‘—¯´û[_öV.ùw´Åçp%÷íé¢~/¸ìšO´ÿ*¯_°®ê’ûæh¿Âø(èŸ}œÙ×9~ûøù¢¯u±èycÑ<¨Êƒb.äïî?ÎÒ=ý­‡mÏ—]¯ûÛm½ígeã(>’u¾ucÎɺÉÿ ä©Û397{Ëÿ^äµáÀÍw[‹âydÅsdÞÿZäè­k7æüõ•…¥p=»0?Én^\ø«]«¤ïýÎÌZþØevÅù½Nµåìßpú-'Ýr¬.'‡ƒ{WÈËÁ\ÌIÜËY»Šó…9º7h(Nì z̹ʜpÌÆœâËÆœ"ÌÉÅœ¼êˆeŽbîpv3§(sP³á(hN`œuþðâÂí›sWµnµ$ô±ù«í¾Û´åÊòõ®«‹­•—V¿ °éêÂâÛ×—#®ßXë|0 Qr)·îúÁüû׿oÌÍßZöÿ®¶rrMø|äojÙ¹8>@ÞEX Û¸:â_dz—ra¼±"òUT˜×[3s×—–/žÊæj0z:{;buØó§æoß»ùÞÜüÂLkqæÚ­Öõ±{%\®ÍbëÖµ…ùLb4>Îgäña‡‚l¸=íVa9¶¿·¸# Û¸ýö»¯ÝÑ“Øú7¦Ž/ç°>nŒ¥…Û‹³m¾z{~ö^½Æ¶°cìFëƒíì›oíZ¼1¶oìôäÔvHÛþ.Êî^j¿•WwÜúåL²²>ùû¸V2^ÜRã §¸ø[WN<ݵ2\—ÚãÖ¾ú?ä•¢’§nlme/data/Assay.rda0000644000176000001440000000221410132476006013714 0ustar ripleyusers‹Ý–LeÇïÚkÆ`2¢›®5Ùda²q?ãô#`˜!’[{Åfm] £LQ\Ô tÆ YÄË–l#8§t‚ÉÀ‘9˜„ £Œ¥3ˆ *[:¶ï³ö¨Qÿ"±É{ï·ÏûÞóyß'ÏûÜ»3§˜Ž)Ž!BC:‚ )ERåADR´Òë²NÞMQ‰K#J¿Zé·û_X™F®L ŠÞ&T 6§b]Xµd%i,ÒÕA4Ùx§zz”(™I0ÿê-¼É%JŠò…D9Òj"EE¡Qš.BÓGh+Ä]Ššæf0PzN‹ÝX˜°ÀÑ#,,/Zì…üÇøjBÖ­ûÛÂâ« M×ðf°`±àþMX©¸¥°Ê£ùÆw~,Ÿï›/n{¥J›?©îC#©}·v_ASdœwA#Êí¹ÎM[‡P—gÇÌÕtn]éñ©Á<<Ž<ߟ”[w–[gë>Ÿ?#¡î¢÷Î$ V=³W8ôòl$š³®Å¢éCÎH…¨µäƒNƒÇ†în|/óÁOÑxÃï Msftù… h2Ûtîó£¿L“èaÇ9xrý¡¾øð»ý}bpé¡[HÌËîË]Vo3˜•5X]î€J½[ÒÁ»6¯¨@q­UCb…dTŒ– ‡Ée†”ªÍ;_•RµÅààÓ$»áCá΢ÜÍÁ=,ªÜ‘UÊãÏà`hx´Š“@0âo.¯qŠcÅCܺ©—ë¿Ð¥ùó¹|.áû «fên nlme/data/BodyWeight.rda0000644000176000001440000000247710132476005014713 0ustar ripleyusers‹í˜WWGÇGaD N/V:$Ž‚±MªcÅ;ÅibÒY# +‘VBH€Ò+é=!Ýé<æ1yä#ðü˜srlòé? ;B9Þ<ùA>þqgïÞ¹sï¬æîì ô ÷ø‡ýB·p5áò¢éuãKˆíMþÉpîH$6v,#Dc‡¼ÿm+!S”ÿ…’!ʵŠLñ:5B \ÖäREŽÓÏ8íã´ÿi— Ú™ºd?³D;Ú›ŒÇ\¶K+^=n/ãJ­h’þSôŸZµç«üXþ–4©ú­iy3ßñvÊnͧ&­~ºöSó:®âiq)?Ýš|Hë¯$óOQ.mÝß§Vœêþ ^/kþ8ŽõÜ´ùÐç³j¾WjŒË¿j—æS ]!¥ÉnÍŽqy]d<óÔêúxE.Ðnþ”þ#»\¤Ý"ó^TùŒP¶kyÑn–~gWírŽqÌѾÄ4:`›àw@³šÐâ€Vœå€6´Ÿ>¶/?_<2‰O@«îJ­«G5v«ÆÕØ¥7«Æ^ÕèU›Øpﲬo±TÝV«Çjí¶Z{­Ö«Õ«Ý07&TÌnš5&ÓáH:æ¥/jŒf’i´NmZºN–cç8)agNÊè€\îuþð=U+Ò¶jaêQ¦®­…}I™F"¢–”W‡) •¯¼ƒ±D„mÏ€a©ûb‘Œæ­)œ *›×žšsùj”¥^½rä+¢|%*¥Z•UYÚd)”Q Îòxj;8œÎòëBp¸\.— .W€+ÁUàjp ¸t‚.p¸ì7¹y¸Èo3L³À L®@m¨TBn*Pìj¡@…·‚ÛÀí@n4îûAÜ ä¦ã.ÐúÜtò›On<î÷Ãà~ðxÈMÈÃ`<Áxò[ô1ð8x< žOƒgÀ0ÀQ0 P%ž¥ˆ‚1 ¿…càYðˆy'ß’@~Ã˃,ùÓÁ3xà" &ÁßÖ90ò@~ȃŽY 6J`,€EðŸÏÁàK° ¾_ƒoÀ·à;ð=øÈ3…ÁOàgð øü~å߯}¹$³™&Ã㫱Ò£Ét"7´~-Á~s2–Nš‰ˆ)çð¤(/Eë¾KNØæ\]j½Zãx9N›5¥“ÙT$Ügd j[Íhµ²y¬J壌¦ ¹°mnÄš)6®o¤³m]ËÂ*$e­osÂ=áJ•±é*Õ¦žõD2›Õ3 D³æh&–4;§» cºszgÀ4‚éD`_`p`¨¿‹sxRó&Cÿðææ‡ã“J¨ëÕï 8†Ò/6Þþzô-å-Y°ü»›¨¶§þ¿…¥Ršnlme/data/Machines.rda0000644000176000001440000000127310132476004014365 0ustar ripleyusers‹Í•Ín1ǽÙ´é‡åÂLjØÞ´ÜhZ‘d“ å¸$ˆšì¢Íª„Ð(À pâÆ‰Synœx œõxâl‚Ä¡,Mü·w<¿ñÈvÚÇg´pV „˜ÄÈbØBÚ¦ø1¹³-ú­zÐyÝÂ!ù1¶D¿'úòÂQ3S³œf–fŽf†fÿYœ•ý;ƒpÄîí[ÒÓ^Ìe%¨\‰’L 73×#Ò¯|œtÃ$ìÂÐéqœ5Ó*nÜ™7dÖÍØ¢:æ b©²=Râ±O¤«¥\MŲ÷Åòj$m^­—6¯vy-Úw¯ú Æ™ùø7î^‰öÑ«³´yUø^»/ý«ªÁwˆWý,ǧ°îâ?½’ñš»2Nó™ì}àÕÈïŠ_ÿ ûp|à´°^ŃøMÈ×®ïÉõþ 9_ø'àWøþOè¯!Ÿ/ÇW¨¬kB-Ø_ëŒÁÏw ÏËÕ}µa¾ ãÖ7ÈWÕâ5d¾Ù+Ãp´<ò.>“ó0Q^&µbÔ‰“0s@l8 ûQ¯wšÄ“7a÷80»m˜Üyµ6Uè ]ì%"¥LšÛIü¶¨§Z^{èÚsÀõwaõ59TâH‰‡ ÌÒT%TCÅQ¹¨Ê¨Q¡BEEEEEEEEEECCCCCCCCCCGGGGGGGGGG†‹ .2\d¸Ú´éÐV®Ä"‘Pš¹ó-ŠPK7ˆEi¥n]Ç F¶Ùq âÀŸaÓ%üö¨˜±}ÎûÆ'u…Ü.@²¥é93sçþüïƒ`ò9¼*QÛéý]“xùxò9¼ôËøóëaEêØ¨ýÙ4Î}©_®¿#篛úÛ¦ê›}m¿©žÇ»âÝÓãÆÛ–ëµßº¿!ûZ_ã•9ǯJÔýHÚÝïšm/çu\5n›~éþ–Ô×ñ¸.ÇïÈþ‡Òþ¶9¯ó<ÏÑñÒúv<פFO{Ÿ›¦.î×o59®ó£óuOâ-i¯ópË´×~c>Ís¡±$uªfþnÊþ-3?ÚïuÓÝ·ë ýÒñ2ó©ëM篮¾œ×qÐz:^›¦¾}žì/XúüÛçÃ8sÆÑŽÖ»qõùÜ‘:WL´ýÐz¶?ú\ÕÌ}êsiãU3NZÇöëÂüN£ýÕ¾×è¶ôWûЬ}3|ñ]«y*»•‡Ó–æOÛ]Ík'ÓïêLÉKýü‡ýóe_½û·“$Õ$“dÅ?@æ#sÈd!²YŒ,A–"ƒá`8†ƒá`8†ƒá`8ŒF#€À`0ŒF#„Âa„0B!ŒF#„Áˆ`D0"ŒF#‚Áˆ`Ä0b1ŒF #†ÈaÄ0b ŒF#‘ÀH`$0 ŒF #…‘ÂHa¤0R)ŒF #…‘ÁÈ`d02Œ F#ƒ‘ÁÈÔ(ûL}¦ŽiÀ4d1™&LS¦Ô|j>5ŸšOͧæSó©ùÔ|j>5GÍQsÔ5GÍQsÔ5GÍQ ¨Ôjµ€Z@- P ¨ÔBj!µZH-¤R ©…ÔBj!µˆZD-¢Q‹¨EÔ"jµˆZD-¦S‹©ÅÔbj1µ˜ZL-¦SK¨%Ôj µ„ZB-¡–PK¨%ÔRj)µ”ZJ-¥–RK©¥ÔRj)µŒZF-£–Q˨eÔ&?HÎËY–S[½îã~>ü¾uT¼`4äàÆÉ…CëGE¾Üotí«Fí8ïw‡¢a¹ê½ù«T6™¹rsÿQïe»Ÿ÷º­^ñžã½ö&ßµâ|égoú%néÂËÎäpõ|ÛŸL[yIºØð-Š­Ùë§/\“’mææ7¤O_µÅ¥Õéåÿrj#vwm4½tk4݇—G¼Ñʹo¼ßòBy¡_ÕNãÅäXÚ¥™{¸;Õú Ýk¶êN3ÿ6Ï;õvï¤58mç=Óxç‹NžÕeÒê“¿ŽÍ¹¹Ò™&?¾ážV‡½öé¼[ZÛí¶{üƒ=;\»Ý“G½…ÄͼÔêïOÖÁyxÝßw{ï6àå/Ÿ}]e;ƒ|Øo¶L§êÇÃ^s<Ô»g{õnãl÷ì“z¯±ßïÖ?«?}òìÑž<­¯Mµqo½¿ääùåP.ŠLïùÆÈŽú¤ðl§¹þÿfßG nlme/data/Earthquake.rda0000644000176000001440000000435310132476004014732 0ustar ripleyusers‹íY p”ÕÞ½ Ä@) (Z& 0I[`ÿÿn+Þ–òj¥”: ›dC‚ÉnÜ,ˆŠVÇ÷k:­£ZÛB±¼Š6¥Lš:Ô†G@eˆµ"2Œ0Ø:Œ:ŽÕZµÿã;çlþ C騹{î=çüç;çÜsïÿ¸ ª™%‹J€ ‡ÁB»[¨ì¿` 0f˜MKj’Ù\Óõ+’×¥âÑ6ÇV+nÓNO묚Êk¾fãŠNÓ‹© `s3vžÝ†ŸA+ý˜6Â×¾0€6Òn_çüžï—žvÿót,ò0hùëC‘·qÀ=Wèð»_ ÿÏš"þñ°û:@Šü}ÞéÅÈÇ—~âü4:öûPÔ«ò¾=þL„‰Ð›z ì }¢åD!¯€©X—SaÇßú»§—ÀuÅÐæ‹Ã€¼ ôR%~4 úeÐè P Jûûqä6oL41ÛóûŠ·=yU©7®šâùwe¥§Wý;O^ƒ8¯‚½Zè×>zØ‹o&â¼ü‘®›jÀn þ|í¶Þñ\Ž—@ž\ãÑfȯ)ôê–zthéc¼”Öwó¿QÌwup®¿T‡q\Ÿ@^.ø ãZÄ;u:ã9Óz¡x¿ œ…/íu×`| â^ ½ïa\½èe=€Ê•m½¡Ì£ ÄQ ÿ¾ƒ}ƒòZ½¬g?ïE\ bó¿˜÷÷ÂþYµ ¯?¾ùm Ôæ¹”—þæì“ü;“4g[Kg8ÎÛ¨úÈ÷ å¿ÌÚÜÒöÿNªþmé÷Y³õÁ?x»³æ—úù¶u‡Jf\¯wzýÂ7_øç¦÷_×»/x8·}ù÷õ……NOï(ºôèôñkô–òwvþàÚ Ý…ë»ï•þñCóô^GýÖ÷ØÎ®Îšµû»ïÐOuÍã® ]úÉéãñÌÊ}zÿñÚ§ÆÜt\¿ì˜)W÷8Òùoê»ïùŠ*õ´~úvÄïìÒ; ï¶~cÏFÝ麳\ï9¹Êñ@ïŸá ·v”íþé¯Nè %.Cÿvþ´ú­6e;ØÒ#ÿ»à7åa›Ã^û¬ÞŽ8‰v¬³3³Y?q“ÀÍz“·§êGá÷oáç6È× ÏxÙîÇYï ðzÆ:Œ«õÖ©#œ ëØ{Òe\¨³³µw[B¯û÷öªÞ¾e¨1åäºÃq³í –ç€ç énÈ›€ó òMñ‘ü h+žÉcŠ—æacæÔ½þoxhî«_oXÌršçÍð‡òOó´Åç7Ù§<úóö êïGvUÙHúج§—Dõ-úè‰oÙ™§{ŽL²+¬Jo…ü^Ĺ ”â¦ú¢:¢º{8ÇàÏëð—ø'áÏkÇø˜î}ótÂa¿qçíòqy~qRÞ©Î_†Êû_¹è}°Kù9û¤· Ïb~Jó¹viÜú{É»—ê?ÀþnÄEëjêp-ê”ò¾y¤u¹ó¸õJõFy¿v‰ÿ~ÔÅ¡üÌ©lŽ“ö‰½XWû/vô_‘/Ú/¹ÝY¸é]¨Ãg÷lp,é?BNyØéTM˼NÖ£þÈíöÚw I?=Š›ä´Þ^:åš~zû§˜ß þ_ÃéQþ(mNx›þÔòßñïQ4ï¾<ú¿D¦“­)ú9„˜ó½c wP¼ ¹¾)—Êb8´¡¹=—Lד¸°=ÓÜB×%ëëS->„aÙÌ ÓòQ:q3)0¦tÃÒH7*ݘt-鯥›àn$$]Cº‚´ˆ E-"hþŒkI¿[„ªbܳø ¶Å_˜-ù,Ì=ŽNqpŠcS𠆄gcâlLR“ÔÄ$5–¤Æ’ÔXb×’ÔX’KÐ,A³Í4KÐâ‚´¸ EÅnTìFÅnTìFÅnLìÆÄn~v$ŠÈçSœ&“,³^œõâÂ㹊ó\ÅÙJœ­Äy®\ ®‚Ï}"¯%Ĉ„•£b4/ub!Ênòì)KxìºÕ÷4$ÿh…õò^ä CŽH8D9ª‘£.F•`Ë ¶œ)[N°å„„’ðC~HÂIø!©ÓÔSHê)$õ’d‡Í4CÐ A3Í4CÐ A3Í4CÐLA3Í4SÐLA3Í4SÐLA3-,haž%Ë?4ãùb$Å@Ê”c39pãJ`%¼»+ÞoÇ*"Rö€÷bÅ[±âXÉFÌ+Fñ‚Q¼^/Å«EñbQ²VxïQ¼õ(Þyo<**Û/cð®Ó÷ÜO& IN ‡Ï ùð’å„Sq)*ÞGU\x\Lö5ν=ä¿ÂB2"ݘ®ÍfV´¥ª“¹$¸ÃÓ}™ç-ëÃ*i°ûÓ³öí<Ðû6_ܘɶ®h± Ч{•^W–N«I¯lÎfÒ­©tÎp_/Y¼5Àﯽ3\fQ¾æjŸfÞÃJo xÀqq> øÏ¥“uî¹tÑhï²^AŒ«†É²Æl¦µ,ÕÖ\o»í<õR+u}Le“¹æLÚ(Ì{ßöÜ]EOãÆéæ\^–_×Záã”/«(’×þ }ÙzŸ¦"nlme/data/Milk.rda0000644000176000001440000001553510132476005013541 0ustar ripleyusers‹íÝK”]Y]ÇñJURy¿ UTl"v¶µß{«H  ‚ Ë&¡;ÍÊ"´é4ºœ1f¬S3fŒS3f¬':SL%û÷ÿþ³»³„Êeuºûf±¹çÞ:÷ü÷ÙÏ~œ*øÊ‹_ç¾zngggwçÄ©'ïžÜ½ÿ_'vvž9{ôæK7o}sgçôûŽïÿçÒÎΩqxñܧ^û§Ÿ;¼ðý¯=÷_?úþáùüËáÅôàßáågøåÿÞ‡/þøÁ‰‡—ŽÎúÚó‡—çÏ/=øú§/Íï_:z÷Ú?^üÁ3ßýÉçpxå•ÿ¯88•OåûôüùÙGñÏÎûÕÏOÏ8û3¿§Tî3ŸæõÎÌ8§gþNÍ뜙娟ïÏWÅ=«|ÌëÚ{•ó¼݇îÿܼÏs³ž¯Î|^šõyq^çÂ|¯ò¼0ÏW9½©ÝÌxf¾/Íó.Ïöa?ŸŸŸ™õ§ö©òP}]ùP»Óç—g~®Ìü¨_ÖÏçý_œç]žíJ×¹0óqqž§ë^ÑÏgþ.Ìû;£ûñt¾êñâ,ë'3?—~§ûSû=­ö3ÛµÊ[íóêüù¥YžÔÞç÷wíç—ç«ò«ö­zº¢×ùs½WùY~ç}[9ÍÏuÿÖ>f>Ô®ÎÎò>«òœ÷}AýI¾,Ÿ[ûšå~iyU>®Ìï©=é:æÚ’Oób^ÇQ;œïí¾•y]yzYõ­ú•‡óû*w+Wµ#Õ¯î_^Ì~aím-µ;Ýïòªû]û•ú¯õcµ›™¹­þnñÕ^Ô.åÚϼ_õ+sANÏrÒõÕÞô}Ý—õgÕ“úë|•æöz¾Ú—êE®Íþ'§å±µËy}O4ÎÌò“Ûû³œÎÌvsfÖ׾ʖ§ÚáÚÿÔ~ÕnÖr2‡äù<ïŒÆ™y}OÔßf>õ¹Þ+êWgÕŽ—qÉò¡~«¸×Ô5žÎzÓõÍ;•ߌ'OÍÏmÜžù8£v¶Œûk=˜ÿªoµ;õ7µKy8ËOó 7V®ºoµÅoëÿÊŸÚçŒcýüqó"õC9­þ'f{³~;¿§þvEã®|Ðx=ïÏ›å¤ò´~=ËQ×·¸‹ßÿTŽ—V—~sZíKíZñÔÞ5Ω=É«õsͧTÞªgÕÃâ­Ú‘ú³êßæ+*_}o™ÿÉ µOõÇuÞ¨v¡ùÒUÍWæ«Î_]’æ×|UùZ½ª¾çý^Ò|yæ×êAùÖë2ÿ¹<ówiÖ³Õ»®+Ÿ5ŸT»\Æ Í­_j<Ÿýý¬ÊYã­î_÷9ϳúZÆE+çÅAëwËø½Î3õj÷«ö¤ö©~£úQ9i\™åaþÊÅѸ¢ùö<ñÑÆ‰9®ÊGsr™/¨?ê:v¿*wåCõ²ø¢rU>å‹Ý·\Ò{µ+•æ‹ó:Z/(®êOë… ‹ã6Zúæ/ªÝ—§v¨v;¯£ù³ú‡êÍÊMï•O­ÿT^rIÎèóÙot¿rÏÆ³eýhízæó}rVãÆ:_Òý-ã³Í[´^Ðõå“ú…ÖcZ—,ëP9e¾ÍüØúq–·Ü·÷òx¶_+ÇYÿ§æ÷¯jÕzWýOõ òSÿT{^ü°ö2_ÕOí>—yÄ:ßV=XûÔ®y¬ÊßœT=-ëu<·ü-ñå¡ÊQëÛ§Yòió@íÇ,ûAj7ú\íSóu]Ïöäª^^¾·¶½¿2ó¥õ„ÊÍÖrA÷«~¹ös¹¥v«õžæeš¿.ûKëúdÝo±|Ïv­rV;Ð|@å¾®_Ï­ùU¿ŸßÓºUõkû©Ëþì:µýfµoÍ×䣯›¥Öú°ûõ¨úW9­×]×QöªñnæÓæQZ÷/ýÝæWjßÚOU9jž¯y‹ÆÅÅI[çÈÝÿ,7'Õ®ä°öûÕßä’üÒûe¼Sµçó<ÛÇYæÉš/i¾jõ¼ô?s^ë]õ]Oå¡uΗKë~ØŒ³¿¬Ç­Êƒy}ëËyæ’|×üTûôòe¾?½ì£ìk>¯yžÎ_Æóyµµû×úSë ík(*÷Oû÷—wVGtWµ?¶\÷üR¿æƒú³Òø­~²´›¯/ånÏŸTZwés•ßcÖGÿä§­ãÿm~¬rUûÔúYë9µkµC¯ùô²ÿfëS*—ÇÍë–ý›/ëm•›ÕóR/šØ|M¯ê_3¾žcY}i\æ3æªÊO>-ã«­£–ýDÛ/ZÖêçë8mÏÙæýk\Ö<ÄÆiå{É—­ÿ5ï×zNý{­åú6ŸYæ5ûËúÖÖ½*w¯ûVûS?Xö•ôª~r~‰¯yŒ­[µ¯µìŸØ|IÏ5Î.ë1åûüâ§þ¨qeyÞ`ëåÙ_´Nµõ„¼Rû×8ªòXÖÛm½­zÓ¼S~ªÞ4/Ó¼Có¼Y^'uÿªŸåy€ÍS4Žé¹ÃÌ]_ã£ö•–u¨æëÚ·ýÞåù™æö{Öõ½õ'íW,ë7›Ÿ«þ4ïÕ:MîiüSûÖ¸?㫼ÔÏì>Õï—y›í‹-~¬Î+ßV®êÇòHÏ«f{R¹ÙühY'Øú@å§yá2ÿÕ¾‰ú‹Êý”æÑê_Ë:׿ ê?KûPy›ëÚWÐx¿Îæ÷l¼ZÖö{ËüО«É ùº·qLã®~ïCóv=ÿUy,íÂ|R?{ܾ€æÏëün¾ß›å~rž¯qPΪmþºì—Ù8±¬Ï¬¨^õ½y'g¹Ÿz̺Pí\¿cÏgûÖüñÔòA¿ÿ ŸkßÄÖzî¨ñFîÉwó~Ï~dÙÏ[ÛÕ:ÿÕïéè9¯y¼ô¯uÿBížgËo•§Ö%Ú¿Xž÷i\[ŸG¯ýÄö‹ä×òû¶/¤ú]ÖÏö{8rMóO•³|Ò8°ìOÙú`™ÏØsr•§ö'䆿gº®Æe_Øž«(?j¿K?Õõ4Ž›Wºù§}µ Í?õ{Cjoª'µ­ã_ûP˼uÝDZvªù‰ÚÝÒÖçjoç䀿EÙ§\¶ùðâžÚ•ç§ÿsæwGõ«ö7_Ÿ™¯˜¯œ¯×æë‡çëGæëÇæësóõãóõ“óõ…ùz0_Ã|ó5=|Ýæëí‰÷ÿ•ÃÓ–Ÿm½l(?ïðúØæë)Í—òó”ô£w{<ÕëÛÝžÞîøï¹~ö‹Î×Ó–Ÿ·'_owü§¥\¶åðh¾¶å±Í×qòõn÷´–ûÖõ·Î×ÖÏùú”´Ëm¾Þ™ùÚ–ÃS–¯§|ó½Ò>ß³íï))ÿm9Ì×M÷ÿwI}lóµÍ×{1_ÛrøÙòõ´åçí.§§®¾ÃûÃSWžï’ûü…õ#åãrßowü§Í¯÷L¾ž¶ü¼CÝÚ–Ã|}ÊÊagçôÅ£ßç¼ð«L'7˜öŽ™Nl(]Ù`úåc¦KJØPº°Áô¾ ¦ËLïÿ9ÓÅc¦Ýc¦³ON=aÚß`zfƒé—6˜Îo(~Âô+LW™Îm0y‚ô[LaƒéÚSºÁôÁc¦_ß`úÝ ¦_Û@úð¤O3}ä ÒÇ6˜ž;fúÐS>fJJJ_Ú`úà ¦ßÛ`:Ü`úÂÓ3• ¦Ïn( ¦Ï?Aú£c¦/#½ø©3õ'HuƒéOÎô¹'L¿¿Áôé ¦?Ø`ú“ ¥¿8fúÌÓ§Ž™þlƒéÏ—ùÿ)Ú¿uã[7n½~ÿÓ+Kéäѧ{Ÿ9Èv8î:–ã£ÏÝ5£¿¾Ï§;ÿÀŲÒ?ú¼¹óÝçÁ}Ýñ¿¦Ï›‹Kõsù=Jp›Ú£,÷Èâ%¶G!íQ.{„ˆ|zÀ§.„ûŸRç”åU¾GIîQ0{Ô÷Õ±GiíQ{”ÿÕ»Giî=¬8ß;O½tëúëꜻó¼Ówî¾|ãî—çÛýW®¿tïÎÝûGÿëžcljß›¶i›¶i›¶iÓé¸Ïü¶i›¶i›¶i›Þ+鸿ÿµMÛ´MÛ´MÛô.KG;¥»?›£{Ú ýúõ»·n|g¾»øðÝ'n½ñÚÍÛ¯ë{wÿ{ºÀ‰·ÚN}t3ööõWoh3öäüðôkwïÜ»qóö|{ò¯n¾zcï}öηõñ‹7oÜ[.wöîo¿à.yJÛ'´7|BûÅ'´!}BûÕ'´í|BÛË'´|B[Ö'tÁ]Û¯Þµ½ï]ی޵íî]ۇߵmø]ۦߵMí]ÛßµÝø]Ûkßµmù]ÛßµG»¶å¾k{ö»¶G¾k›á»ÑbD‹‘,F²Éb$‹‘,F²Éb$‹‘,F²Ùbd‹‘-F¶Ùbd‹‘-F¶Ùbd‹Q,F±Åb‹Q,F±Åb‹Q,F±ÕbT‹Q-FµÕbT‹Q-FµÕbT‹Ñ,F³Íb4‹Ñ,F³Íb4‹Ñ,F³Ýbt‹Ñ-F·Ýbt‹Ñ-F·Ýbt‹1,ưÃb ‹1,ưÃb ‹1,ư§Uáà€ÃÀaä0q˜9,V‡C¢ñˆ*ð¼+ð*ð+ðø-ðø-ð|.ð8+ð@,ð$.ð -ðP.ð@,ðx6ðÌ-ðÔ.ð˜,ð@,D¢E¢%¢%¢%¢%¢%¢%¢%¢%¢%¢%¢e¢e¢e¢e¢e¢e¢e¢e¢e¢e¢¢¢¢¢¢¢¢¢¢¢U¢U¢U¢U¢U¢U¢U¢U¢U¢U¢5¢5¢5¢5¢5¢5¢5¢5¢5¢5¢u¢u¢u¢u¢u¢u¢u¢u¢u¢u¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢aIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–D,‰X±$bIÄ’ˆ%K"–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÂ’„% K–$,IX’°$aIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–d,ÉX’±$cIÆ’Œ%K2–,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÁ’‚%K –,)XR°¤`IÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–T,©XR±¤bIÅ’Š%K*–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÃ’†% K–4,iXÒ°¤aIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:–t,éXÒ±¤cIÇ’Ž%K:– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d`ÉÀ’%K– ,X2°d˜%'ÃartÜqtÇÉgw\ÜquÇÍwwìâ7¸¸ÁÅ .npqƒ‹\Üàâ7¸¸ÑÅ.ntq£‹]ÜèâF7º¸ÑÅ.nrq“‹›\Üäâ&7¹¸ÉÅM.nrq“‹›]Üìâf7»¸ÙÅÍ.nvq³‹›]Üìâ·¸¸ÅÅ-.nqq‹‹[\Üââ·¸¸ÕÅ­.nuq«‹[]ÜêâV·º¸ÕÅ­.nsq›‹Û\Üæâ6·¹¸ÍÅm.nsq›‹Û]Üîâv·»¸ÝÅí.nwq»‹Û]Üîâw¸¸ÃÅ.îpq‡‹;\Üáâ×yœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyœWÁyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑyWÑy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œWÉy•œW“Øÿ©ëÉù³K·_¹ýù»wÞxíÆË/^¿w}~zñö+oþðü7Þôѹ—ï¿ðÊÝëGðúÈ_¶ž~åÎÝW߸uÿĽý·þ+[Nyä›^øÜíoݼ{çö«7nß»ÿþvü®ýüÄßï<üŸÃ8ñ¦?¿}ðñ¾?÷ï–sçßæ>òÙÿÑ}ãMî{ç{7îþÌ÷pú§ä÷ÌO×Ðÿþ÷M1öo]ÿúƒÿõÕý÷?üÆ#Þw”ák¯ß¼ýÒk/]¿õ­›·¿±œñì_>¼ýk/ݹ}ï~‘]»óʵWoÞúæµ×¯¿úÚ­Y/'•ñ]•Ìßèà;oußoܾyïqY:ýÜ·oÜøæëÏ/ï=÷ÑçÖ`ÓÿVÐçËB¿nlme/data/Wheat.rda0000644000176000001440000000170410132476010013702 0ustar ripleyusers‹ r‰0âŠàb```b`de``d2Y˜€#ƒ'f ÏHM,a``Éi^ mրЙÑ0#fAìh˜ s¢av4̆yÐ07æBÅ(ždËI-KÍ)Š @t³€Da CÃÆ01La 3Ãư„1Ì¡ &C#8ËÎ2@ñäœÄb˜[˜ ÊØó‹RR‹RS \¶´Ää’ü" ëP„%* `@3Ú„Æ´iÚÒðx€ò ´”V€Ò£ò4•‡Ç×£SáËÛ]f/}üÃAÈjÒbÖ`5ñ–Æ|†Œ;ºå†ýGY&løT½é¿ƒ”àvñˆG’²M+'s?¸oÿ.WzßK¾í[Ïáw|%³†ÃÐA¤âÊßÏÛÜDŒtùÂX$ä@ÌSí“ó/KpÐæ˜ÅTªêæ ¾œyýö—Šl³®èØÌwP9™½³§NÃAûʵ…‰O¾;HŸýÊzáW¤ƒŒ´Ò…§ NªwŸÚ:èõœ‚³Rnÿ »Ú®;¨V˜ƒà ÑVÜxýöWý\Ó•v 3Üäç3îpP¼tþ¿£Z÷Ÿž”yâ ûʶ`ñu.QY³ï/žqP YïÏÛâë æf/"ĺÇAß.ÒÑ…¥}ŠÓ”´eœu–V9¨ìÝZüj³ƒ&{|þ%ùÏ’ÿ7F‡Û­vpÔä°½ÁAµÞ£þô$+MƽKçSÝŸ“³Ihç€[é¡;8 Ë7lÀD¦YOäÕñR‚=n©â¶uΧ¨¾”´“Ǩ€€òÓˆeݺ}ÙÞB'ÇÌ µtdD[Ý\ÈyaöˆØsdÛõ \)&¹2°T$-¸8–à ð™ßèÌ_B´¤Èíî/÷9b$ øV5Oµ%ÂxóŽ b!-H®5*€ó_þË@ÓڲŠתژ¸Ñ1”= ¥bâ¸ÔWWˆ¢Ñvø‘°‹¯CAÒA©9$ (6§/_ÓB Z*Ö̾"]Â}5eòOÖ<ÖÔ®1çvÿ­õ5CK"Ú‘bÃòµF Ðɤ“ÌOSÄ"À`’ß š´ªÝkGßL0YOÉΠº³ªmÇ&!)†°ÓkQ;î“Aò=ljP/@«½çÏÔ‚€e›Ãɹê%ÿ:æ‘ ñk{“,é ÉASŽ|BåEÄÖös9ˆ©Ö5`̆ ªL—9µµBL5Á–ýɉÌϼ¬bëáa“õ)%x¹QV²õ2KBquU¹ ¶}Çù‰!ùWŒÆä;»wP‘Ö‡­¢ÎǸ‰’ƒâ5âÅù¨uã'Êlú/ÞEv©0ëÖ4¿†p‚½­Y†xˆÜ™†àýZòƒ”®`öÆ%&‚Šaf›v-# B«K€µtÞ¸%ÛhÉb<È‘\I?ùß_QˆfùѾ9U#Ë|!ì ãÔW¸.B^àŽÀôÈþâmB¸ñ–§7ͱZ)cŽ-y—Ð;Ñb qÈ‚»òä@BDTÀõ‘°¼^€Ö´*M¤dõu!qi௤”²ÿ„Šx㌸=šb<òÆ.a~²cdù%In¹õ¹c¢¯~†ÓÖÞH[’k ñ›Ÿ¥•˜df/äjéYq@n_l˜›2dK|Ob ©[KV^Tã¶g†*û3’¿uTnŒFàÕ|¬f—SicnJÍ!†zSyÚ¢ŸŽ»G%JË(cu½š­bÈÅùIÒ›%~£Öß“*¨Æ.&Îo[4‰Ø~¯€)}§hÂÕ’ª#F¼! 2ñ*Fl*¹(“Þ9Èæ£¢–W»â+ç6û`_µ«S}âD¯|`£ÿør›ÝC³²&¦ƒžMbüSîŒrvuBBÊ…fºÔâ£Â–¨ŽÎQŸ'‰`_¥[ÕÓù ï­;Ѻ¼ì½æS^HM—n°;¼·¢Ð[ XÏ™¶hOJ¤°RVÓ4)š2¡åorëi.{L|€Eááö°h•@Y$ñÌØ}––"µýûT1òæ? UB¯ÃõâwÙúÊÓÄè  eÖTŽÄk·RPÄ’ÃR+œì !b-kfŒýíD™¼[üz»Š²‡vùÔ²Ìbb攽·ù|¢¦ïάîciÿPw26¶úÜG^5hìhUα6¹.:mæ ºÈŸ—gȚȕ[ù4©†ø6iýbÏc®Eæá¿Ú;ô'Œ÷øÏž¦ïhwo½øbvH‡r’`’øÔ•”ú¤6éŒÈ§ù¥l¤Ô8^ÎJg5&Ú¶v¦X3´ý¨0·´L9u¤‘Ϧÿ5ƒÖhœÏ=ñ¶©üvH kU|¾$‡–ÿqUÓv¼/©òòˆÔ“õÆä©É,xO“j°+*¯G)ÜTä–í{‰ÿ;|™¸lÈAÊá G#*’€˜ð‘LTÝÈÅÆ‹-ï­dÓ¬)hÏ2>¢³°"­wîŽ]püöÊêox0Ú†E­µ…÷m ér#êt‰^%Òº ‰ïP»¢‹fÛ»¼(ÿEûq{æo=“3*$ÿ‡t(Òå8 HÁ:û~LüA\&P6ƒÁO{þj0T,TÊWPœŒF@]ëhtJSÚÇ=ã]dP C':×°~"ð¶'—„á+Û¬ß: ê¼»[ÒÙÀª=âûËu¡‡7…ÓÍ$!ªh,©:r =“1.aÍ]Ý?Œ*Ü7Ϭ6 鶪ìz¼ƒh@7¬›0Wû+3ñØ\ ƒ£Gaݦßã7áˆÂ`ZŠ-§D½óÅÎÿÄ "D*/›VŠÎíbôÆL’¡¢yáé sAŸ+»ù&i©Å— J×àÁþó>‘C‚°Ze¢Ðätg<ŽƒŽ3¿BXÙEþ‘Cž¦+±Vüêr8ôxd·Û‹ñxJî*P7ö·& ï¿a¾Kœ9L]Y’^×»»›‡$}sè j£áSf$Xse˜ñSX¥iYje:ºü F;l @C Q¹`«¼@AÅœ,Ó;ß³˜ÊŠ4`QǬ•¶Ûa·µ—#}M4ù"`…*)všñFÝ‚/®Mnã݉¿ˆßâ»2¥ùS$ü#s]ßÀEÆt#ÞÖA²9ì}$Ÿž, ö„ 6‰í'œo·c…=wß*̆««I»,o ä…@Nr¼5,b$P4Ô9qçÃáš5çÕtÝ¡°¤IÏB[®@—fŠBEÕ:°S&0ñ®®Éóu5ia"TY”¤3p¹À›Qñx˜ÅKˆFIРE:ŸmReI‚^”Ì.I¶c‡Øâôrt5ɬ€Ç§î≧@ž9Í݈ïç`¿w¼²a€¦Æ…õ½|sKƒ ‹êí÷±W@‡"våI‚ç`†XÖöK‚éNî3¼­ðd ½èúpœ;µ[ï»ê,u@aÖQR³\Ç¢?ey/y¢UÖCaTE' dîÜÐ?vŽdèç¯yÒÐn8h4gp“c޲¤¿Æž­çÜsõ­ï’ë/{šFjì;R]IÏL~'œ‚Ì+íè+)P6Cð¦¦^ž´@ì¨ý Eˆ’\Ž—úHÄNëimìÿ•ŠwG¨ <÷h§?Óïh/ô3|¥G,Þ@Ô7|¶õ ¿Ï€(ßÄ©5èÏhœ0&0hÿnª@`gp«–TÓ‚r ÖÜö›jåc†ê(Ö6Ï`¢hÜc©<5Ä)‚ú‹ ÅIrvöÄžü=É–¸Nvᚢpm9Ð#é¯1r 1pi1dA«éïa‚~ž!vãHm5æÉ©FŸ®ð<<º¡T•ÒGÜÐ(FJÀ4|¦Çñ˜ûc MT}êxÙ°áF•N§…o¢‡,ä–ͥ淜MÜ0c Kè¸âTˆ½‘¦¬»rM§(pMÚ^îèJò7ìe ‹Pݬ£,ý/ñ‡)àêM­ˆ GÙ~±{—Gì%›rùCGàožò"h…’¯†oíFX×RÝ(¢i~RË©žøôì©9’˜y¦÷‰ ¬DµŠzÛ„:Ëqs !µº«b´Íu]’à¸ÁÔyÂÕoÝ•bÔ¸/·½R:u¾;¦T¡½´Î.Œ‹y]_¸ÌxZ¢öÝzîØ Réá®RWu‘•7Ù)Y”±Oå¾.xÙ6™ý¨Ö”¯::ç7Q¤±mëpñ*‘ÝÐ$ˆ¦=@G#f»&q·"tتÝóÊáe‹Ë#Cmˆ-LE2;U9ÇBœˆIÒu6Aä}ÄÕª`A߈èyÙ…ZÈʺ´% |8Ž¡²FQ3þHØKÛ`Ÿ-$$šÇ8á`€"\›[ðÂË‹Y1Íé¨l¥Å ÏÒnó:\½và*oF¤1_²îö£Î‡zVHáÃߣ쟷¨·+Äí†S­P#Þó±+^»à(µ/IñÉÅ1ºIëcäSæ`LÒ]3´}&nØÂm«!}FE á>‘3ÒhÎä3Å/Ãç…LkrIC)Fê\[Y÷5"1í×Ãâ¸ó)¥U…ó?O÷m(™Q#1õµÚF¶†è]ãU?=` 1E‰3¸hK‡Ôëìn§íQûšeõœ`¢Ùæ> ŸãnÒ6Ü\’@bñ£…0w{Z¥½¹ù­¯qÁ´–ð.B5®ûtÅ9[ñˆþ­FœMÔvhr‘¹|§÷[äŽIÒpŸw~ G1ù· ÅòÔLÒ\»•€jš$O:~T¿·Q"N~oûhåfÈ êUÚ Å—ëM"­7ß–ÚÈ~)N‹ÅÞ+û±w7œšç Ù_еSk½»É2¯Xã 1D„¦~ôæÌA’¸*ü ¤^qk£@íóˆzVÀ¦Ð?¢èTmˆŸn±•ºõ{NwQ†?ÅB.Ͳ2‘Ú“r·£Eæ:Ú;4z˜!íÁ_Çžï£9”¯Õ*ƒdBùø×`.¼mÃŒDý©|V݃olпÖDZ Ádlæµ,Ôp³Þ¸ÐºO$÷£íx®š&úزàW²zƒŸ0WFP%ã×0 Š‰xÓ|®}óÈË–àëõ¨Ì ¨N‰ÈC ;ED ‰MüÈH5â8sµóÀïögˆPê‘raÑÌßRý ÉÑ3ÆÖÍ¥³u «Qª¹¹Þcç+?Mf\Öíéw ’ÀóôÚXƒÈ5¦DÑ$œ1uE"^_m¢q©jg Ò À‘~â]õ-nœ«{Süoý3øaøÀÃòÖÒl.Ûm¤òêèæ›dømÉ]j5¼¥@¥!Yn«5u¦@ Tz3ì. !‹l’E8HêVs­+IÇ‹ÃRçõZ‰me;Z9| ­Þû\â… æRoë6(Úø´³a®_û±^4:&&ø¤>æ¹ a¹@}¢Þ+‰=/‹‘Ù¤,•ëæ>á)_žZöw÷ÙŠ)¹?›U_’UV=ÕÀ\ƒÄæB±;–ðq̾»º¬…ÄÀ+þ´9rŒ&WÑÊ|ùünË\Ê(`‘|%É« üúkæ¨M¸÷”B±)h©$Mä›—e2EûõÂûS# I©˜®?t˜§žu´ãEXvý¹Ðt”¬?íTÄ|\ —ÖaíPô‘aJD8¤b"¹wwàñºßtâË6ÊßïZ¹|tW»:Úïáx&Dõ† ”ƒóãÒޱ­‰ý¡‘ $å]FÂóp¯@Oüyn“¾"þ1¿)ìÉ줫žÔ¶v¾±´Õ+r3èÅÎã9…º$¡K<;ŽÕa'QPô·FòÙtkT¿<µ\ÍbM› +E— t2Ö"yLy'Š–e\ XSö²ÒMWªw‹e¾-Û#"Ùß®ƒ$ê‚uÛ@„úÅjfƒs]yþä‘€Nà,4Õ½þÙ.’'Ù•@·»çÕBEÈ?PçÛ¯ùÕu´úꜘ¿YSn’65ÅE0¬Î!„¾;ÓJµ‘ÏD ^ÇŠÈx5[».pì¹@Ï. žk9š”·6{“°ÇÄ)ÕÀ—lµÊéLÁLêä7¼0×ÉŠ/'œi}@×NA\¦Pµñö:›X>©Ý×WYåUH{ñ=Ôu’u¼Ú»9´çÂʇ$ç 2½ hý(.…f—ðo"Êhðæ@é8sýè²táj»Ÿ‘ñ×­ŽÀ}Ž“ ¬$¥Q#=²§*ChCÄ|”Kܹ.—¥Ëtµ<fT8w__?÷†Æ>cxãiÄYkG¥»cßItZÐ\t»YçrjP)ÝÓ”MʶT ¡<Èz?£5˜E}ZMÂwôùz×!Ê$_Zìb1—hÓúžj €fìû;õC«wöÖÆºC›Þ]Äú꿯y›èã$Gp½ ·_Òy®8àó^DBñÉï{u;w½° gÛpL¢‰Ú¨ Ä—T÷ §ôQlŽ ×dDîg¸å‘“ÉSe¢!™w™maaP¸ë;Æ2„þˆèiB4ú:•y‡x:e ÓþÂÄ›û¾ÊàÐê ¨p‰*fÙ©ÏŠ%†} ÿÚg­ U2ò‰Œ#õÕ¹ Œî’ÁeWW·×Y1ÃqyV—ÅA Sµm³‡¶¢¸i qì3u.¨Øó±d¦ ø¯Ë) t¨/f°»|GôPRz¬«Â••AvÛpÞpl¿Ü¦ß°LÛPÛD#Eù£û-Ú;Ò;Œ}R"Eì¸8ô8†õ¶¬…7ýˆM®…óê3"£çE…' [Éœ bJ0s u2½j]ˆT2Ùíá§J˜”GócyæÑŠ"(C]Ì4à¿ As4–¬¹ Ÿ³OÈ‘«üŒ6¡çl—ÓÜ/0˘·ä^¤_›hÔw>CÕ‰ÜnQ½«áS fš¬ÎJ?ðÅèi>±·åèn#ì@øê5púøˆ¤«Ù”ž‘ù ×2Ò“h"Öµ(&ZrÈð| Ëù°kƒ(Dµü`)K=ÃÁŒ¬³BJXàD¬ì‰*R† ÚÍEºûx8Ï ` læÖ¼®L-AE(Jñ¼ªÜ~-¯¸ÿ`ØFrÚuhm‚D-éøìدuŸ 7L1;b8þgºSL óçáØ~ÏP«‡ѧ´Ò4݃CVÒGk’â~ç¯|4áJ7^HŠäÿî4üRB:‘|®×`q*A¯•*k©‚AÀúpâì²ýZG}}ìÐ|ol¤w~±\hèI2€oöž;DxŠcR•qô4mcn£õÔü0 ªÊ÷UȦ¦ÔÙ$E=£ôú¹Þq¯©Zá´^ .5‚3Rº–9{¤²uîƒÖ’Û¿HÉGð”•Ę Vd0CK¼eî@”¾f\Ä 5öfm꣪»ÂG5ñŽ=:º(ÑjQnO`Nw#‘ZDÇ{"½N…Ëmzдë¯ÉR9¡q‚42Æüª¾ èýùP›ôr(Í·~Õ8ˆØ…O,éž7 WbHÀµ ;Þµ4$á„í„P™¥sGòÉd)B2+7a ÚæNÎÏ| ËøA¥ö¾¤SÖv`ü©ä™=Ý·ß&%Öo#([ƒBÔwÌþT2ö½Åצ(w߃- ;P}öHgñ¨>wX夫ƴ73ùŸÓ$IOõzÖzÉ.W’_ ?X²Â>69ŸÀ?õã+r§þ‹(#s§ÃA ­d"4ÍU:¬a6²²Ô˜\¼Λ¡€ÂÈñ§éÞi̶XHWƒ‘v¹ñeYñµ›ïÖÒ?i;Dµ,e*a;Ê0µÕ[ºoÐSþ!Œçñ¾Ð$—øŒÿA×`ÂzøÆ€µÙ¼ên±öZÜžá«Ï3yg)6*.g©ö¶ä¿B«ÝÈ;|®²ùå².÷çß°Umá0éKê§t1q¢£$‹zæECߪ9’N¬} z> ÔˆzŒáê[Ñ7'Îþå÷hÍK 5õþg2¸ìú¢$ …|  Yz:–ßx2wÚrûÀKUV’4ø%@M`#üóƒÏ ‚"sÞ´ÉòiÆfC…A’i_àt3›;C­é—Öƒlï¾·`§YjàÂx}••G¹ÀÊMS‰ê¿NO2…rvŸ[‰©;œÁJcÒFBU†›Ù86çŽÙ/Ö¾K«ìù•w+5µÛG\:­4ùŠg WÛF.üáH“g\àŽ¿ éMøß£š9K›ŠñÂy˜ÓË0Á2Žo¢74’J±Á}7Qq•1­’̇>§¡ãlþÊ›¬Ö¶Ñà (j°…­‚thÁLZÑéÏæâ¸ãH¹’[úår“ê?RµÄ’µtN(±n·Â‡é+b8ÊP]ï éö#ô“Eí$Þ¤q —žÙÎP2J/»”uÁ$ýˆ{BÎtªF%o{ä);UGä„}õP ÔrüìPrõ69âè‘’iVyÙ~ÊNX¡•†0FÔHí¢Š(£×Œ„^F¾÷{qòDs>2ÇÙ°Å_÷‚¦c¿øÈ€À>;VüËm)ý|`ëg¤ˆxRChÜ[uo0ë¨-î§K²Þ×ý;ôÆ1ø Žë–Öçîh,#u+ÜѺ©µÔØuó*À/à×r¸Bw%:òÔ¨VöñB·ã˜»¡¿oHTTbOr¾%±×[ð#¥eŸ¤ë‚EŒò  ˆ¾n:SdýÝ·œü0ƒ ÷…;p¨=*ûöB÷üRú–ÎCMó®ƒfp”XF³pŠã9‹¢‡2ûžCÓ‰v«O5:ûev\?ÎåÆ'wˆiyŽÐ¶$XÑ{û"®¬ÿ§.WsªÄÅtŒxssw=RÐYŸ=|󂯅ŽW‰rßÇ奴ðˆ¢cüÑ$¤¶ìA²ŽX¸äEd!;±ÔLE2ä–{_‰/³z•G£úâÿ:ËëäŠfvòb2ñ^6uÔÞÓëHjó$ÛËæâÜÔ]Q üS.`Æ|RÁ Oô8ð‘ió²U ý"¥ÕL­îrÕ3Åß/ÏGféó]/n* Áÿ¯Øz‡÷Ö[­ádƒAðzêAÁ6ÿMŽë5õ»U—¸ÒÝæDÈ;Múï&¥ž¹†6_•T‘Ráp‚¼Š®g—¡Iô#ß]!_e²›c×H:¢‚@cä 0Ê­$$æLÀUu¬+*¾9öoñ ŒÓtXüwbµ|³«xAPK±ÔŽÿÑ<¶hBT÷Ù_kÎÅÞ†êd'[òsVh m ÔðeÅRï®Y iNç›NOTÍçbIÚæÊBusn¦b•#”ývi%Ñ1ÚîÆ;<ÐàíY¾F³°éãøM4‘ÓF¾à „^^õ ÇxýV…ð]ä{1´ŒÌÀÈíThV6Lˆ¶Æ§£©‚™ óßñ‚Ȇik2ýÄx%ðgüe+í}¨XŽ—°_‘FÑöòÜF¨:Rùbí;ŽÔŽ8ã‚YCÖYöb¿+#Ri IZáÉÜRÃïÀg¯Ø3­3 [“nëågR¬Úsy?g˜°ÔY¨&w™š2Õ5² €MúÜÕºîiÚÃV¡¶.cþð/¹„_›zqÏ[àøu/nÁ'‡YÿbaÇŸ ¨#׎ŽÝ½«²?[×$«²wš(ºh3Œ^‹4M1Õ/+%i·nmº®™¸ÆúÖ×ÓÝ$&SOÍTSÖ3lˆõvˆ}eäô®ÛAÖHûDAÅ‹cæÿ JR¯/¤·æL#—ö½ÝsLžЊA|ŸZÁT°æ.žö‰¾ûçët\ªOêuÙ$y }ZâJP—Oœ>È@--jÌ,Ÿ¶Ê%À{ ”÷ç$8Ñbìö³)d¥Q6r¼nuÞ§„G¾èç% –ñŽ`#FؤMÈtúåãÕá“Iþ|Yˆw‰S Ùœâ¤?¦!íµsPãluèý£ØÔ^_òS¬¥)¢<ªÊþk§ÌΣê°·…ñHì¨ß6>l*>{üý@Š-jͰö£QÛæI¨-˜˜Á]þ`Ç ôÀz‚åMmœŒ´jX˜{ÝÎÈ,à‚ÐêIó¦m;¨]H(ÜX+ïgÀ‘KhÔÐӑ㋳w)MvÄÁ— MB]ïVŸ\®_w6`üi€Ù­“()ʈ¾æeËy6£WIØÚxVÒ5ÃÉÌü¦5œ©ùüË©b'ó ¢ zø{¸° °Ó‰ü´–¦ó-ìÍÃwÇ%e›4™)`ÁÄêx3ˆw—‰¦†‰#èØ0Þ@=Ót§xº=]"$ø,ã6]+­íÿ ~%¶CÊ¢Ù 5¦èÖ×(ëþ|xÞèT¢ðV»0â¹y F*oàmnÎ6Ýá1— ~Ws qùîgx^‘§âK«S-AäÜLNWæö= ›x݃ Æ-W7˜¨·sÜsÕ\×ÿŠ-¦}&äŒÜ9,_xÇVøˆ“­ekd g )%´Ošmše 1Š5F¬Ì‡ïPfjlÓ¦ÇO«Õ×5ÝêN“bóï×FÐäb!8¬ÖØÒVÐÆ‘ߌM+—eTcñÍ™8k0½1wš§ÑÉÙIB½^Ρ‚YÖS®üâeWÞô¹Ü[,0ö“áÆÖ”(Mu®Üß íŽ}hÿ`¬ɨPå ¶˜‰ Žû‰/+Ÿ¤ãÍ' DÏ+nÈýÈ­$*okDKÂøœÅ™Æ©3r¡ôPÿÜf¸—”¢s€7ÓP ÿoÊǶNXKöy«¦/ºåÈ¿½q‡µVSí%—ÇÕ¡3â+~©\³gWµwÒƒƒ€»õ ÚJ»hÿ9RtU<Ò¸õG E¹Õbcrû÷!ØÝC½ÉP]ê) Æd ÃŒc¸§=|ªVÍÊÿ-ˆ¿’¨Ÿ,ìüRHõˆdå "ÍK;¢þLõäöUR.8É„óü˜ƒŽjŸI\ˆZÒ¾¶!â=lÕùì ÌÝÁnIÒ .I‰“nf²{`¿2áóU<4i«®{ðe²Þ°ñÔ°‚ïpÕà®Án—+mæ)ná>x£ØP-=‚ñh²Ô±u>½ Vjw׿nQ3Mí‘9Eu¼1É'ñ¿xîÕn MçB䧃"g–\­NrÕ™ÝÊ%P?í>)· ˜·. qûŽ+ åÅú±F)IœPÑ@Á16Ä ÙìP»ŽŠU9ê×fö•Ì;NDùSÇlÓo›é8ÝŠ]NÞK“h^Ù’² ÓØyÔMS@ÿ7@a‚kd²Î¥³.ÈËïa„›_eÌ º{çr&H¹°w¨ËnsÙ¨?C»·e¸çÆè ›¼'E³±wß/úæÍ°Õ¯~¡ª¯ ïyàDœ"EtÕ°ßñ ¡Y÷ô@ïŒÛ;‹l`ÃêÜIˆŽ* ß\œ¤>ÌnÛ-¬Mù“ºAr¬¢€ƒ1oŸæïÍ„å2ýq%¹¨oU¥ò=¦Å›Ü˜q÷°Ët(øRuX9©Áˆ;×k§;Þ¦úË!,ë­CwV, |LÚä1ÙâŸna3â-möÁ¾3H ÿJ ¯×ÐÉ2•Šžüùì<*®CSYpà‹Ì¯¢wÄøG›#DàíÄCáê¿'šÏðŸ¦7aÝ<'û¹¿¨U\\]OÀŸ½nê·r‘ÞJ7ÛÚËÙ¸ªÄþË!Mెöß[ÉÙ¾?AºDú!Þ‹ÔÚ¤8X‹‚??só þ‹:c¡ûmŸ ¿)´͇7ÈI(N­¼Îz±®Ä¨[äC’å½g¢àkw˜”ŒkèI“^Ì2t÷ÛÐüá?}e¼Ž9ðÌÍ Ó‘aÜZ¸ÖÁ½diö0…+ŽG<¸¥Î™g"ï3a ]ï|EãPˆ«ÏØ9¸•Cl G¡G·‡eÄ[â…%:)¬—OC÷<‘Aìÿtp»H줱3ì/ß]ðÓ#î71ÃC³Òô´¼¯çBñ—£¯ »™KÔ³v³ hEª»“Eâ½–Cýøî“õJ#é²Ó-LAaHÏ;+óŸ©>žDâý¦Ø¥è2$‡gç8ãòjòâ’¼Éý ±“A]¶}ù@£;‰3†Þ©¡z£˜ç}:Òï—¬àg€¹°Q¼›»@åC•kõúÇÜâ™Â¿ºŠééV£øêèÍëª'Fƒ’|a/2é‚q] Ç^G%´=`ø×,/¬Ïͱê·à*¤^¶º ‘ ½8ùø’,f§JÃØÖwë0ÿØQ²Aü;1%›$UÈœl©-­-¢œ¤gn+s÷ÊL„“¨ûÓÎSb®˜,6GÍÙÑá±Çõ䈤„Ï ùá…TyÍzÎz+qdÜ-WÆæ›­2Ù¼þbö¡TŸ ¥w³3ßÜS3:Î/Eзņ¼a)Še¸Ûw!È;ÿõœ¼²â8Ow.0ÿÈäØªN Õ °à|¾ß‚"\p˜# xÝ©o³ŒÍ?‰s­‹{f[•Ö$ùê#¿e”7¹sPn}#ãûíIhê™ÏVŒ–*BHvB/l¡$‹ˆ\,—~^й‹SRÃÛÒ ‰}f²P¹>7z`¹Mï`]'é4úøM—¢Ÿ|†q’eL2ö|yGZ)DöéÛB·Ôç[ª9 ¨m "¡ðªï0 ‹ÐØAÉb¿ó$²oqH™c=›i\›¾µŸPZݨUå©Å_,fÙ›”jW"†#/8G7ÏþT¯òÅ+aè|¬þB2Çw®×ÈÝs‡`òYœÌCë³~!ª)“˜ö–aÆCŒkš«e•ýÝB‰ s/TKäP-±Ë¿¥ôÛwÔ!©"óA>¡²òÕY8/üÇõFÒ¶ÛLv|–ÇDò‹eª/œ2¿…\*K9¶\ Š•ãý¿IΜ•‹þ×uU_AðùQìh†jG±LÖÙÉN w,çZªß Q¼iË×abr™b.æî5´<¨!~WI¾$ü+ E~¡¿Jejñ,’9ÐUˆîê€2ûæCªžÛ??hpÿ%º š_;8õ7xÆÿêH]“®×«‹IiòY±*ñû9O"@©£çOÄ9–‘úïäÉKÌ£täÛ}c\Ñ”™u/`òë2ÕqlRwkì‡)xǺxßýLw—(ªY¡æ­EpˆH`ŒîáÒÂ`û!4ÏÝ-Q}¸ý¥ ÊÅ93Z¿ô»X —Ž®wúydFí¦ÊtA–4ÉGèI,\1Ô»5hÖY¾Óăþ‘ÕØ`m¶(C¦´~ä4Üö6žÌE»0lÅÂâ«q`ÝÇ+B€È'ãaî]Æ<ÊsüD¼-jüb”*ÄßpRãfö–nÕ ÃE}+Ôe ²•]Ò7,H¡_¡)«(¼“ä•í³oaž&ÙÍ¡›ZÞ>ÀÈß=T’7Ñ|¤õ@£Eº¬<þ—%Ít?œµU´°Ã¨¢{¹ëSoÙz™ÙÃôP›,L¦\ßnUE# Õ¢›Þ•Û¤»F!úÕ°¨ y_à ‘e±è5&Ë&ï[-¤^åÅ.˜µåè 'T]Ù×8,Â#f³, %½þ¯3,/yœã«F¥k—ª‡;HAÙÐc³\B¥Ô;³Ÿ6i˜ Ÿ;žxÙ ;T#º´÷"òKŠ·â°Äx¼ë7’+œéa1R‹„LaNÐ —eÖa¼ A¹ÃfÍwÑ3o±ù÷æú¤§Îi—¬$µ¶¥ÝNaµÞôIžæî«<Ú]„-f8Ø~›­áÅ…‡Æ9BÍ}u Ëù˜.İ.' a·MÕ6ÕBÌÁƒÎ†Ô­«¶5 ›.ÍG)'É1ߥēV@:ª¦ãwµAN½ö÷e¬‡¿ËÏÝ7 JS̈:øRÚnb6GP¡N~°a1éíê+¡Ìã~ÿʺÛžÝôFRhš5Èø h¶¡úÂx +§ÛäYƒ1Gj`J›HÑÓíKjû51C6éÓ=âæôZ^xE]‡YÏú¯›Ôg¡7Õ9¬}‡‚x+x}áž—D“‚‚´ÊÊ3äÚØr‹æÇqESÆ»Qsà £¥ÆáðwoWY®HÏ–¦Në]‹"Іå­†‰‚Û*/©¤£;Zü’‡³Þ8ÍËKv‚–\jKÒ_òr…«h\›xÌ?ø[¯¯¨§ã’Ì”ÃÀúÔ3ÊàÉä †l$÷8f…×}е½úÆi ÒÛºÍڋݯ*dvÐ|×½w‰Òoχøxø÷/ŠwÉÔª*ÍkpdQF’Þ8ïÁJü/æO”} ­òDK: ‡ *k˜4Ù­-—C“×óçKÏ]Ö•³)1rDÌà*­ Ý‚êàSÒ¤>óøØæBx:2¬ëq—ߥx·W“½_Cšz1ì"£ºKÄCÎlzò‹Ãã p"~dNU¥ÕKͬI؜ۺOˆ/®7¯¯EØùê‘+6µ-¼ºM`YhA—Ò Î ØýÜ@Ƥ-ÄŸã;m'ëü:‘¢鿞¢·^'ÿ¹úuyjŠ:µˆ45 *E©â¾Wsl=1<ŸÑ³‰w€//ƒK,Ô¬k´ÌJpûá†ÿ@8wA®Àƒõ=jìañ篪aœuAo€¯][©Çí Ðå˲K¬‘ƒ½„ ôÁpE6Ë8yygêÞ*Σa—ba·l'•É™1åï‰êunRqPÉË#“„YÛG…»CŽ^dP¯ Ì›ybž˜¢È_±Mà*9‘õ…&uæK`RÑš”¡máÉ€jÝUøµÙH˜¿‚.\†µ¶©>c!0„²© RF€Þºužë—âì8íUËrá.d|!„ØoYY6V›n'ûÂ8?š?’œŠfÖǽ PMSi!š1"œf‰1+C‡ssõ—»Ëxƒ¨¼°ÕÖp'üу*x¿/-Õ gëìÆkÙGuFTD6½»rú7%NÄ|‰ÕKá•l•HG°Béo‡¢0¹°\¡ƒgºïg $Véây(Ü’Ó%rÑZhOþnÙ©Ø,!›l_v1 ­ZðãþFÎ,•~p"q"’­&È<™´cr ¯ŽQøÝ¡®]Àæ¶ÛLvשÚ=s‹U DDêJS/=Úlôkr݉„ïdAà}Ã.%*dþ"mGpÿ¾h7$•¤4m'5ês².H‰Q–þÈøTŒÉüšÿ~iÚÁéþ:(íçÁ6íubb~ÒÚýοމb>(Ì; ÙZœö`LoeòB<žJEõ]Ì®/ÅÎÌÐךµÍ¯™wòÝ#Œ›¹U„»Û{ß“+‘’8Xof?™ÕØŒú´ø‚Ø®j6uÇç½]ow¸Î•CÌš´Ãšx²yé ‚2ìŠ^v`O]"^í&Å ÆhŽ›­¯œ¤´€Uö·kVŒ¬ê·jCór‚ =+óˆeJžõà —ãÞØ>¿L³ ¡‚¥-¡DäÆ4\®´„÷¼¸žv&ÅÎÕ„nó–9 k\Ö{d˹ˆµó÷!®È…(&ÝÓ6¥‘óÔýÕÀ´Šƒ´Ò׸óñÄ*öá‚[ ðªqé´rÖ‹ì¾Ãm ÃÞ@åÐd0!âQ‡ÃB¸`;ä ÚyÊ.æp‚cên?‰%hö²¹Î[ÆÍ—8"µEDº‹³z¶Ð™dàW]ú ¬qš–kRÃE¾sœ€½8bX¢Ê£k÷Àêt"+½ÿ­´?yV–ªð§dKÉ)[Þìϱº d£ãØŽ­Eý6”Àn™Ôó¶*ÀvÕô©~X#„Z#ê ¨FË"/1†ø~ëænïI—¤árÃøÿÀýÍÎziõ¸"\ú±IP©R-ï1¸Îi¿¾m…”׉¤]¬©¾v–mùŠ™ µ0®¶õF WSm ›õ¥ëü«\1io ¨Òê*ž×RQ. ŠCšqOÅß%iš _ß4¡Ž­-•9)ŠýÁ­+lôZ€T𸫧§ôYž…h¹?¿óQ,ƒˆ /™™¢y¤¯v–É©'Îôñewâ{oÅÒÊÄ&ÚðQçD„£„Û¬/»%DäsM_‰í4*‚/kÙþ{Î2.‘Z÷ªÑþ‰Ún ¡£¾åOÇO)h±Ê ˆpj_¶4Ù:G± —“›ˆñçÇúWw„«mçO‘ðERjèy&¯4ÿƒÑð*ÎÝøév§H¸™ŽâË¡žêßj>YÚnï’;ñ´ 9½° ß\åvŒç-3â~]ç©*:€U÷ø.É8æé v£f%®ð„Þñ!¬“BåÒê1ƒNã³lSvé xc%ÌU³ÈOÒ"3׿ÆRF ¼÷ǽñÕ6Ž(ù2¶‡iºa!ü%XÉ@e2ùŒØß¡ºìû„0Æ O£¢!Pl>ÿ2Þ=¨¯Çö¦3<” …!HÅ!–SÂŽTÿ•örn F´îüo-ØpøË­SÚ"çÅ=ŸœÛž¡¢ÓÁ^b¸cÿ^!æ-ÜãjøJùTÊåiZº+­@†þ» vˆñ& ÍËÊ«%Ù´0»ØN„a µ‹…±øç*tè÷h–ë—–h ÞZÁMdài¦S¼Ö>pâzìV"ºXS àß51ÎÒ&°›˜Shþ^áÞ˜5¢~e;iÒ§ ƒøbÑ[Ömž»bG8 –]-º agbŒÏ8nD6éiXï§ñS Ãx=‚ùNYe®VÉ•YÿPâ/Yü|æËûZ˜ü²ú_;•;<+‚kµ‘ƒˆwa¶Æ5'à&-›áÂð!D ÊãlÖ'……p("ån¬òÄVA £ ;ù/PÚÜÊÕ8(DDøx’oÓ¯f8>±PB˜D8ÒN«\ꘂ3 «Ü³¥ªÁoûó%ýtC™Vƒ6`TÅGÚô³:KõèÚï+]Î%Èíƒ:Ð|9Pð ¯Qƒ•)ü³]u¶Á¶cOG Ã=ÈK•‚ ö€5þ©¼ƒÛ/C7¡‹zŧé…;J@a}Q ­¼ Ie­­sª¥Ó'ÙñM¼MÕNø<—¸cá‡|¼Î…‰¦þÅÓV¦3×øwœÑ%lãžPÙ¤8'vùHd¬jI³í^êï<ö)é\>ÊPµ*­—ý[!Ûs­|!Ì‚=`@AW⬘B$­Ø÷Q¨Ú×iÕ›»#®f¯tÆË„”ÜkÏ?èpû0ONÓ¥»Jºï,—Ë–­¨’øÛ{j§ù5=Q_¶ï•÷½&g}dÂÃ6ÆÈ+Ï>˜Úèn%OWžæršˆS`ýPŠô“3š$½ñ*4oàK éoü¤£´ ÀciÒzôZv؇FóVç˜èìXºBæ? >Þ¸§»Ãá{û&gCz+¶1Ö¨†£^µyÛRÖ­Ä]Œm‚ü·”5Iü½Tð¹,غ¡U1–¸´OŽSü§tËüؽ»­Ø ü_½g­î¶×ì":þ¥;Âj¦¨õ(Ý;Ó ¿¡ÐÃ^h^Žɶ^¬§{{#[ƽÅ|±»œúÛááă<Ž_58üiÈgfíÓ†â¾ôÝRŽRˆ\2H¤Û·°Ñ’=?$.P~ð¹<œà™@ÚQriô ªÖÝ Ä{»ˆ"w•q²¹U2@e§)ãÛÛ¨tÝ‘ü/‰¶–·nnâQ á$gR {QåSÕø.½4èŽsê©1§£z½¬‰/cƒª@OðEãÌ0À_)²èî7q&{ÑE‹¬?Åq ³:¦uw[—âœlŽkÅ©íÑ¡iž}ü½Áq©WþÏC–EÉvh?{O0”%~lÄð9”½ ¶ ¬K´ ŒR!ÍÃô¤u÷ ô^°7Q9þn£º[à ÝP§êãÎ)':ỈGO6¨y*N|u°WÜ¢Á[8u H⤿³@ŠõCƒìOšeù]¢‘‚[=®¦Â R¤YYÓ‡û}tQu@WoÉÎÅìÚõbµfÌ@—­èy½4—Û6Ïye{+Wm'rƒêµá¶¾ÔË€õâ1"«ªÎ8½(ÃÍçÒl ¯Ç.Hgù?‘Ž•H0¥2šÌ³jJó™9êÅó쎨|`q” C\,‚Ìl{qB(:Ï‚öì=j«Æ„²ågLgþîÄS“%Èû£Ð¹Ö˜¸‘K¯èØí¤¤‹QEa×PÊXÉ™ t>J ìQU«Å#uÄlQúQ‹Û\½yÅAµ™°ÚŤg¦­à6°ßãÞ –5››[f™y7†A½Œ_JK|Ú¦P5ÎAè*” ü$1•“]¬SÕ—>V ±07H“‰Nõwë þ¿ Å/ÿ_çN–˜ŸÕF]TÉÇa/—C–eÒ~âT1ÇH_fç­XÐ1¤Ùøˆ¼ËUŽþWôýëNË(ˆh‚ÓaªË-aÒ±“ÿ[šLIj-W@Κ͉‘x¨Ì¸éªòÍÃWµCMÑô¬4â-3çÑϨ; B *Ë*¼HÝxİg y·ì'ÆÁú9EÊþ»z„r–ª€[S¨ùï U=0ñÛôÿþø„'ÒVòc]„n4æ–ˆfŸû¸þƒ,ôÈÏPAâ³3¨~3EÏÿ/¯7Æœej£cN›a{Bìç!)ÊM<³»À°ª#aÔ:¬O%¢ûdÆ6Z¤¯œÍŒ<õÄH—5m–³Ê²qíýÕ}ˆÃü.Äýªˆ 'D{é)R6j ÎZ+aÝF:&ÜXØ(\B` eœÍ[9Çß,ëÔ-ŠåqÁ4ÎbaÞiµ“½_MºÔE¾-çhOâMqYtïD½Còݤ†4/µ÷|cmjO™KŒÓ|\d…0{’AšŠ2‡§,ÁÛÚ °ažìŒ\ s·CNƒMûi L‘ò>äDóýÌ;lyìÞ&/oÂäJƒÚV¶Íz‡1^A†ž45¶x†œÙ¨»¦@1š©=Ôòƒ,¦ÁùúQ€„çŽTòÙ[¥Ä™ÅÒÀ½ã÷ÑÝB®ÀbñºnžÒÀûÁ»žXýÞ8a3ß@(_Ù žÆZ€Od9Á€HLJU}SöV9~·ð@:WÁÐ5¬îœþ:ù_È÷þÙu¸îú]¯‡ŸLÐn‰Eéø|P¬ÄG—ÖŒ Ø€p….˜¥F&xH‰nR?Œ`v®%©Í»çØëƘçÞ×W8Š:G‹ôÏ{®þÌËÇì^*´ p'Í^( Q†mZô,„E¬;œÉ©é™H7|Ì»L3ÄG%„°²û~ûÔÑdz‘}({ž…廨äòTÿô½pj—Ü¥îÆp¦£Ži;5¨çNâÛC–»V¸¶2†=Õ¢<ólýßb¸Q^)ņX’yÔu’¡ÅÎ\ØlŸ Þr^¥µ¬-2©”Z·~¾íæ¯á |ZM¥‘¿„®†@jWÍ”»óÈEÜE2‘:LgèBýb\ž¾ælHæ,‰uKÖP·C ¼¶?ÛÊð£„ñÉ÷=@dé¿L—åè·@j´*ÜŒE%þ=‰}¤“@Ó)¢¨ðI9OÕHÔÓÕ’»ÉÞÆÉ­sÝ®¯_ (ÑA T×€7ÌŒ¾%)3£5Ìï’ç˜y|¼%uÐOÙyø€$Bà}IçT}“0í§{kñH†¸Çü@‚SÐŽá¥T/_Ä(# {þIO@·eòÂú–Ç·Ð8¦Bõ’†Ò€¯™Õ 0A•–Ý<ú»Côj•Ù¶>™‰œXrœ\_d‰ -?¯ýß a»0ÏN¡´%»™”™Œëô JqšO^ÁÝô:@hmQ s瓼#Ð×2½ÆÃú4!}à=%NÐx ¾ô-sÔ㺡4|·3Äß4 ÀBž~áj4ÃÑ« \¿pón~c_ (ß3œ!™õÍ ´4[OOhƒ“"ë›­8u5·È¡R.¬;hŸÜ¨Ž&4Œ R%¤ðü)ÜøKØTdø€KÊ{ZŒ–†%Ü÷3÷iiø¦¸ mûþ’2äi Vøl¥!Qk¿š÷@ÁñÅUQܹڬ‡áQî=AX·ßñÙãôÏÌ£ËÂOY-±#l·9•jŒÙÜIšŒÏdmqú×µ²ããœV7æý=6‚åöÐ{©Í¿¬… xØ2œ%ÈÔ´ÝÜ&™ÏªýF,—¡¢ª)­7ž,cD!¥¾S¼üØÞø…:ÙìŽàETfn#‡-¿r¤£kÚ=¡Oßú% ¬éÏý3¨FÙå§Æ&ÿ. ?•Ò»¡¦ö?õ/„À7Þþ;vSÄóñžÓvÑX­J—£FÄî›^<{.#ºGªßž@⳪5Üq¹bH³“7áÇXžQö¿¬[<-GÍ“Ì|4IªÆrýŠ•ï!é´þž8{ò ‰Üý3i!5蘪.åHe‚Á²ªÙ2¦ZfÒ‹‘p=´â‡ð‹ÉÞ\$(ÏÎ Ða `+’u¤¯jL?@x!!dL}~^¿Ø¢ÀÊ5jÛŒ­ÍxQôlŲÆ+,°ÉÂ(ØC{OqšSk¨¶ ¶BB›Ýñ2ߥ}à·‡ â@f(à¬ÁEã9Ä0sZ*›cxˆPçÿ3†½ú<‹Tà{ÙµÒ·þįâσ9™ÒõÈ2¶ð$¢é8xœD·AyYèù*gK÷í·}›×92Ú!«èó6Öád{’wž\õ\/Míâíéq1·›øRÑšDÈž¡cTËÅsYE$rÒ„¶j"ݨV•4ž¹O ó<òÃõ6H¾¦I´ãš¦Øûf™ÿÍ/tq¿5RÐ)ñ”Ï·°¯•7:ÙP@EýƒßìqY °i:æ/¶$&i yšÅ2!_¬ù‹‚….ï³h•~?KxíBÖðûˆ _*4ŸDö÷ûOešÐh&–3üžAiLÆôغ”;ì9¼„»ˆE„ë0ûµ{ZPÍkÁÉ멤¡•$#’«BH0Ђø…­²+%˜àQU¤8›¬‘ûÍÈηBžŒOh÷ülåߣnqûNqáI[’ŲÞ*h~æ%YU¦Y‹0§Jqk¡syxIéá}—_vFJ ‰”ÕôCyîÈœmèQ`²´Ñá[ py[GóN2-‰Îà'&AГÇlÁ3T ‡’­+NçãH›ÓáãA9-#+3‹á» 3¯¶+úfZ,Ï=_+`HH•ÈGÂÏó×B•%§Üwŵ£Wg/”fn{Ü-“áEQ.¡§k(F h„1§dÅ–£ÁJ¨">½ª5“´oê&pÞ¬&3ºÞT^ÈùhB4B{tÅvÈçr'æñX6@UùX nTK¿Ô‡¦[Ñã– üê‹,š.„¯Ë÷CzšX‘9’äBϺ6í*m™p6Mðíš@HÈ?÷œ ZH—Í m¢OµóÅ}9 ˜(‰8#ÞÍ ³0®Ÿ}=ùqbÔnÑrˆƒÃf¼ò=Õ³k(ð-Î4ÿáhΞù¤VH8·®˜Æ¶ât–É5d•ÎýÊÖ<þ –ðÉŵ‚œ„Z–]•ÿ2A‰«¯¦ƒʵh‘;¶:ùÆ –—~3"«VþgÆ?éEù;½¸I–&[¿tT@_‡AQ+V*¹ÀÅ­ú™Äl(ð‘ÓGÀ9rÞˆ•ûñqö1&éd¦7\žºÒà >Á »€F‚ÌG”z›™ŸçBÔïÁôlËzrÚUÂlˆOáîö@{ýe³…»óÚ}m­§ëH|6"ß±õÎw \&FÅkºèN[kwý¼3ß¼¤¤ÿÒd¢ eÑ¢»³'|„U;du3Rˆú‚öŒuÓz'Ê„«•ƒúhýu†d‹¥Ÿ ÁZ~66'ÍÊFØÜz¿Ãë/‚Pð¡÷åMàG@™?ƒ¸•<Å!óóŸžNŸÆ¹_Ûòj÷{E½íÏ.ž¤°WHÑ»3Ήî´B{àu02H*zÍ ü8æÏb£ÉâÆFeœÕf\:¦ ¬.’Âî¼±qêZUÇÁ)WošG±D=èÆ%‘ï†Í†Å»“°ñU~•àkuÅç‹¥ ÂÆMÙ‚äÛ9±ÓY®3‡Áž©ŸŠ¢˜&æ 6ȪŠ=e…è1sÿdIÞ–ö) ø“^7ÿåšÅìü,ÆŸßÖ©’ô9|Ð+³×t½ó5î·âZjKy ê´õ✿GÈŒ>«Þx—o³|Ž {f ãÂÔ>öšU×¢Ç4¡ð¶@9Ý^ç&x*G_žfˆ\%9褴Ào{± u¯ÆÅ…͵‚b¶äìn¿]´p: ù›Ç—Cx×c®ÃAι):G€É"†¯ÝDØHuuAéÆ4*Ýùÿ(‰æì̧æ5³¡ÛÐ2åw.šgˆ5©¯§ _[ÍT–ÊyÀX~õùÒÿ…¦$#jvG‡‹|Ì^(þ7Ò¨ÃLëŠCp&”Ø5þýÄ<´\ û·À~‰ÜŠSE‘–P­1·[}iS2 «Zû&¼)Èw)âfìÁÝ…D5ìVãQ ×™g€õÙ¶÷cZ¦V²uJJe®‹óÙ³ QœÑœUGÑjÊÛ ‘Öº@ãú'uNJ}÷¹ŸÇ1} ±îÀ6«S"G-Î0árþrýM= V³OÆ{ëzªzò“çP©GÛ°3ÕÉ 6XíÛÅ ±)³9gëš;-F§>bqæ8 ŸîK¦òÿ¦Ä?ÃS¸Âð^kM¶.¥ÿ¿DNë¥ã«7濺ä­näøRüJº¸ŒîéSû›Ô«ragEìŠbÙ5§éìÉåPº+«ÃûÙƒím fXV‡?) Ž%D:œKG5q’ë©êŠóÑc€]•‚Ñ.I³hlÀÊÞï=çLtê#;B³MQÇ*݉›=­LjÔ±¤îNõ›ˆß—3†O6óÍ u™ÀóôWíR‹Kgrw ¹t¾Á¹o˜“#%»ô‘‹ {Õîn•ž— £v&.±4Ûò ]],)Y*F(Øâ èžd=Yäý£µ[.²ÿð,¿TË:n—ISyüöÕ‰±lààHÅxõ7fÎìÀ+$Ã<ç°½âBNŸð[w`3RC_„õÇ%qßµeºÇ¬“0Þ€X×ø[Ò¯Y}GáÿÖ~Ž}p'á³°îÚN, =˜ì`¯.YŒYÙd ‰‡j¬‡õžwÜ›§9® ygaEUŒ'‰ †KÍ|Xï ú=‹iÛð`¤\ë^¤ÕÖ°*t´Ð>­±(¯7ò ÓxV÷½eèîÙ§­&1,CpWj(¶zdL>£ÝkÀ a£64£Ü󀎖q€°•(3ì»ÜÉßjž]Öñò[taî2èd•Ö$h.§¨!í+lØeʽíþkʼn²¯è¦°þsÙA›¶Ä.´\_ÄmÈlÄðí©"¢{‰(®[´ÚØŸ=zTȰJû…µð(¦Œ!·îôo‰’t±¶º EÝO'\ÀéŸðïs쇵¦gA D;ÕJjÕ;¥Òõ·ÞH+dÈþ^ð»&‘'yç?#!u‰°(_™gH¼˜Ì†D®$_ÕõÆ¡®y 2=fIaŠÖ„”ѦJú^{ÇÁê0-p þ†|lA+È/ %x9wù5û݆õVŒÊu­ü A›œI0¢C‚4õΜE#f¦¢Â]šsÞÜhaú¼×ä­šêÀåóÿHß_Gš—‘h¡qº^˜VÎìšsòR’ gVµ•€Ý ›¨œÒ­ €ÿ°Ir£ô0ž¤/¬Ôß%"~ü99дÞ|åV·Fc –Í0ØM¨V¼#'‰¿’:J›ð½x¡ìeƒD‡‡FÍtvÌj9•ûæ{8_/þ˜œ~:éææÎ:_Ó4~–ÒRsìù~ÝEè €(í)0u¡ýîYY¹¨ÔKdXr4Xù;<[Ÿ¢Þû¹K6ßH¢:üö€¯KR1FbqYϾû²)‹Õß@XÖñùCsP%·Û֎З3{û¡!EYê>íþœk&ùò Ï–“nÿ¦¡Cjõü‘fß­E噺åö¥Ê]BR›Jÿ$¨5Ä/ÞJY –5ªßYâºN×éÆóá„´ä­ów`®Tu ¦Õ7c˜!…°E¬v¹6Ÿ–€³Xy¢q{õ5Äæz5×|[Ûä¼þëåHšDEb— «Äõ²/¶j5àLCåP h©öÞ0®õ© ú >Ê‘‰#ú¡†ŽÔÉt³µ—ŠZ¯êi_3^ÇÒwÌid¾\ùP7CÈÊå‘'²°x0D»‚Í´’ñU[i‡Cr,ºbUH3a .LÌ¥Ó­ ’vÖcæcÄ"" …·CÎ ܇è*jþÂl>Àôï#xÍSØÏ.{{Ø!ߦ#‰XöKŸ„îI^Aæ=ðK~Ž|ñT¥žÇŽwïŒvžõ X½VçÙàÛ`2‹é—éècÛâ{¾K¶pŸCÁ˜'•„Nû'yäSL(Gܘ3AMh3w…jë¬"8H‘kßÚÂuÕ$íâríC{éã 7ßd¨la¼Ëý,$æõ€4/KR›ié»Wð™ÊÎÏ•Vò«Î_¹R.ãËwÛ '.ÙnÖ F‚ÞOÔGvln8àMM’5k4¦#LÚu+’­ÆÐÔj4~Fwº úàýÍóiõä¥ /³0Uý$13kµ°·ŠP÷£Üþs¹Ã0q)y^®½·ç ÝTÄ3”µÒÚCË^C~P¨±ƒÊg³ºiµ¸‡ý’”æŠs¡ÕŒvž#×nÞLg4Qlžæbž´{ÅñÇÚ]ƒ×æ˜rw½‹Ñêm9FI6}é©€ оÂÅòÀS)‡+¥ÈØ }Ë– )?°Æ S§æ;ïQl‚¸é/ƒŽö:\äW¸„a¿{ÝÝuHÆ&Sª‹4úö«¼ „j`Åi[zKcÇJ‰¥|nlpo7¶òá AJ1›¬´àTM£³©?ü€¢¼mdo]Võí‚W«HSb‡!?éCÅoø:ÈeñÀ´ñ5Cú[ –©ÅC8…ÜIÌøÓ e`¦À‰L—:¦Uœÿ¬Ì9ô¯ÖòõQÑ—´é¾òé'´«¨JK0oÑGá¡2=!H"àˆ;‘æXoê’@ÌïîY Ð4d>r«.bú6Ä©xFk—m\þÙ?Eq._Ìå©w0~#6÷ŠÎ˜®#˜h—]‹ÓYN™²\n\éjÝ»æl„*gwRj‘å:J“z'Њ -,ãÆF»ç¼" A—B£E>)*'3»?Ëf•è„—#D[vtáܬ£AƒÐKŸyM†Î!4%¡3¨t$Q姆×Cw ÿ2Õ{"G²§ˆx±"ò‹}p€c2q?FÉ.¡‹ÍpP#û>Huê‘ 1óæã‹ø‰gÚÖX0Á6øv‹xäôn* ÷%Ûz œˆí4zÎb*壘š³§óî<{Ü Ô K¥rOË(Õ*P lI|ˆ8£¼Ýä'®.dEï-úw°¦•£‰ú3r1ßTl<þþñ‚~•×¼†ð›Ìn¡œ–×p>І ª¥±SwÊÄÿík© ÌŸü%$PjŠXÃë‚ÒXMg§Ç-ø8ÞÜqü+áiFx=WëùÁ‘¤FÚÇrM£3wÈø8t.îÊ”‚¡Áú°\Mco胴ÚM×¥ì èóº / ?åñ×ÝÚ· ¼Ð-æof¯k&¡•Î H>.5Ïž¤ZéjžÒƒ™ðñ¼W# v¸Í!FoþþùõS:Õ†šªÖŠÞˇ,»š0ú–Ѝ»Ü_îÇާ#'‹ˆÓа9†0ñG{Z!ª¬NP®¶qK2i{*"›¨ž€«ñÍÚk¨^Ú ãÉó®ÛP§Û”ƒÈ–®ñ”‰1Š FÒ½£Ái'ªy=¶.¼.A|µÅe´¦Ùó±ŠD.U—Ô‡+hkŸËct!Á®ïTÝ,mh ŠFu}Ïqsùµ½çÿæ&®æÚS’QÏ_ÔÅÞ1Rè\‡„ûÉïPâB$~jz‘ÏÿýÅê¶híuS1=C ª%JXLNL¢ hA9EòüÊ0îMln[HüÌ<Šª( m^<}r}…Fâ<ûÿ£^ñ½S_Cêǹ¥µÐ8*=¸è„Çó(qËÒÕö-@Œ¸¸/¦ÖÀœª»/Á2pÊNWšÛ›“@íãÿn E5 ©"{\ œâz¯*d™ˆ® µjè³§…OžYj~i¦èËåD˜êrnħ–‚n±ŸØ]/Ú3)%É:ëħI‘㣚:d[¨nEt¿Ñ gY´Y’sI.RY8r¾[A¡«oÞÓ<õ˜ÓáD¿€uJ¸Sø§ Ü)Wïˆ5¼ ·úWAköRÚÎ+6AT#Ý="î\õÚƒªrSW.ºt‰ÀJ6•»&ËJv§rÛ ’K4% ß.aŒƒ)z¨´ý^õQ–í³°ýT»„( ‚·®\\r3Œö0nU_ât UûA?Ñ`YZ· d@ÀÿÍÄBr¹ý>…еg3³Bóõ®iaåR¬8½5 ÂÞ®GÑå`éÍ ?l‘¨ÇZ‰VÂJ¿ýAs(ÁÝ»#²;Û:2ŒÂ-CJœ Ú†+«†ˆ—v[üT]û÷ˆ”‹~7q'BZ¨æÕH™3#nº ®h™‘Š:éņcM3>× •¦‹®·7¼å¶¡51ÿ H@šÅù“ï>§}¤ ê0ÀžZÈDìUËóìfÀ 7êý²ó«xî²»ÝbÑQ)u}Ó–•L½·oåÇoû×§58}üA %³ÜaVüí„YSÕê[ˆ9!*VÆ„„­Lß2Jœ®ÉNªÕlŠ‹6Œÿ¤¤¢ª/¤Ã1€ÿcJJúñø³ zÇ¿½J #±Ô4n6ù¢‘t!Šå¾\wJ•š>›·_0ÕtzŸ¢hNÑð—ĸK¤,[¡ÝzñbNW´æ\à;òÿhdéáG®¨BqáEÍB'²ÒÄ¿¯?¨!Œ+*nñ³kúÉ?Ï3Á,f Ð6K½Z¹Êc݇­az¶VÊËp—µâžï~®7¶ì^;Ñò”;Ä¢)æY8©Lšy2šƒ’C¥ðÿ¢gpHÖ(° ¸›do˜ƒaý㋵GÄv2öèž?-*wM‰‰ h /FO^R7 5_êpÒ .Û`†·Â_îô«žÆåÏ&š€èù¿ýÑŒíÞØû¾}‚˜s沄`[®› óñLZ&c32ÛlXÕ޻˟/DPDûDÈ‹;ô¿d«Ù(‘)BiGÒ‹´±ÏºdÀ½ ±Ý5³6ÙF˜ã_TœgCÐl‹±è÷/dMË:Y¬P3F$*f­üÜKÜ\¹Fp³¿¿¼üÄág6êRë%¢˜ê˜¯~¦j^Ø»ÅÚ3È€Üè÷—e}œè`] 㜹óO|ؾóLJ¼þ©ÍݶšÐÖ\¼LÆ›T^ƒ‚há-Q÷!¿7(ëñõÍjfáKt vÒ%¶ÓLïÁÎ1Þþkˬ)Dí4ègêÃh?ÇQ!ì&ú¢Háû€´,gï7€ý{S„2VžŒ È a—†‘-qLÅßq3µvú uVÍïržú€Xˆ2,Šï ;ÔQ»°þI DX.„ŽYbNó£é¢Y£äŸþº@w@Y6{ (ý„9¬ã•’åy*©g,ZT|ö‘óDD»Ï™·‡ýÖ…BKŒÛ‚ýÒ±|rÁÇ ö!pÇ7‹Ëaüý;,³ÃÕ][ qܨù_fcÌ`;…*¨¶©ʹªà÷h¾‚|âäs›‚6_ƒºŸë@‘€Ä5D> 1Q! $l[šØÂ¼kn½²Nz53BŽàì@Ó%X$r0ÐÞé0"š¨¿qŽª —7ÓFÆêùýƒÏGO{f¥ƒàµaz¿·¬€Hÿê…Ä%Æ'ˆá‚0ÂHVeþžÎ;àÿ©? µUÈTCîË .¼â·”œ&5ù·ÔaÐ!µÒg¶UC*ÕpíÝV ;ÂSmËþ~‡ê'Õ›šùU¼¸ßév»"a6.…77lØ ~ýßlû‚¿}ÌR³€€ûZ¸[£—îç·þ™{ÃLðæø{¼–Ãä¶0ûÛ Ã‰’½FPÞ´_Os7¡³c¹-˜ÍŠicÏ«œÈ2–åñVJÄ’Lr0ã +šú(›V¤ã1Ñ÷Šj…õ΀>Ð¥ì!^b…¨ðå”Î1Q+]¬§Üe߯´ãS#¸VªgR½'™~Ö>âZóü}¶i'wúò¼¡k&\ f–¸Â¼ñ©©YFô¯+ܬøYÖú!žÖsêGXmÞr)¼` ä:ö‘¶+17£_¡ó»¨ƒûG‡&<ªl'“³ ÃÞ àš†$&PËjëÙIèXÁC¤¹’`”[;uµSìvºH¬ï1y i¦EŒÁ#¦ÎDzªh½Lý-co£‹ÊàÕ ]ˆ°‹mØêÏ-R15ï¢ÉÆ;ú—p-‹v>ë+4,„}du[& NÖ‹,bD¸û¬sFº2¡t†ÂÚDé6kÈ–°GŠÔo½’ÚVÉ̽Ù芭—-ÿ.뚺α'\Y†éfRX¾év¬YäåZô`•‰Þæü㢸0 ‹YZnlme/data/Oxboys.rda0000644000176000001440000000376710132476006014135 0ustar ripleyusers‹íšˆ\WÇßìLf»ÛMm›4Z)²"Ú,-KÞ}¿Á‘ôGÔÒ”þ¢…Hçýšdew&ÌîÆ–¢•bÁ€X¬øG¤ J)HEQØþ ­µ¥‚m¡EC!1At‹(J~ùÞ¼ï=ßÙ·†¼ÚÚVÍÀɽ{ß¹çsï¹çžy{6·^w—¿kÜ0Œ£¶Î0j¬ÛÉþ©ÆÆ±¬mî\Šzûç ctCþ(k×gí‰LÖWudCùpù@iVÑ rqiTZ¹¬‚lª ¬ ª ãd¬‚\TA.© WV‰ ry¹¢‚\ZA6Vz9¿¬¾Í³é¾t6»Í|Ù­iä£#æÝS®ôôjî(ÝÑJ5O,°'L±à‹Q ª™¢¥ÖѲ䡨)Ý«ÉCeKOÉöhDôLÙŠ]r̺x6œ×~Öh¯Ÿ¤ý4ÁÍN/ôúYïL6’‡Þ‰åcðY>ö§O^ñÄÂòëßÿÅ“÷_Þ[~vôçŸýÜád¹ó‘ûîyå±m¿:ðÐO¿óüÛŽŽßüÔä®m8jþýàém~éÍC'Íýߨyí©Û_øêÊ[°süÈã¼úÝZÏ;Çg¿±ýÛ_i¾mÿh;+›¾~ÍÈÄgþmÿ¼Sëyâçœ~>—£Gn|lã¼oÖó_âç÷› ~þ_±sê–›VFß±õ êïÕVx``¯þñpöùe+ºòáìóÝV[ù§íëäŸVôÚ¿m~ü×§¿¹kª=?¾uï#/·âK±.ì'†}ÍÃ?ÿ€OÀΧKþ†ß"ì/z?ÿçtþ†½h¬do;ôµ_ï…Þ¯áwðÃa]8Ïèc˜§õõ:~ˆöwù×ÂŽV ûñ®B¯ ´Ÿ)ÆÛðg‡[°nØ—p7í=ðW» {“żöµWùÓ—ZíÛÀAܶqþmÄgˆ}ŠŸ-¬_Çô£¿`ú¼t<é8ýôÊñ¿ÄØwüÄö‘ ŽÄ«œ#ôÄÞMàíEÜèxÄ~œCò-¬_¯çwÐ"$þq%¾_+Út~×çx–ó@œFðä¢ ¿ëû#ÞB}?À‹p^öa}²ÿgVÇq¬Ïë ±ïðœã×Ðbß².Ÿ/€¯ÏûŠ0?Â|­#ïèõǸw1ôâ‡Kq€óO Ÿ ésMGžÀx §ú^Þ‚õ`<Â9Eˆ/Éo8És¸Wñ,üq óõýlÃî°?W+Øßdzl4¾•ûÐþƒ½ûÔç!y ç&ùûHàW7#èG-´Ú®^âBìb½â_7ú~èsB|•ã#Æý•üÿ%ocß’opO%ŽÀqσhu^†ÛXGñÒÆ} q¯CÜ×çÂïòýVè•íò’Rþ›o^>ÈKPy N—½ò’ËØ :tÞk¼:5r©±rÕŒ¥8]åªé"—”ÑÖVé¤7(ée€ºTªx­ª—uùT×˽m1ú|/àÇz¸;ÕuÇ=éÌî=úÁE;ã8œŸéuKFÇú½/L>ñŸØw©âÉãyj‡Ržªp²ê)%N©1²ØÉâåP¥’EΡ:&K ¬Ã C±Œ* K–0,aX°„a Æ% K–0laØÂ°…a Æ- [¶0laØÂp„áÆ# GŽ0a8Âp„áÆ+ W®0\a¸Âp…á Æ+ Ož0‹²ØÍƬÝlä³±›ƒ|²8¸z³.ò¹”Ån2{¸òyXááù¦©*™™:™™6™x:itjt$itêiZë’IkÐ «›dZ£G°òž8R q¿I“ÁyØ9²¢óq4œ=5:ÜnF)”Kx=JÒþ Ç•Z©µ,ŽP„ŒUÎ5_Ç—Ý4‰ûaœqÿ·”ª˜—?IøA5þŽåÑZú±…Ws,&ÞݼÉÕÄPp’Õ–Gecÿ`uŸÓñU¦AÖMâõ$Zßö{z µvt–¤YwãÓ!¤Ÿh®GÝ“6M;ÃÄºß ãÃ5kªân6mIÊÓþáÖd¬¿õ¯­FòÜž®1 nlme/data/Alfalfa.rda0000644000176000001440000000200210132476007014156 0ustar ripleyusers‹í–MpÓFÇW²ì‡PÚ¤¥Ÿ úi·Ô)IhK[wH†:t†‹jË©¦²dÒé3çöÚž9s¦×ö̹g†'µIñßÕ[;’É43L©Æ?ï¾Ý·oß{û!-Ì^šÌ^Ê2Æt¦¥Ó T cã{P͸U ?ÔÆDÊQ”§åÝEÛeR»K,×¾j»u´î§^™Ü“~½n•¿%1}ƪXJÈ,XÞ¢$ì¤Ë®UWf4¥ZµÊ ªlsËòh”ÆT´lÿËqY¤U)“eÒ8ë{6ÕõóG©–:?ùjüâ£hh*Üñ"l%¹Ç“ûÆHNIð·[„ eRSy×&UeJU¦U嘪|¸“õ0ö‰õ(i—s«·o\æù›ãßÿuº¤Ÿ»{ýà­…’v'[\úõßD+ºxKªåyçgñüRbÔÞêçîñ‡¢¸{?º% ð®•t’;0–-^á›7ä„%ö‡xþTóò“_+JEþ(Òë•÷i¾šo…üÐ…öÒo|ú»·Å€ßKzäoÏÏÍ·>%¾!ºsk=¹ÙSí½q²ø¯ÿm5_U>|âû›ôUü-²¿Jv|ò¨ä Š»å·ÉÏ6õ‡äß?”ßN_ä’&—)Ë7h凴~ÊÿUÊ›²«æQ~> ¿Þ”ð6É­„žŠs5Z·ä]ìY5[Ýņz_~iŽÝøŽDcÖjØJÿ„ë‹»>¾rl·’°¸'ð¯”ÕíîquŒ†À°Ä|ìbœØîÏáÙ³à9 ^ßãàyð8^/—Á+àUð8¯ƒ7À›à-ð6xä@¼ ÞGÀû &®M†ÓÌpÎ0Ãñe8¹ ‡–á"eƒãàð)ø Áçb—€˜'ÀI0 æÀ)0å'vøÕ‹uÔ«Í~sÉ® ÿ5Ž,4e+¨ªRžüî©úA­éB1•Ùæ†é«ÄFî-ÌyWÀ÷j¶×€Ü® ^¿öë}ßĶ‚lÌlÕü1¡I»iPq"i’¶Z¬±¿5¥?DÌ÷ éŒS‡ë™±ÈÂ30ö££¡£a$?…‰}aßQC ןt¦âÆÅ*vP; ÞÌȲ޻-Vš¹R§.žÅŸ€u¿”íDü‡«M¯Üp|ÏÌ-çÍšµœ[>bzV!¨™EóÂÂŹ<-U7aN[Æß:unÝ )‰¼ o,އ:à~Ƶ¾–Ÿª2IZÂßcr³šŽg=>=mV}×õ¯9Þ¢ÙøÆ *&ΓmúU³Ül4Dk¤7•Èh/†'¥/ÝôœÆvÓç.LÌ”;ÿ/##¹Cß nlme/data/Wheat2.rda0000644000176000001440000000433510132476004013772 0ustar ripleyusers‹íšWp[dž/XÀ"’–LI&-Y%‹"U Ô €D% ‘ )ÂAYL‡I@fBHÊtâ$N±¢T§ÉiNszuzuz“Ó›Sõ¤çÌä%™Œåü‹û )™ÌhM0óiqöîž¶çî¥î"=vÒÓ~²Ý0ŒÃÖl¶&|mjÀ?6ÃØÚ†Ö~ëí¹ìªÇ0Zº!aHK'ÚójØ5NÃ5Nã5ŽíÚF¿K—r§sK+èÝl”«·IõÚ|òÅ#_¼òÅ]£¡y~)»" 8ª¥XZÈ•r íùìüj±„o«ök‚áQè_¸ÐŽ­àz°lÛÀv£¼§ðÆØà v$¥¿ô‚Á`*/¸¾;ÁM`Ø š~ ¼Uû•ô=`/¸ìý`?ƒà8ÃÀ ŽýßÎØn¢®}Œ¡™vöR‡‹ñwÐW}ÚÏéçNædýßÊøÛhw€qîfκ軟¹é¡ß›_?óÝÊ8ÜŒasÚÉ<ÞÀµ’8´ÑIÿ÷P§›¾o¢ÎŒÃdÌ.ÎuÒ—ƒô×ÏÜ´17Óf mö3Önæ#@?lÌGs½ƒ¾·3ö^æþs¹ËØØÃ®cþ¸V[˜/sç ÞAúÓD}{[uì¦ÿ‡¨wmÜhlÔVcÙO˜+ó×]•Ÿ]Œw󻉹ØÎ|î£ßm̹“y°3÷[ïõÌQóu94­ü¨»¸áIÞ¸AÞ©­‰tâ–ÄD*I¹y$=;%BëÈìèäÌä±i¹ËG“Ó™Ùt‚b›%N*ÊF'’sÉéi™ß4š›Ûø>•‘ïã‰qÓ6‘:žœÉ$c¢dr&èu{²%Ù§ӣɴ¸ ¤TF\h™N½>—OM] h¢×£‰¡`µ˜qW_õùýÕsý~µf¿éñV‰¦/X=×ô»ÜºèÕÅ€.†4Ñ£_Õ5›Z€ep«3¦Y}9àÓ C êbH}ú\¿[šhêšCš*¿–JˆÚ`¿G»jºkD¯.úuQ3dV’eŸN¥'•jM'ÇP-RWíéÔìøDúØØF-ÍŒ¦f3•lµÍKÍž¬šaÏ$Ž»+ÉU’Çå’>‘šNX÷T£ÜS¶Ë=ýšÔNp>‰ê9‡ÏcñÄ}yõ‰G{Ïâó`<.2Ç%ÎZýÞ¼Õœ³äç‡8/Èq¡¯úÄœ³®Ç¶æ…ØÆ8Μ¢}Î÷³ –Ý0¯‡±ôŵú“¼½`é‹Ó^°ÃöZräqK_„ã}?$zy=ðwk|ˆýÃôCü QŸ‡ñû9oØÐó½‡2õEÙ?Ì̼†·É¼ 1Oâ÷0¯Çègð‚¾qÆc;ÌuIÌXr˜ñDVôx†h? yÈëõ¤?!ÖÉí‡ØFئ½ŠßŒ3~Þj¥>Â\×ÄQËÎÇ˺Šÿ#ô/"ë@;>^Ê×Ô!ó£þ(ýfž£´£=Y_©ÿ!ÆázɺÊ:Æ9ndE¯ŸXÍ:G™O?ý‰0/AæCêÑO?¥^‡é_”yHHþÎè÷Aˆúãÿd=Ñ/Ô£øÏ¼Ë8Y¯p¯.K^\\7¯ïµÚØ?8nù2¯—þdß`<ñ‡˜WYO®ƒÜÏ£!Ú§=És‚zdýâèuï¶ä1É?ûmô£‹r óÝG½ýŒg€ënrþó%þ‹aÖ“ø¢ÿ2.Êë²a©©{Ž7™¯=RgÌs7ׯ“~æüƒÔ7À~7ç99Oì{Ù?ÄÖG}²ß¹©Ï”û‚ú\¬‹ë* û!ó!ûËaæ«Çò'ö7ê丹­Ôïf¿Ôƒ“ñÔì¦ÜW‡Ø» ûeüR>¶ú9$u&ûŒ5¿òÜÂùÿmÛWgí ó^/­›~_í­Ÿ÷S½´ò¸Ú[ù;¢^Úë¡^ÚQ>ÿ¯ö6ɺ­—vœÏ:i+ÏA/ëÂÇç´ÿ¬•“÷cåïŽãßÑüoŽ7Þȶƒã»)÷pÞNö;Øîåõ}´#Ïÿ´ˆãŽpœ‹²üýöuëÅÏzËë•ò·^ü¬·¼^)ëÅÏzËëò·öL±]ÎÉ™b³tŽ,çŸG¡åt¶´˜[½K®Ýµ˜[Z Ðº”]]\][ÈQn[*N±C3ÓV*ÞéSr*©NR䄨É2_>YQ§7êÔ§üîØ°NeÔ šW}j©N_ÔÉ‹:ÑQ§-rZ©NpjO%kO"Æÿ~ê('pêäI.©“)uâ£N€TöÕÿðÕÛ@õæT½åUoPÔÛ+õ†2`Œ‚1 Þôã`O“` Ó nOi02`œ·‚“`< <<<< <<dÁm``E ,šú0NÛÁ"x.@%K`@ÜžÔ»v¬©± ÖÀip'X(ãà…ànð"ðbðpx)xx9x¸Ü¯¯gÀkÁëÀëÁÀÁ›ÀàÍà-à­àmàíà,x¼¼¼ ¼¼<Þ ÞÞ>>ŸŸŸŸŸŸ€Ïσ/€/‚//ƒ¯€¯‚¯¯ƒo€o‚GÁ·À·ÁwÀwÁ÷À÷ÁÀÁÀÁOÀ9ðø)øø9øø%øø5ø ø-øø=xüüü üüüÕ(ßÚ Šü¡«Ï—ŠkwäƲ«Yöv.Ó¹éÔ%]í øîÌ—p£×l-ùbiym íÿáðfcˆ6³Ã™,œ^, ˹‚ª²'ŒòéNåºM•”¶¥q‡*wÚ«GÞ]3rckÓpû+›¹xÉÏ8²·•Æaﶦi14ÏY¶õÀNˆ¥©Iân·dkµ­_Æ^ãÑYÜóöÆZ7VŠk¥ù\¥¾üZa~u±Xp ¬:–³ë뇅¬³´ìˆ82éÙä £z¢F]Ùô¿x±:gPbùºùÉKPŒÎvcãW/µîw”žâ,—ÊÊ¥c‹ÿ‰zÂoß&nlme/data/IGF.rda0000644000176000001440000000343710132476005013250 0ustar ripleyusers‹͘YtE†;; [˜éž Q!ÔD%vÄH«!!Š ˆŠŠËLb4™!aW㾋»‚»à®¸+î ⮸+pŽ/ø&øßžû7¤’9á ˜s¾ù«««ºnݺUs§§TN˜°,+ÓÊȱ¬Œl³3ñ•aYvwhVMu•eå…¤íÝ”*ïTrvÝw3ºíòv!™ݘÜ.ÈØ…dwN»mÛ›kšÚüÔŒ²¥6c, £X(×BfùPV ca #YÁÂpFçÔ6EgsÜLm•—HÖÅ’±:½Ì­Ö¶$’(mAMoè&wOËûøZdèþ†hh™¡£TG«ŽQ§z°¡‡¨jj[{=Ìê\+õþËP­ïfu®ªû¦ÑCM?P‡ó¤Ž5ô Õq†º†rþ‡s~Ƽªt^Õz]ºÿ^[ª¶1Os}i¿¹~#Óè(CÓ­'µBõCݶöó4×Û__½®T5×µJ¯uþ¾NÔú‰z]£×vJÿ Tí*Ì}Né×ᆎ0Ôôošøé°Î†šódØ‘NËUÍõ6÷±©æ:ûëØ…¦[O_µžëÉùšû8?¥übÜï°Îƒ å:ÓCUË å~ßQ?™ûžþo¨Þ!þyøªõ¦ÿ|?v¡Ü'º/è·´þc\ L£ù†š~.R¥Ó£éö ÷ýmž§éÎÕŠ4šöjë\ýßj[çó5÷¡1_ÿ÷6´D>KÝðÊÉ.î¿ÒuªWØ ÖOtÃÚ>´jñô’Í«]›ªíÂÒ¬z…k{b»T⎛º\èÚ›¥Ã¿~½ÃqðÜq#Ú/¬ãEf.[¨˜åF´PÛ;Ú>Dû<™â†ôù=ÒÓuhŸÖ;‹½Ž~GÇs¤ûä®­ÏÏ×kÚc{«ðljxæpm'Tï}¶ù…ãÐ/Ò{ær7¬ókÿ‚5òYë:ý›O?è}ö³Õ޶q\µ+¤~ï«íjýI=güÃï´×ÑþޱîáuÞ@nq¿T}DÛ°½Ú[Äø ßiý¦õÁõ^C×V?öQ?‡Ô/œGÚÙOýÑ~m_h¬{×ß¿~7×YýãÇ¥öÒ?ô›®Ã@µ+¬í÷ŽîÆÇ ªß¸·6×™v¨]!^sŒoUÆKDíæ~tÔ/ã[ýÂç:^÷R·ŸÚÉùq¿ÚjÇç¼{sêuú‰çI¡Ú¤_t^Œï ÎÃQÿûóa½îk?>8/õ›Íö:N_õoа7¨ý#|.ýiÄ7ŸãÇ9UçGû#ú<ÎÃ+½O¿‡¸o¹îôŸÆŸ­óàºg¼æ<¹NŒ;7ã3Ìó„縶/ÖçÓï´“~⹡v™çÏ?¸o4.¸¿y‡x3u\ÆO!÷®+ã’ýýõæ¾Õx h?Úâ~Õûô3Ï¿°Æ3ã:H{´_Ðø=ò÷)ã‹çªñ»èÛË8`=íáïŽÖGŒ}N;ù»JûyŽúñÉõJùÝüw6Çøï8‹¯à&%ZXŒ6Ä´˜]›ˆ×Ý»'sËø¾ª“W™©Çy¯äÕ–¼¢W.’=IGY… '~’ôbF_ò P¼%d¶r²Èêï$›Ú ô@ØHV $‹ÝHÖ±)¥@²€dWƒdWC€d·’ÑJ6+™–dY’aI6+™¬d¯’iIv%•ü«“ J²'ÉX] ™“dG’™Jv$©dïòÏT²vÉ0G‚Ià(p48 &ƒ)à80N'‚ià$p28L§‚ÓÀéà 3˪X@«4€3A#8 œ š@3ˆƒ˜ fy‚5µV+˜æ‚y`>X‚Eàp.8´óÁàBp@ÌY—€KÁeàrp¸\®×€ÅàZp¸Ün7›Á-àV°,·ÛÁàNp¸ÜîËÀrp¸<‡Á#àQðXO€'ÁSàið x<ž+Á àEðx¼^¯×Á`X Þo·Á;à]ðx|Ö€µàCðø|>ŸÏÁàK°|¾߀oÁwà{ðøüÖƒŸÁ/àWðøüþ¿Á°Ñòö¬lꬭz dë[±Þñúxu2Ñ:3VWm‰jm¯x}ÇÊ ªu(—Õ'q8‡F^}"ÙÜÚ„†Y¹ÆÐ|?ç7i׳gÙ„øœÆd"Þ‹Kdþgyoìüû†ÛwÐ3Ë«Ëݾá"£aêœk_å‚Þó·tx™á½ÌÌ ¥:µ3>05­%‹¼G¶»ª©®\S$FaÉhKc"žztöÖmo(SÎca~'ä´Æ[ÒŸ[R?»ÔtiI¼aHsS鎎—âAôº°nlme/data/MathAchieve.rda0000644000176000001440000010262011523007766015024 0ustar ripleyusersý7zXZi"Þ6!ÏXÌän¸…R])TW"änRÊŸãX\°ÆqÅjnçj-&ê_¨ÈŽMÉ£ ®»8iææ€`åÙÊ]©*¸Ù_iœxN_tù Ü”ÆÌv†4c\Ùx\mvñÑ»pŸóˆXËv¾Âh‹ÕTã3”f—ió àpâÔú–o­))6½ðD*» An'èéf ×ﮎ)20– ßG ÃÊ~ô“WUµ‹É™מ¸QÆýöó7 1š6³hM’.òÐ79?#Þ6Ò­DÛxlõúžN´ÏöGBЂ•)”ÏüôÔŒûjKÎë\v·ƒ$-ÿ2w D‹ž¥»—K¯D)Tœ!gT¯műxgðHI0¸TÍ}Hƒò“ÝÚ$À]TOíý;¨«Éçh옔QBE Pý9À0›ü¾þªð›ßµÈœP-¨ÙÒ îÛ‡]…LÄ;=¾tœ~jûŪÐ<ÿ%Ž5ÁVžšA¨@MòU/ôi*NÚU’?µV>žÛÎÈmÏÑ)=eôQÎmaËò6*¾ggx*Íæu3~åÆH}ü/¤È÷,; …ßh§çXv÷7ýê3.;Z2Ahq…3°È5±Z{øŸôuÒC¯{$¤´ÖÕÁuFÿzõ|ùGtêöq`‘`êâKËüŠøs§%í«¼Ì´x„¥²ˆ€äœŸU´·xÎÝðòéŽÌ._½‰xtø Õã àu¬³õ®r¸“¦‘R»,®²ÑFµéŸŒ½Ù™†E‰›Ft'c!N Ôƒy¬ýÜt¨r mà†L7Fá áaþ¶bzæÁ6HöfQH|@l%õ†M»ø3Vå6 aK%F&çàÅsN%çNñÀAnDVç´ÔÞ¢ZŽ ‚ù1«;":¸DÃÏÑ–í.ð½ §æÆ"‰§A_“ÿ]~Ÿ¡tn¨Ìï45ÍCuAàÿ”Óœ%$ ¨¼–¡pŠœ<€½È®Ê.4ô"z•Buî!6çò¨tŠUò>ü³A!Æ«Î8ÕëKo.MF rÖPð\3èÝMÎ]Ó•d?Q{MEDËÂ|]=JÊiÝ|Ö7>Êv ¾ß«dí¸<¨uí@œ yMåƒ`Lc˜ãJ¹,ÌYøH"`ÆÈƒdÅšþio¿ ÃK;£%Í`yJ‰²œ°]ÜH­®ØÒ\¨¦Ô(L„¶Œ‘l¡¤£ »†UzŒQ0Àp–¡†”5X–í'l°º ‚`ç.óçSÊ­`Šèªg^Š3¼÷Y+'ó“E@5ÇÒýaû?ˈƒ¸ÉáíÈõzÆÓK‰ z¥`ÞSLä(ÙÑIФDái î Ń'ì÷´+á#@W9;ˆp^ò}´1¼ÝFé³fp÷ë­¨GÈËâ0/ÄU)h*3<º¤.Ý "œ³†¶ yHu“a—m¾l?g’uv‚°†Z(×q^ÛʘÝoÚ8C”Ç6TÝŽ¾KÉM{S‘/ÛíÅ«MY¿kÄX‡èûÕ¡¢cÙ…²”ˆ:öa¬?4Ðm-eS:”…ð®ø¤tm«i{ÐÃ$n:ïUf¶œ‹¨$¢TØpPtÇ&]ç×Ê Þi9Ô“Y¶¶Õ’p”/°m‚¹|§ «òÙty`IÁp8zu0FýÏšÝA3•=žåjw‘DŽlÕ^ò·Ý2«¯Ü§."™Ä/¼°!!b/X¡® ×?fÏ$ÆÞ`¶wƒ?hiài›@žZiZÚ|L¬ÞmI°ÊC·±áv´_—jÌyVdx¦ÀPdÚ¦LFª6ûé®HmûÇâi¶`¯ ŠÜøó(…= ¨Óeå$¢¶Ö’€bÎË«¾%Ð zi•D.^lG~0¨÷´–Áר ÝVä ^²«• Œ÷)ßH%`¥jî,¤£€±'ÞÎi¢Ç<@J-V>'‰B‚£nCÍA8Bgz6Û‘õ7êêeí£6”÷¬ñÿÊË–|3càâ„6/ SÒúá挷þR$ã>J¡;µe É[(N¼±Ô1#.çR53Ûc¾, ´B™@ ‚̪Á’ÃH®ýw¼©¶Z§DS•q¦žG× ÙÑk¤Íó{»ûí“ï~†1PðŸØË•r$Õ€Aº "ŸbWóŠ5_ð^p«b)t‚Ã:úñø¬>@Á\w¢¤ øÚŸœÂC¶ºÖ89ÈBƒÎ™wz1òÄKGm-¡K¾[ÇÓÊè ŒÃMîgÕ$‘ ÙZ*¦fãø:­IS+&++‰T“¤åµ„-)dôXÖîÌÅ¥ˆÏ5¹B¿›úKÓÍ’£w=?Ž×[¢õÖÂvÙõ&7E.²58+¨çTÄãœÜ„Yå'­iG°h;Ô"·–?°=•œ íÿßBŒ.Õ`¤§ø“>1ãÏ㘙RÝÕZM|²è%¿8B3EªztÛ9™ËÝõ ¨,Ö‰Û÷Wß&ô¢}³’0¬vÀÂþ—2JûÖ‰n-›0<‚:õ4—$ªQš‚ÜÿÑœoM“ö9w §ú,ÕC¼» 9fûÓVsåóœ6Ò“ˆÞ† ïÆÐ gÜ @k0„ÏììB£Šôœ® r˜´4‘U6wiV Ò?Ǹó_{§ÐLД>3å¥é›ìO™g|ùqA5–‡ÖI?Àöý¥¤Y Ü,%s©3,>U _ò=è¶4¿MøÜ²§g$v>qpÀ;D…Þ¶³™+²ÝÈTßé]Ýö¥û$wJâN>›õâÚ;ŠÝñú¹sKA!þ|O©}Âúüãþm%¨ ˜7ùE/†ˆÍ¤C×…×;w&O)š:T.Kk·&­¶¢úÛv*c;Ê¢ ø4§xÍ7æø€ÆéˆÉ¼ÃÁfÃD´æhá6¡t¿ªˆ‚¾B-äŸÞ m¦‡¾ëb*´jRR¥w›5ÃÖ’U‚Ó˜8“˜cß`N_ €W 7ù½îÝu2’±:¬ÕÒÔ‚¯¤ã™ÅÁb[Éúœ¥¨%^£—ˆÚ’"ð)lb˜>e½$æš*ž#ónYXc_j ©™ËÉ|T7ŸcÌŒuÔHŸvÀ|dU‹µKCÁk„¼HF²NomCæØT‹–´ý•m™Ï¡nz©kµ_jãhȘ$*–Åx}¾ÍB‚ÖÑ»Ÿ !ÌÆl¾„,’v˜N¼õ,Ÿ-h™tKDêÔÎ}—úè\ÄWä½àËy;eünƒIv¶õâ¡Éº}•yæh¦ g 2—1ìÎ0-‘ºSR. #™~²;c3Èë3[±±áhC®û¤ÐhTï˜åóônÈ©z µ÷¸˜-è–¤ñKÐg^ë,\^á Ç”9Üä…·õˆ5¢ê]Ùðãã+—²v¡ÒE¯šx°xcÿ÷ÙÈÔr2ç˪‡vöÒÁqQÛ®–J Â8{uë*yèóÓ‚¯ª3£HÁޤÓÊ‹Q^qe*=s°ƒv­T[{ d°Ó&üf׋Å5¦bsËMã!Gñr`$KPÚƒÏ6¯7ï6\Ñ«Ä| Ë]y©?ǃ8Kd¶T $Ã6Ë3`ˆ\µ Ÿûë²!oº=Jãb)÷+rí[ýªWLѤˤ«^#VˆŒø`›rÇ]•š•¡Î†¨„8hÂyoÛ"¯àñ¼àóÅ"%5\ø‡W!>‘7i[š‘.™P毥Ú4¼ÖÏ£ÁŒ¾’Ù#ѧÃûŸ×Ïadeã›)'.=’øF¼&‹4P#lý:’þ÷[oüCÑÅãsƒéMÃf=Ä™¡²rÙÞIé˜+£Ñ8Âùj—g§ 07Êð~,%\vù”Ã7êÂ+/fÍ8mÀ+]”߉fb¾UÇîÓžƒÅ —[$9/åÿõDÝm.Û-6Õï P­{ç]{ßû³s·eø1xfn!Þ—Ø5¤µzY¬®(k B?EÞÁ×—(Kc›ûœSÖ^(#夨ÐðÞæIž|&V_Ð|qs »«Î®ÊSO#—¶»¯¾úŒF‘<¬Yá fy±·WlZÎrÙU#*ÿ&×FÎ2™äœ1Ü­’„§ø€üšpød¯,ð»™1b6¿ãûAŒ#`¼Î0$öñ%xFÞ‹fÔá?&eÃx´êJcwgK‰dç_Êo®g¯®/N#¬'ÐQ½1œ VÐÁRãŽû¸Ý$sð‹0$h7N'¯ôUQÁÉŒˆqÀ;† Õi‡9 ÃQ³1n&_¦ mr:¶‰(ÕÖ#ð:˜?âÖJ.} jîäXÏìÓcjd ~>A8Âtu6;Eî,Ô¬lüNõ|nÁL«^ã?<#¦HíÞîpÿúìeO’Cоõ×>//á¡t#“2žm¾xyQŒ ÞÌp¾´®áÿ^“Ä Mv i¡Ÿ:¤>g‹ ÏÌesÕKÁbóC!`÷f¹Œÿ!¤·­¤Ì^±«ËÂYîsÊ)â­b`kÉQœ¬k7…/Ñc|’/^p@uV ¢€>POò’Jß¾Ûˆýñ›Ú §-mø½|Â6êÜ0çXM«ñg›I àßÃ95>Ƈðv1­=l–ù›÷àž=—ŽÂ9qfìd–nÛ,¼d®-–è˜ö™úô•nèæ lI·ƒÖ¶b Ð,¡#pΚ¿fS߉ưsc"g`1Š•!¢â|ÂÓƒN‡ãüðÜyÆ«5á‘ ºŽÕ郯ŠÞøi«k„ɪރí]A¡—š)¯€½i YѸ„êUªÔÿ ¨.´:)!aÁñ";Bšä@=«!¹³£ña$u±ÅѤ¶£á‹?¨ß£xñ÷ôŠDaC$_ƒJ¿ìi• Ǥ÷pÁNM +…,´|V°¿ßŒÐzÖº¬ÏŸ –‡®a‡Û«rãº2gðÔ¦0 j<¿ì’F”""%m_ij*™0šz®R{´›Üj[täŒ\ˆ¢iH²ŒàÖ|yö~úmWå»îRÃ]9Og#JÿáN¥}(ž<Ï8¾g<r­'3TPq•°ÁfÇËeºÎSÊOØ5w1ÃC‡ÍT¹û áÞônû*¹Õ8W›Pª:$)À8î.UöüŽÔqxélõô¡XMgˆÏ*ÿ‰P Í'£q.JM¸!ù+j8‡*`y¡^KɃ’I†ˆ0%kj¶QvºÐt{K“àûnVãw ÈhìÓ<ºŸ&– ½0ƒÍãèˆaщê>ñ>‘º$UÞì€ú¡¼Ù-¸'Ç'·j8°û™¢G‰2;)Ì’Ê'ÙÂË£Ž[¼‹µ/Ä"®.™bò¿fÇÁ.$Ћ87‘Eåsõ”^8ï$îs3YßrMÿJã€È‘!TÀ¹Å$ȉµ_–ˆËzÊ-¼.¤ëÀ¸FuÖåë¨ô7…[ƒIq`Ü—‡‰ Ò‚èÕ'¦^"a)ÔW.Lêcm sR*8¹µ*j³–ø,JÜø[bb xaR~È-û™IÑØ6÷þæ™#I×”¹áþ— ßðUÅ] ’ŽHvaf4®‡å ðÒÅs‚õ•Øc ¦~"„ :žÎݬ(‹—œ/LK#è¶ÔbMp+zвۃ*µWŸm£ 1¤ õäGÝjú\Mé¼;ýÍ||LO””lÍ¥˜bM\ÊŸÿ õy¨…©Å33€Å…e¸É Ò_tXO¢Yx€XÅ|7rv‚ø2ÎÆ…ߢØÕ­]¯ÏG"6þø‹OÚziT†U9Ð1)V$‰ @WQ-ÇÌ¡§ŸE\‘ã^DÄý©^ÓCܪ½KÈú„-`#ûC±à<ŸÐ>· MÛHë|8À0J«À¿M„{˜L§hÕºÌê4#£Ê¬ œlÖúêùš Û¼öJ&užFÒÍö9Ÿ1¿\ÃçvÔ&õİ 'ìäÁ(·c\áì]ú\ž© Ñeʺp™!M ùÌ'•Ló¶ÕÌóÿ³%˜=8!ÑuIôäŒ^¶ÎÍÏ1ÑekÆ™”Ù¶Šü•_&åËà«—ž7ÀE¡q [ÕéµÑÇAÕLJ§¬âï*Ó¸éѳ,Ù”ž—y­7Izeý_ÏZ1È7Ú AÀ‰Kððy[Ô9ÒǯB#À#YDì ÎXcw€k/Aö*´ôÀÈŠœI«‰„(Œl%‹±SeñhÙ{/¶=3WDZ°øÐ+?×*lÏö¤WN¥ÜÑcG7A à §{6]„õA7G'¥+ŠûAKù xyãea`wxó;¨}±6p¦ÿ;¬ƒk£Fû¤ÑŸ nÿ€ç_0·bç<Æ’@ƒÇPgBGzä½zÐíSóuCG>Â'tÙ¸[ظYÄäìeʉ‰Š”ÿÚÜ6<ý‰âJû‹+­]öÍ]¶¾P¾©¾wÆQY¹T»7rüBcVŸñ2\ž hF_j¼)€²å· ‚äl¹¼ÁF¹2@¸Ñ[Ú@”kÄKƒÈ‡Ð'«ÅÐïÅDj~ŸNaZ«kÍ@vÓ8%­]ƒŠŽCáèw XÔôžÿ¡8f—9|ú–³Œ7æ%j$³«ˆ®¢Œªom"ü}²½è \@Òì"J‚×äƒÅê&ÝIÂöü¥ÝSéè];Oã04AÑFR]ñ±úG¡“™©¾ö7od¸]'j+ÅÜd˜©½)!éRHHiس|ºYÀËÿ¤)S„{°éÐ"`¨;Q†:FÙnMÅ”Í#¼ÉmGÓOÁ»ò´}4nŸÝÖ‰å]Ä%ÖÐai3)žß›ñ°²•gÖµì.5®gëÛ¥õ ¹¸p¬»Jí"!1I«Äw:G{×Ï*{“¤ ¿œãŽá(’˜ömç™MD×ï·ã¦6³Üžå¡_d‚ƒ Þþäê•EG„/ú²,T7®Ëïƒ&·Þ\úôÝ/éDÄw°9<ß¦ß þ]—ÒC4Ȧ‚7›Ýw‰›ã‹y¨ µù{`¿H,'ÿ*[Q Öu#Û`šZÓïÑ;7â¥W}æ¯ß[ÓÍ27 “="uun|Š}4Rœhº§­mŸ1& ‹¨éG›Èà íIlŒÍŒ<ýïļ˜ÐKÌš°a:›éûS\Á¿ÄQµGoJÝŒÜÕúlOa–G÷þî .›ê k$Ä•âk$æKT+x÷è2üwJˆc-úw˜í—:‰IzF`j;£iA÷„D‚z©n¦É·xq~Lm~ n¾*+Þw’ʘXÚ$:SZ­fZè$üè=Áˆç_\®©ò@ àe¼,iGšªœÆwKÿÅiîm“+ŒÞv·i]£Y»ø0¡u©¹r(ÂLrþÿà5‚ÄGByàç\µ¿í“Fy‡NÖƒMÓlž°@è°KRÒí½™×`ÀÿkÅ¿¼NÎs¼¯ÝפT8FëáéÂr¦qÛ·l=°’f×:Ön0ƒ,¬‹ì™÷<“QóýdЏŠÉss0¿ Ço˜K•ËÚ¦ $¦eª'"'ˆÓ 0PAZ\,‹Xa5Üá1‡•u°gÈ­8€LÝÆS„Çç^“!ò*}ñÞÄi#†¤´5@Êű¥¤îðÿë…‘˜Š¯ºS‰ïx3á¶Ä\‚†"¿¶õ&ækýw£Í2: =„nk{ GDkø„ŸcLtüÝÁ÷°– ª°,{(SÙS‘ëm÷8#C!\­ ƒÆõ†5?•ëRw:á 9sTzWá]´=ؘ±Ü&>qášYà6ÏCÝÏ` ÷5¼’!ñ }BØzŒìó`æºÇd¿r=v¬‡Ü­ËU\º°JÜqŽ×4|=7–Hë/I€‰¹û¡çµl·a©Ñ¬ÈZ 3î+5-ÕIip€qoSáfäÝ›=¢¨ ˜Àëï=Ç`{·½ãT£·Ê.àè%Æ Õ¡s°j±"ù쀢Œ‹ý·ˆÍ Dd¨àób(( Ë>!@|TâûÁAS:ùt¼5¹¼øÜ|x’481f*â(_‰ÿïÜÂhùEn¿=eùkÏa¿H¯‹´ ªñIÍsÒuhLÒ,-^g+IiÖóäb›ŠP¦Âž4ǨÑÝ:’>‚> € ªð¨Éc3ÆöSº_Ò¯y«A@ž¹;½¾¾’Ju |+¦µÿ]›+–YÉþ—Öü:5o¬¯À0Õú¹Å« :îç«5ë/ÉH7L´uKOˆãÈi©™]©Ôåý„Π²SÃhk§°.Â¥Î÷¬AÙrÝqä£%œ|¸šÅF`»£§kb… ‰!ÍRxåàå«l²éì:D‡¦U¢üäËÄ$~Œ9•µSª[¤Ž¤ÉzñÄz\ó.h¢;¾{ *ÈtâðP¬ÁHH;Ȭ¥† !ͱo÷ÏÿéyŽqD.í ¬òiYl¥EñÝtÞ/l[] \I4ú~S`pü0‘@þ‰åc[Ýöl7÷±”2x Ô™X.v«ç-›H2IuÒc¡éÛ?Ò_7¢£­œ’#ð¼¼'‘ž2S;´,$¹N{¸ÂóòÃþPl]ÀNši(d"lj5ˆGÙâ¦Î9 bmÖ˨DŒR„KbÑnþ×KaZ„tn_-(NW ]IP'.k¹bÛXðÒdxßøJ9nÆôwÁ:wÞÄsïíñu˜nkfM73†;=sy]E3 4±T÷¯;\÷ªåÎj¶$2q)ºZj}ÍÊ×šŠæÉOþË#CÆ…Ì&–G‘¡<Ôd[“,a%Og‹¿FLÞgó(ûm=‰m=³bvÍã¯",—HøçºK%¹aErh «w4ÇÆÊº¥o¶whÎ nÙx~hø_ÊSP  Ä# à°.J¼©;•Tl£î=(£í€@ˆØˆo3È£0j€¶¤U<>82ºŠ½Ó-ÈâjýÄoæèx ðБƒ²*Úe+Ü-wÏE²A_ýɶ—šd–šœRúŸN‰ÿ=ѦÞzÌ.€^d`óÊhpu—•–6Z²q=s„‰Vbÿ*3…ÕL7U¬ F#î?£äê›WKŠIÙxQ"uÉl˜á“: GàXÅ>1+“¸oý‚䤿¶8È‘2˜ƒ‘ÁŤLI£…?d/Jk@IÉéð^qQæ¹U˜¦4³UxUKÙJ-õiÁ#p-V"‡àf†ž‡µ2ÓÁ'í¶Å™ûˆTRt*”8lìcîíaôp*Ì|I{º .”?R±o¡ßGrËïô]Ð}RZ\ÞŽ’»g£oVJvTï>²Uù¨G É&cFN”I„ç;MiÄn;ÀÆ-WµiåßCl ųÚ/ÖÞW›"­“,à HôIr;–”IALóñÖüm1Ë3àÿ@ƒØš‹‰pK‹ùŽØmªšÌZ€>ZÇJÖ' úã÷[ÁäÄoÙî±…çúè È«™`ö%0& ¸°Îÿß3X. v¯ ª_RÑ8^‘'^TNï#•8¨†„–Lñ+²G.1bÃኚ<{|2úcu~[6 …EˆŽü6€(¤«â)Ñh Õ*ÛÅ­¾ö3I„_+Œ¯eq!”ÚÚQÌW³ ÂE/ŽA÷–—áÃß‹ÓAB—}RøÒ³ÔXÒ~' ˆÖëª4sØ´ ‚™8°ëàÒGp5\k³„Ж ÔÂW{O™aÞqγFq×õZ¥“بZˆýfMç×1æ2¿n²WAâ\·š@ÃRS?÷ÄTsm¬êhx÷ºlÄð@®½„IUÔ“ÿýcθ0WÍDD9Ý|m&ˆõv|éÖuýL®˜†x­çô°ˆÙ¤Ý‡åʤuJönÄ«Qß*Q#Ή øô’|6DàÝÙŠpíù'¬Y¨îà°×â­6º,YFu¼á¿ºâKãÙß«-‹*x-\–²U_Ð&]ê4Ü¢Å- ¸™|ÇÙ=>gý<!PâÀ·‡zz.}Gö4_$Hæ/˜©ÓùÁº(mŠn[&‚÷2ë ·( ^FRèÆnuÇg‰Éãý†ƒ@™z°ÿ\«èŒ'ã€ææWŒ–o„ɾÉÀV5ádª6è4³!€Àr·0º-bÐ HH¬í@4cдû)dè²I…{‘2e]唟§GBM àqˆŠ í­\œBûõ)ÂÈŽÒ¶V‘¹r\DMÓä:º"ÿû Üªq 9{¬Ð°¥›˜¹L3+mX]ž¸:S©uÖ·ÞZ%@K®Ù<–~¼Ž!èeæÈúÀ£n ?üVõÀ—ÐZ&®{ ¸û˜0Vô„-a&üú™ º(C®£!]/„£oOöK|Á<²úØìÌv\á4JƒÉù&XIZÀùÛ˜%ng7v,qdOÀ×c£U)ÿ@„{J4Í2–¬z™íäÀak™øs×R=*¦Ö2ö³v?DÓ} jê.<Èøõ„¢SŸË±‰ƒ¸±u¬þ4°J  Y|23hpèK¸Ü—µ®¾qJ¶Ž_P”´oÅ{J)NEŽpm{áÀ\ÅâþQ Ìamؾ–„Éi:Ð3•›V·ëØ=Æ…“¬¾lã¼»Htþ”íˆÁœ(}©?kl¸8°ôÆ£Î&ik+hz€éÌ^DÓ¹ÝÍ4ÔéÊ蛕ªÁÜrH˜CãB~’)¢ÿ'·ˆÂªWÌœö?̧dÃÉÌÖfÐŒ)ß~üûÙ-uÜä¾F×¾^WÍŽä6º«Ùå–Çš/8b¾y5Ð…°¦/¯Ð\–Èuû{x¦["ñ[ßeÀCd£9è$ã§a©z¤JÐqªÕpÓ<{¦¤´ˆºùTçK¯ž@ÛÂÈõx‚& xõJsÐÑV(i IaŸdŠF6Ï]Æ RÀÀåû³¼¥j‘`ªÿA% H`7ª°}¡kÖìJŠì´žƒYŹªnÎÇOáYåéZ»*=äØãìf‹Båë·öç Œ/µhLµ;S_Œ•sCòe;pŒ=°±³á ¢çÜ”páîÓ‹”·¸Cw?$'HŠS5Ýb¾`ÿ6’ÔGI(ɨ[øÁI¯b—J¨Žú·l¸‚m×qc jM¸iK$ý¸øÓÏ)Ž•ÀÁåÀ%‡#S81r º²fšûßù8•Y¼éê¦Ü©3p;³š5…ã¥ìÖaisÚ¹ñx؉U"ÁÆÚ{V8÷ÀhÜFæ ÅÐq/.î1ÐÀ­üQ¸{˜¥<Á(Çâx­ ‹( Ÿ?Ã9RävŸi.fnr2•˜ÛŠ7Ø/ô”´ûÌ ÿ&b©Ÿ;Þ pô'Ü6ò18"dhª(›|c)FIO¶àýO+Ê„s''ÉfUû·|)_»þ=}5[µM+\Ô¡,rõb3Y;XGiìP}à=’ÙbíÐÐ.n[Cxîè\ùÿ-2–ÉÏyXúåV¯ªÉ´Q‰þƒG™QŒŒL¾î8_»l?Õ!ΗÁ‹=|žWÊ2 O`© /‰óÜ|ÍÝòwJŽIQ6ÌÐÆÉë«øu€«~€äñö‘D÷¥v¯í@*”ÞšˆÒC¬,)äT™È¦ôZ˜UCBÚ÷f–!à,S¾q{„‚æÎ~Šàá+Ío€öÑÝ#!e˜WE«B¹¼üúÿ[ìõÝ+¼2ó—9‰ñ{©H/[x {(U‚b>N~ˆâzÅÇ;ˆ™MW÷‹´l$´ÆÞ×èÑŸ5d”÷|¤öÖ¥pB‹ìâe˜ÌHód—È7 ✇þMaŒß!š>dn…›dep†¥mÒ`«Y‰œL çÿC´‘¼ J$jKÕw¤•£o“– Ë!©C9øºÂÙ"Ò}Ô¸/Iúø­ŠGŠÒAû³ñ@-\iœ±¾i-Ó¢:@iÒ0üäQ8V1 u{އR¯f/å Ór?f #+¶Ä>ÍašeÕÅöyÖ}QçKû'ÿ–~Ÿ Mè{zØ+Ç‹HŠÉÐb c3Ó»ÞTLzp€ ðœº8˜·õ퉇lKý”;è¹å ª¾÷k ­Ñ&$'=§ßÞR%¡/ƒû%ÏUB¹â« ¯æhcS6©’-­ÀTœ%øÒmÖ™IPRLnDJîØcFù+Ô8q†BŽh¨o:u +ZÀ®ó¿?£/±¯ Vä_têâ,f¿Aów•g=Å2û!ˆÕ½m>#¥Z ¿!BÔ1´ºú§«"o”­˜3êpÀ /’ű×ÚÔJï¤_Ö°GÎ0i!ÓxE›Ì§>ÀJ/ðtÓ¬ƒœªP÷`JÒІý{Ú Ä55§ÈWž¾)1ªx{2‰)ß<)§ï÷5óSq¸ã9¾â1Æ "â?aŠ™S+IôƒŸÕÜtn8þó×OU‡´!¨—}+EÄJ‹å†cçf‹îzŸº³ÅT™ÂKÔg( Rúï¨ÂyâþUç3 Òg]oíÆ¢ÿ>š$Hå%³¸ ÇRK–c‰V ¤ê»Lÿ¨C4(àt›ëM&ÛKÒ9Ê÷¼¾?pÊʦ^§ÎîVN¾'èÕ)ïY!@•Ÿ?¼ªä»C ™éyë·X¯ÇÀ‡·n¤ÍmÄsEìÙ(®É‹zÿÈÖ™À§™y«…†Ô¢ƒÊ/.ŒUk ñÁKðˆQжYeJÉž'&ÇRu8gå÷‚j@ÎZ-µA5dfþG{¡8ÌtÀ­ýx_Ö™]Р×&ÝG„1d~ ˆínúý†¾Œd<ŠŽ*Åõ;؈ãË_- ËÃõ´ Ÿ^È\üöûa«áɨck+DýTs=ÒÙð=ê–R{å-Àe@ívk`ö™.€vé<_³âæ­Åu2¤IÕÖO ,ùl¿Óè#öR~·]쩑߂ʵÉ¿Û ®¯ ø'–(ÄL æTýÐM6®C¥jwd?.EÐTp®x¸"¸*èü@à”è~RÕAÒf¬§x9DÜüŒ&¼_ACCF“5|9‡tIp¿D!K!Z„3ÓÙ‹ôÈÙ$CŸ è£ëc§ŠGk>ϱÂ.“ñ¸ˆ=7ʤÌ–¤?­ïð‘Œz{›sæLá 04¢F0°ûFˆâÉPUP¹Xçõ•h-7Kg¾Ö@,¿à\˜3ï=ä帔4_qÿÛ·eç’1ø²t ¹>@#éχƒžµ`Ãmf‹0³Pb­˜ÍN%å?í$¶}«íØ$1ÓÚ¥ÞbÅïªÕ"¶t xë¥{"å Ü’à*n„V4=ÊY’£ÜŸsPÀ_ÊñüŽ»DRDzIÏ1dôhÕ‹'û?ŽÏ*­è+Þ¨’àņ?5\Ô‘_¶ÙiÛ»;,O¥ˆ½Èì_ ¨83ZÀ7‚>Lû8O$Ï‚E ²ᩈ…|üГw8ƒê›‹ÑþŠà½ßñ¦:—}x ´ÐòmŸ¬d~Å ”0Ž¥Gq³HÉ /vBœåöží¹Î¬®¤ˆiíÊØ2žƒ‘oYh«ûZ:3]êÚ§á@`Ýÿex†ùD)þ>‘¦¹LEà`Tý|Ù™U8œrâSLÅçï³]Ðö£©_C1=™®RxËQ Ñý¦KJdé±/M—~‹È@At·pLÓ©ÆÛÄñ´JºÁŽÕ¼×P°=ä åE>ÁØÞ“+L€Òᜠ|Ì(ØÙýǔªêÒ–Îû¬@/UBKË‚¬‚Úu‘A€ºë8ÀéÖÏ²Š¤#C{zÊxÄ«÷ZyÁ #³þôOP`ÏùºÂayaÉм+ÆQ̽ˆžÜx8^ü`ïpà ]ÛmUåÈ>p*ÊøT69:‘<±ÊC£Æoæ »8ä ¬ÅuþV#•ÅêºcâUø) ûò ©ÙáncÀ<‘Ä•rp$Ý™ÀK5às‹ŸÂHf÷ 4„‘˜œóÖX¨€œ;YtµrT‘'ÛϨRB"?$H`ŽÊU“ûýÝÔL£']oaV69–¼äJ,5üãØÅî%úß{žÆø°TB <ÎÔ%9âÉ#k›¼ö¿äšøÓÑ]6æºùü5TL2†w€b—KÜäÅd,ÓA3ÊÒÃÛq½Ø”**9÷­<ó>wzlZ=ge¢ÚŒÁ¢ÀÄF€Ð³AhÇÕ+âÄÚÛ‚I Qnz‰cJX³é„д‹Ñp§ÝÍ+¢'?ÃÝ“'°Û<ßÊ]gâK@¥fs÷ÐögÃ÷Œ(MÐ4R½ùÖeÑ2JÐ┡%Ô.úw•¦c#1ß¦Ø ~Á`ç¾!ºIIèBƪô}…·›÷ZG†œoIŸ²ØY0ÊVÉ"~¶Fë'´´ôáî8 xßV„çÆPvˆF£,GøŠÐ¡rz{^’R÷y÷3”Å©a$»Ìq®|=TŒÙ^¦ñþ³TgN²mlL¢‰40L ?Ëw \xQVaßç)óEkâþ4-D’§uê!·n´¾t¶Aç9o|¦3[ßòCjëøzÅYÁ•Ôx>›©Ö°7fòp„BG®B‡p=XQÉ 7Y†3-?ÞŒG Éš(è‘«²Ý°fdsj ˆxgf±5éÎZpCðßȽÛ*Ùå0½ò¦T§˜q5Û£‡Wx”‡9s™ÝJé<ÿ&[ÈÔQð…¦ïÞEu|]Æ)ò_å0]¬†ăêf=ÚWRU†Ä§8LŽ&Ñ_Ù lY%§¨WpÔÖ*G»…cÚ¨¾+KÌsé’<@h‰_ ‡ ø{_F®ÁxáG0 ™ùö—s"õ&ÐQæ ÔÈÑÂ_¼ª„0¯ËÔ€JϦìÐÚ€<@å„©òL42 ¼tà êƒÀjB©CüædŠOsw ¡Ú–³Nm¦ã ‰%>¾ûYwtˆ ºþQÄY—_¡ÕScq$[;¹Ø`Δ£x±2Þ1yLËòM¹µpf/(T¤ë­À¾/kUœŒ°//žs(v€gd%n÷÷\gä{EЫ ™}m¥SiâcØ™,¨ïû¬Þ^"×Ü/ÆÖ,‰Ÿ‰’¾þ°J÷€‡š“êB´÷ÓïÜ!e}¦4LÅÓµ/õÛc"³ZÅ6^ÑÇ#`r³<6ö_y,_²H?¾$ïoOzi«ß±úÆ=††Só#9,XàÿbÌlŽ;©çkÿÒ•†#õ®xÄøSl6p ?ã×’‘äkS&è#»œðå=ü¸‹á;w¤[òñ`š‹4[lϧ ¢ ËZ¶K@ù"âò¢¥…3þä'‹Ç}¦cUéUà×–®|Á†#ܳ)”Ž uÀ„¤”ƒÈEY0xïú=;#"-î­@–#”ÿ¿Œ^ðõ[f0ߨk¹¥d‹EUÏðÞ.…‚3;Ï5mö*ñlF´3­’~îû’ãÀ‚!G+0SÍÄBC"?ÃDhýˆ×ßɶ€ôë xJOɧèWÔc»)S^êpåtgZm1Æ„DØŠ\bÌ*=:[Ù™3ñíbšH³0z¬Œñ~’žâpEJ€<¶LûâøÞ[‰áúÕ›5‘Ô~¹»ëcä¦âe¯1Yhq -Jº¶ÐÓDé€<A‚âØÀ°Å‡¡êNïq{Í•Ãø6Ÿ6ÿáú‚©[ çIž`(ìxn‹° l õ¹»‹ž‚SbU>Ô*—ŸÐèô0ñ}{a#¼Y'!ð^;SÐJyŒ9(Úi(˜›ï“ŒðQׂí>nÔ$Ë¿QŒdùÆí°_Qn±ò÷ë€_߬×,´¸dê&ÆÐÜ—Gsô°'–ãÌÛ@§Rt0ê¯R¸!0_ÏØîûýÓñÙ8©Ã=T2ó¬3vr]SÍ£I>éap%îdÐ}ó—tP²Ím‚PŸl5BÅÊé2ÍÊösòÖ¿Ìå£ìµZë¯L¾5 ORtÈi°©¼ Q=ø24ßÍ4t^šÝEàzÖ…×c•UÓ·C<¬¿ì"í Ë©N&I+_«_Æ{†o²{HÁUÕ>°÷Ô¿þ#ª%8·2 ¹7BUðç+pü÷%’ÎûS^‡àÿª%§g«÷Hì$*øß›T±>Ëé•­$ü·Ì£˜+Ú»1;ŽýFœZ¬i0د:å½Èz‹9œY!$·'÷‰ñI∘ݽÓè&N|sôB˨¯ð²GÈ5Øhù 7N·‰îyÇqA3§IÈüè\pœ‰äºB'–)ù.3Ëã"%¢Ú,,n,r¬»¤—ëÛÅçzÄxSUvççn/x¨´íä`…P&3Æ#XØÔv3]¥á}†ÏÑÐÊÛñµ>—”àQýÉÕ”*1…–/«ÛR^W2šaôÌÓXk‰( ö2¤ylS2 *7¦ã'O7cÏ6\‡䯈±fZ;„SÌÈ„9&:‹LŠ%E#—€zc¥ÀuYTpF0î¬FÝMÈã»6û>Ï·åÂk[%â² çX–;,ÇWÅ®GÇÎ(L¿¥â*¯ ÕËI¬¡(÷Ó¹Ê]=oxö$¶{¨蟯ò_P¿×˜Nðqs±(nªãŸ§‹!|4+{²»MJn‘_Rû=¡¬þÙ|TÑö39Šèæí«î¤ü}¥«Ë÷4žš® öÒ?oˆ†¿–ÕÆ²oýí}"p†@ÏÍÉè{’»‹pfÄ—¯ápÔj ØûßžX›/¨°rÊüÙG\ĤA\‡;'¡jÑvt:%-/–¡ñ{Z ЋGG¶êäN<}Ù\æ]ñÝÕ/ßfN—jUø)k¸"‘4?Ú.ùÚƒÒµõj$渭k¡ð ±‹M‹ʉIkøí°ÜÏRmµä+ í%§êÝ×° ‡šž[+e©#”¬ÈDoýä&îmÃÉëÄ1PÅÆž©ùJêÌÐÌàÐÝ[kbÊ›@?ò¼Ú êØ¿7ãkùBëŽ|A.œz_“¹ØíNA­‘\ÐbÒô§œdm×µDÇIÌ´Òþég[+yrstIÛV-Ôƒhüh¤»E'Ê?0KÇO»üº™;óúþ #Mê”è0É·–ÔɌ֊ßLéƒãêì Ze:#¬_üþY°h… ] õðÈ<´U}M>u)Ú~E¾4iØÎ µ¾˜Z2aœ)X¡òùGÌ31W¼O"æ€Å¦?œz²BŸØS kÎÉ*¬£Ù ruæ¨'ê!xW÷Yá7Í.§æúÑËœüT T•@=|}fzP*`?º#NýX»úˆIEe64`‚•SÍ.‰ÅÀF†žÃ%JkôrÿÕR¸Is»¢£…ÿ@7#VÁPŸŠÞ]Z¢ "þ¶)?0 ѼCõëá8"Z•ؤ1Ö¹•£¸š›ÆèäQré\°$:”1ñ6'Æk„­–½ ®˜|d½Û­–d~É)ÅZ«:÷€[¼¬Ât'™d5h~8nÕÿÝ—Ù‹`¾»˜}GÖÒ CÆRl­˜êùÿ¦×³Iéa£áQ¥LvÄá˜àžœUTË'Þ§NÎý/Ø= Å€÷UÔ`P÷gþC ÚäZ-!Ãe[}æržw ÂJ;öŽŠIF¼ ™¹!Tð$ÍÈÚËÕ¦LR o2EˆçŠÕ§àm…œ3‹TGÝ +K?œ³¿ µ¿/êhæÞXôÚÖý¥o“F<›¨]òcU|/ì²b:E™_µ:u±@D& š(Ç%¥üˆÈRÚ)îy úî¥ü¡V.\&Èe¬ÆÒOL“_ä6÷Z^žÞ¦Ûá^üÏI]w‡lAœ„9½¸ÕÐRNF€*™8V"¬Ä`Ü(ÅK-Õæ m²‚@ œÎÚèÇ#—€ml ýž¿#I«Ö¢“¨“7–Ïé=Ñtá0щ+SõG8DïÒGWVFmë@Õ»û¸ïp%Ìx¿°Št‹LõÚLó ìB1Õåù^"ËÂFö3¯–@™ÞXð?_ë"å{q›¾ì ÷´i¦°rlW.gä¼>ÄÐÁp³ßÚ¨8×A¬·ÀX›ö $8Ó4‹X2* ù°Ç¼ ¦Pùq ©!® ×øxBëLeDëzü!¦³6ýdº¿¼Ì±”kö¿U^vX;Øœ½ß+êLu'óÏCŒÜ’U2úFuµì¿tÛmˆH¸¨î2¸ÑÕ±C…Íј ®ºl‰çë7þùs¼Œ±Îú·›(#44a0ÓôàSh…ÆdÈ~üu8=¹£X¤ðûuTûR¸Œ¢²êQ¡ÙL®uYì ¥á÷ÿ}ïÍ#sme6y³t9‘²Ö¶F-»@‡{]™×®ê»3šõ¨háù ïÀö¥|J$d¦]U4Á'·Ù( íÛ˜š”¹¢øj?)¶£µg)^¥ñŒ‡± Âñ3‹×ÜÈÜ•C2‰\UÔ’B€h¡ç_l™@kªÆàaˆ¬”š›P\sU•?`þØ|åÉÁ:¨kÚ—¶@je8’ý|Ó °R! ܇îåR¯iÑ£6u‚Þí°éêé;R—œjÛ$´ù3Îì—h~·KöÆ?…¢ ¤¥¿?mQù«“L§_Gë B‚b Ï¼ƒÀÐN<}ë ϦÏ3¢ËOð{‘6וßÜÖÀí:ëéT½)@6ôFêopxÆ9/øÙ=œÏ„y|n€¦íTë3SLjÌ[xYõùIUÖX‘HsÍaS‰duÕv/ÃçüÄq«#6IÕ{œ²5f@¸·”úFËþâq “âç"çàVzY/e:~a¦L°éÌY±¹@ •à&xE¨ÎoCú‰?€* d>Ñ i-\ì<—“LíáâSLqã ¹¾½ î®úåž¶Ðçí–i¿qo 9£ŠÎU9ÁÛ’½¨ÓÉì´ˆ®y €‚ ±°â^½Ž*¿ˆÌÂFú¤:#<æþα``}ŽËþPùká¢ëKÙóÍŠK„êÎLì(™é;³Õ/¥¸" ¤&òd"TG/ó–"á%D_•¨À\îõæÃÓ}µk¥ƒŒx!òecÊ‹]*WÊ~Ä.á$ˆ#N¹³uO/¢Þ§Õ¨ä‰h¡ñ°ÝøΣʛ¹ýO!Nœ’ð¬ŽlÐè8Ê^{XÝ0ÏS«Z@=bóä½’=ôœIЪb†€-wÂ#rKèO BKð›n ‡oZ¾ f¯WF–i^ÂÌI¡¤äù ®=µJ#úì³²—´ãF5…ÚsQ·m"oꨡÅ7ñ¥Ãüm8xr v¡@é†WR¡€|´0’¿ùEÕÊ‚„†õ„’,ác´ˆ{Ã],ÀG¾Ï;£ïÞ=Ü’ÕûJ4üÜB#ü" ×Ô×¢¨×ñ’ ïŽÕ ÌB¨Ìáv•]À:®à–*“#!œØ)˜/%szEΞg¥ÆJÑÀ8+/þ0 ü‘½+ˆ ¶½'®ñÁZñ="%_±O×-7`«ÀH©9|¶N¾uz@Ñ >%§Eé<Ä)š³A.u.ü– ÕTЕ÷É-çÀFæ—Ý4º¶ÌTÚ T{Êm4û‰bm…Ì¡°ïmBNÐþÈ…×{]Ù¶Ûæ§Í–Mèý<’Ç,þy—ãCV½³¼_yü>HÛãF<Š˜w¿¿å»”BV[ò`e,ù”:oò0µœ‚öùð @. Š˜ž JSÃ~ƒ‚B/½­|ÖÂhÌ6•’Þ:Øõ§áë#¡×æòÉÈ­’C÷­ßÑ‚!ÔkÃÍŽº ·Þz7g¸»y©‚Æ›ºm™$© ®´zó>׸|)ó’I„0÷ì}$1Cî2ïÑ!ÀôtÖÞR~Ò¤uuÿ]DmHw4‚."ý4K@ƒ`b*ŒÍ]ýÃd-AÙ¿s͹ÍuéÅ5—oó9,-pÀþÜ¥ªkÑ#ý®ƒ²'¶š‡N+u,cò-ˆˆò%Å!í(d”8C&˜L—¿§T¡Á <d¶°›ØÃÚ$Ã}ª3,ü6L R_›õp×h}‘ôÇÙD g’ÙžÔ;d!êœÅ!Hw›ƒßyKI$’?ï{æm7¨ûÑ0—·áH4‘êÚtüf{µÙV8&Õå~éÐð¦Îâ ÿYòx×}Zâa&)sÁ0ètÆ|¼¢'Q¬¼ d˜¨ãÑ>¢2øD»çôŸfM¿$€´Ã`-ÚEWºý‘Ñ ¥ j“X”~˜4TXí‡}Mº40h?j˜‡æ&N‹{ÞŸ_C1Fægú0„ù“IBÓ=`’gšh`IOì×Cî»M/•–. Á³ÓÔ‘¦æÎ4¸ÓGÉŽO›"NbàñÈoow_Âc"nÉNØèçéêù3ÿ ƒÔ-Eлø‹À$ÚSï,‡áÕ7B¬³a4/ÄõÍÍàC¡J®C© Ä2Ú&?+Ò¶•¶3j _—_{`’Àû\ÁߣŸtùk~îiBä÷êýœ.Ÿû’=Qî|ÂUËüÅÿjQT,¸™òM…¢:üE]Žª+´øxH Ûü ÿØûp|~—4*™+2[0uu8lD]†¸íº¦ÄôÁMÞ¨6nI±³¨‹„×pY¬˜µSÁ‘“}º–x¿y\ƒÑE½ãÎoÌJ7±ÇÍßË©¾pDx•ÈM!×öñk¿U?@[iúíl–ô9uS®i[U`ħŠùš#5+Õ¯Üb†wT~ÏF¤(°ë×±J6»z‘Áûœók3œxüà­IÕJhÞW’æx69üÑý‰åÓÃß rêÙE™V";B‰[ì‹ß,ˆ9ÄyÀÑ÷Ý®ïÔt»cZ`»Ù§¬#}. 4]¯É¶Pêm1¨0 qîKâäîv£®ÎïM¯ñéÕ?A‘ÿv"Mã¡ÙË)õœHîI?1©StŠ”æõ ØF½~–I=¨E³RÙf¥.*8½ˆí²˜r‘Ic"Ê&Ľû’  EßÓÆTƒÙb›%—û ‰*UùºÔ=œ2eÃ^@ãôm°œM6Kô¢[’|ÃêèŹ!æe_isöPð7À­yþtªh"¡áИP&ƒ©Ÿ¼pì‚0ø ‘1]üü‘.b–H`³¬=ôIW‚Fžé"‡6E#}F§â!mV¯v=¨{x¢"üA$»¢‚#óHÇŠ–#-87Àâÿ¥M •â}£exÓé Wi–õA†úóýsDOd6³L¦¹¼¬]2]«ÍH…rË.y?»G¬Ã‘»9ï”jVDÛÌÌž,5 Êv8*Ö}YÛžŸ²ÈúÐÝho¤û5å­€§–+f·u޽3¯Ôöe .•àhÝE §ãBË~n‚Š“ÙÚÒ€€ æàˆöÙ\ÁÑ8¥1Q=ÈTRЧ=^¶+=¯ê a.’˜\»`Â~ˆÚC'‰'ß;£‘’çÔsyåò‚n™(%(±°Ç©V#›v…¥-ú¦#ãíÇU< ¼S ºRQ4^ˆà—K_ƾõ~õ}||·¦THØåd€…låc¾ûÈ=6§-/è÷(âQ#'¸ÊÝEyÀ±Ï0Bž.JŽ6ï B=j}G%¦ƒðkÿ殥…²®Åä'Öçû(zS¹zSÄõ/;àxžIU’JõúUOZD9ZdÕâ ­F°ÜVœ °kAªÙo:¥ºÞÿ€Ê*.i 04ñŠu}žÓöêמ€w­]L÷ÑatK&¤­0}šiP+Áq¼ à×kÐT`‡iâ4¢Ž»;Fœie6ç/?¯|Áã3©zÅIúÁ_‚¿ý1þ°}…Ž·¸tÀž‚ÏÓ㥭Ò‚M‚U[¬8¯¢‹;<¾‹)ú&@¡°ï¶xÈÆ)P¢mÕêJÞ&b¶&_>NqNÞq)wï7PÄAŒe˜ÀR*œÚòú¾‡ÒoµÚÚ›">üÛ\e¯I¬ŒQ¨ÞÈMa²02yI»Âç±Ê4õÕZåã'[­åS=S¢úÕaqí~¥m(ö¶Bö¨M÷‡ÞüS7¬¹LµJp-l„ìe5íÍg߸0+¿çe)8ÞyPFWc8OÝÁî{tÂI˜ÄLáGJÿ˜c§—q4¾zˆ‘zÞ¸¢_œûÚœ’Easy¸lú'ÂÚïöá[Gnð,; ó÷é…_"t“¨MÓÜouýå6í%^ÑYvPâ#ÆÊ-M„¨óa Á½ŠKÄXœ{R#®ÛY–)óˆ!ËNjT¶Œ®1¬`±]glÚ"VŸqÙ.ü—™äÅ´’ô,Ú+¾9d¯=js´€«3b€psÉ®eH5Û9¶ä1Glƒ6³÷¸Ùx»´5&tŠY³±üÂKº 5RMªN{&,/R©ÕÐk¯ÄÒIõü.‹ÈÐŽ…{¨lË:Õ L#W×*¿ ôaä>‰¯ÇÌÜ6zž–ÉC@ôsb¡\~¿ïúÅQü_¥fï_;á­²Çòoô‚ìCWèá½á~{súÀn16bïÔûÍÝ9¹1õ\¦ GéÛI•|•"XØTsúw—•²¢ƒ#]F?Þýã™6îr ¡±ñ  %;iþïät¡Ä°)]ÿ¼•ɬ*˜H僨ƒ¯n_k>KØ:um÷"LÜEýÜtDižý<ú?äÁVuóàñåvÏ‹SR~²É톲(ºvŽÇœzy`7„¼A‘›ÛzûÎþª0 ž*End[³ówTq3š–š’cÿHËñªnwcÛn;’ŒqH)s‰¦†¾Å9¾Gù¶|z¡lø‹~Ê’èJšoL,-Ÿ¤ëñÙÁéâx.] R‰Ü"ùB{L‡‹„Óȹ"çñÙ È[S|+§ë¸w­¢K(" Dþ®‹Ÿo߳ςhf:saŽ;RÀi½¦.úƒ“ä£dGú,FÎ^?)+L§T!hí¨¢:]“š¡”Î0néãfK+.¢bm é:­ÌƒYU¢$Ïjê,{õë·ºK"çøÃ]dp¡&:ØWñüÁB²0ð#@óTÁG?Uìõ·h’k³¡?Ãå#ލ™>V’åRX˜%x¥®a¯ÙILž¡hg½ˆ·}å~ÜsÙH!‰á&{Ò?±È¢ R nõeA&ïá•ë¶Ìw…Àâ:­uMÌ2ÄÖÙ³~.ùҪבYz¬U2W÷wз?Ê]Å ÉÖ*$p^’|˜ ðEÃ[¸F˜õÄ÷þ™>)ÇX@Š]¿¤R0R¡LzoÔËx}8u#!Ó‹—ë„aåüØ—eÞ /#‘âÖË/dÒ¤‚¿)’¢üVMl¾ížeæMàê®X›0åcEvÒ³ÌF%K3?T·‰‡ñ‡áfŽ&ãµßmŒ°¾ êÄ^“NW]þ ümeÙ9!Ž<&1FØ“@¥·9àGÁ‰uó%bÙ·0eéwënb¿yÜ+úiØÅíè ÕMˆ!JÆ…ÑN_XPZGŒå²%æ ÐПHƒ_¾éå˜~óÐî”.‡5Ü®”ªVœ`´²A*6Ümƒk*ÒDã5ñ©3Þç–{7¤—0ØV½R—‘šu<¿ òꡳÓÏðb&Óë=&1Äñì)YñSÐß…žUŸö>é—ß÷ ëoFÜdßwV*œu{ÃG‚rÉeuü nþ$\¨òRkQ¾ÁE{–×8´ˆ‰š ´l ^æ|IžRZùbœ»–¾}$|jŠ},Ë]ò÷í…‚[M“tË©)~‡='ð§ÉËEðúM•XÄY}sB6ÜüÊyA~ÌÐ<ùâç¸eD°$XY†óy«´=rÎ?T!Ìþ&}èÚPBYÍD&´I”Ü’ŠKƘB‰ÉPŒz¥KBág°8ܤ4ÆýR摪ïZà#Tf_”ã üáÊ‚<’¾ÙoggÝlòU–YN­¿XnaªÊ P½}SÛ"øg¼I§#°mVû·ä*~yoÐbÓÛé}]ú÷•†÷‚9Ðï &T(÷%êÍçýÿõoP>ÜÉ3f©Pdà3§™´ÖìÃzžÞYã€\¯&ð8¶ê '¬;äí%ç`Ïúœ±ÓÈgÒõ>ý–5¡ø KªžÏù 6pëìAõÌŽ|†:R]€ËÀŽAÁÐD…Ë¢~HñÍWc¢SC#êí³Eñi¹å6aù.>«û®œT,Ö3+,|€§ï¢‰h-KLñOAB*]ëÌÎÞî+ˆSGÁéJüæÛM#•ñœ›¼õXþ%_Z7ŠÓýqwwB˜ [”OÃNcbÊOlŽwbåæfFßÓJÌAaGÉPJ$u}|.Ã)ëªs¢Ü·å^™jÌ"h#ïS"¥`NXbíùÀ÷Ê¿»Nåm7¢ì'²ŽkEQxªæÊtÖTo“3ëËcz¬«u—ek•µú$P&ËÝõäMÍuç¨_ìÝ2’ý ”É !?yŒS¼‘4Ê=ôã¾;)¹€!å… Ýì±`VôZgÂ_zÙe‡y§å=˜¹×#¤ ƒwÑËG_öä"œ5ë N~… ¢ù»C´)¾;/ù…:Ÿ«Qƒ BÉØ4§Ë ,ý¼,²¬c[üÓ@m ,ÞÃHU:}gQ£ôòM­…s]G–Ó¸4¶:놠|0“ÅÇcŠ©}lA@ éœäî`-æ{NÁ*£rAG‹¦&–ÝÃ@V12 Ô§<¢Þ]»ncx[Uf³fI%kùcßÉp´:hÌféÒOš lstñ;Z!TèÃßeÑç‚]­GF!ãróHYAÝ@ïGºñŒalEù¦Ý盄}d§Ïñ¦±u¹¿w¢C<œñ+;¾ANR•ó8¸¡¦Þà?î´(&áÖƒ²8쎷°ao»wiüY‚ÞÛ…!Ëõd­HfµŒ_ÀžX7[øLíC¦à9Û˺("rôEÙŒŒn’Ÿ@ í×o¾‹2#-å!Wð¿=pÙϦ t ¨êIY€ÀW2AÓ9L XœÞÕÈ (†÷ŽJ˜ ê1¬ ¼ kéŒ0¿š hÒPßà9X O‘rÕKøï%p¦}‘¿7ÇâO¿ðÍX¹Ëm&¼äÇsÏÿfro£J@õ¨ngÎ$çç6ú¼_wMZù ÷Ön»°ÊV·G >l³ø1&» | ‰C¥i0`)Ž íKê˜s!VÆÑlfLW°PA”ÃMú³¤•æv±>L `×Fß.Q¤ ‹²¦.:¾‚”¬ ÿïˆ 8VrA'¤:b˃ÉãdÙ‹ÜÒµ…f0Ñ}øÖ£ï Іü‘ãˆ`O^'Ž@R¢Ãû´kEõÜÿ…ó󿋾õÒa?öA>DÆoçlPIÓÕS©„³'ŽöàW<_)Š8tùZ”¾IfGÀÙ’“Üœü$êE­·!o¨8¿¸Ok3ª7:“£“sΰ<Þò¢…]4/¾Õá7Øô}KÅ–ý±º¾ŽØá+çБ0`±‹D'&ˆÇ膞n,%¶è€ÑyÊ.°ÞÅëFª†ÚêëÙÉÜÆKªP}Â0Õ(™ŒãœX).ƒs[r÷¾"Õ:;™¯?1)3‘—$´h•ÄuW¨QP‚™äÝÒøÿzM’ŸŒSÒˆq4©‰”^ñq²=3Ii/JÈV7ZÌä—})ûºËª&yž÷˜öY¨¡%#¬ÖrQµÃ‚NøÊ¸Û´§´¼š­×M°’…7/vG -ÀøñÅÔŸ>ÞAåýø:Œe+uõÆ|EUÞaÛ qáÔìCD(åœÏVÀb pˇÈç´ vCGih˜M9XpèÆ<º?€o/Äz£@ªTšC82dSQkQI„µ] ÿt‡'ô5p,HÛØJ»lFvyuªOùØþÔüLk[¡}öÜz›¾aÁšß9Ý0K çgi G‡·ŠÖ¯@ØÆô{¸¼°07\6Ö³€U4зæ=¬r¦ì=ziÉ|®=Tj«±øu%d¨tKþe ãúV·2.ƒ¾€gÊн >"xú‰âvÚ¿‘u%÷gLèä8oÞÖôZBÅ)é=hS5Ö‘ äÒ6«(eŠ1ýÚܪÝzÂ.Sü8iqOh´,Ôñ4Ôž†*†MýbH+n(X†YØgƒ=ö}¸-Æn–ÑÆ.Œñ¦Ï÷ðtfûæ>º­ÃMç^ôçaFåV„Òù¿¹Š¶ãð˜Eoš$Žœi6¦ï8xN.cìU؃Vúé %øxØ¡”ð?ƒ˜”]3£AØüû³‘(I§£w€MÝ…Ü•"™²'ùmÎî˼c§y>à5jÊ…†ZÇJ”#ìžýÞ×BäÆåpªñýž{gLtóáß63]ñÝ^‡'(ök-'ôÇ€–cVB“•­†ü£i”ÁOC†Þ•)šFJ©®ŽoášKêl›«×Ã'SaÀÈ7n%ˆR‰YÄý­%ß²6W²?}DÜo´+¡îó³+XoÜGî)W+¶ ÔÿæÔǺõ2±ž2qÆ­~nüâåø®|&®âáHïÌE]ÅëÜ癩ÌcàñìþKƒÑ»”î… V®J!jò*Ϩ|•\úœËf`3·ô"*«w:¸Û=ÂùF ¼Ñâõ\‹áû–QH Xø/¿$b¯¥¾i—ÙêðŒªBPm[Y[£:-4¯ªbKõ^;æþX{vH?ûþê=z…<õ&ÒíÖ–zŒ6\¯ÍdöÝý´ òÚæ{.«ê–ämŒ²lêµ´N^g…=mŸšš'Šüæ²v`}Ð×L’Ñ4Ôœ¨gi:µ¸µå+Éq„‚ðmY+:ŒîÎâ ~ᵬMú£ð±¼ŽšlǸHêq­ ˜ðÛ@uzC‰B{R‡gɸ·Š¿ª±X2_ǵ͢dœÈÛtMŽ»%]/½º&rë°«å2*ü5Å'ö\%Ujª¨ÂÏŸÓ‡Kä`ì×õù)¦õPeü Æ:‚v¿ÕJ)wÛYMÙ Á6ú’~ 1ß%qITv¡«?ºñ¦¦GÂÜ¥–S¦+W㹑zÉ)»ïªH™¯E'þA¡Âzºª§Ùá%"ó+’Ø©hnäŽnÔ/$ò}?\ïþwíˆrgMà8§½ìÍ_kØjÏ®"«§SUbÜvíÛ5 +R+Â6“ ®ÙAIÃ_2ç¬~žôqCSØÏ÷Æ!åÄÔHÌs¤Zû9X1¸*-iõ ƒŸ I ™ $ºœ¦¬Ê¨¸–!]zuÈÓ|'Œ‹"°2ëQóÜ 3 þzbz$¡%@™ßøía«u™ø,”".î$6œ•´DÅŠ‚,! c(ð:vyü}i ÿ×5öÀµþXý@}‰Ú—äã;r EÝ’}ŽÆN$Þ ¡8HsCµ°ŒS;V9IkƒDÎMg5¶Gƒ:™n?*Gzù߬a¢:Ç¢^+žÑ§PZm«ü;×iÅᨪ©yC Zåùû^uuys_!çÈì½ !ãÓ´ãËÎd^²=¦«`ˆ}žF)y´ˆÓÀårÌ«·7€‡1;å ìùèT+ÃÒœ£% ð[õƒ@uú‹¯5 òÖ?^¹I«´.'ðjºio X¥bײ…‡œÙ¢íïÊ'[]Ì:ftmØ­},>ÙÂòè# (Ĉ“>ÖUÏiþÁBŽÇñ‹™ýÃæE`äEO¾@}ÁXøMÒ˜Xjù…þÜìV“…<„¬h§Ps,ªã÷6,'”÷Yõn˜pâçøO¦wWshŽ’‚I­¦ØyióÌ?$4éÜ`Õ™ô›ñ¬{7 (—KÛIqÞ“¸‡JVEÁ7OlĪq"ô}ó y»7?n^Xv8%jFˆy½ŒÂ#jgžÎ/T YU·=À‹"^œ¹ÂAJo=N€rò\¤ýc%ó¶™;3?Óï-¨Â~sV©îjûîQ­ÓÔW˜­ø6›«)V@žÀ¹}v+Ü[¢DnîOÜq4÷¶Qüý÷÷«Qyݬ©¯wyÏò—…Jä÷q’a¸xÈO{¢,üUÒm*±dÑh0ŸæÁÕ¦ >r-p®ö,‹sgÏ-2W]‹ ;ð†+7²FºØêÓ¹ÅZ€XÐÙ ]¼«M™‹†°§õ_¸ƒôßXD²ê$–ÁŠ¥›|KógÛá4¹Œ@(–ˆÈ;ÉL=JÑRÙ2VŠá!ô¦dçñI•©6ýiÈ$ù'c,;QOV!†@o7­$~÷EWùºŒ.ç Q&èû´ù¿‚0ßY‘´Ý¾6Võô—s_q¤5ëÓ^Ôivñ¥…pBR²ˆsJÔ©¤ /®5’¡¿ŒÁ×Db6ûƒ| íDo_„Ë*ß~HÇ!´™ )¯Æ<µå¹ã ’¥´Œ7öô޵›VìþÊê:°ž~!¾UF2OÖa'@1ž ­2»Ò÷tWeÔCç„Èí\[å§½”-+žÌt÷ŠõœQY‹#ŹsŒeã§2Ò‘D‡ Ü,+b”ÒIb žÑ ƽd§‘L½µÈ}w "®I©‡‡ÄJÚòÃÏÜhÖè>9ºúz¦¡ ’ítõ¨MÀÕ`¦cz¶õ« 3cˆs<6[‚ÏM<çÐXÍj¿Œ‹{7ÿc;ÁÈa•¥OÚC<¬‹Ld%(5‹ïH†?#ƒÀyÕXƒÊz, G±‘© ¾Ï^ sC@[ÕŽõ/Ûq7xx>ž&oå8êŸëtÞ7ÿ‹Â3·þ`êl! Ôƒ€Å‡ˆ1Zbw¸ö±†Ç7Äí¹å«È3š1X‰¯BÊ•ßP·¢!éŒ ýˆî–Žåå=î9qÃ23•¥Öd.Z9³ÇŽêÔ¼¢ï;ñ Ùä“Cá ñN p¾aóYÊ`ÝèN賋üª!?J¨–áç“Ȇɘ bö½“bpœžtx¥êœÓìLB2%!† ٠Ľ»,D‹¤º=ä×~òBÙpcXxâáP9ÇøèµžHL«à »¬û«¾ŸòÒšÓnLï¥Æˆ3ëþ–| KªÓA¿t¹¤×Š?—¿ÞžK¡AÂTuÏ4_ahwý³ÀÓ³Ád‹m™/@Ü“Þ(æÏÒ€^"w ~’«÷.2í}ÿ:øä''/¥ò¯&ävcK¯2›…b¯•"ÆVx$L”pÏ=‡æêíû(@~öÄh ?w4Þ’ëÇCMçAP”ü„üz.Ñe—G9òf ÙYÓà|6÷ R£^Jw×'Éý½7øëAŒ0S!‰=àK¥‰‰~Žm>ÛÎqà·:ÒV½n6ÄoÉáZ:¨f)ìžùtÜNkv½hËpûœý’&/ú5¯‡XÞ³½´Hë`X±Ó¿ÃÊ`þ–Erú⌎+ÚbCâÝÄán¿Ý8[´rð!6Žˆ2ab÷µºéÞô1®v–-ðE¹œ@J¬P>3^QΩkçS#'œÁ)¯)/•Q-‹Yá£â]æ÷Uà%?E~°1—=«¶3UA÷ž>ÈÚÌÈÔÕr?_øuíZÍ{_ÜâA[+Ѷ4ö[Ý~Tjû†å³CûiºBïQîÚšWÈ‚H™ï²%¹¨nûóÆí+IšnG¦Ó9b5”jü&=åÍšnºÚn ÆN JBlTuƒ’Œ~¢&<©¡¦bÑÃFh»7Ÿ `ÃõÌJ”7M½6@+Päík‹£ÖØ«í²QŠûÕ …ÕCN:@ê÷«^˜æùoG)¿ÖØ@8xîž¿Dú–Œ¼Š êÛW66›èzå². V퓬Q¼žß‹\æ/0D)l]12q4™àûŠO'P1ÉJ €½Wb£ff æÃ}rÍ™æÎc`¸:d7¹ž,øºôtÐ 4qšFÕ;"Ìx\TÝs$³GgË(—ŒÇyøkUª Qþ“÷;z>V —f.^5 ÕXHâf|N^—ßXÜ”{±¨w¨.›€6x÷×(Ý kÄìÑœíöG³kV¬ñ,³Å­¼„K0‘*!"|ÌŸiDí1´óEÈõ°¹âÛ'u5—BqªÖ·£9Õó)˜.áÑ»‡éfý#$¥Éãe¸,¤uŒgN Ç3›Z±9rá±­¨î%ì5|Ô¬•B8´–®¾ŠªÈMù¢Ól ›w¦WcO±µÉU&„Ôà oŽ)Wƒ²]k”¦7¹ SD¤³åf%ágyåäíEð­«ä¥IMÄRBÚM´CÙ¼¶©E‹aBƒa6ºFôO îâÚh·ã¥æÓžTþ£“JŠqq(®«¸ŽzÅR¥»d‰ä°Úƒå òR‘òbªCi©íµÑ„¼å Ê%{ \v=ÅHY…ã|»ŽS§âÎLaRX蕳´Ie£1åXÓà5C-’ÊBŠ€î0Œ¼Ï3놊ud”§ð²áÊv¿+ÑíY¢5þcÿ"%€/k}‡Å¸gÙ¢-Z|hm1 …5¼%°á’— ²» áœ~–~EFìjqß™%þ‘û=ÿ™ÌßÞ¤J›`³þƒÛ¾>}ŸüGRó4ó©W)ÔQ)`FÙÔ~%NÆFG_“\–þ8§Æñœƒù<è„I~¬"r¤(y>^¡V·§=ž·>Šœ²?ïûwE¢µš­%MéTùÓÌ8ðÚ˜íÑÎåSS@ðq’¬áv¹ PüCß[ 68aâÓ˜É xØ|ÿ* ÿìµÜFq!ºF9`E³xçÆ‡D-áíóHZæpA”1Øovj{³,Jw«x¡°voµAuûzN¾{µôÊiç]‡¿lýø`ÜÃv4¤÷éöÝT¢Ç;Ì8‰¶tꎸtKUÿÄ*kýNvò*ز ˜E¼píæï‡¨VÌc"޶iKF4©M³Èšš$G3PvÉF†Þ¤K⬢¹"2ÐûQÂJï^–¯™C§“gZ{›©±¹+dž¶i7}mçÕà`®­Ù‡gÀ!¾R™yìÀ€,²[ê“jžÓm‚Éž+W üP>¯Äü8kW§õpŠ#¤3÷0"Ô?¾CF¨EgNñÂiõ˜&ÎLâ÷…¬P=˵ çSÓÇÕá–¹“`Y5¤:Ÿé’ |@Iôs­æ@mè)›Ž€eã¹iþÄuK¿¡LÐc”b#*B­ØS&ý“8ý&‡ß]`°Æ˜`ã|}LØž€¥½©ÁÑÿucÑÑuBj˜s‚ÜY~ÜxHædÎ)”;†|Õ ¿ž\†‡¬&ÒÙ¸["L«*}T~Mç:';—)‹°<§dmV_ÑìÎKa>x¼Üï pKA¥¢Ù8ñr„¨*m¤Æëû¿§”ëÏ …ˆB¾Ã¥f§mF«¿‚è!™SÊ(¾WÌœÞìk;pp"ã)df³M‹º§>é7Œé7WÅî<* !'¸Ðfj$¬z ëVdN¿ó$Š&³ògâ´^ U™g£…Úñ±€²¾÷G£À¢½Y޹dÜ8PÖÊÏåXŽÕ¯ î}–rÍËX•þ3€ìÌX/¸°ðÕMöFIiêqHGÕÓ|ãëB±Ý¸—pc"”~ ç5ʰ7‹…H}ïCf6s‚žŸÎ5ùrÏ0èñõ>21ËA€’U¨½Š,øïÙW™P\p¥ï}å0+o1›dÜa._Çñï‰\HÞuœSÖúfJúÉb±}õ £¬‚- SÉÔ´¹¡Æ°lùytË'ê»D±˜RG8ÞÝN7`£BFâQpÿQLÊÁ½ úï‚°5q_6à‹¤&üIí1Œ®†tWn UÄ-t ¶rRŠñ±NèMM(o~"%ÙK$ÆzF0å’#s;`ßeRª~¯áT2F¬á6óIÿÊ×Ô‡$‡Ìšöm¨Ð‰qÏuÉ>.?Ê茦sÁ™œØø$Ìéàæþf€¡£hþØ)ÒŽØXŒM&r±€BỈÆÝžªt[!òj¥©§åÿê¨%y·¤Òª½Ð£mÔ6d@ñ³& çde¥‹‰‹f°üšŒ¨±-¾8ˆØõ©i\œ. ë}žüĬ1w¯ ¯ð‘Ϳմ¾(¾ƒ7ÍùµI¼,"é—¬GÄ`ª§*of/rôªä ‹ãt#ï.HðªÇ]¾T†rPCãs4@„ñµ¼%8*SN¤¤–ª¹©ž—*`Öšu.Ôæ1n¾Œƒ›)Äç–EéEžì<Š5LX™ÈÅçr[š[ÐÚÌð q—{MäpÓÃdk8ZÄÖÚÔ%Öˆ|*y¥¨.ˆþ:¸q8pdÚóKòëÏ]+%¹ $ÞRîà”ƒEL!}ˆ•ÙŽ­øyòn½Rs¨1鑜IàµOÂñÒ‘ÁA?#nO6Ã+vmA·Òå.Aõ‹Ú”gó_˜³Ø\i¾¼™,ÐT‘k©Sš@ƒ0v´ŸIžèz6b§NA `àgdM¦Øl šÒ‘^ä’iÇt«4Ç­ ?öi <‚«G‘)„÷¯ýAê÷Öýe¿“ï +õUÓ’·X¯†¥¬*±9ÑéN1ÆþM£UU(ùSzšö«úÝÒ²ºöQô—©+˜Ü!f~€k_âC‘”ªÇÐì¤ç¸DéÜp’Á%Ú¨K°ÊÔ“k¯uY‹ßäÁcCʬkíÑ9gŸ"öã*ZÄHi¸%uµJIœ^:QòÖö…l~œÆ?p3œí­žFz’v¾àRhÅHÊØ } Ÿõ`K f¹•È@ˆ$²ü›“ÓrØKV£]•©¸_êöùØ­P)©šdB„üŒ†ÅŽ™)Ê^døð¡á™I²7ùMFÐx’1Z¸ß¤3wI‡j¬ù€‚L $Á`uÀ¥NQbÔsDäHäÒžÓAW‚ªˆ ©Kà2¡jް Ï‘„› ˆ1eôräîMÄ/ÛD{¤þ,F7%¯AÏ`óhwà>‹åm”„?I2xùíû¾­XXVD} ëoõ̙ʚ±ZÆå*¡WZt”0Ç@Ï[YôáÔÜÑœ›yux<S¡¤ÇK¯úã”ÅôÅ'³ kÀqYQ9’65Kkç#©ò (`í w0v!Cªð\#gÐ1À*é{iFz¤ƒi%uj$%¼ÐUO«&QTvFÅ;æÌ⡺Õé’3{¢bdËsœ…fì¿Ôχž~pR#ÒÛú9ªB4ç\  ‘ª¿$㜠|rR)5¿çúû*D §•2x¾‹ä®­¦Ñì&Ûë~°†NJ ‹|CC\ “˜èÀσ0gZK&W@§° $æ“j K)NÜiWù€z£i;TÿÑpûä‘Öv(»t)¢¥­:}6äŒùŒËLÔKÒ¦÷J-î8μ"8ƒ6¶3}ˆ8´lšÑžì@¤o‡°xš[õ¿sÕS»U` M'bk4M^MìxÌHñ¸,ލž4º°;=« I¢ø¸šrü÷aœ³Ô0™õ«ÓÕö¢/Îrê9B‘óÅÂãvìÎxïkx\1Bè°ùìÕ5ê>b+´”TýÆRáñ$ê}™¨šP>ÞôfP»Ûb8€±—¼°SÁ ÎgûHI$È1ÖØN<¢ƒñŠÏ­Æ$ý`Ç_;é\Bw…§A°Uöhö jšÿ`!aµôãb‰g’#ÝrwõüC­™`$A[\ú'l=ýz¶xɤü*þFÁ „ÃYšU°õ\%ãITÃÆW:<ŸjF•ÁµL;*<Íq²ûu(Ÿ^bBk–`FM€61¯ Æ e…ñ&>½ðÆÔFO•'ÚA°‰@ào'‚ er÷Ù‰¼ü”T”°oÜOZ4õj¼¼¬œ•Oý$+¾®Ð<[«˜Ò¸¸ŒYm¬Už1j}´Ã‘½ñ”–285‡-agРD¾ÅõP„:~¼x,&žVr$V‚ût€ X½‘CÜ”Kä0ö¦K{`2YVL ¥?Íc—+²U”²öÖ î@I#SR7Зz ÿ£Aú§ûÀ‚ßP7ðBÊ Û/yúO¹}Œ|i#¾Õ¡+T³¶›”¢z¬PŒ3Ÿÿ©·CVdIg¡²äi†l׉D=7;¸) ™Ê?)ëóí/Ö•ºQ¯7[Ë+¾J£·ž5äyü&~(³7•ÖÏ~Ý“fn!å¥òO ¬’"‘WŸ–¼±œ˜ž‡¾°‚yd Ï A[iÍŸæùangçÃuÃ{ü•þ ­+µ%'Ó0}V+j}­UîâôX }¿^ <½:8¬)\íˆ^±…†ú»‚ør+ž.§%`ÿý朌£Øf ]JKP舤ªìîô›/îðÍèeM¿0«æ~”Ð^Y!šVò» DŸˆÚºp¨ù²°}ÿâ´åŽïG.lü©¥÷C‘?rø’fGxj3P—!¶îJÈš] óâà$XX8(oŬým7w¢m]$w¡wF’Cû±,ÕuNKó|ÿyÚàÙ`‡€WÅèñæiÀ²#üÄÚ.«OçÑBV/yVÙ+Ò·BØDk¿çþ”Õu‚mNÒøÊ«;ç@ݤWÓcª“FZ¶â²€_Úœƒýáróµ  X:Ä¢I¸­ÜTò3øæ9Š¿Œ iHŒ½´ ñ9žþƒœÈ›Oä-É”ÿÌÌÀSä³v%ý ¨óçá\“ˆ©`[z±#Fˆ:,ù ò£Å´Rîgëìq'Ú‹læá 7T5æƒ[ŒŒ±0€Š¯ÙœkJì· –[Û¡Ù+ýã@ð/.&fÙ£0[×Ù¡6_ÛS},…Ù¶ÏFõ̃„º¤%k›#'’qFÒÒKçV¸ÝmÝç´­Ê:f¥;fÔûf2ž« Zë‚4Á3ü&«*«È¿£¯f¸atãèC­%š/“¹0ýù9÷4@zA¬ì ¿Î³œ)Ê5ö|‹(=ªãT»o\˜÷ÿ_ÐLi›±xEØ •Ýf€3=)õÈ•ÄKŽMûß ÃtTç¦E5ÐXÌ`|".g#S¶_¾ìT„~œ ¢¾JÆ2Mp“ÊWFÙ蟛¤ w˜.ߨ­!è•t<…ööaSY—±@ýð­¾tG¦c™Å´#>>qàøù DÎT8ûÁjÑÀ¹€ÙÆ—ä×6O«^¬q)¡As#ÎT‚Ca‹ºëåü7ÎAMÉRÀ[ÜÅ"rm i‡·‡Áhî¤_Âzm‰ò€P÷øf›Çä@ÎÓ–IJÀ"dó?ßÑ$$QzʬM§ÿI]ÖÙb¼24ø¥Ýj´7³£Äznþœ9çË ´Ø×•"ù“GEüLUz»)Ò/u©:[É`óÃJœ£ê³ß³Ù±C¡‹ì-xÕ9ß•Çéc#Öc£ÙCмc ÿjˆõåªÜQþ¿­ÎG9 ±Ê_>nD0ˆ›¼Â9áÔ0$:–†¦`Ôª$¸†ærˆ ²È›xÆG ¸Lßµˆ6Eë´EÄþîä%©0¨Œ—Z-ð¿å$ráÊ“­‘yôÍ–cµ…o“noQι¶ãof:Ù §¸‚ÙI¹á‘5Ì.’?Y1®žPo}AZÌ(ç#®ƒwØ6cÇj<•SÚ³_€ÄmÜ7pÂ2wšyËz†¿~ÜSú9s[àÄgñþä‰)/ƒÁjS*œzœ‰ñ Ü„~¿8j%¡uû#v©>Ú¾€Ë§îåÈЃᘘ»ñ¤”eõýø·S{;¾a>£ÎQ—m§‰ï æ%)Î8È]‘F"«ýW‹#æ7npµ4þ®Q±Œ†·ÉÓ2º ØÆ¦¤õ¨[SÕ}Ç+KzˆÇrØ • (ïºéê’0®{‡>î ˆEi¾|Žl¯U”¥RÇŒØÓתåÏJèdßMˆÛ¾ -ˆZ û%ÞÔÖüˆŸ{]Ýç-§u K„•³*5fÇ9¶ÕÕ­>Ñ>ÃH&w ˆc0ž²xY°ÃýåàiDkñŸ³«tq‡®«™TÊéP‚R…²p0û¶ƒ­ ’¢by¸»§Œaò]Œ÷©Å4ŸNˆÜ•/ü4a#í(«eŒ”Ùž-Hä ˜7|²”DÇ&D5 ½Rž×ÕOžMØìŒ3Ä, ‹ü=D¦ï‚OÕÔÕa­‹¯Ð Î"éºÏÉbv+&oÖV†‚¦§›öÏ“~9˜'/dbÂ>*¼Îeù½6‰µïx¶®ÃÊI¥²ÓUç}°€Ms— ÀÑuïnR«‹½ ÞÅœh̹=‡øâîÍR•¿ôº(Ò³„åÍOu±†Jwœ+o‰¨Æÿ)žÊ™ÞEáø— Dxb8S#£6Êý5n°V-'«­‚$¥c"ae ‡Çì$|@Ôñˆ³ˆ9Q—ì+è +½¤ž[÷ mi7”ÿØûÂa]C{¼NyÍ%ê23DÑK±`êð )ìš÷¼á@Îî¼9–‰‘Ù÷©ƒ#ö$Î/ʪ*A×WÅ¥çô[b:È8h„E•U“-(W2¹"M¶Æÿ&[RdžIÀ_ËÒ˜åô{ÿ´þ<ÉýÆçZÖ žè¨ý{i¤æê */°Ä¼’¯¥JF‹[ê Ä'4­H/äccë’%D–Fþ‰PÁ»LrÇS6±n‘:wŽ’üúLÆä(ªxÈÞšß+*o›û·6ñ€auë¶å Þ;1½c+¨<!Ý¥cxѾnÕ/+7T^´IAs÷W¸z"ºO[b}*L=,ˆ»jiºN4ƒæ4Lêv“ƒªÔ«Êÿ΢ߜ{Ù¸QŸ4þX.XV†ô¡8U4¥aäÃý¶ k¸Å°×™½R[;QDàMFs/-Çn©r9·D§L²€–e —œTqz)l;Ã͇WnÏu]:C¹ðHõGå¼¹º¨U: ´ŽÁ«ÔîY6)šx!ñå‘÷Ûë÷Èñ1%[ˆ©»¹YŠZÏhâ ­“’•8”kV,õˆ»´JJ(“œ¬¼†ãƒÑöø»¬HkÆQ&Fö¸ýt‹’Ad]ñ¾Í¹ü8@x)p9xóèÛnG£= ”ùw$?é‹Ã¯Mª+ÙÀ:ñ%[«}„·??õ_^¥bÔã(ªsdY´“ZäV"”IHÈàAùßR‹¢o ÒÕ¯¼È’ŽÿŠ‘ V»møÈP"ªu'“*öÖ* ÞÎ:˜O€+(HÚŒ„ö‚’²§ªŸíJ±é¸Œ‚zLQ^ºf VºckIÉÏEüÑû!‡žäIšD€Ž—@k·K0ÐJ[e`@;l·Ãƒ…ëøŽZðòŠ+]—züôˆ*ïà[¬Ó%G|¯‹,ª1ê Ð8ÌhꊹݾÒ|±>0 ‹YZnlme/data/Fatigue.rda0000644000176000001440000000326510132476004014225 0ustar ripleyusers‹íÙy\ÓeðÁˆ©ädJ†æ%(‡€–>Qx(j‘X2Ɔӱáà­¡¦Ejyf†Zbä¡yk¤–÷i…GjJfä‘È!Œ«Ï¶çy€ßâ…[õO/öz½·g¿ß³ï÷÷¿gð,<4ÂO!‰D"±“H$vDÑÑOb‘ÈͯÎýäul‚¥x+Ákœ•Zª<Hläh#'Imäl£Çläb™Ù¡±šØÁÕÛ¡©šÙ¡¹ZØÁÍ-mWkùj”‰JÍdmJÏšŽŠ}YÁüY!€z°B +±B0+ô¤ßî¼äËK~¼äÏK¼Ôƒ—y)ˆ—‚y‰çðã9ü|ÍtRhä“Y+h5g>F©WÆÐ·R•\aÐéQªÄWºˆšdÞ´ëý3ܦ“åôuíž·ç·ÝCÒèûM«MI=¾Íô<âÙAÏï–õŽß#û·ã‘½–zÿU\rÀ«èð’±]â7Äÿ'ñI–¥~Cž†< yòüóXþn ÷i¾û¹‹3}S–‘üc# RÛ›·8vôÊ y}<Ö„ô"EÏ…Ì9ŸMŠ—åyTÿNJèçŒaisÅéëI=Ïãí’åw•’|û5²²y@ëø›¤0445ëðR”œ³+àÒyR|hâåÖqHI¤“a‡³„Û·;žžÖ–”O:ÑêÈÉGë~(7&ëhõõªÌ~½¥…ë\‡®O%å´^URRv~Ñôúã;eN¹Øm»uçnm}“<<7³ïÆòY¤”~®lqpú­^¤’¶Ëîø¢ò·SÔŸ¶ÏÖø…ư²‡‘¢+Wƒ""o‡iÆ”Á%¤´Y³ )KZãï¬Ù]»“ z¾Îøtœxüýû£Czï!…§M3Õñi?³øe´~áÂn®²ù$¿Ïò7—®¬žôzêŒï1)ì¬!Ž”Ðë3Îôxª£7)§õx|:¿x|:ø|ÚywQàNRHçÕüôNÞ7F’LJé}ÅÇÞVyh{y;èuÕ7_ùxÓëäý•9£2"ʺ¿1w>¯¹¯Ê7Zõ[ÅèQe—rÂëáü¢ýQ¸nPsý‰Á¤ˆ^oñ½{+ ñ·«ïïºÖ áøÐ~fyø<`yØ:B¯—÷k]×XÿÕÛouÝ/¬=¢óÎ*ë?6ÿèºPBãZµ‡­7Âû•ÍoÖvß²ù@ç[øýËâ×—‡]߬ÚU×¼`ßtþýëyß ì¾²9°ÿØ8Ñþãßl^Xæ¡p·B+S²Ý =è8\nÏvmSS ó;½R3D©5®ÇE¯Kòa±jî ³\¶ãÊvFÙ&Ûad;€l‡Ží ±.¶åO@+xZCð€§ -< žÐÚÃ3Ð:B'è ^`úgôYxº‚7ø@7è¾àþ= ‚ zB/x^€ÞÐÇ4†ð"„ÀKð2„B_èýa „A0†ÀPa0F@8Œ„Q0^W!^ƒ1 cáuxÆAÈ!JPA,`Ej˜Aq ÄÃ$0mRaLEH€DH‚)0¦Át˜3ă9ð&$Ã\˜óá-X ámxRà]X‹a ¼ïÃRXËa¬„Uð¬Ó†ÔøRa-¬ƒõð1| 6§ŸÁ&Ø [`+|ðdÂ6Ø_ÂØ »`7˜þÐß û`?€¯ ¾†ƒpÃ7ð-£p ŽÃ 8 §à4œ³ðdÃ÷pÎÃð#ü9p.Â%¸ ?ø ×à¸7 ~…›ðÜ,¢<ønø ÷àO0-Gùð  Š ‚i.#”A9TˆÌš¢*úƒžÄ¸ÿÅ˯Iæ_•¤–…CRE×Gº%êªUiûëu ñʘP¹AN6Ѫ¬6е:$‹AÙG¥Ç$üÑJ¥ÓÇ%hPQ"L-f›³¼J­O6öé«MTëuÚ8¥ÖP£uì¼Ø4Õk¯Õ‹£ù„´fí‚Ú|a­u”.½æD•Vèòhóº´…åSµZ!iÐ+ùÆ3;Ú2\©‘Ô‰JO…^®˜è©©±x;VUïR[®q +Lý›ôN Zµe ò¸yÅ©5µN;ÙS§ò´4­‹ ¸FÖ@Qå_šà³xxnlme/data/Pixel.rda0000644000176000001440000000215710132476006013723 0ustar ripleyusers‹í—KoUǯq'i iéƒ×8´uIB¡PÚê4@ -y4áÍÔ{&Û©#!Vˆ+»+ÚU7°èªHý¬ºê7`S„Ô‹*˜ÿû¿±g[UºŠ‘~9÷œ{î¹÷Î9̦—ÆãKq!DX„z„E1Œ†ñ'$ÄŽ>ÈžÓùªU¢wHÎ@Bæ”CG"]ˆv¡§ ± èÝ€-úÄI¸…ûè.¾äÅ ÖŠU(Áº]yF¥54ÆAxì9m׃ =x^éÁ zð¢Öƒ—‚U“)˜%½oˆ^±œ™);.F·ÔQø>¢[ýÇé 7˜Á°ÎóI=˜U‘F·G·2ÇÞ3y[ÉõÔvÊÝ”#”û…ïÙìº6?ccÿÔ¡{[w×þ›õÛì¼ÑÁßð]÷ÿ¼üëò¢~7©Úâ„|RµY5_›¹„çrª–§œÿÏO©Úê“ôŸ¦<““OªVàú*u—뾡ý3úëõ¨xõå_+¿úîs‡~7/A¿¸Š[¿Äõsʯþ5×sþ0e~W¨×ç2õEÎïæyos~Ïq‹ö_h_Sû]æ¾?3ÎuúÝä}ÿbÜ ÞãOÆ»F¿+<ï#”{iÿ~Ç)õûtz‘q‹´/ѾBY¢]ë_RrßÚ·\_¡ß)Ê뜿Ey“çºAýWú]Ðùä=?åûùˆ÷ãû©QÏ2ÎoÔÏó½ñ|ëù¹Êy¿×©EiS¦9?Ä}¾£þ%ë¹¾‡óû(q¿êiúp]’ú÷Ìs\éG¼uÁÄ6‹–nA¢4FÒÎ9£sù¬¥ÍYsU/[Vý®/VŸë\Hêx­ °tÒ nìt㦴~0ä:ùÃÞä™ÙXï;ÁC`Ÿ„=`/xÈJ|<òS1 žOù©y < ž 0 žû€üò èûº@¶O ãhö„ül¢Åèî;žN¼ Ž€WÀQp L õÍ¼Ž™©)pLYo€7Á @ß ÞoƒSà4xÈJ˜ó`œ‹` ¼ ÞïƒÀ‡@VðÇà`‚³ ²ÀRyñµ%¶%ƒvqÚu*ËV6m–Mûϵ™âYŒ“9©”@oÎq‹•#±½OÓÅ·r 9e¯ä]Ç.Zvúšðš£õùÐb½{ô• gŒµz~ðTuÛîw0è畽ÏÄò÷NB|§îçeNæK8tlH-¿Ë»÷6š÷ÜÒPKJ¿‡[̓F[zÓ?í¶;Å æYïß!}ßþCóù¢e,;¥²‘·Ï[™rÞ±.Û¼†1]¶ìR¾¼Úá(¡ª¬npŠžŠ/ëC„‚ýs)-‡Z·Åpܬå&½bn½[\4›ùÖñ&_^äÄ~½±H𖜊›±×ÎUlï‰ê¨Q4«‰ê~Ã6“nÑ8jÌÏ.L²ìÖá¼ÞádkMGDxg£ýKÀþ[6ëúhå‚ãnlme/data/Nitrendipene.rda0000644000176000001440000000205310132476007015262 0ustar ripleyusers‹Ý—oˆeÇg÷övõìÃ# " 1©ånþBgä‡/´^È´3k{32»{µ!Aô‡ ¬(ˆ3Ê23O»?zøJ¨ ½HD(úGôÂè‘ÖÜ>ßçËíŒË¾ˆ]nîû›ßóÌóùþž™gþŒlQû¶ô)Š’U2½Š’ÉÅa.ÿË(ÊàÒX¯õ둸þ/ð¥°b¡Cü7ëÖõók”…ßú#wCÏCÿ†>'tnNèÑ—‘ÿ ù[…Î<ƒöíùÃo¢½_èÔMBý ôÀ)¡û÷ Ýwú½‡üÛè¯ ýø°Ðiøšùùx{„~4‹ã^úŽ-ôýUB'7 ýãO~&tÏB_u…¾µõü&tã}Ièü.̇ Eݳkáï4Ž—~Ç ¢ßï¨wæã/Ôñ+üPÏ ì×QÇýÈãüM}ŠùºuM =?sð7w澎<ýQÎ×ü6¡Ç›ÐüBGp<øÓòÀ®Ÿcãð÷êC~ß+¨çsøÄùØÿòߣÿ€Ð½'‘\ŒƒëR^ÏJ‡ßï^ØõuÓÝÒs;¿:{æ“cI½ëÚÒ²W±;¥š/~3ôüí)}âÌ/o?¸1¥S'ÿ˜œùù…¤võ×ÍO7~’ûÝŸ3Ï~ûÈy©WÊ<%}wóõÔSèÇõœý¶ÌÜz.Ó–»<[Ûó2_õ&¼j-Î.GëB6£Ê`Xš ôĽåªS“dÑ«F®y.vó§\£8º(ï]'Ä­ZIéêzs]ÕA‹ô†º²ƒvó×ÍO7~’7˜Ð+ež’¾»ù¿JêI®†À÷-§VrI|õû~½‰ýžÑûî‘ëo³_«5<ìªáöR«±mÐ¥QøXiñÀ[SËS½ä:m† LX2°e°AvxˆÑ0#•‘ÆHgd02YŒlFd¨d¨d¨d¨d¨d¨d¨d¨d¨d¨dhdhdhdhdhdhdhdhdhdhdèdèdèdèdèdèdèdèdèdèddddddddddd˜d˜d˜d˜d˜d˜d˜d˜d˜d˜dXdXdXdXdXdXdXdXdXdXdØdØdØdØdØdØdØdØdØdØëÄŠìù'ñ *Á½QØØá¹#NÝA¶?¨¤“˶§R}n—*Q¼²+¾P £ñF5îØ“O 3òË.íÀ¥ Á„…Á¸,|=]PZ]¶gžTøV”¼9µòùÅw&:‹;W[Šw°æbêýÂy¸õ~‘_!Žk«áúQ¿"?Ö‹å0(Çž#§î‡A¢ãÚ1ÇõCé´—^4¼Û†‡Š›ÂªG7×õãfÌdNNWV–ò¸ š—°ÙÛüºt™IÀ—¬)‡ ^»%1t&1¢ØþBõ-¤nlme/data/Gasoline.rda0000644000176000001440000000151610132476005014400 0ustar ripleyusers‹•VÍOAŸ~m¡D@-‰0Ø”¢€˜Øm¨MŒx€›+Ý6…ín»ý€¢1þ ^õäɳ‰ÿWM¼zóO0ñªàÌÎï­íT»ÉëûþÍÛ™7oû8·•ŽmÅcAˆ0s1ä?ÆÆú9ï[7jŽU²MÆ¢£\׸ˆó„>ùFÜyðÅ2nñ+ˆÏÖÄ£§$_OÃzjBâèq™ŸÝ–zæ£ôëÀ½GuaÝ»°¯}ótÊO%~-%ùî+É›_%ßÓ%§¸*ì¥w’W>Hî!ï‡ä ð}ø«©N\_WÖ; x¼÷!ü‡À¯#õ<‡½ñZòVõ5P¸‡ÀmU¤À¢ƒb8õq=ÃIô q å$zLk‹Aê´Åœ†ióÅ”¾Õ,³iZ5n†WXó$¤IX"á Ë$,p‹„Û$,BΧ”…#;–Q£uƒ‹:nÞtÍÈA÷:¤‹¿Ü]î;ŸïÌÅù5«_× !6±*„X®‚®­!¯kj­q9—©!Õ#¥p”ÃZÛgRüÎzz5ïm´ëõ=ò{ûŒ½…ìïP È4@Q*Ó(HLK»ya0M…Tèq«/ÔxH$6’ ’* ‰[–|ö“μ¦3·Fœ00à£CLY¬SLñ,¶&p ­ U!g\òÙ¾J• Kn ë˜3ãa(dªßÜÉý-׸z™Ý|çÓO±?{Û‘Ú{3-ïf°SƒáÎFG¸*vÿ h¡>´PZ¨?thèÐp0à`ÀÁ€ƒ 8p0à`Àá‡>pøÀá‡þ»«ƒ8 ¿J‘ÝòÙyZÛŒ÷(_ÎwTõ™Â½PªsDç[Uí°Ì"åèxˆÚ ãÆ¥ôe£7ŽïRÄK«®!ë»õ[™…{¯ÐzÛ®¿«nÌ’nÓ  nw/ nŠÛÈ;ÒÓ²½‡fŠ&ë?¤’ñ͸HŒJþ#[¨Ñ¢© \$ºVîÖ®Ó]p¿oî²x‘š<,DÕè|rN“iñ. oý+ªóåꛊéà]'"“SŽXZaOÓ…ˆigÕ¥KÄÕ1ƒž\ÒOtrq5îê*> xùÖÈmÜ>"7²®Á«§Ý›FEVÊ:Ù\–xâÞê½™ìú’Ç¿é{æÖRnlme/data/Rail.rda0000644000176000001440000000071410132476004013524 0ustar ripleyusers‹•TÉNÃ0µÓ4U EgŽp ¢eçB…@l7ÖÂÍ4ª”ÚÈM‹âÓø$~Šc'…‘&óæe<™-¹8ì´jBÈC¸Œö%ô=yÃ-TSã‚ôb„*óÊUêRÏI)9‚);8â9âg’{WÓ’Õ§ü”Å-6 h°eÀº…˜ånL&¤^.B*hf‘nÂ…Dß’™I+lŸ¿£ôjŸ>GZï>¾ ö%Ø7Z_ëí[x~ºúüOþ åÏ_éxŪéS§*wTº•‰ ²—úXi ž><âèXðá IB€­³_驂 ªJ܈„L¡VUð熛ÚÜÄÄZ¿N,?^;Õmv Øà5×,jZÔ²hÝ¢ ‹6-Ú²hÛ¢‰e$jƒyͪ‚0ø/ÞSÁW#.ºtI·z)é™~øãÌ[ÅÂ/°[¹Y/ù+~}™Æ´ËY8XùOØŠLª?Œå°JAaü&xæ’;9Ý8b£žà¬OY"í/={Ý›^¶¬Efɸ®¯šTÞÿDæ’CÜbæÓê«l¨…K¨†²ßŠòÿc"Ž–®nlme/data/Tetracycline2.rda0000644000176000001440000000133110132476006015343 0ustar ripleyusers‹íUËOÔ@Ÿ–Ò…åáƒõ­XÅÇrÁz$³1(zT áà¥t§Xm§8ÛEAãͳž9sÖ«ž¹Šc$›ÆHdý¦3³Û-5^¼8ÙßÌ7ß|ß7ßkºwF&³“Y„Ž´V„4HC‡IC(×k×8‰˜íÌ9¾GÉ B™.¿nXóxm(øÇÂrvxæ%^Ÿ_]Ì=Á_`ž_¹©ön®Jù5.¾°ŒW—n}Þ»T@n<ðO¹VÞðñÉ7^½¸›ßx]Óû ílñ]v¸`½‚.ôðº\¿ ûxSÊ«}Ú~Eú¿š‹Æï…]üQÆóy1>ÀïÐŽ£¦'ãÁŸ¤¿ßb3ñ&0á¤ߺҔy¬ˆ]Ar mr=ªüû¾×9ôeLy÷æžhi‚Ö&К@ß ËôÉ,ñKÀÝ/¬œ«]QÄUE *â²"†R¦Zß.)Kº”Ê„¬H)Ê­éÚN2 ¶ kÀ?>çQêÕT`í×{Ì9•ŒlÄ?SŠb-JEÛ)øÆÔQ; *u†dNHE{‘tf¬ª¾¡ÝMî3@ÝÖY&þxH—áKÖ—wâ†í •Î8²¬ù[‡ì[ŲÄî]z{˹7hÅu÷wNz;ð·K[x²\£Ü=P¨ÍkÊr…<”ùl«µI³ Û´øR‡‡?ŸbGe~y(]ë£w¸.Qù㎦r‰âÜøˆû!wäÈC+*ðúõÄá<üðä›fícYj}Xެï +‡˜¬áì~uõ<’õsÉê¸(fÚ"^¯ž’!¯«nσ­ºô®1žm<#2j̲‡{z7³»!ó}¦¶‹›,‡'rAV¼f¶z}X“[¿h÷ãSú¥g]AYÞ¿5…=’õr”íUIÖ×÷¬Ò`=À¾RǶYÑk8˸3î±ßN§}öKÇõì‰,_•k‡;_ßדû-H>P7³*¨5ãñ‡ùl‰ˆ‚˜,¶wG¤±“®Š,_öïã¦M¿Üº³¯P<=­ÏÍëÜ_Žï!vJ…Ør%ŒZ² J|Í©ñÈ®¯Xþpýª…ì>¢!ùÓ¦ÜãžÃŸÍÀýƒÔ¸ò?ºäî}ýN¶ƒ(²`[‹aXv¯§Å•w¤³<çUÝËrkßÛyÍóÓÂÆ\æ>{sB¦Wý}¹¦®cg›Ê쇉ÊÄÀŽÈö¼Ð©³}Ëvï°ßŠg¯šÚÖ—»Éñ±r¥åî pŸ:+fO `‹dÜšâäÔoEG·urgùêùìáåÕ~Gf_àžÏZF†Ì¢B¶V¸U›û¨ñÃBÆ‘EgØvéçñ=±‡Ë0²ÛJµ¬¸?–^­#÷± Ç}îtmÛÊhäµD4úc«eÿóÈ¥†¶Þ+†²g) {¶©>ÛÉñÞ;¦×„-®Ñ\/ÇÛ°KŠ×lµŒ›#J÷udÅè0ò1שã-/Ó«8)}|<÷‘ãMð#5¿ˆEßµ­ðÖl­Êø9ž›ØÃêú öDÆ­«2ÜŒâµâ>9ÏóíOyx¢gÕyí—Ûó©Í3‡>XÃîJoley«e¨ý_¯Å¸GñK*pƒ~ÿœk~w^”ÿìÇ3WQÙCË]­Uä备Þý•þâaýª}°­Åh®o¿7©Ìžì{Yoeؘ9‘]]wµ_·¾e÷b+&äOõ1>úê« …÷ó`9>†yªþîÃK•,§OwÑb¬PDQÕo8Iob=]Œ[Zó:2~ôrüª;AõcÒý5Ù/ùÃÇ:þíÔbV8²ùl¯=]¹}Röþ÷WÇ©Huâ¡7ÜÅ„Á6Ý{š2rÜ\–;yC̸²mØ!¾çFÌáV²ßmåøVÓmþÓž×ÚòÚïœÕ+sýÚçzø´žlƒ¼ïñ¥,c¼û,–ß´É”¶-q9žÙø½ãÆ+Ö¥öš1Ü'@íà®[ׯ9vŒeJÿ/ÍwN5ù4»/Ç)ûàøöuR÷0õߊ•ãßÎ[Ç–ûܳÎlrQ½ffLθe«Ù%¼>ƒš×`…r>·—ñæ´bÙfõgqO_ŸÆ©W+s?é¯á:m,øé‰ûú –[&cuöLŽw´´ñìܱYÜÍI‡}e<éå|êµqÂÈ@?¶¹ò¤jod¿ÜúÄæÁ¯ì^¾×ÒâЛÜI·.‘Òçg?îÄCÜ;Uë·w›ºk?nͲº»ÓÝß™–íðøKkçNf³r<··0é ·JÜ+^} ‘ýæª^¿öëþ¾k?ѳ“«.\´¾ »*½¡¢à q6O¸‹Œ·J¦çQu~-Pæ¶«laaÌØ\–'†É&3X‘ÿ¤>+c¹ã˜µ™¹©Ü X4m?¯ÕF﹡gjRÓ¾‘ܧÎo»V½ûø9Ø%ëþcƒf—gweû—•ýï˜Ù<µN÷ý$×WŸ7ضýý¦¿élËò­²º[ùœ=ìÔîÄ„$=÷°ÿxÙ‰Ö£¸GñL§÷æÙrŸÂ‘Y…VÜàª<_rC¶:_ïÍ¥uáíÙMý¾ïíæ²^mÎèkð ¶9ƒ¾{R†WÜSTIw7šW”ó­^>W…_qqfT ÛqxÊ ×v.¸GðYªÆŠäýe¿¹ÊxôV}ç¡?¨ík¸§xÈvçL8müœåï¸{þhov[ÖßÁãJÚÅA/®¯!ã/´zËó|7sýåÕ~áIlstçØDý¯ìœ:>°ûò9›d;yHï}¾hãræÀL8L-—aŸòù‹yóbÙI=»¯]É.môÖJŸ1ÜæHÄþíËŽòÊïN¹Ò¬°3÷üç±Ñ5;ó$å9–‡ÜQÚñÕuyÆø”Óº¼2ò M\rj†é×ãÓ“2†›>ê–ŸnÚ’`Z:4!©o¿ŒWr/›ž:´žé%E˜þ³ÒF½«òcñãñƒq¡Xt/è‹EðbÁ¼XÔ/~ J)Åâs±@Ý´Þ´˜\,j «Åâm±[,Ò ÅÅbo± Ü[÷ra´ø¢%1‹…Ôb±±X,-‹Å·bq®X ,^*‰…¼âË¥XP,@(âe“xÄÏHñJ¼”nÄ—Q&žb€x!Õ4MxQÝ 4-@ h bxiÝ´møÒÚ´@G ^`u]@WÐ to·Á; xôñ è út¡.ôý@è€dŒ ¤@ü× úT‡× CÀP0 Tt#À{à}ð FÑ` øŒÿ‚Á8ð @˜ê>ÀDð˜&ƒ)`*˜¦ƒÏÁ 0̳Áðñö%˜æƒà+ð5XÅ` X –å`X ¾ß‚Uà;ð=X Ö€µ`X2Á`زÀ&°l[Á6°ì;Á.°ì{Á`Ø€ŸÀApü ƒ# 9à8N€“ œ§Ápœ¿€óàWp\—Àe®€« \×Á pÜà6ø ‚;à.¸îƒà!xŠÀcðƒ§:å¿‘uÏå:üCðŸà¿øñ•ò#,øOðŸà?Á‚ÿÿ þ“7Ä«øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü'øOÞþü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÄü'øOðŸà?Á±¾Œà?Á‚ÿÿ þü'øOðŸà¿X~FðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü§žþü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿ4À‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿ þü'øOðŸà?Á‚ÿÿÅ|£Yà`#88ÍÓS§%ôiŸ/V0&þûÁò}ÿíP¹>د—˜/¦?íoSÓS'ãDkÛ?X[ñòÍ•õ¢C’ÒS) ƌ֘>M¨+yÁ‹W9j[òÔ÷_9UNÔÚcê¯ÜãÙ«©ƒ3Ò-®ƒÝó—åµþ{ zåæ/*´eR.~·L¶Éñ½”Ÿ¿Øº©Wi ä&jè=(ÉØ;Á;-9Þ˜‘dìûÊ).­â½ÕFÓ+ç¨w°)±ØS-í0ÓÎðßk›ÁƤŒ?*†m`Ÿøáƒj¿rÔ:°omKï¥ò/³éf.¥:nlme/data/MathAchSchool.rda0000644000176000001440000000663710132476006015326 0ustar ripleyusers‹íZyxÕ‰ª¥–*îÔëöÞ›7ofjé „ K‘RKØ 4Bd‘EÃBXAÀZµŸúa?Å¥ÖdO€&@Ö6‚Ø3sgî@hû'ùúóœ¹sïÙï¹wÊëТS´~§ú¡P(1”pi(”DlR"ý'!jxÑ+RÒ¦7ëžžÚ=½_¿ŒP¨î/i°.ýï ¢yjbÈ]p‰»’@RBuÔœP=‚+ÄUð3Âå®@•„Ÿ~A¸ŠàÊmHøájÂ5„F„k ×®'Ü@¸‘páfBc¯ ·n%ÜF¸páNBÂ]„ßî&ÜC¸—pá~B˜!D !F0 q‚E° á·„¿#4%üž É„f„ Í --   ×Ôõ‹ì´u ÄÃ_kF´m&9æóñˆ£ùXXóf€×±2-m§iéýH¼–oiM;bx­+ÓÑû4Ö} ¶ýùñHLG,ßÚ:¾ q#×¼£eÆ´ ñXÌÐ|<൮˜­ÇÉŸ‡µ^[÷„¸­ë-nôö—Öy´"áoùq³¢F€·|™V`OYF,àƒã¦æµ_VÜÐãýbŵ-öy;`³£óe‡uϤ”†575ox­‹ÒîÇÜŽ†}›mCïeÛÐ5fú¹mê¶ãºo¯å[a=nl°u¾lÛŒx=ßÖõfú¿íèvÂQß'¢÷ŽÑû”B¥ù¨ÞûN '8†Þ_Ä[š7Íë¼8¦®1ÇÔ1wLÛµ3x:_Ú=#mÎ ˜X§WZ÷ýÜ Èiq/†yÉÝ{Ý®æRtîvEÇvUtx¦¢9]˜¯èäFŠ>Ùë@GM£è‚$E)ú 謘¢SªÍýPÑ™ë6SÑñM;g¯Vtt=ŒÂs±¢yŸ@ÎxE_‹bä.ê¹ð/ëæ&þJEÇÁÏWnSôEø;xÝ™ï‡Ãß1ˆÓ‚<èÏÂúVŠfß—aߘ¡Š…Þ‘;qÈé‚uËùY°oaÄm²¢ó{œ·ìtŒoQt ü€¸eAÏHø?þÌ@¾rŸ)ó7ó²i‹áâðlXÑð' yxvd6†ÿЛ8Lgù£`'ò=rú`þ<È›—¿Þ€ý¨ÏÜ Èƒyu öåBÞ<Ø:œ;f _ýGéÎ{ŠŽ†¾±ð{ìîç¹Ð3rrn€Þ•Šr®Pôi虎¼äÂŽqx ÿg4PôEÈŸz˜:ÉÁü——9°gïß·`wWE'!³°nj¾¢óóí »r°>ïE»óºbE_‹°O³ ?ñÊBÞ9ž—ixÿ*ho¼çx?‡ç™m&ÂÞÃ]ÿ3Ÿiðs:¯G½dcþlìŸLegµkF"p¶ç³½K¨a}bµ9ÕiMúÎ&»¦9ÕõÕdëÙl®iÝùtÔFgmä]ÈXM1?Ÿg³ý\~ÕdGmuŸ+î5½KTÇwâO8±ùÄn?¨[Fïîxª×-ö¹o=(>¨ßÔåºsÅBo@l_íþ­ñ×mñÄu[1¯Ô>ñ¹(…¼²†žabOwÁ]â ì\ƒ÷‡¡‡×³þ¥ «±ŽýÝÙ°ëkøý”G¾y Gg±¢å+_å¿p•\:Áj³âõJ¹»ñ¹'önùk•ÓI|5âû¢[Ö•æ'4E|vï•“Í»çÿÓåäè;Šñ-$dè¦Ó²‚œí;{Š,xý°;S,Iò •ÊQ…ñ÷TÝÉ¢Þ€(JôÊU®û·íIy×fä1¼_‰º9’Þqãåò WêˆÄO]{QêF'}€<;ªÜÕV[¹Hù%rÆÝíj»¿ñ’«‡ªŽžr9êì8ì_‡}¸_Õ±¬<âPV©üˆýžy–¬Pu!÷ªº˜·CÉ“¥Ê^Q ôˆân)”¹Sâê®TÕ…8ØÀ}ñQ}?[B•³Tî»Ú5üa¹Võ_‰xÊÕnÖ†n–Ga¯j¯õe9ü;Žø¬Sú仪¾e‰—®A²ñ8 ÛxöûÂI׋æ9’ûÙRÔ×A¥—þçdöù •7Q„¸nôÊ&"K;¹Ž{ §RÉ“èÉuTÉèã«°? !Oü@EÙ [;yú ±v¢oq_­D|+½í’.£Oü‹åBÞ.Ô!ŸC›]ëï¿^VaŸmuÓ¶lžÜÅ÷w7t}09ä¦ëðqñÞêZ?¼BRïåÛ÷»†})ù\ªTq'QG½mÕUœ@]®Åþ:µØk²=ìÏWõ+ÊÕ~”…®7ý‹*o»>#N!GÑ_Ö@ïIÌ;©ê@lF>½ð¥l”ûÉKš)Ë`G¹êƒòâ‡}•BÞÖ£oTûO"Þr öáQÄyŸ×înÌ¿Dõ§³|çÔt?­éá|ßr?߷Ϲ¾¿jûÍU[ÙÿÏ5ÝëÏ5¿6ßcÿ¹µ±©6¶^H/@öY¿søÿËLˆÔþÛF©ž&òÑSùŽS¢z´(ð¶j9YíQ9{•÷Ú.ì•RôŠRô’å8»Ð{e™êA¢˜{¸º ˆ2œ¥Y¸³mv[D›/D‘;íû"¹gîb;ô¯ÁY²É›v«Ø¬öª|GÙ#Ñkdzâ»èõeª·ˆíî²[Ö‹œ èrÄ¿a÷>ôŒR׌Ë 8 )ûÄ×ðw¹ÃkÅ׈…jžØ»ÇfÄcz'ßeJ¡oz]>÷JÜö ^ÛR<ÍÂë°‰—Ëm¸Ã}Ž»ÓR؇3T¢Ç¾»ì6܉`·\‚^[¨îtwQùwäƒíC«õ’ϲJôöwŽß.׌cKħ¨îñlÏÛÞUëZ±¶§Xán´q›‡üáŒÃ]GnÂÙ|LÝ©Ä ¥Ç¿‹¬Ä]c™È!¢Ô=ú®Ë“ë‘¿à'ŸåœÇbܵ6á,Y…;Û^xž¨'þØ ;X±Š“ï?Ë—àîUàmŸnr§Š‡ÌÅ™4Ñ;ê¹gÿûê¬Lù®± vmWzýx¼¯êI¬Å™¸’÷ê~‡Wæýd1î(;÷buçqVoÂûU|¦êÊÏÇ yyèþ7¥ºS‹OÔ~’¨Cá]¿[+±Ÿe™š'÷¢>‹Õ¾•8Ëeîœúz…!ö ?”Ãß­Èã7ðw×î¬[U¾ù®%pwäoCîýAìQõRýŸ|ú¦=Õ“ÿɧ.ÿJƒKä=%¥öÖÓÓS5TõÔ¾C³æÍZà©n‹Ö©ÍÛ¶NáÇV­SZ·{ìq~LiÙ¬]jËÔ:uýiÓîëÕŸ¬©fáeýû ¹/heÿ ÖÅ_0ñW#ñW#Š¿ø«Å_üÕˆÇ_üÕø‹¿aþüÕˆû9:ý6×Rœ,nlme/data/Wafer.rda0000644000176000001440000000770610132476005013712 0ustar ripleyusers‹í›ytU¾Ç; î0.˜îŠ£t5BºúÞ^u˜ú,*²)›ˆ#!$’!‹fA\PTœÁAPpPAx]EeQÙC6YDÌÔÖ÷ ‘wžgæ½sòGúœJnWߪÏ]~÷ó»4•;º b©ƒRm6[¼-®‰Í—¨ãµq6[«íw“Ùy¹%6[rKýíw í³Éf…}Ä7ð#¡‰ ühÒÀ¤~$7ð£i?Rø‘Ú°K’LRAî¨Ü‚Rí¬ÃúT?çX¬Àc…@¬ŒB±B8VˆÄ Q«ïWêg·œ‚ìÒ7Ϊ–”—SV¬å<Û/ÿK¾û­^ÿ­þú­ëôrñØØ¾Æö5¶¯±}íkíÓÓN|•išþf8í¾ ±û^6ƒ%¦éL=úªþš¦Öp㥞3ß“Í|Q‚u¾±^c½Æzõë5Ök¬×X¯±^c½ÆzõþÃzâß!'vÄ÷à»ÏQZuú×¥WþL®IçJºw’gôŽ 5Kº‘ooP{òyµòÉô¢WþÚ‡#ædü0m¹—ýx×¢­,­>û`?RzÜ|ð5ó›ª'·¿Z<7ëi²w}ãSíJr­~&Ücý\ò·÷‘b3¦MH®þÃÆ½ÔüŸ[ÞÙÀWoojUÊÈeÏ=*“cœÉs¯ÖÊU$ë­o{”3.Õã)SÞ93éµ8¶è¾™çR(cûà§&¼¨K|ó[µ!Ÿ5o5“_^>uÃAr3Û)éÓ·­šdk(c̸¯i¶_ï)9›jÑÚ;${‹ñ=ãn"9K Óîï‘òÇs{®ÝzH­Xµ a×¼~d×¢ó£Çä–W÷ÛôT%yŒ0'Åe­_ãt19±gâüÈý¥>@Hn¯wã!RzëA=>ºC¤{q;J3tЇ2ö™qã±ÆÛw«9¿Ç¯›Ñå§&­(-ùÞâmîʨY¢Äjòd|Ð!m@"ùÆñ®{ïÏGŸ ´Äc·=׺'el]X=æƒ:j{ÖòKg}!®Qwœ |õ¥u’î^uu˜\Þ?ÍЖ0y,øŒeÓE­¸ñü£“ë^!»^k[¿¡ï _CËsŠé9µ¢â£ø¡íŸ'ûºÂ!?ÍßMîäô™ ÏҾǟr-%ÅnÄ›ZqøŸy[:U“]û¡u™ÜéMVÄÍ*"Ï'úò)%ÅîVjÕç9U¤!äУóÚä^ex‡d뾊9/jM«ƒ+¶þ 9{ÆÝøÂ¬&$ 4Ö?Éš%ï<³…”§Ìx©\ÜL[ˆ 9ÌõGHHN7ã^édŒ·Z£‡Ñ·SÉ™ç?;srIztü˜ä…†xI1דzâÈ—ö¾ó§SÚçúk3¹†_ÿÞþsä±ø>cZ®R«õQÎ>DN÷J}e“äÛæ®þ~ÉV;b>¨*5™:þ•Óäž¡œ›<§M(mj¢V­Ð—ÙÞíd7ïO®  jÝ™äy_¯ð )Í ª;§~pôó¥dŸjˆˆ\;¼ûzÿéð‘82Õ“ãk×ÿ°k%Ù¯l÷ª²2\ÓFöYX=ùh§±^Ôã,{l›Ý})Íè^*eÔNøyÙïg‘ÇZ—>ÓÓêÉŒÚJEiújÚ™\VÜOÃ0H=Ögú¹õíÚP‹qŶ{ž£ŒÉ¦êjkæ òùL?WTo™²ãÈy­¿¿h‘už\•I]úñò˜yƒs½«ýšoøÛë#É®·òª/ȵC_~ùä1´;\xí´‘NÛSú®Ç†-yïÊÔ—Sõ!ò·{üŒ|§VGþr×mµUˆ+Ëorl>6U:`$2j¥eñÈ© ]Û+S7:µÛoö׿I»ÝœJµÆÊŸÎýå§/dÖ‘t@ËbòêZûù[˜ž¬µòez³Ñ ݾ¹‡$}õô=A^Ë“þD=°ÏªUÆr'ÇózÉʧò23?) ÒôÌ®VYyÏa„E’¬8”e6†”ñzúÿ³Zy6üá›ü5rüýÖ¾ZWIJÒº_¹“ä{ÌqQô°9·GŒ_K}z6~H™3N|òþÝ©•ýcÀRO›Þ¢ôߟɽ0‘2˯ï–úöíÔ®‰Klò›ùU­ZË>8g9­u, 5ÇG6¶/aR–¤Vê³îøŒoÔeÝrdI’çÍD$[û ÅœgµÒò„cº¹‘ìæç²µPž4&B­Ôv;Ì'Çc¯\Wvç$’Rfj7Ì&¹\KoòiRž5÷M‚k]ïÞ­o_RHîbÌ)÷iÚ2N=½ÛØ QúIù¹Ã )3ÏÜŸx¿ÓàÏäïlÆiͺ¯´ÈêAÎG´‘œNÒ'·<öÙ 7’7–g¬<]ó–zhSFkršïI:¨‡Eoòê³pí—"^ª0ïBÎü Ÿ™é!Él7É–ï•ÏÌ}b­µoLïÐyͦŠÏ)ó s]xß5ù¹‘OÔjmð³n9JÎgßÖ;@’5ÞÞÖÖþï}8‡¨Uwü㻡‡ÉQ§µÞ»¤l³ž|ÐŒSÅÜ©UÍÌýãÍל6²¯6ÎÆ‰äaæ¸(–7Îܰ]ßPKþZÚÊ}oQæÌÉö·hCíL¿Äôi¥µßt¬ÐþK$ùµÝZçµ$Ç|`í'O›ë˜Ò÷™ë;³ÔÌ—íÌ} ù‡ÞRÔ[7à+J7¶×Qf–¶ dŸ’w‰±Ñ @ì^jµÒ_3à5ä4ÂiIÓÌ8ðfšëX9¡‡A’Zmå§6ù¿®&inÊŽ)WÞ@^Óߤ3æO­Ükûò£+î"Ç<3ïJWkÑÚ­ö§Mÿ¨jÆaJ?(\÷IÕ¦½w›~UΘãW­k{Ì"rjÔUÇ+H¥oÌ:lùI1½[ÿ€¢ìÂÜØ‰ÖŸÄžy3Þ$Þ™_–k•“G”eß'Þæ”—”ä•Õ»gJIñƒYÝW|àÿó³ä%&J\”¢¥(…E)"J‚Áƒ  &L0˜`0Á`‚Áƒ  .\0¸`pÁà‚Áƒ  .ÁF@0‚Œ€`# ÁFP0‚‚Œ `#(AÁ FP0‚‚Œ`„#$!Á FH0B‚Œ`„#,aÁ FX0‚Œ°`„#,ÁˆFD0"‚Œˆ`D#"ÁˆFT0¢‚Œ¨`D#*QÁˆ FT0¢1F‚_QPô£ÈPä(P ¢B1ŒbEÐü ùAóƒæÍš4?h~Ðü ùAc 1Ðh 4Æ@c 1Ð8h4ƒÆAã qÐ8h´hР@ €-Z´hЂ A ‚-Z´ hAЂ A -Z´h!ÐB …@ - Z´0haР…A ƒ- Z´hÐ" E@‹€-Z´hТ EA‹‚- Z´(hQТ Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âà—0¸„Á% .ap ƒK\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%.áp ‡K8\Âá—p¸„Ã%ÅúË ñ¨i‚õQ‹¢Âî%Åå÷çï’]–mlv߯N¥×ÊYy%Ù…¹¶K¿.IÎ+.),/Ð*&$Ù.ÿ<+ª\reó¬®E£òKŠ‹ /allƯâó¸Gmæ3¿%¾°1N']\wlýºâ»ž_×õ™'ãêê]c}Wd4Â:.ip3«·ç—jmHji^þ»\‡.6­»¨¿üG·hQ‡†&Æ.·.¿Ü7a¿êURAö0ã¯wbº´ÄwfŸnukQYnQi~ÙCRqžtóÅ_¤ýªq£c…‡.ƒoR^”_ö?ÑäÞz§åÂNÞ‹Ô¼¸dxnI–ÜSmâ‘óKÊÿöˆ&tëßK»Bý.-./É©?’™yåE9eùÅE’<Ú+f–G·—в³J ¥ŽR¿;úwõZÑx¡ÞíôÎÚÎ[^ß ÚMÌ&·ª«?ØÆ/í'Âý_Qž:®O<nlme/data/Dialyzer.rda0000644000176000001440000000360310132476004014420 0ustar ripleyusers‹í™YlTU€ït¦éÐB¥•h¢XA¥%¤ö.³pN§³u SÖH"> í ”ÌRog° ’h‚ñ„‰ÛƒqyRL$1<—WEÑ(ÆiT:Þ¹ÿþ3½SnŒ¯t’ÓóßsϾ9KçÌÖèNÅ»Ó+IR“äh–$‡Ë]MƇ$uµµ':žÉ8˜Õ%ÉÝi<ÜíF}Ä(­6ÅiSšmŠ×¦´Ø—MñØ”&›â¶)›ÒnS–Ú”›r—Mé´)ËlÊ›²Ü¦tÙ”¶Û—yóª%ŸÝŸÍO­ éªµ6Éý(9‚\P¸àç‚ÊB\pAæ‚FCówMJ?µÉ$)$ùIRI£Iò‘²8×<šÏLrßš°›»¤eõì>¶ä2£å’±¬¤¹º%e7­îäb·LïàR›uMUËDs*ý|‚;US4Þ8y/ÇBóÏUÛ~Ž„OÜòûá•'ÃÓ=7¾8º«7|õ‚wÃÄ;Â7§ž_2 Ú™³VõüÉÜÐNz—Ç»^N ½×jŸ×™æÂÚcô2º†¿Ùe¾ˆú3È…÷Boe­ÃÄ;mvß¾tÜì(xø\­½Þr…9±öÔÞz7Þ´9ü³á_ð¸\í<]Óžx7<ýgpœ›È­BÍœX»!>ás‡MÃE<Ñ_â™Ý½Ì…µ¸zÈ™E¾•çÁöÓXó¸\Ï ÃÓÌ ‰bn÷úÉyää/\{y<žøÌýø0 óæB9ï úI<Ô'=žwŒ‹ûÇyBó%g~âBó ôÉ?ë<»]þ¸åçËUlÇü5ðxÞ9ïö';q’Æ…ûwßO#wÇ!ÿpòùÉyg!Ÿb^sÿ`P<­þ=j&LÌäÏB^i=_Õ>_‡¿Ãyqí£uËýC.ù‡ð}æ'ði÷›ýÙàc¦Ý,~ô†.?1ûGt¯ikGÿ•¡Ø öE×€_ñõ¦},0÷!ß7Îwù„Zû°÷`ÿŠþó+ cñ§Àž„ ì^†ëEýž£~3,õ Œ—üìˆÿÜèЯýç<ö8¬ƒØZàÅ!p,qô’Í`O;쟬ÿ:èE–@žc›ÁŽÄz3Ð,±ÞÇn½«ß»|oƒ]±U`×Ðjð?þ9´Ç»!±G ÿ*ÜÇ}ŸA{ä-/€xÆî†u{âI›~„gQ¯¹ƒÀ‰ýý’as^±æ+zö‰ë—>ä±}÷Èo—è0øËâ8.æuÎ#u Ä'rüO\ƒñ‡‘—zô6}~¬ø⥽þž;‡Ú îïÀsúŒ;ô$ð{™Šë †ómèMÐÛÔãc~F0~¬¦=üè ä-Yû6žûFpžŽ,‡ólÖ S^Nä 7µú¥+‡\›eXï×`?còG0þà÷ÇÔ·ôÏÀK zéOæí—¬`Æ"Àåë&™„u•ºÏ©s§{1ÃyôÆ{)Ž~’½òÕ ìŠ@\Syˆc¹›}¨÷+¬û‡/ºY‹qÀ¼Æ?½$úŸ‚ƒm„yKû ž+´ÿá>Ä:°îÂú¬ïãçû¢Þ¢Þ¢Þ¢ž½žõ[1SÈòoýÍü[ÿ¶Êî}ÙÑ2¿+ØAÉ3¡g''+zŸ]z¦ÌåæñâXvÊ2|«^z¦¯q¤á®ƒ®J膄ß[ˆ«ºE¡«ºiá·(âfá ’…®EÄeˆ¸>¡ —ºKbˆK… 1b(ÄPˆ¡C—:ÄPˆ¡C%†J •*1Tb¨ÄP‰¡C%†F 14bhÄЈ¡C#†F >bøˆá#†>bøˆá#†>bøˆá'†Ÿ~bø‰á'†Ÿ~bø‰á'†Ÿbˆ F€bˆ F€bˆ$FAb‰$FAb‰$F!b„ˆ"Fˆ!b„ˆ"Fˆ!b„8Ã)‹K¹_¢"DUˆš}Bô 1 Ä M4YÐdA“M4YÐdA“M4YÐASM4EÐASM4EÐASM4UÐTASM4UÐTASM4UÐ4ë› _--æŠ ½T™ÈŽE3å ¶¶sKö44yÇ ¹/§€4ÿ`pçJz¡’7::[¤…/ûD—yšm}±âþq½T,d‹Æ %Ý’ÌÛ@zï8$ÁU#oÀCÊlk©ïøœ¥cÝé6¯]‡&hN²þ*Ùmþ*ÐÒ Šó¼X±]Ï' ÙÂn£Îv× õ½ºväËz&7^û[/»ñ`­f½*uLqáÀÖ4WŠãåÛÓÒ3VHî鵺§t¯Þûÿx¥J¹öCÛL£»*Ræ©Zmþ£Ñ@pÆw¤ ÓÖ°O–*ú¨5æ*ÅQ3‚=S½Ý…ÌTÏÔºîb¦O/toèÞ¾uG¬³xË2\ÍKéo|Y?MœÆ `ggÕê»9°Ñè•Ä­¿Õü6ó'”>sqL6ö•æþõ"‘Ðnlme/data/Oats.rda0000644000176000001440000000145310132476005013545 0ustar ripleyusers‹í–[SÓ@Ç“4m¡\¼€xW¼ƒ—¢x¿RÄ:#(ƒµŠMÓ3†ÄISÇé×Ð'> ¯~Ÿý€ÿmÎ)$€c}•Ìü8»çœ=»{ΖÝÉ‘ì`"›$I‘ä¨$É*šª‚?²$u·ŠÎ„æU$)Þ%Ú/@¬I¢MiµI”&‘›#Øe,²¨î÷³¡ ­’ISKÎP#’N³NIg­†_:8ª[Z…ã*äwÜ’á%êÆÊšî9.Zë[ÊN_x áíÿgþ"ËÊ%6B™ls¬’a÷Nj¦MªÄ+ÍEi-§ZáìgL‘îe?F„cÈ;UCí¤jÔ¿¡ßÄ÷}è'É_7ëßž}Ïþg»ŽR3«u¿T!åK}Å—é󤟭ù²ÔëKü¦É®‘=OR'9N2Cñ²äŸó×—zCöê¿§~‘âgYOrŽÆy<É×$gI¾åù©Ÿãu¤‚q¹_ }jÁù&Cã¦HÎÕ‚óæVƒã +Áýñøiòç¼Nð:Èó’'9Å’ìïx}$'jÁyfx´ž—µà>¸>³©Ð¾HÏyãur½8^ž$Õ!|·ØÚ‚Áw‹ÊÊaËÑ?R'žÑ\Óð–LÏu¸³lV)²Õu–’–o"þïË—¸¸üŃ!ZÄ (m ˆqâ¼ïbiÀA (Ýàè‡ÁpÇÁ pœ§A/8΂sà<¸.‚K ôƒËà ¸ ®$×Á 0Äïô¸ ฀‡àx ž€!‘zð ƒg`Œ‚ç`ÌÏOàQéé´Ëö˜ëT?¥ÍÓHÛa—·+Ûæ·©%´“e…(^vÜ…ªÇHl— lÓ%0²=9j/š®c/¶‡þšT¿ávù«ÔxGH]Ûêù%ìIç*¨¤ƒXŸd}Û{K+Öß[±.X`ÑÍ­Êžq1É}ÉkXþajÓ¶ ÷¯Ëߨ,UËF(Å›?oN²´þ„…gõ0 nlme/data/Spruce.rda0000644000176000001440000001260410132476005014100 0ustar ripleyusers‹íw”]×U‡ßÞ[ŵé]ŠdŠ‘ŸÄ ààÐ^p °"Œ@)*Nì$à$˜¡CB'¡ƒé`zHè$t0L‡„ŽCùμý;¾s•°—…ÿºZë§3÷¾{OÝß>ûœ'¹õ¦;†SwL ØÎÁÀvðãç/ æ÷îºíü…Ë'6ƒÝså#Òý$ÁÏKtU-tÐÁZí åZì ÙZë ´§ƒf:h®ƒöwÐŽÚÝA+ä´·ƒ¦:è@ÍwuÐtíê }t´ƒ®ï k;èí:è]:èÉô®ô´:ÜAOí c4ì k:èºzÇz·zçZï wï «;è)t¤ƒuÐ;tÐ;uГ:èí;è½:è};è=;è}:è½;hÔAÏì ÷è :èétc=£ƒ>¤ƒnî gwÐwÐs:è;èƒ:è:èý;è¦z¿wгþ÷Ú¾cpfãž3¹;=½åîÎç\{ûðúÆÅµ74/žÑ¼xjóâX3ƒ§5?i^6?¹¶ùζ‹m¹=½ùN³nÃfnǶ}²­nÛÛÖžëšï4/Žm»hÖàX³¢Ç¶µtÛcÍ{¼ß†Í6 n¬Ñ‰ÃfK‡Í–›56»jØìÑasL‡Í‘6»jØlܰ9 Ãfã†ÍÆ ›½3lŽö°Ù½Ã¦í ›C?löõ°9XÃæh›¶3lÚÛ°1¦ã¦%Ž›?nÚÁøÚíï<^ƒqs€ÇM7ÇtÜ´·qÓÆM#7mgÜlö¸Ù„q³«ÆM;7›=nvÕx[³›v0n/´QÑæ›}=Î1m:ˆ'ο(ÿàùäîsNn\Ø8™—»N?qéÜ~z w”-ÇщÁÖŸÑÆk&éé#“ôÌ]“ô|^¿øC'é'çó÷ß?I_’Ͻty’¾ìh¦ÿ:I˜ž¤}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9}9Ox9õßÌNÝxþUOæÞøÀá‡nyÓh‹Ï¿z´ôŠòç•£e¥yù¡[Ê“£•|~5?_»ï‘›œáhíõåÏFk¾öåw}óhýhùáêÑt^Oçç³™Ï܃óåÍÑÜÃ[Íççó%»û-𯎳œÅ|népÉàI£¥­Çž=Z:µõgt0?Ÿ)­ºñy£¹,.ËŸ×{Yߥ¶nŒ–󹕭âî­äó«[Õ¼µ¶s5ó­ùoU~4Ÿå/\·õg´Ÿ/fy‹[Ý|ãh1Û½”érÖw%Ça9Û¿\Šôu£™¬Ï\Þ_ÈþZÊþYÉüWÓ”®e{Ö²þëY¿õ|=Ë]ÏqÍræóyÕIõÊ|WòóÚO9>kYµÌ¯Ž¾¿žý2£ò²?Ô®yÙ_濬qÉüW²>«9Þµ<]g~kùœìm6߯ý—ù.dy‹§¼/{ªvžý%{_Q¿gÿÍåóóõWÚ×rÖ£ò¢ñI»YÏúÊ÷e?©e;d}¦³œÙV:—ïÍ¥Ý(—=f¿^aYÿÅ´é¼žÑø¤Ý˾«g}kšý·(ÿ‘ï/¥ÈÞ—²½3YÕ{!ûc1¯Å»ús)?_Ê~¬ã#ûÐu¶{%ë1“ã5—ÏÉÎj99>K™.küdçÊ?íGöWÓ|nFö ŽÒ®òz!?__Ëò3ßê²ßªß•e:«qÊre3y_Ïæû³²ƒl×¼ê¡ñïy1ís^O+ù»¬Ç\Öw>Û±ïÕ4ÛUýv{<³Üj¿YŸùÌ·ö›øÑ¸f*?¼*?“ý¶ž÷5ïèzw–³7ß?öt0íp&íAíUZý•ìH󥿝´§ù´‡=y}Pý•ÏÏjüÒžf³½Õ?iÑxäuOÔßÙ¯WÌ?z^<Êße{k*»ËzŠ+Ùý’æWöc­g–;¯ñi»8Îë:þY¾æ­šf¾ûrüfò½äs²‹EÅJåÏıæ÷,O~B|Og~•‹·…ñPí4û9Û½’Ï­$o5>Èç”îÊûWå8Låó{3ß}y½/ë³?ß“ÝLËß§h¼gòþL¶_ùÔüªxAœgÿWÿ£~Ò¸g-kÞËú*Q|1•åÈöOg~³Š¯d7Ås*_ó{ËïiÜ”ŠKµw¶mÇš¯dWɵæoÅqËjŸÆOv¡y!ËŸµž²Íš/ÄKæ'û]Îþ¯ñ±îg}ª_“½ª^Šs_d»j|•õXÍþT·–ý°¦ûÙ?*§öâ™ä©òöQÓ¬×jöCõ«™ÿª>×øhþQ?ª|ͯÙ?óÙ5mÕ¯Ú£ÒìÙ‡æSùÍyù“ìF~AþDñs–wE¿*/²_Õ«U¿êÇò¹+ÒìG)®h¥ÓÙ³Yþœú%ÛWý½ì-Ç£ú#Å79>²›Ê­ì,ÇEó…ÖKÕÞ´ÞS?å{ïWçuWóºúLg¶â”Ùg5.U<)?¡yTþ^×i§‹Z¯åø«ê:-ß«iÞ¯ëÒv*žòyùÙYÙ£æ1ùq­øL©úSq‰ú1ï×u£æOÅÏZw(®Õ8É©<Å?ÊWõÖúG×/Ù›ü§â5ùÑ|OöQý™RÅ›šZq׊ú_ë å›íÓú©½nª~E©Ú“Ÿ×vh?AójkþS\;ŸüÕõœâjÍ3Jå´ѵÚ/‘ö9ýPËQœ“íïKY~Ä¡Ö y¿ú­—³_ê<—i]Ë>äïijæ?ÍCª¿ìD~Mó_ÚÍ®|nJq}ö—ü·æqÅ¿5Õ>ÖâX׊cµž“_“ÿW¿i~Ö~‚úOv®õ–ÖÕZgµâ)¥³ý³Zïª÷Êïj¼wjý!;Õ:Rã¤ýL÷ez Óƒ™üƒ8®ë*ùo¥Šoä¿´? žý1•¼íÕºCóªÚ©ø[q«ÆAëÍWíõ¸ì(Ó«Ò_)îT{f´¾Ó:6ËQ:›õ©ãªvçóš¿”Ne}¨ò/Å z_v¢~RÜ¢ýÙ¹Æ1Ó}šòó'ªÿµ.Ðü­8¨½ ~eý”îÍ|´>˜õ”­ëDí7eþu_HëY‹ÆK~XùgùÙ·ö+e_šßë<¯vj¾’Ý)šŸ•ŸòWý”ŸžWüÓZÖxUþLó‚æÁÖºMí]jù§Êyk^оåzÚÁzöë¡ÌçP~~(ípFó›â)µOþRëÅgš䯵þiÇáòâOþMûZ'´÷se?ÊOqtÖoUñ»ö+5okþÑú7SíËÿ×ùYëù{ÅCŠÚó¬ú[¼+¾J;Ðþà’âJ­ÿÚi;îÊqZË÷Ú©ÖUu}¦÷µ®Ð¸«”f}wÊöÎñ:”öv8ûqZöÐÚ‡[Pœ ¸Zq±ÆMó‘öÿd§Ùÿu.Ÿß£ý#íÃh_H~Qû~-¾ë| õ·âŽvüãjÙŽÝùþžü|o>¿/Û¥ý«ºo ¿­}'·æsÍ+Ùí;Ôý$Ígò šG[~Eó¨Ö‘u<ÅÆ9ßW½å?«}+ÞÏ÷뾟ÖUŠ´~¯âXñ¾Gkí+Ô~n¯´ÎÎ~¯ßgÉ.µ^ËÿË/È/ËÎU/­WÞ–ÿT¹úþFûIª‡úIó‰ü¾ÖÊWñŸÖ…íï´.É÷êz$Û£u‰¾©ëÑö¾Æ[ûòZ?ªœ¬Oõoê?ÍÿZ¿k|Õ/ù]ÅѲ«ì‹¾OZÏ~ªëí»(¾P$îµï!¿©òeJå/óùê?Õo²3ƒòS;äwõ¼ÖAZïhœµ£ï…ô=žìCû-­ï{dçZŸjŸGßÓÕùAý(;S<Ý®_¦SÙκ’?Ð|.{ÐúG~Kq´úAñ¼Ê×uÖ*Ë? õƒÆ-íVß§ÕýÙ£x—ßV\'ε—ÏïÍúí—Ô~¦³-Žg·©ÝÚW‘_×|©}ísÈŸésí7Êoe{Ûߟָ@þEv }˜,Gû~»³ýÚ7Ö:¡úq¬õ¯â_Ù‰ü·â_Ù{Ö7ëÕ8²´Ë1€½zõêÕëÿ¦ÿéˆÚ^½zõêõÿ£èÕë T—#ô{õzUN$ôÇ“CËu9uÐtˆ¡éCÓ¹ˆvýäÐ;6xk'úä“É9‡›ÇÏn\|¼ˆ­›;n¿°±¡ŸO¿÷bþ¼û̹»o;}_ýèü™s—Zùí¹pîù×(Ïæ–†\|iZùå· ”ß0qÕ`òÛ6Êæå74”/‚Ëo¸(_—ßxRêUþ‘bÙð)¿-£üä²ÉR¾`,›Qe®lb–è]6sʉæåDïrZ}9=ûÈ`rzÿ“““±Ÿ2˜œÞ]Ne/'r—ÿ¯QN'/§§—ûËiúåôõr:|9éüØ`òÊ óåô÷òÊ©öåýrÂò ƒÉ ÈåTçrºu9I»œ¢\N .'W““²Ÿ9˜œv{Ó`r"m9aW'—zup9}¸œŽ\N¹-§ —ÿwr º݆nG†>}º}$ú(ôÑèNô1ècÑÇ¡»Ðqô\tD ààº}<:>}":ƒÎ¢MtGÏCÅxÓ>¸ŒîAÏG/@÷¢ûРыЋÑ'¡òŸeîG/A/E/CŸ‚@ŸŠ> }:ú ô™è³Ðg£ÏAŸ‹^Ž>}>úô…è‹Ð£/A_о ½½}9ú ô•è«ÐW£¯A_‹¾½ ½}=úôè›Ð7£oAߊ¾ };z}úNô]è»Ñ÷ ïE߇¾ýzý ú!ôÃèGТC?Ž^ƒ~½½ý$ú)ôÓègÐÏ¢ŸC?~½½ý"ú%ôËèWЯ¢_C¿Ž~ý&zýúmô;èwÑï¡ßG€þýzý1úô§èÏП£¿@‰þ ý5z#zúô·èïÐߣ@ÿˆþ ý3z½ý *ÿÏéßп£ÿ@ÿ‰þk°åhåÊš¿ þ þË/oÚú%NðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoGüüüüüüüüüüüüüüüÛ±‰Ç-ζøÙâb þ þ þ þ þ þ þ þ þ þ þm„àßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßàßîBðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðoðo÷#ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø7ø·Çruÿ^Bøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwøwø/K—­Õ6üGY–pðððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððð𿵠ÿ;l²IPö¶mOhKãÀæ©Í›/œ»|~ãäMÇ/Ï»û7O]ysïÝWÜš:ÉÏלºpüìFk3b÷©sÎ^>SÌ×ÛØyü‘moî»æY›÷œ¾pnóìÆæ¥ÆŠFŸ—ðv°­¨º5²u{WóÙµžÍ-•í÷&[.[…´÷hv9þÜ­_V³knòÖ¶ÌÝ~úìÆ‘‹§7Ol9æøæ¥Ó›w·ÙC厖Ú]¡^pUñúáÞ·RþÎË›§/©xkå½óè¤5ÛòµF¾jÒà-ÿ âcÌäÉwnlme/data/Glucose.rda0000644000176000001440000000470110132476007014241 0ustar ripleyusers‹í›;ldgÇÇï¬×yú9¶Çb·YvιÏ"âAKEŠifíñb°g–Y;À‚€&u((uêtHPЀUZ¶¡ Eš „D–™¹ÿsþö,H^´HX¶¥É÷ͽß=¿ï|ßÝ›}ëwdöÙB¡0^›*Æ&ûÕÉñþÆ …ê­~9óàøl¿û¤Ý¯Uçúå|ÿìÓ~}êƯñg⦯ñgòÆ®ïçÂí`ú¸ý^ûøIÿh±0\“ƒ£c‘UÄ*j•Ð*M«#1§ö[O,ä8ZÍt{í^û_§[û§Ý^¿öEÿÈÂàôë?.ü}ùÏ(?Cù÷¼Ìp>{ eeåJ^þ¿ÇËê×»ŸW%ÿëš÷ͼ¿ÚxW%ï›yµñ®JÞ7óþjã]•¼oæýÕÆ»*yÿ¯çÝ~×g•Ÿ þ~ž•q~ëÝ;Ÿÿæƒw³Ú'³¯?þð“¬úæ§ïo~üVVzðQõ鳯f‹V¿ù׬ˆëK.øUVAYüxxa¶ƒ¸»OŸõ¯üA¶þûÁß²õA˜ee´¿8Eœ/Âú~V|6f´oÜË˵A/ïü-+éð/+ ›oeeô¿„óµá×»YqK8_Äu ƒ,g_϶¿çSG?WÀ3~ ínáºyð‡Ã4›Uñ½îÚí-ÙÎáð/kü"o·…ø•aØïx¾sèoÑÆוÑ]ÄÛwï'ùøîütØñ¬†<+˜§"òµ¸‹ø^6.Æ} å úQBëGë¡„ëJàmžl¿ŽrëÄâÖp½}Ÿ·ù¸Û8—«y>6þ ÄÙÁùM[×hgë¨<þÏëý+!ïâ,Z?ÈÇq ã´~¬ ]ã^EÜÒÈz,Û?ÛÈcãY·yG¹ñ\¶u‰ãô»€~•°ïŠ8oãnûfë­‘äûl ×/£¿K¶¯ge ý«!î®[·Šñ­aWg ã_²þÙ:³}eùšG°þ·ÐÏ |_ÆxWgž0_Ù¾ ÌGñ­5ó°ùÂÖ%Öƒ¯gä_?”æ³yô§˜û‡÷™™_f%p06okX7«è︛æió òšÇ|ÎÙþ²u†qZ³õŽ­Oß/ˆcý0o,`Ëc¶x|®Å°Þ9a1/õ’øÂ+æNë¤m¯˜'ímzûìá·Úû§ø:ù£“¶Õ÷»}«½Ý:‰w«×ýî½s1w·‘·Ü/¾ ^x%î¯Íc«$VIQoÞ÷ZÓkâ5õZàµÐk‘×b¯%^s†8Cœ!Îgˆ3Äâ q†8Cœ¡ÎPg¨3Ôê u†:C¡ÎPgΜ8#pFàŒÀ3gΜ:#tFèŒÐ¡3Bg„Î:#tFäŒÈ‘3"gDΈœ9#rFäŒÈ±3bgÄΈ;#vFìŒØ±3bg$ÎHœ‘8#qFâŒÄ‰3g$ÎHœ‘:#uFêŒÔ©3Rg¤ÎH‘:#5ÆDóþ}V›¬ «ÊjÀjÈjÄjÌjÂ*iMÒš¤5Ik’Ö$­IZ“´&iMÒš¤ iBš&¤ iBš&¤ iB𒦤)iJ𒦤)iJ𒦤¤¤¤¤¤¤¤¤¤¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤E¤E¤E¤E¤E¤E¤E¤E¤E¤E¤Å¤Å¤Å¤Å¤Å¤Å¤Å¤Å¤Å¤Å¤%¤%¤%¤%¤%¤%¤%¤%¤%¤%¤¥¤¥¤¥¤¥¤¥¤¥¤¥¤¥¤¥¤Ñ%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%B—]"t‰Ð%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢t‰Ò%J—(]¢C—œæ0‰S Ã΃^÷ìqûàÖi Gç;‡/¼ýè…C³ýú½Ã^kð¨áâ?´:ìöNÎŽû '¦GÐc¸˜M.\9wï+÷ŽzÝÎI»sÚÿþÏÂðˆŸûQ!,4vñéÆðØôù†?m˜?¹pŒOM†Ñ'-ÓÇ­‡Ã 0]É/¼Áú `ã°×=i¡’½B»=R“Ä;dÿUÑ•(útyágº”à—ê{„ò˜àŸâqÿ`ñ ´ô¼ÁŸÀ(G—í¢“6¨$/Ú.÷~¢g ‡ ÊrÎå>í+ë¹ô Ëð_ÓÚÌ7}§•ŸwìâK#3£»:Uv<¯«ŠgÀNfÈJȴݱ_%y¶îþ,òg Ÿ&?$Ž@±£ƒLïà0u¡N½€#€£Ôïà8àÏË)Ài@?õ<œ þ縇——¸?¯’€®\ nÃu„×ÁCÈà dx^onîðÜLî¦pE÷÷xÞfs€ù@Ÿ€±¬íä‹&(-«MK¨g"9kmäÛÊž®æ_H•vé5-ƒÔ`;ø j­÷VPéßgÒÔ6ãŸ:Ç!l°CU|GúùB¹wДsè«vý[T æUgÛæ]^PÞCˆN¯š¨Â»Gš·ºI©¦þÌÿ¡ëÏG諨¯ÙYÍÆ?š©ob¤Ðˆ7 µ‹.öØÃ4«éòû¤n”„íd 'éß…êò(qVùA²ÿT0ynõ!„—E ”XhfÙ¢•vs¶¥ –†´¼¡[ƒ¥aÍÒ“N^›ÔV–Vg‡h³íñ¤|}£ÆÚ­¬`” ç^¯þ †Èá‰V·óOç3î;nlme/data/RatPupWeight.rda0000644000176000001440000000463310132476004015224 0ustar ripleyusers‹íšx[W†ï±l'v“4ÒÕ´£–eC1‘<â[š¤Ð˜„Cu$W`K®,'nZ6aCØÐ²I²Â†°¡eÓ²!lZ6)³1ß¹ú¿ãë§±¯‡>DÏóúŒ{ÆÎ?ÎÕ±Öïȶîhµ,«ÁRM–¥‘mlÀeYá¤KrÕ‹ÆG/·.­ZÖ¢•¨CÃÆehr'Qp?NÛUúsµ“bzôºý;;nqRò<Ö¡+:äMûÚm½ÙIu»'yƒþÜèÄù<¼÷Ȧƒa'?{lvânñ “&eüøN·ƒ“°Ü“yâzÚ£×;IIã·®½Æ‰t6rDe|SÖÍvÚe¼ÔV-è€Ó.íÚD®¸úƒì;ýˆë¤üôKãW,ûö'J{õé=&óò9ǵYO¿¡_r_רëýr?©÷ˆÏŽ"²ÎˆŒK¿c?ΦÜì'û–ç¶Ì–õ2¤äy’çã×Cý±^ôÃ}É|+i—"?ãí–ñ4á‹3qúÇ—qé<Çb´GyÎýâþÒîè¯ÜgÆ_ÆQúwLüŽûhâ°/ÎÐßèÆODŽ0í@ôbüʧ7§¤_Däa9̸(q#,òS+è"·‘OÊô£ã"ã+ヴûÖ×.òµ3Š}˜s™ûÇ8$íè§1iG¹(‰“<¿(ŸŒÇ÷¾'ñ|gJÿ`4ç¦ÈÇv1ŸþéF>Úý™)åeœ{J0~p½|¿¡ÝÉú¹/’âýp©~/¬½?Þ& >NÖ~¦> 3< 2FÐ~³it]õ/ÈÕS=æ­÷ÌgÎùö™>‚Ît®ÍyªôÔÎæâA÷c¶2ѧʹïÒÍÃùÝùá1Ô.—§º¶ñÂÜp^òÍó#µ’·_ÓàpnŒÝ›rƒÕr¹cž°»hŽ4d±Æ€´ u„êÄ\]k¾np"š°rž$…È Ï;ÑœÄ<ˆÏ’Ø<9+ KfÉ KçÈò“p‡Y°ìäèðÙ0 7Ðc&%bªµÌô3³†™f²’iȬfU†™nfz™écëlÆäÌÙ“[crS=zM®ÛÌiÚeÌx3Jfªé›™oµ©[krý&—õŸ)¥ÜHžg whñåRµRÎøÊY_¹ÛWîñ•{}å>_y¯Üï+s-”‡kkÚ\º4ã-d½…no¡Ç[èõú¼ÊÒ¸¥¼'ãÉg=ùnO¾Ç“ïõäû\Öƒ `#Ø6ƒ€‚-àBð`ðpØ ÀCÁ6°< \ v€‡ƒG€G‚àQàÑà1à± .ƒvaA‹V ˜‘U°6k”@Œ‚Ë€¶ èԂ­q°À-‹u9Ø ®W‚'€'‚''ƒ§€§‚§§ƒ}àà™àYàÙà9à¹àyàùà`?x!xx1x x)xx9xx%¸ \ ^^ ^^ ^^ÞÞ€kÀ›À›Á[Àµà­àmàíààà xx7xx/xx?øø ø8> >> >>>> >> ®׃πςÏσ/€/‚//ƒÀà+à«àkàëàà›à[àÛà;à0ø.øø>øø!øø1ø ø)8~~~~ ~~ ~~ ~n7ƒßƒ?€?‚??ƒ¿€¿‚¿£àðwððOð/ðoðp«åFkRÎvüQðÿ×?Úu¼ ÿWðÿWðÿWðÿW:nè‹Cø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿Jø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿ+ø¿‚ÿëKu}×®ïÔõ廾R×·éúF^_Ïë»zÿWðÿWðÿWðå€ókqpZ¸n”ø¼¬T(lª”ÇGó»Öçª9©]Zš¡ò¬¡ãªZw!ßU¨ àúïÌËãnì5û&V<' åÊÈøpÎÿê® ¥ÝÅJ¹T îF—|®´cO‹øž£€gŒy85É,åX495çâIßTæ¤rk›½R]Y«Ô÷ÍØwm´µÏ´î<ÏÜùEmÎ]âþûy¥Hç•rEíGåér!]ÉUӣ㣾ÓÔHrù c7—ŠÕ êêœÓ`ÅRiš½Í­öÇMÚ¸çOsÈ¿EcåñÊ`Þ7Ý9…ñÒ`µX.¥;&:Ó#¹‰Ž‰óÒ¥\We$½.½m`û†NÙñ[}é ‰Ç|Ú aš áÉãÿ„QÙjM}qð‹¿Ä}êrÝeìø¶Ö±ÿÜ-Y¯K0nlme/data/Meat.rda0000644000176000001440000000117010132476007013523 0ustar ripleyusers‹­UYoÓ@^ßMÒ¤…–ûPoD8Ñ‚€P!? !@Q_Ýd]E86Z'$„øÉüf㙵½‰Å!"}™ogÇ3;‡×oǽæq“1f2Ãa̰Ú&üŒí6äâ5gŒy;’ƒlƒ¼ï3igåz3õî9¸Gzõ.Ú8¨wPo£žìÝÕ•³¹1?ãqÚíÜÚ–Zsï¾b¾b=Å(vHÌ?Ð<;£8Ìȱ‰f^*Æ\ð1.Ý(ÍRì4Y—þM¶üõ}”Q¢ìÏåSÍî ÊGÚšìž¡¼£ù#ÿGè÷ &î@[¿Ðdå]->ù{¨ùEûÒ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # groupedData <- ## Constructor for the groupedData class. Takes a formula and a frame ## The formula must be of the form "response ~ primary | groups", ## "respose ~ primary ~ groups1/groups2/.../groups_k", ## or "response ~ (primary1 | groups1) / ... / (primary|groups_k)" ## where groups_i evaluates to a factor in frame. function(formula, data = sys.parent(1), order.groups = TRUE, FUN = function(x) max(x, na.rm = TRUE), outer = NULL, inner = NULL, labels = NULL, units = NULL) { if (!(inherits(formula, "formula") && length(formula) == 3)) { stop("first argument to 'groupedData' must be a two-sided formula") } if (is.null(grpForm <- getGroupsFormula(formula, asList = TRUE))) { stop("right-hand side of first argument must be a conditional expression") } mCall <- match.call() mCall[[1]] <- as.name(ifelse(length(grpForm) == 1, "nfGroupedData", "nmGroupedData")) eval(mCall, envir = parent.frame()) } nfGroupedData <- ## Constructor for the nfGroupedData class. Takes a formula and a frame ## The formula must be of the form "response ~ primary | groups" ## where groups evaluates to a factor in frame. function(formula, data = sys.parent(1), order.groups = TRUE, FUN = function(x) max(x, na.rm = TRUE), outer = NULL, inner = NULL, labels = NULL, units = NULL) { if (!(inherits(formula, "formula") && length(formula) == 3)) { stop("first argument to 'nfGroupedData' must be a two-sided formula") } grpForm <- getGroupsFormula(formula, asList = TRUE) if (is.null(grpForm)) { stop("right-hand side of first argument must be a conditional expression") } if (length(grpForm) > 1) { stop("only one level of grouping allowed") } ## create a data frame in which formula, inner, and outer can be evaluated if (missing(data)) { vnames <- all.vars(asOneFormula(formula, inner, outer)) alist <- lapply(as.list(vnames), as.name) names(alist) <- vnames data <- do.call('data.frame', alist) } else { if (!inherits(data, "data.frame")) { stop("second argument to 'groupedData' must inherit from data.frame") } } ## Although response and primary are not always used, they are ## evaluated here to verify that they can be evaluated. response <- getResponse(data, formula) primary <- getCovariate(data, formula) groupName <- names(grpForm) groups <- getGroups(data, formula) data[[groupName]] <- groups if (order.groups) { if (!inherits(groups, "ordered")) { if (is.null(outer)) { data[[groupName]] <- ordered(groups, levels = names(sort(tapply(response, groups, FUN)))) } else { ## split the data according to the 'outer' factors and ## obtain the order within each group outer <- asOneSidedFormula(outer) ## paste together all variables in outer with a character ## unlikely to be in a name combined <- do.call("paste", c(data[, all.vars(outer), drop = FALSE], sep='\007')) levs <- as.vector(unlist(lapply(split(data.frame(response = response, groups = groups), combined), function(obj, func) { names(sort(tapply(obj$response, obj$groups, func))) }, func = FUN))) data[[groupName]] <- ordered(groups, levels = levs) } } } attr(data, "formula") <- formula attr(data, "labels") <- labels attr(data, "units") <- units attr(data, "outer") <- outer attr(data, "inner") <- inner attr( data, "FUN" ) <- FUN attr( data, "order.groups" ) <- order.groups dClass <- unique(c("nfGroupedData", "groupedData", class(data))) if ((length(all.vars(getCovariateFormula(formula))) == 0) || (data.class(primary) != "numeric")) { ## primary covariate is a factor or a "1" class(data) <- unique(c("nffGroupedData", dClass)) } else { ## primary covariate is numeric class(data) <- unique(c("nfnGroupedData", dClass)) } data } nmGroupedData <- ## Constructor for the nmGroupedData class. Takes a formula and a frame ## The formula must be of the form ## "respose ~ primary | groups1/groups2/.../groups_k", ## where groups_i evaluates to a factor in frame. function(formula, data = sys.parent(1), order.groups = TRUE, FUN = function(x) max(x, na.rm = TRUE), outer = NULL, inner = NULL, labels = NULL, units = NULL) { checkForList <- function(object, nams, expand = FALSE) { if (is.null(object)) return(object) if (is.list(object)) { if (is.null(names(object))) { names(object) <- nams[1:length(object)] } return(object) } if (expand) { object <- rep(list(object), length(nams)) names(object) <- nams return(object) } object <- list(object) names(object) <- nams[length(nams)] object } if (!(inherits(formula, "formula") && length(formula) == 3)) { stop("first argument to 'nmGroupedData' must be a two-sided formula") } grpForm <- getGroupsFormula(formula, asList = TRUE) if (is.null(grpForm)) { stop("right-hand side of first argument must be a conditional expression") } if (length(grpForm) == 1) { # single group mCall <- match.call()[-1] do.call("nfGroupedData", mCall) } grpNames <- names(grpForm) names(grpNames) <- grpNames ## ckecking if arguments are lists order.groups <- checkForList(order.groups, grpNames, TRUE) outer <- checkForList(outer, grpNames) inner <- checkForList(inner, grpNames) ## create a data frame in which formula, outer, and inner can be evaluated if (missing(data)) { vnames <- all.vars(asOneFormula(formula, outer, inner)) alist <- lapply(as.list(vnames), as.name) names(alist) <- vnames data <- do.call('data.frame', alist) } else { if (!inherits(data, "data.frame")) { stop("second argument to 'groupedData' must inherit from data.frame") } } ## Although response and primary are not always used, they are ## evaluated here to verify that they can be evaluated. response <- getResponse(data, formula) primary <- getCovariate(data, formula) groups <- getGroups(data, formula) attr(data, "formula") <- formula attr(data, "formulaList") <- grpForm attr(data, "labels") <- labels attr(data, "units") <- units attr(data, "inner") <- inner attr(data, "outer") <- outer attr(data, "order.groups") <- order.groups attr(data, "FUN") <- FUN class(data) <- unique(c("nmGroupedData", "groupedData", class(data))) data } ###*# Methods for standard generics as.data.frame.groupedData <- function(x, row.names = NULL, optional = FALSE, ...) { attributes(x) <- attributes(x)[c("names", "row.names")] class(x) <- "data.frame" NextMethod() } collapse.groupedData <- function(object, collapseLevel = Q, displayLevel = collapseLevel, outer = NULL, inner = NULL, preserve = NULL, FUN = mean, subset = NULL, ...) { form <- formula(object) grpForm <- getGroupsFormula(form, asList = TRUE) grpNames <- names(grpForm) names(grpNames) <- grpNames Q <- length(grpForm) # number of levels if (Q == 1) { # no collapsing if (!missing(subset)) { warning("'subset' ignored with single grouping factor") } return(object) } groups <- getGroups(object, form, level = 1:Q) if (!is.null(subset)) { ## choosing some levels of grouping factors if (!is.list(subset)) { stop("'subset' must be a list") } if (!any(is.na(match(names(subset), 1:Q)))) { ## subset names given as integers names(subset) <- grpNames[names(subset)] } if (any(is.na(match(names(subset), grpNames)))) { stop("undefined group declared in 'subset'") } auxSubset <- rep(TRUE, dim(object)[1]) for(i in names(subset)) { auxSubset <- auxSubset & as.logical(match(groups[[i]], subset[[i]], 0)) } object <- object[auxSubset, , drop = FALSE] groups <- groups[auxSubset, , drop = FALSE] groups[] <- lapply(groups, function(x) x[drop = TRUE]) } if (length(displayLevel) != 1) { stop("only one display level allowed") } if (is.null(grpForm[[displayLevel]])) { stop(gettextf("undefined display level %s for %s", displayLevel, sQuote(substitute(object))), domain = NA) } attribs <- attributes(object) ord <- attribs[["order.groups"]][[displayLevel]] if (is.logical(outer)) { outer <- attribs[["outer"]][[displayLevel]] } if (is.logical(inner)) { inner <- attribs[["inner"]][[displayLevel]] } form[[3]][[3]] <- grpForm[[displayLevel]][[2]] args <- list(formula = form, order.groups = ord, FUN = attribs[["FUN"]], outer = outer, inner = inner, labels = attribs[["labels"]], units = attribs[["units"]]) dlevel <- if (is.character(displayLevel)) { # as the level name match(displayLevel, grpNames) } else { # as the level number displayLevel } if (dlevel < Q) { # may need to collapse object if (is.null(grpForm[[collapseLevel]])) { stop(gettextf("undefined collapsing level %s for %s", collapseLevel, sQuote(substitute(object))), domain = NA) } clevel <- if (is.character(collapseLevel)) { match(collapseLevel, grpNames) } else { collapseLevel } if (clevel < dlevel) { clevel <- dlevel warning("collapsing level cannot be smaller than display level; setting it to the display level") } if ((dlevel < clevel) || (clevel < Q)) { collapseGroups <- do.call("paste", c(lapply(groups[, 1:clevel, drop = FALSE ], as.character), sep = "\007")) if (dlevel < clevel) { # may need innerGroups object[[".collapseGroups"]] <- as.factor(collapseGroups) } if (!is.null(preserve)) { if (!(inherits(preserve, "formula") && length(preserve) == 2)) { stop("'preserve' must be a two-sided formula") } collapseGroups <- paste(collapseGroups, eval(preserve[[2]], object), sep = "\007") } collapseGroups <- paste(collapseGroups, getCovariate(object), sep = "\007") collapseGroups <- ordered(collapseGroups, levels = unique(as.character(collapseGroups))) if (length(levels(collapseGroups)) < dim(object)[1]) { ## collapsing the object object <- gsummary(object, groups = collapseGroups, FUN = FUN) row.names(object) <- 1:dim(object)[1] ## need to recalculate groups --- fix from JCP groups <- getGroups(object, grpForm, level = 1:Q) } } } object <- as.data.frame(object) if (dlevel == 1) { # no outer groups args[["data"]] <- object value <- do.call("nfGroupedData", args) } else { ## need to establish an appropriate ordering namesDgrp <- names(groups) for(i in 2:Q) { groups[, i] <- paste(as.character(groups[, i - 1]), as.character(groups[, i]), sep = "/") namesDgrp[i] <- paste(namesDgrp[i-1], namesDgrp[i], sep = "/") } displayGroups <- groups[, dlevel] isOrd <- unlist(lapply(groups, is.ordered))[1:dlevel] ordOrig <- unlist(attribs[["order.groups"]][1:dlevel]) & !isOrd if (any(ordOrig)) { groups[ordOrig] <- lapply(groups[ordOrig], function(el, y, func) { ordered(el, levels = names(sort(tapply(y, el, func)))) }, y = getResponse(object, form), func = attribs[["FUN"]]) } if (!is.null(outer)) { outFact <- do.call("paste", c(lapply(object[, all.vars(outer)], as.character), sep = "\007")) groups <- c(list(outFact), groups) } displayGroups <- ordered(displayGroups, levels = unique(as.character(displayGroups[do.call("order", groups)]))) form[[3]][[3]] <- as.name(".groups") object[[".groups"]] <- displayGroups args[["formula"]] <- form args[["data"]] <- object value <- do.call("nfGroupedData", args) } if (match(".collapseGroups", names(object), 0)) { groups <- eval(form[[3]][[3]], value) rnams <- unlist(split(1:nrow(value), groups)) cGroups <- unlist(lapply(split(value[[".collapseGroups"]], groups), function(el) as.integer(el[drop = TRUE]))) value[[".collapseGroups"]] <- cGroups[order(rnams)] attr(value, "innerGroups") <- ~.collapseGroups } if (dlevel > 1 && !is.na(match(".groups", names(value)))) { attr(value[,".groups"], "label") <- namesDgrp[dlevel] } value } formula.groupedData <- function(x, ...) eval(attr(x, "formula")) plot.nfnGroupedData <- function(x, outer = NULL, inner = NULL, innerGroups = NULL, xlab = paste(attr(x, "labels")$x, attr(x, "units")$x), ylab = paste(attr(x, "labels")$y, attr(x, "units")$y), strip = function(...) strip.default(..., style = 1), aspect = "xy", panel = function(x, y, ...) { if (grid) panel.grid() panel.xyplot(x, y, ...) y.avg <- tapply(y, x, mean) # lines through average y y.avg <- y.avg[!is.na(y.avg)] if (length(y.avg) > 0) { xvals <- as.numeric(names(y.avg)) ord <- order(xvals) panel.xyplot(xvals[ord], y.avg[ord], type = "l") } }, key = TRUE, grid = TRUE, ...) { labels <- list(xlab = xlab, ylab = ylab) labels <- labels[unlist(lapply(labels, length)) > 0] args <- c(list(attr(x, "formula"), data = x, strip = strip, aspect = aspect, panel = panel), labels) if (length(outer) > 0) { if (is.logical(outer) && outer) { # get the default outer formula outer <- attr(x, "outer") } args[[1]][[3]][[3]] <- asOneSidedFormula(outer)[[2]] if (length(innerGroups) == 0) { innerGroups <- getGroupsFormula(x) } } if ((length(innerGroups) > 0) && (length(inner) == 0)) { inner <- innerGroups innerGroups <- NULL } if (length(inner) > 0) { if (is.logical(inner) && inner) { # get the default inner formula inner <- attr(x, "inner") } args[["subscripts"]] <- TRUE trll.set <- trellis.par.get("superpose.line")[c("lty", "col")] if (length(innerGroups) == 0) { args[["groups"]] <- asOneSidedFormula(inner)[[2]] if (missing(inner)) { Inner <- NULL trll.lty <- trll.set[["lty"]][1] trll.col <- trll.set[["col"]][1] assign("trll.lty", trll.lty) assign("trll.col", trll.col) args[["panel"]] <- function(x, y, subscripts, groups, ...) { panel.grid() panel.xyplot(x, y, ...) panel.superpose(x, y, subscripts, groups, type = "l", col = trll.col, lty = trll.lty) } } else { Inner <- as.factor(eval(asOneSidedFormula(inner)[[2]], x)) levInn <- levels(Inner) args[["panel"]] <- function(x, y, subscripts, groups, ...) { panel.grid() panel.xyplot(x, y, ...) panel.superpose(x, y, subscripts, groups, type = "l") } } } else { #inner and innerGroups args[["groups"]] <- asOneSidedFormula(innerGroups)[[2]] Inner <- as.factor(eval(asOneSidedFormula(inner)[[2]], x)) levInn <- levels(Inner) Inner <- (as.integer(Inner) - 1) %% length(trll.set[["lty"]]) + 1 trll.lty <- trll.set[["lty"]][Inner] trll.col <- trll.set[["col"]][Inner] assign("trll.lty", trll.lty) assign("trll.col", trll.col) args[["panel"]] <- function(x, y, subscripts, groups, ...) { panel.grid() panel.xyplot(x, y, ...) aux <- match(unique(groups), groups) panel.superpose(x, y, subscripts, groups, type = "l", col = trll.col[aux], lty = trll.lty[aux]) } } } else { Inner <- NULL } if(is.logical(key)) { if(key && (!is.null(Inner) && (lInn <- length(levInn)) > 1)) { ## lInn <- min(c(lInn, length(trll.set[["lty"]]))) args[["key"]] <- list(lines = Rows(trellis.par.get("superpose.line"), 1:lInn), text = list(levels = levInn), columns = min(6, lInn)) } } else { args[["key"]] <- key } dots <- list(...) args[names(dots)] <- dots assign("grid", grid) do.call("xyplot", args) } plot.nffGroupedData <- function(x, outer = NULL, inner = NULL, innerGroups = NULL, xlab = paste(attr(x, "labels")$y, attr(x, "units")$y), ylab = groupLabel, strip = function(...) strip.default(..., style = 1), panel = function(x, y) { dot.line <- trellis.par.get("dot.line") panel.abline(h = y, lwd = dot.line$lwd, lty = dot.line$lty, col = dot.line$col) panel.dotplot(x, y) }, key = length(inner) > 0, grid, ...) { groupExpr <- c_deparse(getGroupsFormula(x)[[2]]) if (is.null(groupLabel <- attr(x[, groupExpr], "label"))) { groupLabel <- groupExpr } labels <- list(xlab = xlab, ylab = ylab) labels <- labels[unlist(lapply(labels, length)) > 0] if (length(outer) > 0) { if (is.logical(outer) && outer) { # get the default outer formula form <- formula(paste(groupExpr, "~", deparse(getResponseFormula(x)[[2]]),"|", c_deparse(attr(x, "outer")[[2]]))) } else { form <- formula(paste(groupExpr, "~", deparse(getResponseFormula(x)[[2]]),"|", c_deparse(outer[[2]]))) } } else { form <- formula(paste(groupExpr, "~", deparse(getResponseFormula(x)[[2]]))) } args <- c(list(form, data = x, strip = strip, panel = panel), labels) if ((length(innerGroups) > 0) && (length(inner) == 0)) { inner <- innerGroups innerGroups <- NULL } if (length(inner) == 0) { covForm <- getCovariateFormula(x) if (length(all.vars(covForm)) > 0) {# non-trivial covariate inner <- covForm } } if (length(inner) > 0) { if (is.logical(inner) && inner) { # get the default inner formula inner <- attr(x, "inner") } args[["subscripts"]] <- TRUE args[["groups"]] <- asOneSidedFormula(inner)[[2]] args[["panel"]] <- function(x, y, subscripts, groups) { dot.line <- trellis.par.get("dot.line") panel.abline(h = y, lwd = dot.line$lwd, lty = dot.line$lty, col = dot.line$col) panel.superpose(x, y, subscripts, groups) } } if(is.logical(key) && key && (length(inner) > 0)) { Inner <- eval(inner[[2]], x) levInn <- levels(as.factor(Inner)) lInn <- length(levInn) ## lInn <- min(c(lInn, length(trellis.par.get("superpose.symbol")$pch))) args[["key"]] <- list(points = Rows(trellis.par.get("superpose.symbol"), 1:lInn), text = list(levels = levInn), columns = min(6, lInn)) } dots <- list(...) args[names(dots)] <- dots do.call("dotplot", args) } plot.nmGroupedData <- function(x, collapseLevel = Q, displayLevel = collapseLevel, outer = NULL, inner = NULL, preserve = NULL, FUN = mean, subset = NULL, key = TRUE, grid = TRUE, ...) { args <- list(outer = outer, inner = inner, key = key, grid = grid, ...) Q <- length(getGroupsFormula(x, asList = TRUE)) if (is.null(preserve) && (collapseLevel < Q) && (!is.null(inner))) { if (is.logical(inner)) { preserve <- attr(x, "inner")[[displayLevel]] } else { preserve <- inner } } x <- collapse(x, collapseLevel, displayLevel, outer, inner, preserve, FUN, subset) args[["innerGroups"]] <- attr(x, "innerGroups") args[["x"]] <- x do.call("plot", args) } print.groupedData <- function(x, ...) { cat("Grouped Data: ") if(identical(emptyenv(), environment(frm <- attr(x, "formula")))) environment(frm) <- globalenv()# for printing, as that will be suppressed print(frm) print.data.frame(x, ...) } update.groupedData <- function(object, formula, data, order.groups, FUN, outer, inner, labels, units, ...) { args <- as.list( attributes( object ) ) args <- args[is.na(match(names(args), c("names", "row.names", "class", "formulaList")))] thisCall <- as.list(match.call())[-(1:2)] args[names(thisCall)] <- thisCall if (is.null(args[["data"]])) args[["data"]] <- as.data.frame(object) do.call("groupedData", args) } "[.groupedData" <- function(x, i, j, drop = if (missing(i)) TRUE else length(cols) == 1) { oAttr <- attributes(x) x <- as.data.frame(x) data <- NextMethod() if (!inherits(data, "data.frame")) return(data) allV <- all.vars(asOneFormula(oAttr[["formula"]], oAttr[["inner"]], oAttr[["outer"]])) ## check if any columns used in formulas were deleted if( any( is.na( match( allV, names(data) ) ) ) ) { # return data frame cols <- ncol(data) return( data[, seq(length=ncol(data)), drop = drop] ) } args <- as.list(oAttr) args <- args[ is.na( match( names( args ), c( "names", "row.names" ) ) ) ] if (nrow(x) == nrow(data)) { # only columns deleted attributes(data) <- c( attributes( data ), args ) return( data ) } ## pruning the levels of factors whichFact <- unlist(lapply(data, is.factor)) data[whichFact] <- lapply(data[whichFact], function(x) x[drop = TRUE]) args <- c(args[!is.na(match(names( args ), c("formula", "order.groups", "FUN", "outer", "inner", "labels", "units")))], list(data = data)) do.call("groupedData", args) } isBalanced.groupedData <- function(object, countOnly = FALSE, level) { if (missing(level)) { level <- length(getGroupsFormula(object, asList = TRUE)) } if ( countOnly ) { return( length( unique( table( getGroups(object, level = level) ) ) ) == 1 ) } length(unique(table(getCovariate(object), getGroups(object, level = level)))) == 1 } asTable.groupedData <- function(object) { if (length(getGroupsFormula(object, asList = TRUE)) > 1) { stop("'asTable' cannot be used with multilevel grouped data") } tab <- table( getGroups(object), getCovariate(object) ) if (1 != length(unique(tab))) stop("'asTable' can only be used with balanced 'groupedData' objects") tab[] <- getResponse(object)[order(getCovariate(object),getGroups(object))] tab } balancedGrouped <- function(form, data, labels = NULL, units = NULL) { form <- as.formula( form ) data <- t( as.matrix( data ) ) dn <- dimnames( data ) if ( all( !is.na( as.numeric( dn[[1]] ) ) ) ) { dn[[1]] <- as.numeric( dn[[1]] ) } names(dn) <- c( as.character(getCovariateFormula(form)[[2]]), as.character(getGroupsFormula(form)[[2]]) ) frm <- do.call("expand.grid", dn) frm[[ as.character(getResponseFormula(form)[[2]]) ]] <- as.vector( data ) do.call("groupedData", list(form, data = frm, labels = labels, units = units )) } ### Local variables: ### mode: S ### End: nlme/R/gnls.R0000644000176000001440000006666012165011602012534 0ustar ripleyusers### Fit a general nonlinear regression model with correlated and/or ### heteroscedastic errors ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # gnls <- function(model, data = sys.frame(sys.parent()), params, start, correlation = NULL, weights = NULL, subset, na.action = na.fail, naPattern, control = list(), verbose= FALSE) { finiteDiffGrad <- function(model, data, pars) { dframe <- data.frame(data, pars) base <- eval(model, dframe) nm <- colnames(pars) grad <- array(base, c(length(base), length(nm)), list(NULL, nm)) ssize <- sqrt(.Machine$double.eps) for (i in nm) { diff <- pp <- pars[ , i] diff[pp == 0] <- ssize diff[pp != 0] <- pp[pp != 0] * ssize dframe[[i]] <- pp + diff grad[ , i] <- (base - eval(model, dframe))/diff dframe[[i]] <- pp } grad } ## keeping the call Call <- match.call() ## assigning a new name to the "object" argument form <- model ## control parameters controlvals <- gnlsControl() if (!missing(control)) { if(!is.null(control$nlmStepMax) && control$nlmStepMax < 0) { warning("negative control$nlmStepMax - using default value") control$nlmStepMax <- NULL } controlvals[names(control)] <- control } ## ## checking arguments ## if (!inherits(form, "formula")) stop("'object' must be a formula") if (length(form)!=3) stop("object formula must be of the form \"resp ~ pred\"") ## ## checking if self-starting formula is given ## if (missing(start)) { if (!is.null(attr(eval(form[[3]][[1]]), "initial"))) { nlsCall <- Call[c("","model","data")] nlsCall[[1]] <- quote(stats::nls) names(nlsCall)[2] <- "formula" ## checking if "data" is not equal to sys.frame(sys.parent()) if (is.null(dim(data))) { stop("'data' must be given explicitly to use 'nls' to get initial estimates") } start <- coef(eval(nlsCall)) } else { stop("no initial values for model parameters") } } else { start <- unlist(start) } gnlsModel <- call("-", form[[2]], form[[3]]) ## ## save writing list(...) when only one element ## if (missing(params)) { if (is.null(pNams <- names(start))) { stop("starting estimates must have names when 'params' is missing") } params <- eval(parse(text = paste(paste(pNams, collapse = "+"), "1", sep = "~"))) } if (!is.list(params)) { params <- list(params) } val <- NULL for(i in seq_along(params)) { if (is.name(params[[i]][[2]])) { val <- c(val, list(params[[i]])) } else { ## multiple parameters on left hand side val <- c(val, eval(parse(text = paste("list(", paste(paste(all.vars(params[[i]][[2]]), deparse(params[[i]][[3]]), sep = "~"), collapse=","),")")))) } } params <- as.list(val) pnames <- character(length(params)) for (i in seq_along(params)) { this <- eval(params[[i]]) if (!inherits(this, "formula")) stop ("'params' must be a formula or list of formulae") if (length(this) != 3) stop ("formulae in 'params' must be of the form \"parameter ~ expr\"") if (!is.name(this[[2]])) stop ("formulae in 'params' must be of the form \"parameter ~ expr\"") pnames[i] <- as.character(this[[2]]) } names(params) <- pnames ## ## If data is a pframe, copy the parameters in the frame to frame 1 ## Doesn't exist in R ## if (inherits(data, "pframe")) { ## pp <- parameters(data) ## for (i in names(pp)) { ## assign(i, pp[[i]]) ## } ## attr(data,"parameters") <- NULL ## class(data) <- "data.frame" ## } ## check if correlation is present and has groups if (!is.null(correlation)) { groups <- getGroupsFormula(correlation) } else groups <- NULL # if (!is.null(correlation)) { # groups <- getGroupsFormula(correlation, asList = TRUE) # if (!is.null(groups)) { # if (length(groups) > 1) { # stop("Only single level of grouping allowed") # } # groups <- groups[[1]] # } else { # if (inherits(data, "groupedData")) { # will use as groups # groups <- getGroupsFormula(data, asList = TRUE) # if (length(groups) > 1) { # ignore it # groups <- NULL # } else { # groups <- groups[[1]] # attr(correlation, "formula") <- # eval(parse(text = paste("~", # deparse(getCovariateFormula(formula(correlation))[[2]]), # "|", deparse(groups[[2]])))) # } # } # } # } else groups <- NULL ## create an gnls structure containing the correlation and weights gnlsSt <- gnlsStruct(corStruct = correlation, varStruct = varFunc(weights)) ## extract a data frame with enough information to evaluate ## form, params, random, groups, correlation, and weights mfArgs <- list(formula = asOneFormula(formula(gnlsSt), form, params, groups, omit = c(pnames, "pi")), data = data, na.action = na.action) if (!missing(subset)) { mfArgs[["subset"]] <- asOneSidedFormula(Call[["subset"]])[[2]] } mfArgs$drop.unused.levels <- TRUE dataMod <- do.call("model.frame", mfArgs) origOrder <- row.names(dataMod) # preserve the original order ## ## Evaluating the groups expression, if needed ## if (!is.null(groups)) { ## sort the model.frame by groups and get the matrices and parameters ## used in the estimation procedures ## always use innermost level of grouping groups <- eval(parse(text = paste("~1", deparse(groups[[2]]), sep = "|"))) grps <- getGroups(dataMod, groups, level = length(getGroupsFormula(groups, asList = TRUE))) ## ordering data by groups ord <- order(grps) grps <- grps[ord] dataMod <- dataMod[ord, ,drop = FALSE] ## revOrder <- match(origOrder, row.names(dataMod)) # putting in orig. order } else grps <- NULL N <- dim(dataMod)[1] # number of observations ## ## evaluating the naPattern expression, if any ## if (missing(naPattern)) naPat <- rep(TRUE, N) else naPat <- as.logical(eval(asOneSidedFormula(naPattern)[[2]], dataMod)) origOrderShrunk <- origOrder[naPat] dataModShrunk <- dataMod[naPat, , drop=FALSE] yShrunk <- eval(form[[2]], dataModShrunk) if (!is.null(groups)) { ## ordShrunk <- ord[naPat] grpShrunk <- grps[naPat] revOrderShrunk <- match(origOrderShrunk, row.names(dataModShrunk)) } else { grpShrunk <- NULL } ## ## defining list with parameter information ## contr <- list() plist <- vector("list", length(pnames)) names(plist) <- pnames for (nm in pnames) { plist[[nm]] <- TRUE if (deparse(params[[nm]][[3]]) != "1") { plist[[nm]] <- model.matrix(asOneSidedFormula(params[[nm]][[3]]), model.frame(asOneSidedFormula(params[[nm]][[3]]), dataModShrunk)) auxContr <- attr(plist[[nm]], "contrasts") contr <- c(contr, auxContr[is.na(match(names(auxContr), names(contr)))]) } } ## ## Params effects names ## pn <- character(0) currPos <- 0 parAssign <- list() for(nm in pnames) { if (is.logical(p <- plist[[nm]])) { currPos <- currPos + 1 currVal <- list(currPos) pn <- c(pn, nm) names(currVal) <- nm parAssign <- c(parAssign, currVal) } else { currVal <- attr(p, "assign") fTerms <- terms(asOneSidedFormula(params[[nm]][[3]]), data=data) namTerms <- attr(fTerms, "term.labels") if (attr(fTerms, "intercept") > 0) { namTerms <- c("(Intercept)", namTerms) } namTerms <- factor(currVal, labels = namTerms) currVal <- split(order(currVal), namTerms) names(currVal) <- paste(nm, names(currVal), sep = ".") parAssign <- c(parAssign, lapply(currVal, function(el, currPos) { el + currPos }, currPos = currPos)) currPos <- currPos + length(unlist(currVal)) pn <- c(pn, paste(nm, colnames(p), sep = ".")) } } pLen <- length(pn) if (length(start) != pLen) stop ("starting values for parameters are not of the correct length") spar <- start names(spar) <- pn NReal <- sum(naPat) ## ## Creating the params map ## pmap <- list() n1 <- 1 for(nm in pnames) { if (is.logical(p <- plist[[nm]])) { pmap[[nm]] <- n1 n1 <- n1 + 1 } else { pmap[[nm]] <- n1:(n1+ncol(p) - 1) n1 <- n1 + ncol(p) } } ## ## defining the nlFrame ## nlEnv <- new.env() nlList <- list(model = gnlsModel, data = dataMod, plist = plist, beta = as.vector(spar), X = array(0, c(NReal, pLen), list(NULL, pn)), pmap = pmap, N = NReal, naPat = naPat, .parameters = c("beta"), finiteDiffGrad = finiteDiffGrad) lapply(names(nlList), function(x, y, env) assign(x, y[[x]], envir = env), nlList, env = nlEnv) modelExpression <- ~{ pars <- getParsGnls(plist, pmap, beta, N) res <- eval(model, data.frame(data, pars)) if (!length(grad <- attr(res, "gradient"))) { grad <- finiteDiffGrad(model, data, pars)[naPat, , drop = FALSE] } else { grad <- grad[naPat, , drop = FALSE] } res <- res[naPat] for (nm in names(plist)) { gradnm <- grad[, nm] if (is.logical(p <- plist[[nm]])) { X[, pmap[[nm]]] <- gradnm } else { X[, pmap[[nm]]] <- gradnm * p } } result <- c(X, res) result[is.na(result)] <- 0 result } modelResid <- ~eval(model, data.frame(data, getParsGnls(plist, pmap, beta, N)))[naPat] w <- eval(modelResid[[2]], envir = nlEnv) ## creating the condensed linear model Dims <- list(p = pLen, N = NReal, REML = FALSE) attr(gnlsSt, "conLin") <- list(Xy = array(w, c(NReal, 1), list(row.names(dataModShrunk), deparse(form[[2]]))), dims = Dims, logLik = 0) ## additional attributes of gnlsSt attr(gnlsSt, "resp") <- yShrunk attr(gnlsSt, "model") <- modelResid attr(gnlsSt, "local") <- nlEnv attr(gnlsSt, "NReal") <- NReal ## initialization gnlsSt <- Initialize(gnlsSt, dataModShrunk) parMap <- attr(gnlsSt, "pmap") numIter <- 0 # number of iterations nlsSettings <- c(controlvals$nlsMaxIter, controlvals$minScale, controlvals$nlsTol, 0, 0, 0) nlModel <- nonlinModel(modelExpression, nlEnv) repeat { ## alternating algorithm numIter <- numIter + 1 ## GLS step if (needUpdate(gnlsSt)) { # updating varying weights gnlsSt <- update(gnlsSt, dataModShrunk) } if (length(oldPars <- coef(gnlsSt)) > 0) { if (controlvals$opt == "nlminb") { optRes <- nlminb(c(coef(gnlsSt)), function(gnlsPars) -logLik(gnlsSt, gnlsPars), control = list(trace = controlvals$msVerbose, iter.max = controlvals$msMaxIter)) convIter <- optRes$iterations } else { optRes <- optim(c(coef(gnlsSt)), function(gnlsPars) -logLik(gnlsSt, gnlsPars), method = controlvals$optimMethod, control = list(trace = controlvals$msVerbose, maxit = controlvals$msMaxIter, reltol = if(numIter == 0) controlvals$msTol else 100*.Machine$double.eps)) convIter <- optRes$count[2] } aConv <- coef(gnlsSt) <- optRes$par if (verbose) { cat("\n**Iteration", numIter) cat("\n") cat("GLS step: Objective:", format(optRes$value)) print(gnlsSt) } } else { aConv <- oldPars <- NULL } ## NLS step if (is.null(correlation)) { cF <- 1.0 cD <- 1 } else { cF <- corFactor(gnlsSt$corStruct) cD <- Dim(gnlsSt$corStruct) } if (is.null(weights)) { vW <- 1.0 } else { vW <- varWeights(gnlsSt$varStruct) } work <- .C(fit_gnls, thetaNLS = as.double(spar), as.integer(unlist(Dims)), as.double(cF), as.double(vW), as.integer(unlist(cD)), settings = as.double(nlsSettings), additional = double(NReal), as.integer(!is.null(correlation)), as.integer(!is.null(weights)), nlModel, NAOK = TRUE) if (work$settings[4] == 1) { ## convResult <- 2 if (controlvals$returnObject) { warning("step halving factor reduced below minimum in NLS step") } else { stop("step halving factor reduced below minimum in NLS step") } break } oldPars <- c(spar, oldPars) spar[] <- work$thetaNLS if (length(coef(gnlsSt)) == 0 && work$set[5] < controlvals$nlsMaxIter) { break } attr(gnlsSt, "conLin")$Xy[] <- work$additional attr(gnlsSt, "conLin")$logLik <- 0 if (verbose) { cat("\nNLS step: RSS = ", format(work$set[6]), "\n model parameters:") for (i in 1:pLen) cat(format(signif(spar[i]))," ") cat("\n iterations:",work$set[5],"\n") } aConv <- c(spar, aConv) conv <- abs((oldPars - aConv)/ ifelse(abs(aConv) < controlvals$tolerance, 1, aConv)) aConv <- c(max(conv[1:pLen])) names(aConv) <- "params" if (length(conv) > pLen) { conv <- conv[-(1:pLen)] for(i in names(gnlsSt)) { if (any(parMap[,i])) { aConv <- c(aConv, max(conv[parMap[,i]])) names(aConv)[length(aConv)] <- i } } } if (verbose) { cat("\nConvergence:\n") print(aConv) } if ((max(aConv) <= controlvals$tolerance) || (aConv["params"] <= controlvals$tolerance && convIter == 1)) { ## convResult <- 0 break } if (numIter >= controlvals$maxIter) { ## convResult <- 1 if (controlvals$returnObject) { warning("maximum number of iterations reached without convergence") break } else { stop("maximum number of iterations reached without convergence") } } } ## wraping up ww <- eval(modelExpression[[2]], envir = nlEnv) auxRes <- ww[NReal * pLen + (1:NReal)] attr(gnlsSt, "conLin")$Xy <- array(ww, c(NReal, pLen + 1)) attr(gnlsSt, "conLin") <- recalc(gnlsSt) sigma <- sqrt(sum((attr(gnlsSt,"conLin")$Xy[,pLen+1])^2)/(NReal - pLen)) varBeta <- qr(attr(gnlsSt, "conLin")$Xy[ , 1:pLen, drop = FALSE]) if (varBeta$rank < pLen) { stop("approximate covariance matrix for parameter estimates not of full rank") } lsig <- log(sigma) + 0.5 * log(1 - pLen/NReal) attr(parAssign, "varBetaFact") <- varBeta <- sigma * t(backsolve(qr.R(varBeta), diag(pLen))) varBeta <- crossprod(varBeta) dimnames(varBeta) <- list(pn, pn) loglik <- - NReal * (1 + log(2 * pi) + 2 * lsig) / 2 + attr(gnlsSt, "conLin")$logLik ## ## fitted.values and residuals (in original order) ## Resid <- resid(gnlsSt) Fitted <- yShrunk - Resid attr(Resid, "std") <- sigma/(varWeights(gnlsSt)) if (!is.null(groups)) { attr(Resid, "std") <- attr(Resid, "std")[revOrderShrunk] Resid[] <- Resid[revOrderShrunk] Fitted[] <- Fitted[revOrderShrunk] grpShrunk[] <- grpShrunk[revOrderShrunk] } names(Resid) <- names(Fitted) <- origOrderShrunk ## getting the approximate var-cov of the parameters ## first making Xy into single column array again attr(gnlsSt, "conLin")$Xy <- array(auxRes, c(NReal, 1)) if (controlvals$apVar) { apVar <- gnlsApVar(gnlsSt, lsig, .relStep = controlvals[[".relStep"]], minAbsPar = controlvals[["minAbsParApVar"]]) } else { apVar <- "Approximate variance-covariance matrix not available" } ## getting rid of condensed linear model and fit oClass <- class(gnlsSt) attributes(gnlsSt) <- attributes(gnlsSt)[!is.na(match(names(attributes(gnlsSt)), c("names","pmap")))] class(gnlsSt) <- oClass ## ## creating the gnls object ## estOut <- list(modelStruct = gnlsSt, dims = Dims, contrasts = contr, coefficients = spar, varBeta = varBeta, sigma = sigma, apVar = apVar, logLik = loglik, numIter = numIter, groups = grpShrunk, call = Call, method = "ML", fitted = Fitted, residuals = Resid, plist = plist, pmap = pmap, parAssign = parAssign, na.action = attr(dataMod, "na.action")) if (inherits(data, "groupedData")) { ## saving labels and units for plots attr(estOut, "units") <- attr(data, "units") attr(estOut, "labels") <- attr(data, "labels") } class(estOut) <- c("gnls", "gls") estOut } ### Auxiliary functions used internally in gls and its methods gnlsApVar <- function(gnlsSt, lsigma, conLin = attr(gnlsSt, "conLin"), .relStep = (.Machine$double.eps)^(1/3), minAbsPar = 0, natural = TRUE) { ## calculate approximate variance-covariance matrix of all parameters ## except the coefficients fullGnlsLogLik <- function(Pars, object, conLin, N) { ## logLik as a function of sigma and coef(glsSt) npar <- length(Pars) lsigma <- Pars[npar] # within-group std. dev. Pars <- Pars[-npar] coef(object) <- Pars conLin <- recalc(object, conLin) conLin[["logLik"]] - N * lsigma - sum(conLin$Xy^2)/(2*exp(2*lsigma)) } if (length(gnlsCoef <- coef(gnlsSt)) > 0) { cSt <- gnlsSt[["corStruct"]] if (!is.null(cSt) && inherits(cSt, "corSymm") && natural) { cStNatPar <- coef(cSt, unconstrained = FALSE) class(cSt) <- c("corNatural", "corStruct") coef(cSt) <- log((cStNatPar + 1)/(1 - cStNatPar)) gnlsSt[["corStruct"]] <- cSt gnlsCoef <- coef(gnlsSt) } dims <- conLin$dims N <- dims$N conLin[["logLik"]] <- 0 # making sure Pars <- c(gnlsCoef, lSigma = lsigma) val <- fdHess(Pars, fullGnlsLogLik, gnlsSt, conLin, N, .relStep = .relStep, minAbsPar = minAbsPar)[["Hessian"]] if (all(eigen(val)$values < 0)) { ## negative definite - OK val <- solve(-val) nP <- names(Pars) dimnames(val) <- list(nP, nP) attr(val, "Pars") <- Pars attr(val, "natural") <- natural val } else { ## problem - solution is not a maximum "Non-positive definite approximate variance-covariance" } } else { NULL } } ### ### function used to calculate the parameters from ### the params and random effects ### getParsGnls <- function(plist, pmap, beta, N) { pars <- array(0, c(N, length(plist)), list(NULL, names(plist))) for (nm in names(plist)) { if (is.logical(p <- plist[[nm]])) { pars[, nm] <- beta[pmap[[nm]]] } else { pars[, nm] <- p %*% beta[pmap[[nm]]] } } pars } ### ### Methods for standard generics ### coef.gnls <- function(object, ...) object$coefficients formula.gnls <- function(x, ...) eval(x$call[["model"]]) getData.gnls <- function(object) { mCall <- object$call data <- eval(mCall$data) if (is.null(data)) return(data) naPat <- eval(mCall$naPattern) if (!is.null(naPat)) { data <- data[eval(naPat[[2]], data), , drop = FALSE] } naAct <- eval(mCall$na.action) if (!is.null(naAct)) { data <- naAct(data) } subset <- mCall$subset if (!is.null(subset)) { subset <- eval(asOneSidedFormula(subset)[[2]], data) data <- data[subset, ] } return(data) } logLik.gnls <- function(object, REML = FALSE, ...) { if (REML) { stop("cannot calculate REML log-likelihood for \"gnls\" objects") } p <- object$dims$p N <- object$dims$N val <- object[["logLik"]] attr(val, "nobs") <- attr(val, "nall") <- N attr(val, "df") <- p + length(coef(object[["modelStruct"]])) + 1 class(val) <- "logLik" val } nobs.gnls <- function(object, ...) object$dims$N predict.gnls <- function(object, newdata, na.action = na.fail, naPattern = NULL, ...) { ## ## method for predict() designed for objects inheriting from class gnls ## if (missing(newdata)) { # will return fitted values return(fitted(object)) } newdata <- data.frame(newdata, check.names = FALSE) mCall <- object$call mfArgs <- list(formula = asOneFormula(formula(object), mCall$params, naPattern, omit = c(names(object$plist), "pi", deparse(getResponseFormula(object)[[2]]))), data = newdata, na.action = na.action) mfArgs$drop.unused.levels <- TRUE dataMod <- do.call("model.frame", mfArgs) ## making sure factor levels are the same as in contrasts contr <- object$contrasts for(i in names(dataMod)) { if (inherits(dataMod[,i], "factor") && !is.null(contr[[i]]) && is.matrix(contr[[i]]) ) { levs <- levels(dataMod[,i]) levsC <- dimnames(contr[[i]])[[1]] if (any(wch <- is.na(match(levs, levsC)))) { stop(sprintf(ngettext(sum(wch), "level %s not allowed for %s", "levels %s not allowed for %s"), paste(levs[wch], collapse = ",")), domain = NA) } attr(dataMod[,i], "contrasts") <- contr[[i]][levs, , drop = FALSE] # if (length(levs) < length(levsC)) { # if (inherits(dataMod[,i], "ordered")) { # dataMod[,i] <- ordered(as.character(dataMod[,i]), levels = levsC) # } else { # dataMod[,i] <- factor(as.character(dataMod[,i]), levels = levsC) # } # } } } N <- nrow(dataMod) ## ## evaluating the naPattern expression, if any ## if (is.null(naPattern)) naPat <- rep(TRUE, N) else naPat <- as.logical(eval(asOneSidedFormula(naPattern)[[2]], dataMod)) ## ## Getting the plist for the new data frame ## ## plist <- object$plist pnames <- names(plist) if (is.null(params <- eval(object$call$params))) { params <- eval(parse(text = paste(paste(pnames, collapse = "+"), "1", sep = "~"))) } if (!is.list(params)) { params <- list(params) } val <- NULL for(i in seq_along(params)) { if (is.name(params[[i]][[2]])) { val <- c(val, list(params[[i]])) } else { ## multiple parameters on left hand side val <- c(val, eval(parse(text = paste("list(", paste(paste(all.vars(params[[i]][[2]]), deparse(params[[i]][[3]]), sep = "~"), collapse=","),")")))) } } params <- val names(params) <- pnames prs <- coef(object) pn <- names(prs) for(nm in pnames) { if (!is.logical(plist[[nm]])) { plist[[nm]] <- model.matrix(asOneSidedFormula(params[[nm]][[3]]), model.frame(asOneSidedFormula(params[[nm]][[3]]), dataMod)) } } modForm <- getCovariateFormula(object)[[2]] val <- eval(modForm, data.frame(dataMod, getParsGnls(plist, object$pmap, prs, N)))[naPat] names(val) <- row.names(newdata) lab <- "Predicted values" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab val } #based on R's update.default update.gnls <- function (object, model., ..., evaluate = TRUE) { call <- object$call if (is.null(call)) stop("need an object with call component") extras <- match.call(expand.dots = FALSE)$... if (!missing(model.)) call$model <- update.formula(formula(object), model.) if(length(extras) > 0) { existing <- !is.na(match(names(extras), names(call))) ## do these individually to allow NULL to remove entries. for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if(any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if(evaluate) eval(call, parent.frame()) else call } #update.gnls <- # function(object, model, data = sys.frame(sys.parent()), params, start , # correlation = NULL, weights = NULL, subset, # na.action = na.fail, naPattern, control = list(), # verbose = FALSE, ...) #{ # thisCall <- as.list(match.call())[-(1:2)] # nextCall <- as.list(object$call)[-1] # if (!is.null(thisCall$model)) { # thisCall$model <- update(formula(object), model) # } else { # same model # if (is.null(thisCall$start)) { # thisCall$start <- coef(object) # } # } # if (is.na(match("correlation", names(thisCall))) && # !is.null(thCor <- object$modelStruct$corStruct)) { # thisCall$correlation <- thCor # } # if (is.na(match("weights", names(thisCall))) && # !is.null(thWgt <- object$modelStruct$varStruct)) { # thisCall$weights <- thWgt # } # nextCall[names(thisCall)] <- thisCall # do.call("gnls", nextCall) #} ###*### gnlsStruct - a model structure for gnls fits gnlsStruct <- ## constructor for gnlsStruct objects function(corStruct = NULL, varStruct = NULL) { val <- list(corStruct = corStruct, varStruct = varStruct) val <- val[!sapply(val, is.null)] # removing NULL components # attr(val, "settings") <- attr(val$reStruct, "settings") # attr(val, "resp") <- resp # attr(val, "model") <- model # attr(val, "local") <- local # attr(val, "N") <- N # attr(val, "naPat") <- naPat class(val) <- c("gnlsStruct", "glsStruct", "modelStruct") val } ##*## gnlsStruct methods for standard generics fitted.gnlsStruct <- function(object, ...) { attr(object, "resp") - resid(object) } Initialize.gnlsStruct <- function(object, data, ...) { if (length(object)) { object[] <- lapply(object, Initialize, data) theta <- lapply(object, coef) len <- unlist(lapply(theta, length)) num <- seq_along(len) if (sum(len) > 0) { pmap <- outer(rep(num, len), num, "==") } else { pmap <- array(FALSE, c(1, length(len))) } dimnames(pmap) <- list(NULL, names(object)) attr(object, "pmap") <- pmap if (needUpdate(object)) { object <- update(object, data) } } object } logLik.gnlsStruct <- function(object, Pars, conLin = attr(object, "conLin"), ...) { coef(object) <- Pars # updating parameter values conLin <- recalc(object, conLin) # updating conLin conLin[["logLik"]] - conLin$dims$N * log(sum(conLin$Xy^2)) / 2 } residuals.gnlsStruct <- function(object, ...) { c(eval(attr(object, "model")[[2]], envir = attr(object, "local"))) } gnlsControl <- ## Set control values for iterations within gnls function(maxIter = 50, nlsMaxIter = 7, msMaxIter = 50, minScale = 0.001, tolerance = 1e-6, nlsTol = 0.001, msTol = 1e-7, msScale = lmeScale, returnObject = FALSE, msVerbose = FALSE, apVar = TRUE, .relStep = (.Machine$double.eps)^(1/3), nlmStepMax = 100.0, opt = c("nlminb", "optim"), optimMethod = "BFGS", minAbsParApVar = 0.05) { list(maxIter = maxIter, nlsMaxIter = nlsMaxIter, msMaxIter = msMaxIter, minScale = minScale, tolerance = tolerance, nlsTol = nlsTol, msTol = msTol, msScale = msScale, returnObject = returnObject, msVerbose = msVerbose, apVar = apVar, nlmStepMax = nlmStepMax, opt = match.arg(opt), optimMethod = optimMethod, .relStep = .relStep, minAbsParApVar = minAbsParApVar) } nlme/R/zzMethods.R0000644000176000001440000000236611534450125013557 0ustar ripleyusers### Miscellaneous methods that must be defined last in the library ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # ## Note that require( stats ) has already happened ... comparePred.lme <- comparePred.lmList <- comparePred.gls getData.nlme <- getData.gnls getData.lme <- getData.gls <- getData.nls qqnorm.gls <- qqnorm.lm <- qqnorm.nls plot.lme <- plot.nls fitted.gnls <- fitted.gls residuals.gnls <- residuals.gls vcov.gls <- function (object, ...) object$varBeta vcov.lme <- function (object, ...) object$varFix .onUnload <- function(libpath) library.dynam.unload("nlme", libpath) nlme/R/nlme.R0000644000176000001440000014420512165011602012514 0ustar ripleyusers### Fit a general nonlinear mixed effects model ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # nlme <- function(model, data = sys.frame(sys.parent()), fixed, random = fixed, groups, start, correlation = NULL, weights = NULL, subset, method = c("ML", "REML"), na.action = na.fail, naPattern, control = list(), verbose= FALSE) { UseMethod("nlme") } nlme.nlsList <- function(model, data = sys.frame(sys.parent()), fixed, random = fixed, groups, start, correlation = NULL, weights = NULL, subset, method = c("ML", "REML"), na.action = na.fail, naPattern, control = list(), verbose= FALSE) { ## control parameters controlvals <- nlmeControl() controlvals[names(control)] <- control thisCall <- as.list(match.call())[-1] ## checking the use of arguments defined within the function if (any(!is.na(match(names(thisCall), c("fixed", "data", "start"))))) { warning("'nlme.nlsList' will redefine 'fixed', 'data', and 'start'") } method <- match.arg(method) REML <- method == "REML" ## add model, data, and optionally groups from the call that created model last.call <- as.list(attr(model, "call"))[-1] last.call$control <- NULL last.call$pool <- NULL thisCall[names(last.call)] <- last.call thisModel <- last.call[["model"]] thisCall[["model"]] <- eval(parse(text=paste(deparse(getResponseFormula(thisModel)[[2]]), c_deparse(getCovariateFormula(thisModel)[[2]]),sep="~"))) ## create "fixed" and "start" cf <- na.omit(coef(model)) start <- list(fixed = unlist(lapply(cf, median, na.rm = TRUE))) pnames <- names(start$fixed) <- names(cf) thisCall[["fixed"]] <- lapply(as.list(pnames), function(el) eval(parse(text = paste(el, 1, sep = "~")))) if (missing(random)) { random <- thisCall[["fixed"]] } reSt <- reStruct(random, data = NULL) if (missing(groups)) { thisCall[["groups"]] <- groups <- getGroupsFormula(model) } if (length(reSt) > 1 || length(groups[[2]]) > 1) { stop("can only fit \"nlsList\" objects with single grouping variable") } ranForm <- formula(reSt)[[1]] if (!is.list(ranForm)) { ranForm <- list(ranForm) } mData <- thisCall[["data"]] if (is.null(mData)) { # will try to construct allV <- unique(unlist(lapply(ranForm, function(el) all.vars(el[[3]])))) if (length(allV) > 0) { alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" mData <- eval(alist, sys.parent(1)) } } else { if (mode(mData) == "name" || mode(mData) == "call") { mData <- eval(mData) } } reSt <- reStruct(random, REML = REML, data = mData) names(reSt) <- deparse(groups[[2]]) ## convert list of "name" objects to "character" vector rnames <- sapply(lapply(ranForm, "[[", 2), deparse) ## if the random effects are a subset of the coefficients, ## construct initial estimates for their var-cov matrix if (all(match(rnames, pnames, 0))) { madRes <- mad(resid(model), na.rm = TRUE) madRan <- unlist(lapply(cf, mad, na.rm = TRUE)) madRan <- madRan[rnames] if (isInitialized(reSt)) { warning("initial value for 'reStruct' overwritten in 'nlme.nlsList'") } matrix(reSt) <- diag((madRan/madRes)^2, ncol = length(rnames)) } thisCall[["start"]] <- start thisCall[["random"]] <- reSt val <- do.call("nlme.formula", thisCall) val$origCall <- match.call() val } nlme.formula <- function(model, data = sys.frame(sys.parent()), fixed, random, groups, start, correlation = NULL, weights = NULL, subset, method = c("ML", "REML"), na.action = na.fail, naPattern, control = list(), verbose= FALSE) { ## This is the method that actually does the fitting finiteDiffGrad <- function(model, data, pars) { dframe <- data.frame(data, pars) base <- eval(model, dframe) nm <- colnames(pars) grad <- array(base, c(length(base), length(nm)), list(NULL, nm)) ssize <- sqrt(.Machine$double.eps) for (i in nm) { diff <- pp <- pars[ , i] diff[pp == 0] <- ssize diff[pp != 0] <- pp[pp != 0] * ssize dframe[[i]] <- pp + diff grad[ , i] <- (base - eval(model, dframe))/diff dframe[[i]] <- pp } grad } ## keeping the call Call <- match.call() ## control parameters controlvals <- nlmeControl() if (!missing(control)) { if(!is.null(control$nlmStepMax) && control$nlmStepMax < 0) { warning("negative control$nlmStepMax - using default value") control$nlmStepMax <- NULL } controlvals[names(control)] <- control } ## ## checking arguments ## if (!inherits(model, "formula")) stop("'model' must be a formula") if (length(model)!=3) stop("model formula must be of the form \"resp ~ pred\"") method <- match.arg(method) REML <- method == "REML" if (missing(random)) { random <- fixed } reSt <- reStruct(random, REML = REML, data = NULL) if (missing(groups)) { groups <- getGroupsFormula(reSt) } if (is.null(groups)) { if (inherits(data, "groupedData")) { groups <- getGroupsFormula(data) namGrp <- rev(names(getGroupsFormula(data, asList = TRUE))) Q <- length(namGrp) if (length(reSt) != Q) { # may need to repeat reSt if (length(reSt) != 1) { stop("incompatible lengths for 'random' and grouping factors") } randL <- vector("list", Q) names(randL) <- rev(namGrp) for(i in 1:Q) randL[[i]] <- random reSt <- reStruct(randL, REML = REML, data = NULL) } } else { ## will assume single group groups <- ~ 1 names(reSt) <- namGrp <- "1" } } else { namGrp <- rev(names(getGroupsFormula(eval(parse(text = paste("~1", deparse(groups[[2]]),sep="|"))), asList = TRUE))) } names(reSt) <- namGrp ## ## checking if self-starting formula is given ## if (missing(start) && !is.null(attr(eval(model[[3]][[1]]), "initial"))) { nlmeCall <- Call nlsLCall <- nlmeCall[c("","model","data","groups")] nlsLCall[[1]] <- quote(nlme::nlsList) names(nlsLCall)[2] <- "model" for(i in c("data", "groups", "start")) { nlmeCall[[i]] <- NULL } nlmeCall[[1]] <- quote(nlme::nlme.nlsList) ## checking if "data" is not equal to sys.frame(sys.parent()) if (is.null(dim(data))) { stop("'data' must be given explicitly to use 'nlsList'") } nlsLObj <- eval(nlsLCall) nlmeCall[["model"]] <- as.name("nlsLObj") nlmeCall <- as.call(nlmeCall) val <- eval(nlmeCall) val$origCall <- NULL return(val) } if (is.numeric(start)) { # assume it is the fixed effects start <- list(fixed = start) } nlmeModel <- call("-", model[[2]], model[[3]]) ## ## save writing list(...) when only one element ## if (!is.list(fixed)) { fixed <- list(fixed) } val <- NULL for(i in seq_along(fixed)) { if (is.name(fixed[[i]][[2]])) { val <- c(val, list(fixed[[i]])) } else { ## multiple parameters on left hand side val <- c(val, eval(parse(text = paste("list(", paste(paste(all.vars(fixed[[i]][[2]]), deparse(fixed[[i]][[3]]), sep = "~"), collapse=","),")")))) } } fixed <- as.list(val) fnames <- character(length(fixed)) for (i in seq_along(fixed)) { this <- eval(fixed[[i]]) if (!inherits(this, "formula")) stop ("'fixed' must be a formula or list of formulae") if (length(this) != 3) stop ("formulae in 'fixed' must be of the form \"parameter ~ expr\"") if (!is.name(this[[2]])) stop ("formulae in 'fixed' must be of the form \"parameter ~ expr\"") fnames[i] <- as.character(this[[2]]) } names(fixed) <- fnames ranForm <- formula(reSt) # random effects formula(s) Q <- length(ranForm) # number of groups names(ranForm) <- namGrp rnames <- vector("list", Q) names(rnames) <- namGrp for(i in 1:Q) { rnames[[i]] <- character(length(ranForm[[i]])) for (j in seq_along(ranForm[[i]])) { this <- eval(ranForm[[i]][[j]]) if (!inherits(this, "formula")) stop ("'random' must be a formula or list of formulae") if (length(this) != 3) stop ("formulae in 'random' must be of the form \"parameter ~ expr\"") if (!is.name(this[[2]])) stop ("formulae in 'random' must be of the form \"parameter ~ expr\"") rnames[[i]][j] <- deparse(this[[2]]) } names(ranForm[[i]]) <- rnames[[i]] } ## all parameter names pnames <- unique(c(fnames, unlist(rnames))) ## ## If data is a pframe, copy the parameters in the frame to frame 1 ## Doesn't exist in R ## if (inherits(data, "pframe")) { ## pp <- parameters(data) ## for (i in names(pp)) { ## assign(i, pp[[i]]) ## } ## attr(data,"parameters") <- NULL ## class(data) <- "data.frame" ## } ## check if corStruct is present and assign groups to its formula, ## if necessary if (!is.null(correlation)) { if(!is.null(corGrpsForm <- getGroupsFormula(correlation, asList = TRUE))) { corGrpsForm <- unlist(lapply(corGrpsForm, function(el) deparse(el[[2]]))) corQ <- length(corGrpsForm) lmeGrpsForm <- unlist(lapply(splitFormula(groups), function(el) deparse(el[[2]]))) lmeQ <- length(lmeGrpsForm) if (corQ <= lmeQ) { if (any(corGrpsForm != lmeGrpsForm[1:corQ])) { stop("incompatible formulas for groups in \"random\" and \"correlation\"") } if (corQ < lmeQ) { warning("cannot use smaller level of grouping for \"correlation\" than for \"random\". Replacing the former with the latter.") attr(correlation, "formula") <- eval(parse(text = paste("~", c_deparse(getCovariateFormula(formula(correlation))[[2]]), "|", deparse(groups[[2]])))) } } else { if (any(lmeGrpsForm != corGrpsForm[1:lmeQ])) { stop("incompatible formulas for groups in \"random\" and \"correlation\"") } } } else { ## using the same grouping as in random attr(correlation, "formula") <- eval(parse(text = paste("~", c_deparse(getCovariateFormula(formula(correlation))[[2]]), "|", deparse(groups[[2]])))) corQ <- lmeQ <- 1 } } else { corQ <- lmeQ <- 1 } ## create an nlme structure containing the random effects model and plug-ins nlmeSt <- nlmeStruct(reStruct = reSt, corStruct = correlation, varStruct = varFunc(weights)) ## extract a data frame with enough information to evaluate ## form, fixed, random, groups, correlation, and weights mfArgs <- list(formula = asOneFormula(formula(nlmeSt), model, fixed, groups, omit = c(pnames, "pi")), data = data, na.action = na.action) if (!missing(subset)) { mfArgs[["subset"]] <- asOneSidedFormula(Call[["subset"]])[[2]] } mfArgs$drop.unused.levels <- TRUE dataMix <- do.call("model.frame", mfArgs) origOrder <- row.names(dataMix) # preserve the original order ## ## Evaluating the groups expression ## grps <- getGroups(dataMix, eval(parse(text = paste("~1", deparse(groups[[2]]), sep = "|")))) N <- dim(dataMix)[1] # number of observations ## ## evaluating the naPattern expression, if any ## if (missing(naPattern)) naPat <- rep(TRUE, N) else naPat <- as.logical(eval(asOneSidedFormula(naPattern)[[2]], dataMix)) origOrderShrunk <- origOrder[naPat] ## ordering data by groups if (inherits(grps, "factor")) { # single level ord <- order(grps) #"order" treats a single named argument peculiarly grps <- data.frame(grps) row.names(grps) <- origOrder names(grps) <- as.character(deparse((groups[[2]]))) } else { ord <- do.call("order", grps) ## making group levels unique for(i in 2:ncol(grps)) { grps[, i] <- as.factor(paste(as.character(grps[, i-1]), as.character(grps[,i]), sep = "/")) NULL } } if (corQ > lmeQ) { ## may have to reorder by the correlation groups ord <- do.call("order", getGroups(dataMix, getGroupsFormula(correlation))) } grps <- grps[ord, , drop = FALSE] dataMix <- dataMix[ord, ,drop = FALSE] ## revOrder <- match(origOrder, row.names(dataMix)) # putting in orig. order naPat <- naPat[ord] # ordered naPat dataMixShrunk <- dataMix[naPat, , drop=FALSE] ## ordShrunk <- ord[naPat] grpShrunk <- grps[naPat,, drop = FALSE] revOrderShrunk <- match(origOrderShrunk, row.names(dataMixShrunk)) yShrunk <- eval(model[[2]], dataMixShrunk) ## ## defining list with parameter information ## contr <- list() plist <- vector("list", length(pnames)) names(plist) <- pnames for (nm in pnames) { this <- list(fixed = !is.null(fixed[[nm]]), random = as.list(lapply(ranForm, function(el, nm) !is.null(el[[nm]]), nm = nm))) if (this[["fixed"]]) { ## Peter Dalgaard claims the next line should be this[["fixed"]][[3]][[1]] != "1" ## but the current version seems to work ok. if (fixed[[nm]][[3]] != "1") { this[["fixed"]] <- model.matrix(asOneSidedFormula(fixed[[nm]][[3]]), model.frame(asOneSidedFormula(fixed[[nm]][[3]]), dataMix)) auxContr <- attr(this[["fixed"]], "contrasts") contr <- c(contr, auxContr[is.na(match(names(auxContr), names(contr)))]) } } if (any(unlist(this[["random"]]))) { for(i in 1:Q) { wch <- (1:length(rnames[[i]]))[!is.na(match(rnames[[i]], nm))] if (length(wch) == 1) { # only one formula for nm at level i if (ranForm[[i]][[nm]][[3]] != "1") { this[["random"]][[i]] <- model.matrix(asOneSidedFormula(ranForm[[i]][[nm]][[3]]), model.frame(asOneSidedFormula(ranForm[[i]][[nm]][[3]]), dataMix)) auxContr <- attr(this[["random"]][[i]], "contrasts") contr <- c(contr, auxContr[is.na(match(names(auxContr), names(contr)))]) } } else if (length(wch) > 0) { # multiple formulas this[["random"]][[i]] <- as.list(lapply(ranForm[[i]][wch], function(el, data) { if (el[[3]] == "1") TRUE else model.matrix(asOneSidedFormula(el[[3]]), model.frame(asOneSidedFormula(el[[3]]), data)) }, data = dataMix)) for(j in seq_along(this[["random"]][[i]])) { if (is.matrix(this[["random"]][[i]][[j]])) { auxContr <- attr(this[["random"]][[i]][[j]], "contrasts") contr <- c(contr, auxContr[is.na(match(names(auxContr), names(contr)))]) } } } } } plist[[nm]] <- this } ## Ensure that all elements of are matrices contrMat <- function(nm, contr, data) { ## nm is a term in a formula, and can be a call x <- eval(parse(text=nm), data) levs <- levels(x) val <- do.call(contr[[nm]], list(n = length(levs))) rownames(val) <- levs val } nms <- names(contr)[sapply(contr, is.character)] contr[nms] <- lapply(nms, contrMat, contr = contr, data = dataMix) if (is.null(sfix <- start$fixed)) stop ("'start' must have a component called 'fixed'") ## ## Fixed effects names ## fn <- character(0) currPos <- 0 fixAssign <- list() for(nm in fnames) { if (is.logical(f <- plist[[nm]]$fixed)) { currPos <- currPos + 1 currVal <- list(currPos) if (all(unlist(lapply(plist[[nm]]$random, is.logical)))) { fn <- c(fn, nm) names(currVal) <- nm } else { aux <- paste(nm, "(Intercept)", sep=".") fn <- c(fn, aux) names(currVal) <- aux } fixAssign <- c(fixAssign, currVal) } else { currVal <- attr(f, "assign") fTerms <- terms(asOneSidedFormula(fixed[[nm]][[3]]), data=data) namTerms <- attr(fTerms, "term.labels") if (attr(fTerms, "intercept") > 0) { namTerms <- c("(Intercept)", namTerms) } namTerms <- factor(currVal, labels = namTerms) currVal <- split(order(currVal), namTerms) names(currVal) <- paste(nm, names(currVal), sep = ".") fixAssign <- c(fixAssign, lapply(currVal, function(el, currPos) { el + currPos }, currPos = currPos)) currPos <- currPos + length(unlist(currVal)) fn <- c(fn, paste(nm, colnames(f), sep = ".")) } } fLen <- length(fn) if (length(sfix) != fLen) stop ("starting values for the 'fixed' component are not the correct length") names(sfix) <- fn ## ## Random effects names ## rn <- wchRnames <- vector("list", Q) names(rn) <- names(wchRnames) <- namGrp for(i in 1:Q) { rn[[i]] <- character(0) uRnames <- unique(rnames[[i]]) wchRnames[[i]] <- integer(length(uRnames)) names(wchRnames[[i]]) <- uRnames for(j in seq_along(rnames[[i]])) { nm <- rnames[[i]][j] wchRnames[[i]][nm] <- wchRnames[[i]][nm] + 1 r <- plist[[nm]]$random[[i]] if (data.class(r) == "list") r <- r[[wchRnames[[i]][nm]]] if (is.logical(r)) { if (r) { if (is.logical(plist[[nm]]$fixed)) { rn[[i]] <- c(rn[[i]], nm) } else { rn[[i]] <- c(rn[[i]], paste(nm,"(Intercept)",sep=".")) } } } else { rn[[i]] <- c(rn[[i]], paste(nm, colnames(r), sep = ".")) } } } Names(nlmeSt$reStruct) <- rn rNam <- unlist(rn) # unlisted names of random effects rlength<- unlist(lapply(rn, length)) # number of random effects per stratum rLen <- sum(rlength) # total number of random effects pLen <- rLen + fLen # total number of parameters ncols <- c(rlength, fLen, 1) Dims <- MEdims(grpShrunk, ncols) if (max(Dims$ZXlen[[1]]) < Dims$qvec[1]) { warning(gettextf("fewer observations than random effects in all level %s groups", Q), domain = NA) } sran <- vector("list", Q) names(sran) <- namGrp if (!is.null(sran0 <- start$random)) { if (inherits(sran0, "data.frame")) { sran0 <- list(as.matrix(sran0)) } else { if (!is.list(sran0)) { if (!is.matrix(sran0)) { stop("starting values for random effects should be a list, or a matrix") } sran0 <- list(as.matrix(sran0)) } } if (is.null(namSran <- names(sran0))) { if (length(sran) != Q) { stop(gettextf("list with starting values for random effects must have names or be of length %d", Q), domain = NA) } names(sran0) <- rev(namGrp) # assume given in outer-inner order } else { if (any(noMatch <- is.na(match(namSran, namGrp)))) { stop(sprintf(ngettext(sum(noMatch), "group name not matched in starting values for random effects: %s", "group names not matched in starting values for random effects: %s"), paste(namSran[noMatch], collapse=", ")), domain = NA) } } } for(i in 1:Q) { if (is.null(sran[[i]] <- sran0[[namGrp[i]]])) { sran[[i]] <- array(0, c(rlength[i], Dims$ngrps[i]), list(rn[[i]], unique(as.character(grps[, Q-i+1])))) } else { if (!is.matrix(sran[[i]])) stop("starting values for the random components should be a list of matrices") dimsran <- dim(sran[[i]]) if (dimsran[1] != Dims$ngrps[i]) { stop(gettextf("number of rows in starting values for random component at level %s should be %d", namGrp[i], Dims$ngrps[i]), domain = NA) } if (dimsran[2] != rlength[i]) { stop(gettextf("number of columns in starting values for random component at level %s should be %d", namGrp[i], rlength[i]), domain = NA) } dnamesran <- dimnames(sran[[i]]) if (is.null(dnamesran[[1]])) { stop("starting values for random effects must include group levels") } else { levGrps <- unique(as.character(grps[, Q-i+1])) if(!all(sort(dnamesran[[1]]) == sort(levGrps))) { stop(gettextf("groups levels mismatch in 'random' and starting values for 'random' at level %s", namGrp[i]), domain = NA) } sran[[i]] <- sran[[i]][levGrps, , drop = FALSE] } if (!is.null(dnamesran[[2]])) { if(!all(sort(dnamesran[[2]]) == sort(rn[[i]]))) { ## first try to resolve it for(j in 1:rlength[i]) { if (is.na(match(dnamesran[[2]][j], rn[[i]]))) { if (!is.na(mDn <- match(paste(dnamesran[[2]][j], "(Intercept)", sep="."), rn[[i]]))) { dnamesran[[2]][j] <- rn[[i]][mDn] } else { if (!is.na(mDn <- match(dnamesran[[2]][j], paste(rn[[i]], "(Intercept)", sep = ".")))) { dnamesran[[2]][j] <- rn[[i]][mDn] } else { stop (gettextf("names mismatch in 'random' and starting values for 'random' at level %s", namGrp[i]), domain = NA) } } } } dimnames(sran[[i]]) <- dnamesran } sran[[i]] <- sran[[i]][, rn[[i]], drop = FALSE] } else { dimnames(sran[[i]])[[2]] <- rn[[i]] } sran[[i]] <- t(sran[[i]]) } } names(sran) <- namGrp nPars <- length(unlist(sran)) + fLen # total number of PNLS parameters ## ## defining values of constants used in calculations ## NReal <- sum(naPat) ## ## Creating the fixed and random effects maps ## fmap <- list() n1 <- 1 for(nm in fnames) { if (is.logical(f <- plist[[nm]]$fixed)) { fmap[[nm]] <- n1 n1 <- n1 + 1 } else { fmap[[nm]] <- n1:(n1+ncol(f) - 1) n1 <- n1 + ncol(f) } } rmap <- rmapRel <- vector("list", Q) names(rmap) <- names(rmapRel) <- namGrp n1 <- 1 startRan <- 0 for(i in 1:Q) { wchRnames[[i]][] <- 0 rmap[[i]] <- rmapRel[[i]] <- list() for(nm in rnames[[i]]) { wchRnames[[i]][nm] <- wchRnames[[i]][nm] + 1 r <- plist[[nm]]$random[[i]] if (data.class(r) == "list") { r <- r[[wchRnames[[i]][nm]]] } if (is.logical(r)) { val <- n1 n1 <- n1 + 1 } else { val <- n1:(n1+ncol(r) - 1) n1 <- n1 + ncol(r) } if (is.null(rmap[[i]][[nm]])) { rmap[[i]][[nm]] <- val rmapRel[[i]][[nm]] <- val - startRan } else { rmap[[i]][[nm]] <- c(rmap[[i]][[nm]], list(val)) rmapRel[[i]][[nm]] <- c(rmapRel[[i]][[nm]], list(val - startRan)) } } startRan <- startRan + ncols[i] } ## ## defining the nlFrame ## grpsRev <- rev(lapply(grps, as.character)) bmap <- c(0, cumsum(unlist(lapply(sran, function(el) length(as.vector(el)))))) nlEnv <- new.env() nlList <- list(model = nlmeModel, data = dataMix, groups = grpsRev, plist = plist, beta = as.vector(sfix), bvec = unlist(sran), b = sran, X = array(0, c(N, fLen), list(NULL, fn)), Z = array(0, c(N, rLen), list(NULL, rNam)), fmap = fmap, rmap = rmap, rmapRel = rmapRel, bmap = bmap, level = Q, N = N, Q = Q, naPat = naPat, .parameters = c("bvec", "beta"), finiteDiffGrad = finiteDiffGrad) lapply(names(nlList), function(x, y, env) assign(x, y[[x]], envir = env), nlList, env = nlEnv) modelExpression <- ~{ pars <- getParsNlme(plist, fmap, rmapRel, bmap, groups, beta, bvec, b, level, N) res <- eval(model, data.frame(data, pars)) if (!length(grad <- attr(res, "gradient"))) { grad <- finiteDiffGrad(model, data, pars) } for (nm in names(plist)) { gradnm <- grad[, nm] if (is.logical(f <- plist[[nm]]$fixed)) { if (f) { X[, fmap[[nm]]] <- gradnm } } else { X[, fmap[[nm]]] <- gradnm * f } for(i in 1:Q) { if (is.logical(r <- plist[[nm]]$random[[i]])) { if (r) { Z[, rmap[[i]][[nm]]] <- gradnm } } else { if (data.class(rmap[[i]][[nm]]) != "list") { Z[, rmap[[i]][[nm]]] <- gradnm * r } else { for(j in seq_along(rmap[[i]][[nm]])) { if (is.logical(rr <- r[[j]])) { Z[, rmap[[i]][[nm]][[j]]] <- gradnm } else { Z[, rmap[[i]][[nm]][[j]]] <- gradnm * rr } } } } } } result <- c(Z[naPat, ], X[naPat, ], res[naPat]) result[is.na(result)] <- 0 result } modelResid <- ~eval(model, data.frame(data, getParsNlme(plist, fmap, rmapRel, bmap, groups, beta, bvec, b, level, N)))[naPat] ww <- eval(modelExpression[[2]], envir = nlEnv) w <- ww[NReal * pLen + (1:NReal)] ZX <- array(ww[1:(NReal*pLen)], c(NReal, pLen), list(row.names(dataMixShrunk), c(rNam, fn))) w <- w + as.vector(ZX[, rLen + (1:fLen), drop = FALSE] %*% sfix) if (!is.null(start$random)) { startRan <- 0 for(i in 1:Q) { w <- w + as.vector((ZX[, startRan + 1:ncols[i], drop = FALSE] * t(sran[[i]])[as.character(grpShrunk[, Q-i+1]),,drop = FALSE]) %*% rep(1, ncols[i])) startRan <- startRan + ncols[i] } } ## creating the condensed linear model attr(nlmeSt, "conLin") <- list(Xy = array(c(ZX, w), c(NReal, sum(ncols)), list(row.names(dataMixShrunk), c(colnames(ZX), deparse(model[[2]])))), dims = Dims, logLik = 0) ## additional attributes of nlmeSt attr(nlmeSt, "resp") <- yShrunk attr(nlmeSt, "model") <- modelResid attr(nlmeSt, "local") <- nlEnv attr(nlmeSt, "NReal") <- NReal ## initialization nlmeSt <- Initialize(nlmeSt, dataMixShrunk, grpShrunk, control = controlvals) parMap <- attr(nlmeSt, "pmap") if (length(coef(nlmeSt)) == length(coef(nlmeSt$reStruct)) && !needUpdate(nlmeSt)) { # can do one decomposition ## need to save conLin for calculating updating between steps oldConLin <- attr(nlmeSt, "conLin") decomp <- TRUE } else decomp <- FALSE numIter <- 0 # number of iterations pnlsSettings <- c(controlvals$pnlsMaxIter, controlvals$minScale, controlvals$pnlsTol, 0, 0, 0) nlModel <- nonlinModel(modelExpression, nlEnv) repeat { ## alternating algorithm numIter <- numIter + 1 ## LME step if (needUpdate(nlmeSt)) { # updating varying weights nlmeSt <- update(nlmeSt, dataMixShrunk) } if (decomp) { attr(nlmeSt, "conLin") <- MEdecomp(oldConLin) } oldPars <- coef(nlmeSt) if (controlvals$opt == "nlminb") { control <- list(trace = controlvals$msVerbose, iter.max = controlvals$msMaxIter) keep <- c("eval.max", "abs.tol", "rel.tol", "x.tol", "xf.tol", "step.min", "step.max", "sing.tol", "scale.init", "diff.g") control <- c(control, controlvals[names(controlvals) %in% keep]) optRes <- nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars), control = control) aConv <- coef(nlmeSt) <- optRes$par convIter <- optRes$iterations } else { aNlm <- nlm(f = function(nlmePars) -logLik(nlmeSt, nlmePars), p = c(coef(nlmeSt)), hessian = TRUE, print.level = controlvals$msVerbose, gradtol = if(numIter == 1) controlvals$msTol else 100*.Machine$double.eps, iterlim = if(numIter < 10) 10 else controlvals$msMaxIter, check.analyticals = FALSE) aConv <- coef(nlmeSt) <- aNlm$estimate convIter <- aNlm$iterations } nlmeFit <- attr(nlmeSt, "lmeFit") <- MEestimate(nlmeSt, grpShrunk) if (verbose) { cat("\n**Iteration", numIter) cat("\n") cat("LME step: Loglik:", format(nlmeFit$logLik), ", nlm iterations:", convIter, "\n") print(nlmeSt) } ## PNLS step if (is.null(correlation)) { cF <- 1.0 cD <- 1 } else { cF <- corFactor(nlmeSt$corStruct) cD <- Dim(nlmeSt$corStruct) } if (is.null(weights)) { vW <- 1.0 } else { vW <- varWeights(nlmeSt$varStruct) } work <- .C(fit_nlme, thetaPNLS = as.double(c(as.vector(unlist(sran)), sfix)), pdFactor = as.double(pdFactor(nlmeSt$reStruct)), as.integer(unlist(rev(grpShrunk))), as.integer(unlist(Dims)), as.integer(attr(nlmeSt$reStruct, "settings"))[-(1:3)], as.double(cF), as.double(vW), as.integer(unlist(cD)), settings = as.double(pnlsSettings), additional = double(NReal * (pLen + 1)), as.integer(!is.null(correlation)), as.integer(!is.null(weights)), nlModel, NAOK = TRUE) if (work$settings[4] == 1) { ## convResult <- 2 if (controlvals$returnObject) { warning("step halving factor reduced below minimum in PNLS step") } else { stop("step halving factor reduced below minimum in PNLS step") } } # dim(work$pdFactor) <- dim(pdMatrix(nlmeSt$reStruct[[1]])) # matrix(nlmeSt$reStruct[[1]]) <- crossprod(work$pdFactor) # fix from Setzer.Woodrow@epamail.epa.gov for nested grouping factors pdFacStart <- 1 for (i in seq_along(nlmeSt$reStruct)) { tmppdFactor <- work$pdFactor[pdFacStart: (pdFacStart -1 + prod(dim(pdMatrix(nlmeSt$reStruct[[i]]))))] dim(tmppdFactor) <- dim(pdMatrix(nlmeSt$reStruct[[i]])) matrix(nlmeSt$reStruct[[i]]) <- crossprod(tmppdFactor) pdFacStart <- pdFacStart + prod(dim(pdMatrix(nlmeSt$reStruct[[i]]))) } oldPars <- c(sfix, oldPars) for(i in 1:Q) sran[[i]][] <- work$thetaPNLS[(bmap[i]+1):bmap[i+1]] sfix[] <- work$thetaPNLS[nPars + 1 - (fLen:1)] if (verbose) { cat("\nPNLS step: RSS = ", format(work$set[6]), "\n fixed effects:") for (i in 1:fLen) cat(format(signif(sfix[i]))," ") cat("\n iterations:",work$set[5],"\n") } aConv <- coef(nlmeSt) # added by SDR 04/19/2002 aConv <- c(sfix, aConv) w[] <- work$additional[(NReal * pLen) + 1:NReal] ZX[] <- work$additional[1:(NReal * pLen)] w <- w + as.vector(ZX[, rLen + (1:fLen), drop = FALSE] %*% sfix) startRan <- 0 for(i in 1:Q) { w <- w + as.vector((ZX[, startRan + 1:ncols[i], drop = FALSE] * t(sran[[i]])[as.character(grpShrunk[, Q-i+1]),,drop = FALSE]) %*% rep(1, ncols[i])) startRan <- startRan + ncols[i] } if (decomp) { oldConLin$Xy[] <- c(ZX, w) oldConLin$logLik <- 0 } else { attr(nlmeSt, "conLin")$Xy[] <- c(ZX, w) attr(nlmeSt, "conLin")$logLik <- 0 } conv <- abs((oldPars - aConv)/ ifelse(abs(aConv) < controlvals$tolerance, 1, aConv)) aConv <- c(max(conv[1:fLen])) names(aConv) <- "fixed" conv <- conv[-(1:fLen)] for(i in names(nlmeSt)) { if (any(parMap[,i])) { aConv <- c(aConv, max(conv[parMap[,i]])) names(aConv)[length(aConv)] <- i } } if (verbose) { cat("\nConvergence:\n") print(aConv) } if ((max(aConv) <= controlvals$tolerance) || (aConv["fixed"] <= controlvals$tolerance && convIter == 1)) { ## convResult <- 0 break } if (numIter >= controlvals$maxIter) { ## convResult <- 1 if (controlvals$returnObject) { warning("maximum number of iterations reached without convergence") break } else { stop("maximum number of iterations reached without convergence") } } } ## wrapping up if (decomp) { nlmeFit <- MEestimate(nlmeSt, grpShrunk, oldConLin) } else { nlmeFit <- MEestimate(nlmeSt, grpShrunk) } ## degrees of freedom for fixed effects tests fixDF <- getFixDF(ZX[, rLen + (1:fLen), drop = FALSE], grpShrunk, attr(nlmeSt, "conLin")$dims$ngrps, fixAssign) attr(fixDF, "varFixFact") <- nlmeFit$sigma * nlmeFit$varFix varFix <- crossprod(nlmeFit$sigma * nlmeFit$varFix) dimnames(varFix) <- list(fn, fn) ## ## fitted.values and residuals (in original order) ## if (decomp) { Resid <- resid(nlmeSt, level = 0:Q, oldConLin)[revOrderShrunk, ] } else { Resid <- resid(nlmeSt, level = 0:Q)[revOrderShrunk, ] } Fitted <- yShrunk[revOrderShrunk] - Resid rownames(Resid) <- rownames(Fitted) <- origOrderShrunk grpShrunk <- grpShrunk[revOrderShrunk, , drop = FALSE] attr(Resid, "std") <- nlmeFit$sigma/(varWeights(nlmeSt)[revOrderShrunk]) ## inverting back reStruct nlmeSt$reStruct <- solve(nlmeSt$reStruct) ## saving part of dims dims <- attr(nlmeSt, "conLin")$dims[c("N", "Q", "qvec", "ngrps", "ncol")] ## getting the approximate var-cov of the parameters if (controlvals$apVar) { apVar <- lmeApVar(nlmeSt, nlmeFit$sigma, .relStep = controlvals[[".relStep"]], minAbsPar = controlvals[["minAbsParApVar"]], natural = controlvals[["natural"]]) } else { apVar <- "Approximate variance-covariance matrix not available" } ## putting sran in the right format sran <- lapply(sran, t) ## getting rid of condensed linear model, fit, and other attributes oClass <- class(nlmeSt) attributes(nlmeSt) <- attributes(nlmeSt)[c("names", "class", "pmap")] class(nlmeSt) <- oClass ## ## creating the nlme object ## estOut <- list(modelStruct = nlmeSt, dims = dims, contrasts = contr, coefficients = list(fixed = sfix, random = rev(sran)), varFix = varFix, sigma = nlmeFit$sigma, apVar = apVar, logLik = nlmeFit$logLik, numIter = numIter, groups = grpShrunk, call = Call, method = method, fitted = Fitted, residuals = Resid, plist = plist, map = list(fmap=fmap,rmap=rmap,rmapRel=rmapRel,bmap=bmap), fixDF = fixDF) if (inherits(data, "groupedData")) { ## saving labels and units for plots attr(estOut, "units") <- attr(data, "units") attr(estOut, "labels") <- attr(data, "labels") } class(estOut) <- c("nlme","lme") estOut } ### ### function used to calculate the parameters from ### the fixed and random effects ### getParsNlme <- function(plist, fmap, rmapRel, bmap, groups, beta, bvec, b, level, N) { pars <- array(0, c(N, length(plist)), list(NULL, names(plist))) for (nm in names(plist)) { if (is.logical(f <- plist[[nm]]$fixed)) { if (f) { pars[, nm] <- beta[fmap[[nm]]] } } else { pars[, nm] <- f %*% beta[fmap[[nm]]] } if (level > 0) { Q <- length(groups) for(i in (Q - level + 1):Q) { b[[i]][] <- bvec[(bmap[i] + 1):bmap[i+1]] if (is.logical(r <- plist[[nm]]$random[[i]])) { if (r) { pars[, nm] <- pars[, nm] + b[[i]][rmapRel[[i]][[nm]], groups[[i]]] } } else { if (data.class(r) != "list") { pars[,nm] <- pars[,nm] + (r * t(b[[i]])[groups[[i]], rmapRel[[i]][[nm]], drop = FALSE]) %*% rep(1, ncol(r)) } else { for(j in seq_along(rmapRel[[i]][[nm]])) { if (is.logical(rr <- r[[j]])) { pars[, nm] <- pars[, nm] + b[[i]][rmapRel[[i]][[nm]][[j]], groups[[i]]] } else { pars[,nm] <- pars[,nm] + (rr * t(b[[i]])[groups[[i]], rmapRel[[i]][[nm]][[j]], drop = FALSE]) %*% rep(1, ncol(rr)) } } } } } } } pars } ### ### Methods for standard generics ### formula.nlme <- function(x, ...) eval(x$call[["model"]]) predict.nlme <- function(object, newdata, level = Q, asList = FALSE, na.action = na.fail, naPattern = NULL, ...) { ## ## method for predict() designed for objects inheriting from class nlme ## Q <- object$dims$Q if (missing(newdata)) { # will return fitted values val <- fitted(object, level, asList) if (length(level) == 1) return(val) return(data.frame(object[["groups"]][,level[level != 0], drop = FALSE], predict = val)) } maxQ <- max(level) nlev <- length(level) newdata <- as.data.frame(newdata) mCall <- object$call if (maxQ > 0) { # predictions with random effects whichQ <- Q - (maxQ-1):0 reSt <- object$modelStruct$reStruct[whichQ] nlmeSt <- nlmeStruct(reStruct = reSt) groups <- getGroupsFormula(reSt) if (any(is.na(match(all.vars(groups), names(newdata))))) { ## groups cannot be evaluated in newdata stop("cannot evaluate groups for desired levels on 'newdata'") } } else { reSt <- NULL } mfArgs <- list(formula = asOneFormula(formula(object), mCall$fixed, formula(reSt), naPattern, omit = c(names(object$plist), "pi", deparse(getResponseFormula(object)[[2]]))), data = newdata, na.action = na.action) mfArgs$drop.unused.levels <- TRUE dataMix <- do.call("model.frame", mfArgs) origOrder <- row.names(dataMix) # preserve the original order whichRows <- match(origOrder, row.names(newdata)) if (maxQ > 0) { ## sort the model.frame by groups and get the matrices and parameters ## used in the estimation procedures grps <- getGroups(newdata, eval(parse(text = paste("~1", deparse(groups[[2]]), sep = "|")))) ## ordering data by groups if (inherits(grps, "factor")) { # single level grps <- grps[whichRows, drop = TRUE] oGrps <- data.frame(grps) ## checking if there are missing groups if (any(naGrps <- is.na(grps))) { grps[naGrps] <- levels(grps)[1] # input with existing level } ord <- order(grps) #"order" treats a single named argument peculiarly grps <- data.frame(grps) row.names(grps) <- origOrder names(grps) <- names(oGrps) <- as.character(deparse((groups[[2]]))) } else { grps <- oGrps <- do.call("data.frame", lapply(grps[whichRows, ], function(x) x[drop = TRUE])) ## checking for missing groups if (any(naGrps <- is.na(grps))) { ## need to input missing groups for(i in names(grps)) { grps[naGrps[, i], i] <- levels(grps[,i])[1] } naGrps <- t(apply(naGrps, 1, cumsum)) # propagating NAs } ord <- do.call("order", grps) ## making group levels unique grps[, 1] <- grps[, 1][drop = TRUE] for(i in 2:ncol(grps)) { grps[, i] <- as.factor(paste(as.character(grps[, i-1]), as.character(grps[,i]), sep = "/")) NULL } } if (match(0, level, nomatch = 0)) { naGrps <- cbind(FALSE, naGrps) } naGrps <- as.matrix(naGrps)[ord, , drop = FALSE] grps <- grps[ord, , drop = FALSE] dataMix <- dataMix[ord, ,drop = FALSE] revOrder <- match(origOrder, row.names(dataMix)) # putting in orig. order } ## making sure factor levels are the same as in contrasts contr <- object$contrasts for(i in names(dataMix)) { if (inherits(dataMix[,i], "factor") && !is.null(contr[[i]])) { levs <- levels(dataMix[,i]) levsC <- dimnames(contr[[i]])[[1]] if (any(wch <- is.na(match(levs, levsC)))) { stop(sprintf(ngettext(sum(wch), "level %s not allowed for %s", "levels %s not allowed for %s"), paste(levs[wch], collapse = ",")), domain = NA) } attr(dataMix[,i], "contrasts") <- contr[[i]][levs, , drop = FALSE] # if (length(levs) < length(levsC)) { # if (inherits(dataMix[,i], "ordered")) { # dataMix[,i] <- ordered(as.character(dataMix[,i]), levels = levsC) # } else { # dataMix[,i] <- factor(as.character(dataMix[,i]), levels = levsC) # } # } } } N <- nrow(dataMix) ## ## evaluating the naPattern expression, if any ## if (is.null(naPattern)) naPat <- rep(TRUE, N) else naPat <- as.logical(eval(asOneSidedFormula(naPattern)[[2]], dataMix)) ## ## Getting the plist for the new data frame ## ## plist <- object$plist fixed <- eval(object$call$fixed) if (!is.list(fixed)) { fixed <- list(fixed) } val <- NULL for(i in seq_along(fixed)) { if (is.name(fixed[[i]][[2]])) { val <- c(val, list(fixed[[i]])) } else { ## multiple parameters on left hand side val <- c(val, eval(parse(text = paste("list(", paste(paste(all.vars(fixed[[i]][[2]]), deparse(fixed[[i]][[3]]), sep = "~"), collapse=","),")")))) } } fixed <- val fnames <- unlist(lapply(fixed, function(el) deparse(el[[2]]))) names(fixed) <- fnames fix <- fixef(object) fn <- names(fix) for(nm in fnames) { if (!is.logical(plist[[nm]]$fixed)) { plist[[nm]]$fixed <- model.matrix(asOneSidedFormula(fixed[[nm]][[3]]), model.frame(asOneSidedFormula(fixed[[nm]][[3]]), dataMix)) } } if (maxQ > 0) { grpsRev <- lapply(rev(grps), as.character) ranForm <- formula(reSt)[whichQ] namGrp <- names(ranForm) rnames <- lapply(ranForm, function(el) unlist(lapply(el, function(el1) deparse(el1[[2]])))) for(i in 1:length(ranForm)) { names(ranForm[[i]]) <- rnames[[i]] } ran <- ranef(object) if(is.data.frame(ran)) { ran <- list(ran) } else { ran <- rev(ran) } rn <- lapply(ran[whichQ], names) ran <- lapply(ran, t) ranVec <- unlist(ran) for(nm in names(plist)) { for(i in namGrp) { if (!is.logical(plist[[nm]]$random[[i]])) { wch <- (1:length(rnames[[i]]))[!is.na(match(rnames[[i]], nm))] if (length(wch) == 1) { # only one formula for nm plist[[nm]]$random[[i]] <- model.matrix(asOneSidedFormula(ranForm[[i]][[nm]][[3]]), model.frame(asOneSidedFormula(ranForm[[i]][[nm]][[3]]), dataMix)) } else { # multiple formulae plist[[nm]]$random[[i]] <- lapply(ranForm[[i]][wch], function(el, data) { if (el[[3]] == "1") { TRUE } else { val <- model.matrix(asOneSidedFormula(el[[3]]), model.frame(asOneSidedFormula(el[[3]]), data)) val } }, data = dataMix) } } } } } else { namGrp <- "" grpsRev <- ranVec <- ran <- NULL } val <- vector("list", nlev) names(val) <- c("fixed", rev(namGrp))[level + 1] modForm <- getCovariateFormula(object)[[2]] for(i in 1:nlev) { val[[i]] <- eval(modForm, data.frame(dataMix, getParsNlme(plist, object$map$fmap, object$map$rmapRel, object$map$bmap, grpsRev, fix, ranVec, ran, level[i], N)))[naPat] } val <- as.data.frame(val) if (maxQ > 0) { val <- val[revOrder, , drop = FALSE] if (any(naGrps)) { val[naGrps] <- NA } } ## putting back in original order if (maxQ > 1) { # making groups unique for(i in 2:maxQ) { oGrps[, i] <- paste(as.character(oGrps[,i-1]), as.character(oGrps[,i]), sep = "/") } } if (length(level) == 1) { val <- val[,1] if (level > 0) { grps <- as.character(oGrps[, level]) if (asList) { val <- split(val, ordered(grps, levels = unique(grps))) } else { names(val) <- grps } } lab <- "Predicted values" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab } else { val <- data.frame(oGrps, predict = val) } val } # based on R's update.default update.nlme <- function (object, model., ..., evaluate = TRUE) { call <- object$call if (is.null(call)) stop("need an object with call component") extras <- match.call(expand.dots = FALSE)$... if (!missing(model.)) call$model <- update.formula(formula(object), model.) if(length(extras) > 0) { existing <- !is.na(match(names(extras), names(call))) ## do these individually to allow NULL to remove entries. for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if(any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if(evaluate) eval(call, parent.frame()) else call } #update.nlme <- # function(object, model, data, fixed, random, groups, start, correlation, # weights, subset, method, na.action, naPattern, control, # verbose, ...) #{ # thisCall <- as.list(match.call())[-(1:2)] # if (!is.null(thisCall$start) && is.numeric(start)) { # thisCall$start <- list(fixed = start) # } # if (!is.null(nextCall <- object$origCall) && # (is.null(thisCall$fixed) && !is.null(thisCall$random))) { # nextCall <- as.list(nextCall)[-1] # } else { # nextCall <- as.list(object$call)[-1] # if (is.null(thisCall$fixed)) { # no changes in fixef model # if (is.null(thisCall$start)) { # thisCall$start <- list(fixed = fixef(object)) # } else { # if (is.null(thisCall$start$fixed)) { # thisCall$start$fixed <- fixef(object) # } # } # } # if (!is.null(thisCall$start$random)) { # making start random NULL # thisCall$start$random <- NULL # } # if (is.null(thisCall$random) && is.null(thisCall$subset)) { # ## no changes in ranef model and no subsetting # thisCall$random <- object$modelStruct$reStruct # } # } # if (!is.null(thisCall$model)) { # thisCall$model <- update(formula(object), model) # } # if (is.na(match("correlation", names(thisCall))) && # !is.null(thCor <- object$modelStruct$corStruct)) { # thisCall$correlation <- thCor # } # if (is.na(match("weights", names(thisCall))) && # !is.null(thWgt <- object$modelStruct$varStruct)) { # thisCall$weights <- thWgt # } # nextCall[names(thisCall)] <- thisCall # do.call("nlme", nextCall) #} ###*### nlmeStruct - a model structure for nlme fits nlmeStruct <- ## constructor for nlmeStruct objects function(reStruct, corStruct = NULL, varStruct = NULL)#, resp = NULL, #model = NULL, local = NULL, N = NULL, naPat = NULL) { val <- list(reStruct = reStruct, corStruct = corStruct, varStruct = varStruct) val <- val[!sapply(val, is.null)] # removing NULL components attr(val, "settings") <- attr(val$reStruct, "settings") # attr(val, "resp") <- resp # attr(val, "model") <- model # attr(val, "local") <- local # attr(val, "N") <- N # attr(val, "naPat") <- naPat class(val) <- c("nlmeStruct", "lmeStruct", "modelStruct") val } ##*## nlmeStruct methods for standard generics fitted.nlmeStruct <- function(object, level = Q, conLin = attr(object, "conLin"), ...) { Q <- attr(object, "conLin")$dims[["Q"]] attr(object, "resp") - resid(object, level, conLin) } residuals.nlmeStruct <- function(object, level = Q, conLin = attr(object, "conLin"), ...) { Q <- conLin$dims[["Q"]] loc <- attr(object, "local") oLev <- get("level", envir = loc) on.exit(assign("level", oLev, envir = loc)) dn <- c("fixed", rev(names(object$reStruct)))[level + 1] val <- array(0, c(attr(object, "NReal"), length(level)), list(dimnames(conLin$Xy)[[1]], dn)) for(i in 1:length(level)) { assign("level", level[i], envir = loc, immediate = TRUE) val[, i] <- c(eval(attr(object, "model")[[2]], envir = loc)) } val } nlmeControl <- ## Set control values for iterations within nlme function(maxIter = 50, pnlsMaxIter = 7, msMaxIter = 50, minScale = 0.001, tolerance = 1e-5, niterEM = 25, pnlsTol = 0.001, msTol = 0.000001, msScale = lmeScale, returnObject = FALSE, msVerbose = FALSE, gradHess = TRUE, apVar = TRUE, .relStep = (.Machine$double.eps)^(1/3), nlmStepMax = 100.0, minAbsParApVar = 0.05, opt = c("nlminb", "nlm"), natural = TRUE, ...) { list(maxIter = maxIter, pnlsMaxIter = pnlsMaxIter, msMaxIter = msMaxIter, minScale = minScale, tolerance = tolerance, niterEM = niterEM, pnlsTol = pnlsTol, msTol = msTol, msScale = msScale, returnObject = returnObject, msVerbose = msVerbose, gradHess = gradHess, apVar = apVar, .relStep = .relStep, nlmStepMax = nlmStepMax, minAbsParApVar = minAbsParApVar, opt = match.arg(opt), natural = natural, ...) } nonlinModel <- function( modelExpression, env, paramNames = get(".parameters", envir = env)) { modelExpression <- modelExpression[[2]] thisEnv <- environment() offset <- 0 ind <- vector("list", length(paramNames)) names(ind) <- paramNames for( i in paramNames ) { ind[[ i ]] <- offset + seq_along(get(i, envir = env)) offset <- offset + length( get(i, envir = env) ) } modelValue <- eval(modelExpression, env) on.exit(remove(i, offset, paramNames)) function (newPars) { if(!missing(newPars)) { for(i in names(ind)) assign( i, unname(newPars[ ind[[i]] ]), envir = env) assign("modelValue", eval(modelExpression, env), envir = thisEnv) } modelValue } } nlme/R/newMethods.R0000644000176000001440000006410212030057547013704 0ustar ripleyusers### Methods for generics from newGenerics.q for some standard classes ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates ##*## Methods for some of the generics in newGenerics.q for standard classes Dim.default <- function(object, ...) dim(object) getCovariate.data.frame <- function(object, form = formula(object), data) { ## Return the primary covariate if (!(inherits(form, "formula"))) { stop("'form' must be a formula") } aux <- getCovariateFormula(form) if (length(all.vars(aux)) > 0) { eval(aux[[2]], object) } else { rep(1, dim(object)[1]) } } getData.nls <- function(object) { mCall <- object$call ## avoid partial matches here. data <- eval(if("data" %in% names(object)) object$data else mCall$data) if (is.null(data)) return(data) naAct <- object[["na.action"]] if (!is.null(naAct)) { ## guessing here: known values (omit, exclude) work. data <- if (inherits(naAct, "omit")) data[-naAct, ] else if (inherits(naAct, "exclude")) data else eval(mCall$na.action)(data) } subset <- mCall$subset if (!is.null(subset)) { subset <- eval(asOneSidedFormula(subset)[[2]], data) data <- data[subset, ] } data } getGroups.data.frame <- ## Return the groups associated with object according to form for level function(object, form = formula(object), level, data, sep = "/") { if (!missing(data)) { stop( "data argument to \"data.frame\" method for 'getGroups' does not make sense" ) } if (inherits(form, "formula")) { grpForm <- getGroupsFormula(form, asList = TRUE, sep = sep) if (is.null(grpForm)) { ## will use right hand side of form as the group formula grpForm <- splitFormula(asOneSidedFormula(form[[length(form)]]), sep = sep) names(grpForm) <- unlist( lapply( grpForm, function(el) deparse( el[[ length(el) ]] ) ) ) } if (any(unlist(lapply(grpForm, # function(el) length(el[[length(el)]]))) != 1)) { function(el) length(all.vars(el)))) != 1)) { stop("invalid formula for groups") } form <- grpForm } else if (data.class(form) == "list") { if (!all(unlist(lapply(form, function(el) inherits(el, "formula"))))) { stop("'form' must have all components as formulas") } } else { stop("'form' can only be a formula, or a list of formulas") } vlist <- lapply(form, function(x, dat, N) { val <- eval(x[[length(x)]], dat) if (length(val) == 1) { # repeat groups return(as.factor(rep(val, N))) } else { return(as.factor(val)[drop = TRUE]) } }, dat = object, N = nrow(object)) if (length(vlist) == 1) return(vlist[[1]]) # ignore level - only one choice ## make the list into a data frame with appropriate names value <- do.call("data.frame", vlist) if (missing(level)) return(value) if (is.character(level)) { nlevel <- match(level, names(vlist)) if (any(aux <- is.na(nlevel))) { stop(gettextf("level of %s does not match formula ", level[aux], sQuote(deparse(form))), domain = NA) } } else { nlevel <- as.numeric(level) if (any(aux <- is.na(match(nlevel, 1:ncol(value))))) { stop(gettextf("level of %s does not match formula ", level[aux], sQuote(deparse(form))), domain = NA) } } if (length(nlevel) > 1) return(value[, nlevel]) # multicolumn selection if (nlevel == 1) return(value[, 1]) # no need to do more work value <- value[, 1:nlevel] val <- as.factor(do.call("paste", c(lapply(as.list(value), as.character), sep = sep))) if (inherits(value[, 1], "ordered")) { value <- value[do.call("order", value),] aux <- unique(do.call("paste", c(lapply(as.list(value), as.character), sep = sep))) return(ordered(val, aux)) } else { return(ordered(val, unique(as.character(val)))) } } getResponse.data.frame <- function(object, form = formula(object)) { ## Return the response, the evaluation of the left hand side of a formula ## on object if (!(inherits(form, "formula") && (length(form) == 3))) { stop("'form' must be a two-sided formula") } eval(form[[2]], object) } getGroupsFormula.default <- ## Return the formula(s) for the groups associated with object. ## The result is a one-sided formula unless asList is TRUE in which case ## it is a list of formulas, one for each level. function(object, asList = FALSE, sep = "/") { form <- formula(object) if (!inherits(form, "formula")){ stop("'form' argument must be a formula") } form <- form[[length(form)]] if (!((length(form) == 3) && (form[[1]] == as.name("|")))) { ## no conditioning expression return(NULL) } ## val <- list( asOneSidedFormula( form[[ 3 ]] ) ) val <- splitFormula(asOneSidedFormula(form[[3]]), sep = sep) names(val) <- unlist(lapply(val, function(el) deparse(el[[2]]))) # if (!missing(level)) { # if (length(level) == 1) { # return(val[[level]]) # } else { # val <- val[level] # } # } if (asList) as.list(val) else as.formula(eval(parse(text = paste("~", paste(names(val), collapse = sep))))) } Names.formula <- function(object, data = list(), exclude = c("pi", "."), ...) { if (!is.list(data)) { return(NULL) } # no data to evaluate variable names allV <- all.vars(object) allV <- allV[is.na(match(allV, exclude))] if (length(allV) == 0) { if (attr(terms(object), "intercept")) { return("(Intercept)") } return(NULL) } if (any(is.na(match(allV, names(data))))) { return(NULL) } dimnames(model.matrix(object, model.frame(object, data)))[[2]] } Names.listForm <- function(object, data = list(), exclude = c("pi", "."), ...) { pnames <- as.character(unlist(lapply(object, "[[", 2))) nams <- lapply(object, function(el, data, exclude) { Names(getCovariateFormula(el), data, exclude) }, data = data, exclude = exclude) if (is.null(nams[[1]])) return(NULL) val <- c() for(i in seq_along(object)) { if ((length(nams[[i]]) == 1) && (nams[[i]] == "(Intercept)")) { val <- c(val, pnames[i]) } else { val <- c(val, paste(pnames[i], nams[[i]], sep = ".")) } } val } needUpdate.default <- function(object) { val <- attr(object, "needUpdate") if (is.null(val) || !val) FALSE else TRUE } ##--- needs Trellis/Lattice : pairs.compareFits <- function(x, subset, key = TRUE, ...) { object <- x if(!missing(subset)) { object <- object[subset,,] } dims <- dim(object) if(dims[3] == 1) { stop("at least two coefficients are needed") } dn <- dimnames(object) coefs <- array(c(object), c(dims[1]*dims[2], dims[3]), list(rep(dn[[1]], dims[2]), dn[[3]])) if(dims[3] > 2) { # splom tt <- list(coefs = coefs, grp = ordered(rep(dn[[2]], rep(dims[1], dims[2])), levels = dn[[2]])) args <- list(~ coefs, data = tt, groups = tt$grp, panel = function(x, y, subscripts, groups, ...) { x <- as.numeric(x) y <- as.numeric(y) panel.superpose(x, y, subscripts, groups) aux <- groups[subscripts] aux <- aux == unique(aux)[1] lsegments(x[aux], y[aux], x[!aux], y[!aux], lty = 2, lwd = 0.5) }) } else { tt <- list(x = coefs[,1], y = coefs[,2], grp = ordered(rep(dn[[2]], rep(dims[1], dims[2])), levels = dn[[2]])) args <- list(y ~ x, data = tt, groups = tt$grp, panel = function(x, y, subscripts, groups, ...) { x <- as.numeric(x) y <- as.numeric(y) panel.grid() panel.superpose(x, y, subscripts, groups) aux <- groups[subscripts] aux <- aux == unique(aux)[1] lsegments(x[aux], y[aux], x[!aux], y[!aux], lty = 2, lwd = 0.5) }, xlab = dn[[3]][1], ylab = dn[[3]][2]) } dots <- list(...) args[names(dots)] <- dots if(is.logical(key)) { if(key && length(unique(tt$grp)) > 1) { args[["key"]] <- list(points = Rows(trellis.par.get("superpose.symbol"), 1:2), text = list(levels = levels(tt$grp)), columns = 2) } } else { args[["key"]] <- key } if(dims[3] > 2) do.call("splom", args) else do.call("xyplot", args) } ##--- needs Trellis/Lattice : plot.nls <- function(x, form = resid(., type = "pearson") ~ fitted(.), abline, id = NULL, idLabels = NULL, idResType = c("pearson", "normalized"), grid, ...) ## Diagnostic plots based on residuals and/or fitted values { object <- x if (!inherits(form, "formula")) { stop("'form' must be a formula") } ## constructing data allV <- all.vars(asOneFormula(form, id, idLabels)) allV <- allV[is.na(match(allV,c("T","F","TRUE","FALSE")))] if (length(allV) > 0) { data <- getData(object) if (is.null(data)) { # try to construct data alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } else { if (any(naV <- is.na(match(allV, names(data))))) { stop(sprintf(ngettext(sum(naV), "%s not found in data", "%s not found in data"), allV[naV]), domain = NA) } } } else data <- NULL if (inherits(data, "groupedData")) { # save labels and units, if present ff <- formula(data) rF <- deparse(getResponseFormula(ff)[[2]]) cF <- c_deparse(getCovariateFormula(ff)[[2]]) lbs <- attr(data, "labels") unts <- attr(data, "units") if (!is.null(lbs$x)) cL <- paste(lbs$x, unts$x) else cF <- NULL if (!is.null(lbs$y)) rL <- paste(lbs$y, unts$y) else rF <- NULL } else { rF <- cF <- NULL } ## argument list dots <- list(...) if (length(dots) > 0) args <- dots else args <- list() ## appending object to data data <- as.list(c(as.list(data), . = list(object))) ## covariate - must always be present covF <- getCovariateFormula(form) .x <- eval(covF[[2]], data) if (!is.numeric(.x)) { stop("covariate must be numeric") } argForm <- ~ .x argData <- data.frame(.x = .x, check.names = FALSE) if (is.null(xlab <- attr(.x, "label"))) { xlab <- deparse(covF[[2]]) if (!is.null(cF) && (xlab == cF)) xlab <- cL #### BUG!!!! else if (!is.null(rF) && (xlab == rF)) xlab <- rL } if (is.null(args$xlab)) args$xlab <- xlab ## response - need not be present respF <- getResponseFormula(form) if (!is.null(respF)) { .y <- eval(respF[[2]], data) if (is.null(ylab <- attr(.y, "label"))) { ylab <- deparse(respF[[2]]) if (!is.null(cF) && (ylab == cF)) ylab <- cL else if (!is.null(rF) && (ylab == rF)) ylab <- rL } argForm <- .y ~ .x argData[, ".y"] <- .y if (is.null(args$ylab)) args$ylab <- ylab } ## groups - need not be present grpsF <- getGroupsFormula(form) if (!is.null(grpsF)) { gr <- splitFormula(grpsF, sep = "*") for(i in 1:length(gr)) { auxGr <- all.vars(gr[[i]]) for(j in auxGr) { argData[[j]] <- eval(as.name(j), data) } } if (length(argForm) == 2) argForm <- eval(parse(text = paste("~ .x |", deparse(grpsF[[2]])))) else argForm <- eval(parse(text = paste(".y ~ .x |", deparse(grpsF[[2]])))) } ## adding to args list args <- c(list(argForm, data = argData), args) ## if (is.null(args$strip)) { ## args$strip <- function(...) strip.default(..., style = 1) ## } if (is.null(args$cex)) args$cex <- par("cex") if (is.null(args$adj)) args$adj <- par("adj") if (!is.null(id)) { # identify points in plot idResType <- match.arg(idResType) id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } as.logical(abs(resid(object, type = idResType)) > -qnorm(id / 2)) }, call = eval(asOneSidedFormula(id)[[2]], data), stop("'id' can only be a formula or numeric") ) if (is.null(idLabels)) { idLabels <- getGroups(object) if (length(idLabels) == 0) idLabels <- 1:object$dims$N idLabels <- as.character(idLabels) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != length(id)) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } } ## defining abline, if needed if (missing(abline)) { if (missing(form)) { # r ~ f abline <- c(0, 0) } else { abline <- NULL } } #assign("id", id , where = 1) #assign("idLabels", idLabels, where = 1) #assign("abl", abline, where = 1) assign("abl", abline) ## defining the type of plot if (length(argForm) == 3) { if (is.numeric(.y)) { # xyplot plotFun <- "xyplot" if (is.null(args$panel)) { args <- c(args, panel = list(function(x, y, subscripts, ...) { x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y, ...) if (any(ids <- id[subscripts])){ ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } if (!is.null(abl)) { if (length(abl) == 2) panel.abline(a = abl, ...) else panel.abline(h = abl, ...) } })) } } else { # assume factor or character plotFun <- "bwplot" if (is.null(args$panel)) { args <- c(args, panel = list(function(x, y, ...) { if (grid) panel.grid() panel.bwplot(x, y, ...) if (!is.null(abl)) { panel.abline(v = abl[1], ...) } })) } } } else { plotFun <- "histogram" if (is.null(args$panel)) { args <- c(args, panel = list(function(x, ...) { if (grid) panel.grid() panel.histogram(x, ...) if (!is.null(abl)) { panel.abline(v = abl[1], ...) } })) } } ## defining grid if (missing(grid)) { if (plotFun == "xyplot") grid <- TRUE else grid <- FALSE } # assign("grid", grid, where = 1) do.call(plotFun, as.list(args)) } #pruneLevels.factor <- function(object) object[drop = TRUE] ##*## Plot method for ACF objects plot.ACF <- function(x, alpha = 0, xlab = "Lag", ylab = "Autocorrelation", grid = FALSE, ...) { object <- x ylim <- range(object$ACF) if (alpha) { assign("stdv", qnorm(1-alpha/2)/sqrt(attr(object,"n.used"))) stMax <- max(stdv) ylim <- c(min(c(-stMax, ylim[1])), max(c(ylim[2], stMax))) } assign("alpha", as.logical(alpha)) assign("grid", grid) xyplot(ACF ~ lag, object, ylim = ylim, panel = function(x, y, ...) { x <- as.numeric(x) y <- as.numeric(y) if (grid) panel.grid() panel.xyplot(x, y, type = "h") panel.abline(0, 0) if (alpha) { llines(x, stdv, lty = 2) llines(x, -stdv, lty = 2) } }, xlab = xlab, ylab = ylab, ...) } plot.augPred <- function(x, key = TRUE, grid = FALSE, ...) { labels <- list(xlab = paste(attr(x, "labels")$x, attr(x, "units")$x), ylab = paste(attr(x, "labels")$y, attr(x, "units")$y)) labels <- labels[unlist(lapply(labels, function(el) length(el) > 0))] args <- c(list(attr(x, "formula"), groups = as.name(".type"), data = x, strip = function(...) strip.default(..., style = 1), panel = if (length(levels(x[[".type"]])) == 2) { ## single prediction level function(x, y, subscripts, groups, ...) { if (grid) panel.grid() orig <- groups[subscripts] == "original" panel.xyplot(x[orig], y[orig], ...) panel.xyplot(x[!orig], y[!orig], ..., type = "l") } } else { # multiple prediction levels function(x, y, subscripts, groups, ...) { if (grid) panel.grid() orig <- groups[subscripts] == "original" panel.xyplot(x[orig], y[orig], ...) panel.superpose(x[!orig], y[!orig], subscripts[!orig], groups, ..., type = "l") } }), labels) ## perhaps include key argument allowing logical values dots <- list(...) args[names(dots)] <- dots if (is.logical(key) && key) { levs <- levels(x[[".type"]]) if ((lLev <- length(levs)) > 2) { # more than one levels lLev <- lLev - 1 levs <- levs[1:lLev] aux <- !is.na(match(substring(levs, 1, 8), "predict.")) if (sum(aux) > 0) { levs[aux] <- substring(levs[aux], 9) } args[["key"]] <- list(lines = c(Rows(trellis.par.get("superpose.line"), 1:lLev), list(size = rep(3, lLev))), text = list(levels = levs), columns = min(6, lLev)) } } else { args[["key"]] <- key } assign("grid", grid) do.call("xyplot", args) } plot.compareFits <- function(x, subset, key = TRUE, mark = NULL, ...) { object <- x if(!missing(subset)) { object <- object[subset,,] } dims <- dim(object) dn <- dimnames(object) assign("mark", rep(mark, rep(dims[1] * dims[2], dims[3]))) tt <- data.frame(group = ordered(rep(dn[[1]], dims[2] * dims[3]), levels = dn[[1]]), coefs = as.vector(object), what = ordered(rep(dn[[3]], rep(dims[1] * dims[2], dims[3])), levels = dn[[3]]), grp = ordered(rep(rep(dn[[2]], rep(dims[1], dims[2])), dims[3]), levels = dn[[2]])) args <- list(group ~ coefs | what, data = tt, scales = list(x=list(relation="free")), strip = function(...) strip.default(..., style = 1), xlab = "", groups = tt$grp, panel = function(x, y, subscripts, groups, ...) { x <- as.numeric(x) y <- as.numeric(y) dot.line <- trellis.par.get("dot.line") panel.abline(h = y, lwd = dot.line$lwd, lty = dot.line$lty, col = dot.line$col) if(!is.null(mark)) { panel.abline(v = mark[subscripts][1], lty = 2) } panel.superpose(x, y, subscripts, groups) }) dots <- list(...) args[names(dots)] <- dots if(is.logical(key)) { if(key && length(unique(tt$grp)) > 1) { args[["key"]] <- list(points = Rows(trellis.par.get("superpose.symbol"), 1:2), text = list(levels = levels(tt$grp)), columns = 2) } } else { args[["key"]] <- key } do.call("dotplot", args) } plot.Variogram <- function(x, smooth, showModel, sigma = NULL, span = 0.6, xlab = "Distance", ylab = "Semivariogram", type = "p", ylim, grid = FALSE, ...) { object <- x trlLin <- trellis.par.get("superpose.line") coll <- attr(object, "collapse") modVrg <- attr(object, "modelVariog") lineT <- 1 if (!is.na(match(type, c("l","o","b")))) { lineT <- lineT + 1 } if (missing(showModel)) { showModel <- !is.null(modVrg) } if (showModel) { if (is.null(modVrg)) { stop("no model variogram available with 'showModel = TRUE'") } assign("ltyM", trlLin$lty[lineT]) assign("colM", trlLin$col[lineT]) assign("modVrg", modVrg) lineT <- lineT + 1 } if (missing(smooth)) { smooth <- !showModel } if (smooth) { assign("ltyS", trlLin$lty[lineT]) assign("colS", trlLin$col[lineT]) } assign("smooth", smooth) assign("showModel", showModel) assign("span", span) assign("type", type) assign("sigma", sigma) assign("grid", grid) if (missing(ylim)) { ylim <- c(0, max(object$variog)) } xyplot(variog ~ dist, object, ylim = ylim, panel = function(x, y, ...) { if (grid) panel.grid() panel.xyplot(x, y, type = type, ...) if (showModel) { panel.xyplot(modVrg$dist, modVrg$variog, type = "l", col = colM, lty = ltyM, ...) } if (smooth) { panel.loess(x, y, span = span, col = colS, lty = ltyS, ...) } if (!is.null(sigma)) { panel.abline(c(sigma, 0), lty = 2) } }, xlab = xlab, ylab = ylab, ...) } print.compareFits <- function(x, ...) { # Will need to be changed for S4! print(unclass(x), ...) invisible(x) } print.correlation <- ## Print only the lower triangle of a correlation matrix function(x, title = " Correlation:", rdig = 3, ...) { p <- dim(x)[2] if (p > 1) { cat(title, "\n") ll <- lower.tri(x) x[ll] <- format(round(x[ll], digits = rdig)) x[!ll] <- "" if (!is.null(colnames(x))) { colnames(x) <- abbreviate(colnames(x), minlength = rdig + 3) } print(x[-1, - p, drop = FALSE], ..., quote = FALSE) } invisible(x) } ##if(R.version$major <= 1 && R.version$minor < 3) ## not in R 1.3 and later ##--- needs Trellis/Lattice : qqnorm.nls <- function(y, form = ~ resid(., type = "p"), abline = NULL, id = NULL, idLabels = NULL, grid = FALSE, ...) ## normal probability plots for residuals { object <- y if (!inherits(form, "formula")) { stop("'form' must be a formula") } ## constructing data allV <- all.vars(asOneFormula(form, id, idLabels)) allV <- allV[is.na(match(allV,c("T","F","TRUE","FALSE")))] if (length(allV) > 0) { data <- getData(object) if (is.null(data)) { # try to construct data alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } else { if (any(naV <- is.na(match(allV, names(data))))) { stop(sprintf(ngettext(sum(naV), "%s not found in data", "%s not found in data"), allV[naV]), domain = NA) } } } else data <- NULL ## argument list dots <- list(...) if (length(dots) > 0) args <- dots else args <- list() ## appending object to data data <- as.list(c(as.list(data), . = list(object))) ## covariate - must always be present covF <- getCovariateFormula(form) .x <- eval(covF[[2]], data) labs <- attr(.x, "label") if (is.null(labs) || ((labs != "Standardized residuals") && (labs != "Normalized residuals") && (substring(labs, 1, 9) != "Residuals"))) { stop("only residuals allowed") } if (is.null(args$xlab)) args$xlab <- labs if (is.null(args$ylab)) args$ylab <- "Quantiles of standard normal" fData <- qqnorm(.x, plot.it = FALSE) data[[".y"]] <- fData$x data[[".x"]] <- fData$y dform <- ".y ~ .x" if (!is.null(grp <- getGroupsFormula(form))) { dform <- paste(dform, deparse(grp[[2]]), sep = "|") } if (!is.null(id)) { # identify points in plot id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } if (labs == "Normalized residuals") { as.logical(abs(resid(object, type="normalized")) > -qnorm(id / 2)) } else { as.logical(abs(resid(object, type="pearson")) > -qnorm(id / 2)) } }, call = eval(asOneSidedFormula(id)[[2]], data), stop("'id' can only be a formula or numeric") ) if (is.null(idLabels)) { idLabels <- getGroups(object) if (length(idLabels) == 0) idLabels <- 1:object$dims$N idLabels <- as.character(idLabels) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != length(id)) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } } # assign("id", if (is.null(id)) NULL else as.logical(as.character(id)), # frame = 1) assign("id", if (is.null(id)) NULL else as.logical(as.character(id))) assign("idLabels", as.character(idLabels)) assign("grid", grid) assign("abl", abline) if (is.null(args$strip)) { args$strip <- function(...) strip.default(..., style = 1) } if (is.null(args$cex)) args$cex <- par("cex") if (is.null(args$adj)) args$adj <- par("adj") args <- c(list(eval(parse(text = dform)), data = substitute(data)), args) if (is.null(args$panel)) { args <- c(list(panel = function(x, y, subscripts, ...){ x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y, ...) if (any(ids <- id[subscripts])){ ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } if (!is.null(abl)) { if (length(abl) == 2) panel.abline(a = abl, ...) else panel.abline(h = abl, ...) } }), args) } do.call("xyplot", args) } Variogram.default <- function(object, distance, ...) { ld <- length(distance) lo <- length(object) if (ld != round(lo*(lo-1)/2)) { stop("'distance' and 'object' have incompatible lengths") } val <- outer(object, object, function(x,y) ((x - y)^2)/2) val <- val[lower.tri(val)] val <- data.frame(variog = val, dist = as.numeric(distance)) class(val) <- c("Variogram", "data.frame") val } ## local function for complete deparsing c_deparse <- function(...) paste(deparse(..., width.cutoff=500), collapse="") ## Local Variables: ## mode:S ## End: nlme/R/corStruct.R0000644000176000001440000020031612030057547013556 0ustar ripleyusers### Classes of correlation structures ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # ##*## Generics that should be implemented for any corStruct class corFactor <- ## extractor for transpose inverse square root factor of corr matrix function(object, ...) UseMethod("corFactor") corMatrix <- ## extractor for correlation matrix or the transpose inverse ## square root matrix function(object, ...) UseMethod("corMatrix") ###*# Constructor ### There is no constructor function for this class (i.e. no function ### called corStruct) because the class is virtual. ###*# Methods for local generics corFactor.corStruct <- function(object, ...) { if (!is.null(aux <- attr(object, "factor"))) { return(aux) } corD <- Dim(object) val <- .C(corStruct_factList, as.double(unlist(corMatrix(object))), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corStruct <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (corr) { ## Do not know how to calculate the correlation matrix stop(gettextf("do not know how to calculate correlation matrix of %s object", dQuote(class(object)[1])), domain = NA) } else { ## transpose inverse square root if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, length)))) } else { corD <- Dim(object, rep(1, length(covariate))) } val <- .C(corStruct_factList, as.double(unlist(corMatrix(object, covariate))), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } } ###*# Methods for standard generics as.matrix.corStruct <- function(x, ...) corMatrix(x) coef.corStruct <- ## Accessor for constrained or unconstrained parameters of ## corStruct objects function(object, unconstrained = TRUE, ...) { if (unconstrained) { if (is.null(isFix <- attr(object, "fixed"))) { stop("\"corStruct\" object must have a \"fixed\" attribute") } if (isFix) { numeric(0) } else { as.vector(object) } } else { stop(gettextf("do not know how to obtain parameters of %s object", dQuote(class(object)[1])), domain = NA) } } "coef<-.corStruct" <- function(object, ..., value) { ## Assignment of the unconstrained parameter of corStruct objects value <- as.numeric(value) if (length(value) != length(object)) { stop("cannot change the length of the parameter of a \"corStruct\" object") } object[] <- value ## updating the factor list and logDet, by forcing a recalculation attr(object, "factor") <- NULL attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- NULL attr(object, "logDet") <- logDet(object) object } Dim.corStruct <- function(object, groups, ...) { if (missing(groups)) return(attr(object, "Dim")) ugrp <- unique(groups) groups <- factor(groups, levels = ugrp) len <- table(groups) list(N = length(groups), M = length(len), maxLen = max(len), sumLenSq = sum(len^2), len = len, start = match(ugrp, groups) - 1) } formula.corStruct <- ## Accessor for the covariate formula function(x, ...) eval(attr(x, "formula")) getCovariate.corStruct <- function(object, form = formula(object), data) { if (!missing(form)) { form <- formula(object) warning("cannot change 'form'") } if (is.null(covar <- attr(object, "covariate"))) { # need to calculate it if (missing(data)) { stop("need data to calculate covariate of \"corStruct\" object") } covForm <- getCovariateFormula(form) if (!is.null(getGroupsFormula(form))) { grps <- getGroups(object, data = data) } else { grps <- NULL } if (length(all.vars(covForm)) > 0) { # primary covariate present if (is.null(grps)) { covar <- getCovariate(data, covForm) } else { if (all(all.vars(covForm) == sapply(splitFormula(covForm, "+"), function(el) deparse(el[[2]])))) { covar <- split(getCovariate(data, covForm), grps) } else { covar <- lapply(split(data, grps), getCovariate, covForm) } } } else { if (is.null(grps)) { covar <- 1:nrow(data) } else { covar <- lapply(split(grps, grps), function(x) 1:length(x)) } } if (!is.null(grps)) { covar <- as.list(covar) } } covar } getGroups.corStruct <- function(object, form = formula(object), level, data, sep) { if (is.null(val <- attr(object, "groups"))) { # need to calculate if (!missing(data)) { if ((grpLev <- length(getGroupsFormula(form, asList = TRUE))) > 0) { ## use innermost grouping level val <- getGroups(data, form, level = grpLev) factor(val, levels = unique(as.character(val))) } else { rep(1, dim(data)[1]) } } else { NULL } } else { val } } Initialize.corStruct <- ## Initializes some attributes of corStruct objects function(object, data, ...) { form <- formula(object) ## obtaining the groups information, if any if (!is.null(getGroupsFormula(form))) { attr(object, "groups") <- getGroups(object, form, data = data) attr(object, "Dim") <- Dim(object, attr(object, "groups")) } else { # no groups attr(object, "Dim") <- Dim(object, as.factor(rep(1, nrow(data)))) } ## obtaining the covariate(s) attr(object, "covariate") <- getCovariate(object, data = data) object } logDet.corStruct <- function(object, covariate = getCovariate(object), ...) { if (!is.null(aux <- attr(object, "logDet"))) { return(aux) } if (is.null(aux <- attr(object, "factor"))) { ## getting the transpose sqrt factor aux <- corMatrix(object, covariate = covariate, corr = FALSE) } if (is.null(aux1 <- attr(aux, "logDet"))) { ## checking for logDet attribute; if not present, get corr matrix aux <- corMatrix(object, covariate) if (data.class(aux) == "list") { # by group sum(log(abs(unlist(lapply(aux, function(el) svd(el)$d)))))/2 } else { sum(log(abs(svd(aux)$d)))/2 } } else { -aux1 } } ## NB, no "nobs" logLik.corStruct <- function(object, data, ...) -logDet(object) needUpdate.corStruct <- function(object) FALSE print.corStruct <- function(x, ...) { if (length(aux <- coef(x, unconstrained = FALSE)) > 0) { cat("Correlation structure of class", class(x)[1], "representing\n") print(aux, ...) } else { cat("Uninitialized correlation structure of class", class(x)[1], "\n") } invisible(x) } print.summary.corStruct <- function(x, ...) { class(x) <- attr(x, "oClass") cat(paste("Correlation Structure: ", attr(x, "structName"), "\n", sep = "")) cat(paste(" Formula:", deparse(formula(x)),"\n")) cat(" Parameter estimate(s):\n") print(coef(x, unconstrained = FALSE)) invisible(x) } recalc.corStruct <- function(object, conLin, ...) { conLin[["Xy"]][] <- .C(corStruct_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(unlist(corFactor(object))))[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + logLik(object) conLin } summary.corStruct <- function(object, structName = class(object)[1], ...) { attr(object, "structName") <- structName attr(object, "oClass") <- class(object) class(object) <- "summary.corStruct" object } update.corStruct <- function(object, data, ...) { object } ##*## Classes that substitute for (i.e. inherit from) corStruct ###*# corSymm - general, unstructured correlation ####* Constructor corSymm <- ## Constructor for the corSymm class function(value = numeric(0), form = ~ 1, fixed = FALSE) { attr(value, "formula") <- form attr(value, "fixed") <- fixed class(value) <- c("corSymm", "corStruct") value } ###*# Methods for local generics corFactor.corSymm <- function(object, ...) { corD <- Dim(object) val <- .C(symm_factList, as.double(as.vector(object)), as.integer(unlist(attr(object, "covariate"))), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corSymm <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, length)))) } else { corD <- Dim(object, rep(1, length(covariate))) } if (corr) { val <- .C(symm_matList, as.double(as.vector(object)), as.integer(unlist(covariate)), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), mat = double(corD[["sumLenSq"]]))[["mat"]] lD <- NULL } else { val <- .C(symm_factList, as.double(as.vector(object)), as.integer(unlist(covariate)), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] } if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } ###*# Methods for standard generics coef.corSymm <- function(object, unconstrained = TRUE, ...) { if (unconstrained) { if (attr(object, "fixed")) { return(numeric(0)) } else { return(as.vector(object)) } } mC <- attr(object, "maxCov") .C(symm_fullCorr, as.double(object), as.integer(mC), corr = double(round(mC * (mC - 1) / 2)))[["corr"]] } "coef<-.corSymm" <- function(object, ..., value) { if (length(value) != length(object)) { stop("cannot change the length of the parameter of a \"corSymm\" object") } object[] <- value corD <- attr(object, "Dim") ## updating the factor list and logDet aux <- .C(symm_factList, as.double(as.vector(object)), as.integer(unlist(getCovariate(object))), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] attr(object, "factor") <- aux[["factor"]] attr(object, "logDet") <- -aux[["logDet"]] object } Initialize.corSymm <- function(object, data, ...) { if (!is.null(attr(object, "maxCov"))) {# initialized - nothing to do return(object) } object <- NextMethod() covar <- attr(object, "covariate") if (data.class(covar) != "list") { covar <- list(covar) } if (any(unlist(lapply(covar, duplicated)))) { stop("covariate must have unique values within groups for \"corSymm\" objects") } covar <- unlist(covar) - 1 maxCov <- max(uCov <- unique(covar)) + 1 if (length(uCov) != maxCov) { stop("unique values of the covariate for \"corSymm\" objects must be a sequence of consecutive integers") } if (Dim(object)[["M"]] > 1) { attr(object, "covariate") <- split(covar, getGroups(object)) } else { attr(object, "covariate") <- covar } attr(object, "maxCov") <- maxCov natPar <- as.vector(object) if (length(natPar) > 0) { ## parameters assumed in constrained form if (length(natPar) != round(maxCov * (maxCov - 1) / 2)) { stop("initial value for \"corSymm\" parameters of wrong dimension") } if (max(abs(natPar)) >= 1) { stop("initial values for \"corSymm\" must be between -1 and 1") } natMat <- diag(maxCov)/2 natMat[lower.tri(natMat)] <- natPar natMat <- (t(natMat) + natMat) ## checking if positive-definite if (any(eigen(natMat)$values <= 0)) { stop("initial values for \"corSymm\" do not define a positive-definite correlation structure") } natMat <- chol(natMat) uncPar <- numeric(0) for(i in 2:maxCov) { aux <- acos(natMat[1:(i-1),i]/sqrt(cumsum(natMat[i:1,i]^2)[i:2])) uncPar <- c(uncPar, log(aux/(pi - aux))) } coef(object) <- uncPar } else { # initializing the parameters oldAttr <- attributes(object) object <- double(round(maxCov * (maxCov - 1) / 2)) attributes(object) <- oldAttr attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") } object } print.corSymm <- function(x, ...) { if (length(as.vector(x)) > 0 && !is.null(mC <- attr(x, "maxCov"))) { aux <- coef.corSymm(x, unconstrained = FALSE) val <- diag(mC) dimnames(val) <- list(1:mC, 1:mC) val[lower.tri(val)] <- aux class(val) <- "correlation" cat("Correlation structure of class corSymm representing\n") print(val, ...) } else cat("Unitialized correlation structure of class corSymm\n") invisible(x) } print.summary.corSymm <- function(x, ...) { if (length(as.vector(x)) > 0 && !is.null(mC <- attr(x, "maxCov"))) { cat("Correlation Structure: General\n") cat(paste(" Formula:", deparse(formula(x)),"\n")) cat(" Parameter estimate(s):\n") val <- diag(mC) dimnames(val) <- list(1:mC, 1:mC) val[lower.tri(val)] <- coef.corSymm(x, unconstrained = FALSE) class(val) <- "correlation" print(val, ...) } else cat("Unitialized correlation structure of class corSymm\n") invisible(x) } recalc.corSymm <- function(object, conLin, ...) { val <- .C(symm_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(as.vector(object)), as.integer(unlist(getCovariate(object))), as.integer(attr(object, "maxCov")), logLik = double(1))[c("Xy", "logLik")] conLin[["Xy"]][] <- val[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] conLin } summary.corSymm <- function(object, structName = "General correlation", ...) { attr(object, "structName") <- structName class(object) <- "summary.corSymm" object } ###*# corNatural - general correlation in natural parametrization ####* Constructor corNatural <- ## Constructor for the corSymm class function(value = numeric(0), form = ~ 1, fixed = FALSE) { attr(value, "formula") <- form attr(value, "fixed") <- fixed class(value) <- c("corNatural", "corStruct") value } ###*# Methods for local generics corFactor.corNatural <- function(object, ...) { corD <- Dim(object) val <- .C(nat_factList, as.double(as.vector(object)), as.integer(unlist(attr(object, "covariate"))), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corNatural <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, length)))) } else { corD <- Dim(object, rep(1, length(covariate))) } if (corr) { val <- .C(nat_matList, as.double(as.vector(object)), as.integer(unlist(covariate)), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), mat = double(corD[["sumLenSq"]]))[["mat"]] lD <- NULL } else { val <- .C(nat_factList, as.double(as.vector(object)), as.integer(unlist(covariate)), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] } if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } ###*# Methods for standard generics coef.corNatural <- function(object, unconstrained = TRUE, ...) { if (unconstrained) { if (attr(object, "fixed")) { return(numeric(0)) } else { return(as.vector(object)) } } mC <- attr(object, "maxCov") val <- .C(nat_fullCorr, as.double(object), as.integer(mC), corr = double(round(mC * (mC - 1) / 2)))[["corr"]] names(val) <- outer(1:mC, 1:mC, function(x,y) { paste("cor(",y,",",x,")",sep="") })[lower.tri(diag(mC))] val } "coef<-.corNatural" <- function(object, ..., value) { if (length(value) != length(object)) { stop("cannot change the length of the parameter of a \"corNatural\" object") } object[] <- value corD <- attr(object, "Dim") ## updating the factor list and logDet aux <- .C(nat_factList, as.double(as.vector(object)), as.integer(unlist(getCovariate(object))), as.integer(attr(object, "maxCov")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] attr(object, "factor") <- aux[["factor"]] attr(object, "logDet") <- -aux[["logDet"]] object } Initialize.corNatural <- function(object, data, ...) { if (!is.null(attr(object, "maxCov"))) {# initialized - nothing to do return(object) } object <- NextMethod() covar <- attr(object, "covariate") if (data.class(covar) != "list") { covar <- list(covar) } if (any(unlist(lapply(covar, duplicated)))) { stop("covariate must have unique values within groups for \"corNatural\" objects") } covar <- unlist(covar) - 1 maxCov <- max(uCov <- unique(covar)) + 1 if (length(uCov) != maxCov) { stop("unique values of the covariate for \"corNatural\" objects must be a sequence of consecutive integers") } if (Dim(object)[["M"]] > 1) { attr(object, "covariate") <- split(covar, getGroups(object)) } else { attr(object, "covariate") <- covar } attr(object, "maxCov") <- maxCov natPar <- as.vector(object) if (length(natPar) > 0) { ## parameters assumed in constrained form if (length(natPar) != round(maxCov * (maxCov - 1) / 2)) { stop("initial value for \"corNatural\" parameters of wrong dimension") } if (max(abs(natPar)) >= 1) { stop("initial values for \"corNatural\" must be between -1 and 1") } natMat <- diag(maxCov)/2 natMat[lower.tri(natMat)] <- natPar natMat <- (t(natMat) + natMat) ## checking if positive-definite if (any(eigen(natMat)$values <= 0)) { stop("initial values for \"corNatural\" do not define a positive-definite correlation structure") } coef(object) <- log((natPar + 1)/(1 - natPar)) } else { # initializing the parameters oldAttr <- attributes(object) object <- double(round(maxCov * (maxCov - 1) / 2)) attributes(object) <- oldAttr attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") } object } print.corNatural <- function(x, ...) { if (length(as.vector(x)) > 0 && !is.null(mC <- attr(x, "maxCov"))) { aux <- coef(x, FALSE) val <- diag(mC) dimnames(val) <- list(1:mC, 1:mC) val[lower.tri(val)] <- aux class(val) <- "correlation" cat("Correlation structure of class corNatural representing\n") print(val, ...) } else cat("Unitialized correlation structure of class corNatural\n") invisible(x) } print.summary.corNatural <- function(x, ...) { if (length(as.vector(x)) > 0 && !is.null(mC <- attr(x, "maxCov"))) { cat("Correlation Structure: General\n") cat(paste(" Formula:", deparse(formula(x)),"\n")) cat(" Parameter estimate(s):\n") aux <- coef(x, FALSE) val <- diag(mC) dimnames(val) <- list(1:mC, 1:mC) val[lower.tri(val)] <- aux class(val) <- "correlation" print(val, ...) } else cat("Unitialized correlation structure of class corNatural\n") invisible(x) } recalc.corNatural <- function(object, conLin, ...) { val <- .C(nat_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(as.vector(object)), as.integer(unlist(getCovariate(object))), as.integer(attr(object, "maxCov")), logLik = double(1))[c("Xy", "logLik")] conLin[["Xy"]][] <- val[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] conLin } summary.corNatural <- function(object, structName = "General correlation, with natural parametrization", ...) { attr(object, "structName") <- structName class(object) <- "summary.corNatural" object } ###*# corIdent - independent structure ####* Constructor corIdent <- ## Constructor for the corIdent class function(form = NULL) { value <- numeric(0) attr(value, "formula") <- form attr(value, "fixed") <- TRUE class(value) <- c("corIdent", "corStruct") value } ###*# Methods for local generics corMatrix.corIdent <- function(object, covariate = getCovariate(object), corr, ...) { if (data.class(covariate) == "list") {# by group as.list(lapply(covariate, function(el, object) corMatrix(object, el))) } else { diag(length(covariate)) } } ###*# Methods for standard generics coef.corIdent <- function(object, unconstrained = TRUE, ...) numeric(0) "coef<-.corIdent" <- function(object, ..., value) object Initialize.corIdent <- function(object, data, ...) { attr(object, "logDet") <- 0 object } logDet.corIdent <- function(object, covariate, ...) 0 recalc.corIdent <- function(object, conLin, ...) { conLin } summary.corIdent <- function(object, structName = "Independent", ...) { summary.corStruct(object, structName) } ###*# corAR1 - autoregressive of order one structure ####* Constructor corAR1 <- ## Constructor for the corAR1 class function(value = 0, form = ~ 1, fixed = FALSE) { if (abs(value) >= 1) { stop("parameter in AR(1) structure must be between -1 and 1") } value <- log((1 + value)/( 1 - value)) attr(value, "formula") <- form attr(value, "fixed") <- fixed class(value) <- c("corAR1", "corStruct") value } ###*# Methods for local generics corFactor.corAR1 <- function(object, ...) { corD <- Dim(object) val <- .C(AR1_factList, as.double(as.vector(object)), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corAR1 <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, length)))) } else { corD <- Dim(object, rep(1, length(covariate))) } if (corr) { val <- .C(AR1_matList, as.double(as.vector(object)), as.integer(unlist(corD)), mat = double(corD[["sumLenSq"]]))[["mat"]] lD <- NULL } else { val <- .C(AR1_factList, as.double(as.vector(object)), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] } if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } ###*# Methods for standard generics coef.corAR1 <- function(object, unconstrained = TRUE, ...) { if (unconstrained) { if (attr(object, "fixed")) { return(numeric(0)) } else { return(as.vector(object)) } } aux <- exp(as.vector(object)) aux <- c((aux - 1)/(aux + 1)) names(aux) <- "Phi" aux } "coef<-.corAR1" <- function(object, ..., value) { if (length(value) != length(object)) { stop("cannot change the length of the parameter of a \"corAR1\" object") } object[] <- value corD <- attr(object, "Dim") ## updating the factor list and logDet aux <- .C(AR1_factList, as.double(as.vector(object)), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] attr(object, "factor") <- aux[["factor"]] attr(object, "logDet") <- -aux[["logDet"]] object } Initialize.corAR1 <- ## Initializes corAR1 objects function(object, data, ...) { object <- NextMethod() covar <- attr(object, "covariate") if (data.class(covar) != "list") { covar <- list(covar) } if (any(unlist(lapply(covar, duplicated)))) { stop("covariate must have unique values within groups for \"corAR1\" objects") } if (any(unlist(lapply(covar, diff)) != 1)) { ## Cannot use formulas for inverse of square root matrix ## will convert to class ARMA(1,0) attr(object, "p") <- 1 attr(object, "q") <- 0 class(object) <- c("corARMA", "corStruct") Initialize(object, data) } else { ## obtaining the factor list and logDet attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") object } } recalc.corAR1 <- function(object, conLin, ...) { val <- .C(AR1_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(as.vector(object)), logLik = double(1))[c("Xy", "logLik")] conLin[["Xy"]][] <- val[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] conLin } summary.corAR1 <- function(object, structName = "AR(1)", ...) { summary.corStruct(object, structName) } ####*# corCAR1 - continuous time autoregressive of order one structure #####* Constructor corCAR1 <- ## Constructor for the corCAR1 class function(value = 0.2, form = ~ 1, fixed = FALSE) { if (value <= 0 | value >= 1) { stop("parameter in CAR(1) structure must be between 0 and 1") } value <- log(value / (1 - value)) attr(value, "formula") <- form attr(value, "fixed") <- fixed class(value) <- c("corCAR1", "corStruct") value } ###*# Methods for local generics corFactor.corCAR1 <- function(object, ...) { corD <- Dim(object) val <- .C(CAR1_factList, as.double(as.vector(object)), as.double(unlist(attr(object, "covariate"))), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corCAR1 <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, length)))) } else { corD <- Dim(object, rep(1, length(covariate))) } if (corr) { val <- .C(CAR1_matList, as.double(as.vector(object)), as.double(unlist(covariate)), as.integer(unlist(corD)), mat = double(corD[["sumLenSq"]]))[["mat"]] lD <- NULL } else { val <- .C(CAR1_factList, as.double(as.vector(object)), as.double(unlist(covariate)), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] } if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } ###*# Methods for standard generics coef.corCAR1 <- function(object, unconstrained = TRUE, ...) { if (unconstrained) { if (attr(object, "fixed")) { return(numeric(0)) } else { return(as.vector(object)) } } aux <- c(exp(as.vector(object))) aux <- aux/(1+aux) names(aux) <- "Phi" aux } "coef<-.corCAR1" <- function(object, ..., value) { if (length(value) != length(object)) { stop("cannot change the length of the parameter of a \"corCAR1\" object") } object[] <- value corD <- attr(object, "Dim") ## updating the factor list and logDet aux <- .C(CAR1_factList, as.double(as.vector(object)), as.double(unlist(getCovariate(object))), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] attr(object, "factor") <- aux[["factor"]] attr(object, "logDet") <- -aux[["logDet"]] object } Initialize.corCAR1 <- ## Initializes corCAR1 objects function(object, data, ...) { object <- NextMethod() covar <- attr(object, "covariate") if (data.class(covar) != "list") { covar <- list(covar) } if (any(unlist(lapply(covar, duplicated)))) { stop("covariate must have unique values within groups for \"corCAR1\" objects") } attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") object } recalc.corCAR1 <- function(object, conLin, ...) { val <- .C(CAR1_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(as.vector(object)), as.double(unlist(getCovariate(object))), logLik = double(1))[c("Xy", "logLik")] conLin[["Xy"]][] <- val[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] conLin } summary.corCAR1 <- function(object, structName = "Continuous AR(1)", ...) { summary.corStruct(object, structName) } ###*# corARMA - autoregressive-moving average structures ####* Constructor corARMA <- ## Constructor for the corARMA class function(value = double(p + q), form = ~ 1, p = 0, q = 0, fixed = FALSE) { if (!(p >= 0 && (p == round(p)))) { stop("autoregressive order must be a non-negative integer") } if (!(q >= 0 && (q == round(q)))) { stop("moving average order must be a non-negative integer") } if (0 == (p + q)) { return(corIdent()) } if (length(value) != p + q) { stop("initial value for parameter of wrong length") } if (max(abs(value)) >= 1) { stop("parameters in ARMA structure must be < 1 in absolute value") } ## unconstrained parameters value <- .C(ARMA_unconstCoef, as.integer(p), as.integer(q), pars = as.double(value))$pars attributes(value) <- list(formula = form, p = p, q = q, fixed = fixed) class(value) <- c("corARMA", "corStruct") value } ###*# Methods for local generics corFactor.corARMA <- function(object, ...) { maxLag <- attr(object, "maxLag") if(is.null(maxLag)) stop("'object' has not been Initialize()d") corD <- Dim(object) val <- .C(ARMA_factList, as.double(as.vector(object)), as.integer(attr(object, "p")), as.integer(attr(object, "q")), as.integer(unlist(attr(object, "covariate"))), as.integer(attr(object, "maxLag")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corARMA <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, length)))) } else { corD <- Dim(object, rep(1, length(covariate))) } p <- attr(object, "p") q <- attr(object, "q") maxLag <- attr(object, "maxLag") if(is.null(maxLag)) stop("'object' has not been Initialize()d") if (corr) { val <- .C(ARMA_matList, as.double(as.vector(object)), as.integer(p), as.integer(q), as.integer(unlist(covariate)), as.integer(maxLag), as.integer(unlist(corD)), mat = double(corD[["sumLenSq"]]))[["mat"]] lD <- NULL } else { val <- .C(ARMA_factList, as.double(as.vector(object)), as.integer(attr(object, "p")), as.integer(attr(object, "q")), as.integer(unlist(covariate)), as.integer(attr(object, "maxLag")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] } if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } ###*# Methods for standard generics coef.corARMA <- function(object, unconstrained = TRUE, ...) { if (attr(object, "fixed") && unconstrained) { return(numeric(0)) } val <- as.vector(object) if (!unconstrained) { p <- attr(object, "p") q <- attr(object, "q") nams <- NULL if (p > 0) { nams <- paste(rep("Phi", p), 1:p, sep="") } if (q > 0) { nams <- c(nams, paste(rep("Theta", q), 1:q, sep="")) } val <- c(.C(ARMA_constCoef, as.integer(attr(object,"p")), as.integer(attr(object,"q")), pars = as.double(val))$pars) names(val) <- nams } val } "coef<-.corARMA" <- function(object, ..., value) { maxLag <- attr(object, "maxLag") if(is.null(maxLag)) stop("'object' has not been Initialize()d") if (length(value) != length(object)) { stop("cannot change the length of the parameter of a \"corARMA\" object") } p <- attr(object, "p") q <- attr(object, "q") object[] <- value ## updating the factor list and logDet corD <- Dim(object) aux <- .C(ARMA_factList, as.double(as.vector(object)), as.integer(p), as.integer(q), as.integer(unlist(getCovariate(object))), as.integer(attr(object, "maxLag")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] attr(object, "factor") <- aux[["factor"]] attr(object, "logDet") <- -aux[["logDet"]] object } Initialize.corARMA <- function(object, data, ...) { ## Initializes corARMA objects object <- NextMethod() covar <- attr(object, "covariate") if (data.class(covar) != "list") { covar <- list(covar) } if (any(unlist(lapply(covar, duplicated)))) { stop("covariate must have unique values within groups for \"corARMA\" objects") } if ((attr(object, "p") == 1) && (attr(object, "q") == 0) && all(unlist(lapply(covar, diff)) == 1)) { ## Use AR1 methods instead class(object) <- c("corAR1", "corStruct") Initialize(object, data) } else { attr(object, "maxLag") <- max(unlist(lapply(covar, function(el) max(abs(outer(el,el,"-")))))) attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") object } } recalc.corARMA <- function(object, conLin, ...) { maxLag <- attr(object, "maxLag") if(is.null(maxLag)) stop("'object' has not been Initialize()d") val <- .C(ARMA_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(as.vector(object)), as.integer(attr(object, "p")), as.integer(attr(object, "q")), as.integer(unlist(getCovariate(object))), as.integer(attr(object, "maxLag")), logLik = double(1))[c("Xy", "logLik")] conLin[["Xy"]][] <- val[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] conLin } summary.corARMA <- function(object, structName = paste("ARMA(",attr(object,"p"),",", attr(object,"q"), ")", sep = ""), ...) { summary.corStruct(object, structName) } ###*# corCompSymm - Compound symmetry structure structure ####* Constructor corCompSymm <- ## Constructor for the corCompSymm class function(value = 0, form = ~ 1, fixed = FALSE) { if (abs(value) >= 1) { stop("parameter in \"corCompSymm\" structure must be < 1 in absolute value") } attr(value, "formula") <- form attr(value, "fixed") <- fixed class(value) <- c("corCompSymm", "corStruct") value } ###*# Methods for local generics corFactor.compSymm <- function(object, ...) { corD <- Dim(object) val <- .C(compSymm_factList, as.double(as.vector(object)), as.double(attr(object, "inf")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corCompSymm <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, length)))) } else { corD <- Dim(object, rep(1, length(covariate))) } if (corr) { val <- .C(compSymm_matList, as.double(as.vector(object)), as.double(attr(object, "inf")), as.integer(unlist(corD)), mat = double(corD[["sumLenSq"]]))[["mat"]] lD <- NULL } else { val <- .C(compSymm_factList, as.double(as.vector(object)), as.double(attr(object, "inf")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] } if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } ###*# Methods for local generics coef.corCompSymm <- function(object, unconstrained = TRUE, ...) { if (unconstrained) { if (attr(object, "fixed")) { return(numeric(0)) } else { return(as.vector(object)) } } val <- exp(as.vector(object)) val <- c((val + attr(object, "inf"))/(val + 1)) names(val) <- "Rho" val } "coef<-.corCompSymm" <- function(object, ..., value) { if (length(value) != length(object)) { stop("cannot change the length of the parameter of a \"corCompSymm\" object") } object[] <- value corD <- attr(object, "Dim") ## updating the factor list and logDet aux <- .C(compSymm_factList, as.double(as.vector(object)), as.double(attr(object, "inf")), as.integer(unlist(corD)), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] attr(object, "factor") <- aux[["factor"]] attr(object, "logDet") <- -aux[["logDet"]] object } Initialize.corCompSymm <- ## Initializes corCompSymm objects function(object, data, ...) { if (!is.null(attr(object, "inf"))) { # initialized - nothing to do return(object) } object <- NextMethod() natPar <- as.vector(object) corD <- Dim(object) if (natPar <= (attr(object, "inf") <- -1/(corD[["maxLen"]] - 1))) { stop(gettextf("initial value in \"corCompSymm\" must be greater than %s", attr(object, "inf")), domain = NA) } object[] <- log((natPar - attr(object, "inf"))/(1 - natPar)) attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") object } recalc.corCompSymm <- function(object, conLin, ...) { val <- .C(compSymm_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(as.vector(object)), as.double(attr(object, "inf")), logLik = double(1))[c("Xy", "logLik")] conLin[["Xy"]][] <- val[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] conLin } summary.corCompSymm <- function(object, structName = "Compound symmetry", ...) { summary.corStruct(object, structName) } ####*# corHF - Huyn-Feldt structure #corHF <- # ## Constructor for the corHuynFeldt class # function(value = numeric(0), form = ~ 1) #{ # attr(value, "formula") <- form # class(value) <- c("corHF", "corStruct") # value #} ####*# Methods for local generics #corFactor.corHF <- # function(object) #{ # corD <- Dim(object) # val <- .C("HF_factList", # as.double(as.vector(object)), # as.integer(attr(object, "maxCov")), # as.integer(unlist(getCovariate(object))), # as.integer(unlist(corD)), # factor = double(corD[["sumLenSq"]]), # logDet = double(1))[c("factor", "logDet")] # lD <- val[["logDet"]] # val <- val[["factor"]] # attr(val, "logDet") <- lD # val #} #corMatrix.corHF <- # function(object, covariate = getCovariate(object), corr = TRUE) #{ # if (data.class(covariate) == "list") { # if (is.null(names(covariate))) { # names(covariate) <- 1:length(covariate) # } # corD <- Dim(object, rep(names(covariate), # unlist(lapply(covariate, length)))) # } else { # corD <- Dim(object, rep(1, length(covariate))) # } # if (corr) { # val <- .C("HF_matList", # as.double(as.vector(object)), # as.integer(attr(object, "maxCov")), # as.integer(unlist(covariate)), # as.integer(unlist(corD)), # mat = double(corD[["sumLenSq"]]))[["mat"]] # lD <- NULL # } else { # val <- .C("HF_factList", # as.double(as.vector(object)), # as.integer(attr(object, "maxCov")), # as.integer(unlist(covariate)), # as.integer(unlist(corD)), # factor = double(corD[["sumLenSq"]]), # logDet = double(1))[c("factor", "logDet")] # lD <- val[["logDet"]] # val <- val[["factor"]] # } # if (corD[["M"]] > 1) { # val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) # val <- lapply(val, function(el) { # nel <- round(sqrt(length(el))) # array(el, c(nel, nel)) # }) # names(val) <- names(corD[["len"]]) # } else { # val <- array(val, c(corD[["N"]], corD[["N"]])) # } # attr(val, "logDet") <- lD # val #} ####*# Methods for standard generics #coef.corHF <- # function(object, unconstrained = TRUE) #{ # aux <- as.vector(object) # if (!unconstrained) { # aux <- 2 * (exp(aux) + attr(object, "inf")) + 1 # } # aux #} #"coef<-.corHF" <- # function(object, value) #{ # if (length(value) != length(object)) { # stop("Cannot change the length of the parameter of a corStruct object") # } # object[] <- value # corD <- attr(object, "Dim") # ## updating the factor list and logDet # aux <- .C("HF_factList", # as.double(as.vector(object)), # as.integer(attr(object, "maxCov")), # as.integer(unlist(getCovariate(object))), # as.integer(unlist(corD)), # factor = double(corD[["sumLenSq"]]), # logDet = double(1))[c("factor", "logDet")] # attr(object, "factor") <- aux[["factor"]] # attr(object, "logDet") <- -aux[["logDet"]] # object #} #initialize.corHF <- # function(object, data, ...) #{ # if (!is.null(attr(object, "inf"))) { # initialized - nothing to do # return(object) # } # object <- NextMethod() # covar <- attr(object, "covariate") # if (data.class(covar) == "list") { # attr(object, "covariate") <- covar <- # lapply(covar, function(el) el - 1) # } else { # attr(object, "covariate") <- covar <- covar - 1 # covar <- list(covar) # } # if (any(unlist(lapply(covar, duplicated)))) { # stop(paste("Covariate must have unique values", # "within groups for corHF objects")) # } # maxCov <- max(uCov <- unique(unlist(covar))) + 1 # if (length(uCov) != maxCov) { # stop(paste("Unique values of the covariate for \"corHF\"", # "objects must be a sequence of consecutive integers")) # } # attr(object, "maxCov") <- maxCov # attr(object, "inf") <- -1/(2*maxCov) # natPar <- as.vector(object) # if (length(natPar) > 0) { # if (length(aux) != attr(object, "maxCov")) # stop("Initial value for Huyn-Feldt parameters of wrong dimension") # ## verifying if initial values satisfy constraints # if (any(natPar <= attr(object, "inf"))) { # stop(paste("Initial values for \"corHF\" parameters", # "must be > than", attr(object, "inf"))) # } # object[] <- log(natPar - attr(object, "inf")) # } else { # initializing the parameters # oldAttr <- attributes(object) # object <- log(rep(-attr(object, "inf"), att(object, "maxCov"))) # attributes(object) <- oldAttr # } # attr(object, "factor") <- corFactor(object) # attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") # object #} #print.corHF <- # function(x, ...) #{ # if (length(as.vector(x)) > 0 && !is.null(attr(object, "maxCov"))) # NextMethod() # else cat("Unitialized correlation structure of class corHF\n") #} #recalc.corHF <- # function(object, conLin) #{ # val <- # .C("HF_recalc", # Xy = as.double(conLin[["Xy"]]), # as.integer(unlist(Dim(object))), # as.integer(ncol(conLin[["Xy"]])), # as.double(as.vector(object)), # as.integer(unlist(getCovariate(object))), # as.integer(attr(object, "maxCov")), # logLik = double(1))[c("Xy", "logLik")] # conLin[["Xy"]][] <- val[["Xy"]] # conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] # conLin #} #summary.corHF <- # function(object, structName = "Huyn-Feldt") #{ # summary.corStruct(object, structName) #} ###*# corSpatial - a virtual class of spatial correlation structures ###*# Constructor corSpatial <- ## Constructor for the corSpatial class function(value = numeric(0), form = ~ 1, nugget = FALSE, type = c("spherical", "exponential", "gaussian", "linear", "rational"), metric = c("euclidean", "maximum", "manhattan"), fixed = FALSE) { type <- match.arg(type) spClass <- switch(type, spherical = "corSpher", exponential = "corExp", gaussian = "corGaus", linear = "corLin", rational = "corRatio") attr(value, "formula") <- form attr(value, "nugget") <- nugget attr(value, "metric") <- match.arg(metric) attr(value, "fixed") <- fixed class(value) <- c(spClass, "corSpatial", "corStruct") value } ###*# Methods for local generics corFactor.corSpatial <- function(object, ...) { corD <- Dim(object) val <- .C(spatial_factList, as.double(as.vector(object)), as.integer(attr(object, "nugget")), as.double(unlist(getCovariate(object))), as.integer(unlist(corD)), as.double(attr(object, "minD")), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] attr(val, "logDet") <- lD val } corMatrix.corSpatial <- function(object, covariate = getCovariate(object), corr = TRUE, ...) { if (data.class(covariate) == "list") { if (is.null(names(covariate))) { names(covariate) <- 1:length(covariate) } corD <- Dim(object, rep(names(covariate), unlist(lapply(covariate, function(el) round((1 + sqrt(1 + 8 * length(el)))/2))))) } else { corD <- Dim(object, rep(1, round((1 + sqrt(1 + 8* length(covariate)))/2))) } if (corr) { val <- .C(spatial_matList, as.double(as.vector(object)), as.integer(attr(object, "nugget")), as.double(unlist(covariate)), as.integer(unlist(corD)), as.double(attr(object, "minD")), mat = double(corD[["sumLenSq"]]))[["mat"]] lD <- NULL } else { val <- .C(spatial_factList, as.double(as.vector(object)), as.integer(attr(object, "nugget")), as.double(unlist(getCovariate(object))), as.integer(unlist(corD)), as.double(attr(object, "minD")), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] lD <- val[["logDet"]] val <- val[["factor"]] } if (corD[["M"]] > 1) { val <- split(val, rep(1:corD[["M"]], (corD[["len"]])^2)) val <- lapply(val, function(el) { nel <- round(sqrt(length(el))) array(el, c(nel, nel)) }) names(val) <- names(corD[["len"]]) val <- as.list(val) } else { val <- array(val, c(corD[["N"]], corD[["N"]])) } attr(val, "logDet") <- lD val } ###*# Methods for standard generics coef.corSpatial <- function(object, unconstrained = TRUE, ...) { if (attr(object, "fixed") && unconstrained) { return(numeric(0)) } val <- as.vector(object) if (length(val) == 0) { # uninitialized return(val) } if (!unconstrained) { val <- exp(val) if (attr(object, "nugget")) val[2] <- val[2]/(1+val[2]) } if (attr(object, "nugget")) names(val) <- c("range", "nugget") else names(val) <- "range" val } "coef<-.corSpatial" <- function(object, ..., value) { if (length(value) != length(object)) { stop("cannot change the length of the parameter after initialization") } object[] <- value corD <- attr(object, "Dim") ## updating the factor list and logDet aux <- .C(spatial_factList, as.double(as.vector(object)), as.integer(attr(object, "nugget")), as.double(unlist(getCovariate(object))), as.integer(unlist(corD)), as.double(attr(object, "minD")), factor = double(corD[["sumLenSq"]]), logDet = double(1))[c("factor", "logDet")] attr(object, "factor") <- aux[["factor"]] attr(object, "logDet") <- -aux[["logDet"]] object } Dim.corSpatial <- function(object, groups, ...) { if (missing(groups)) return(attr(object, "Dim")) val <- Dim.corStruct(object, groups) val[["start"]] <- c(0, cumsum(val[["len"]] * (val[["len"]] - 1)/2)[-val[["M"]]]) ## will use third component of Dim list for spClass names(val)[3] <- "spClass" val[[3]] <- match(class(object)[1], c("corSpher", "corExp", "corGaus", "corLin", "corRatio"), 0) val } getCovariate.corSpatial <- function(object, form = formula(object), data) { if (is.null(covar <- attr(object, "covariate"))) { # need to calculate it if (missing(data)) { stop("need data to calculate covariate") } covForm <- getCovariateFormula(form) if (length(all.vars(covForm)) > 0) { # covariate present if (attr(terms(covForm), "intercept") == 1) { covForm <- eval(parse(text = paste("~", deparse(covForm[[2]]),"-1",sep=""))) } covar <- as.data.frame(unclass(model.matrix(covForm, model.frame(covForm, data, drop.unused.levels = TRUE)))) } else { covar <- NULL } if (!is.null(getGroupsFormula(form))) { # by groups grps <- getGroups(object, data = data) if (is.null(covar)) { covar <- lapply(split(grps, grps), function(x) as.vector(dist(1:length(x)))) } else { covar <- lapply(split(covar, grps), function(el, metric) { el <- as.matrix(el) if (nrow(el) > 1) { as.vector(dist(el, metric)) } else { numeric(0) } }, metric = attr(object, "metric")) } covar <- covar[sapply(covar, length) > 0] # no 1-obs groups } else { # no groups if (is.null(covar)) { covar <- as.vector(dist(1:nrow(data))) } else { covar <- as.vector(dist(as.matrix(covar), method = attr(object, "metric"))) } } if (any(unlist(covar) == 0)) { stop("cannot have zero distances in \"corSpatial\"") } } covar } Initialize.corSpatial <- function(object, data, ...) { if (!is.null(attr(object, "minD"))) { #already initialized return(object) } object <- Initialize.corStruct(object, data) nug <- attr(object, "nugget") val <- as.vector(object) if (length(val) > 0) { # initialized if (val[1] <= 0) { stop("'range' must be > 0 in \"corSpatial\" initial value") } if (nug) { # with nugget effect if (length(val) == 1) { # assuming nugget effect not given val <- c(val, 0.1) # setting it to 0.1 } else { if (length(val) != 2) { stop("initial value for \"corSpatial\" parameters of wrong dimension") } } if ((val[2] <= 0) || (val[2] >= 1)) { stop("initial value of nugget ratio must be between 0 and 1") } } else { # only range parameter if (length(val) != 1) { stop("initial value for \"corSpatial\" parameters of wrong dimension") } } } else { val <- min(unlist(attr(object, "covariate"))) * 0.9 if (nug) val <- c(val, 0.1) } val[1] <- log(val[1]) if (nug) val[2] <- log(val[2]/(1 - val[2])) oldAttr <- attributes(object) object <- val attributes(object) <- oldAttr attr(object, "minD") <- min(unlist(attr(object, "covariate"))) attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") object } recalc.corSpatial <- function(object, conLin, ...) { val <- .C(spatial_recalc, Xy = as.double(conLin[["Xy"]]), as.integer(unlist(Dim(object))), as.integer(ncol(conLin[["Xy"]])), as.double(as.vector(object)), as.double(unlist(getCovariate(object))), as.double(attr(object, "minD")), as.integer(attr(object, "nugget")), logLik = double(1))[c("Xy", "logLik")] conLin[["Xy"]][] <- val[["Xy"]] conLin[["logLik"]] <- conLin[["logLik"]] + val[["logLik"]] conLin } Variogram.corSpatial <- function(object, distance = NULL, sig2 = 1, length.out = 50, FUN, ...) { if (is.null(distance)) { rangeDist <- range(unlist(getCovariate(object))) distance <- seq(rangeDist[1], rangeDist[2], length = length.out) } params <- coef(object, unconstrained = FALSE) if (length(params) == 1) { # no nugget effect rang <- params nugg <- 0 } else { # nugget effect rang <- params[1] nugg <- params[2] } val <- data.frame(variog = sig2 * (nugg + (1 - nugg) * FUN(distance, rang)), dist = distance) class(val) <- c("Variogram", "data.frame") val } ###*# corExp - exponential spatial correlation structure corExp <- ## Constructor for the corExp class function(value = numeric(0), form = ~ 1, nugget = FALSE, metric = c("euclidean", "maximum", "manhattan"), fixed = FALSE) { attr(value, "formula") <- form attr(value, "nugget") <- nugget attr(value, "metric") <- match.arg(metric) attr(value, "fixed") <- fixed class(value) <- c("corExp", "corSpatial", "corStruct") value } ###*# Methods for standard generics summary.corExp <- function(object, structName = "Exponential spatial correlation", ...) { summary.corStruct(object, structName) } Variogram.corExp <- function(object, distance = NULL, sig2 = 1, length.out = 50, ...) { Variogram.corSpatial(object, distance, sig2, length.out, function(x, y) { 1 - exp(-x/y) }) } ###*# corGaus - Gaussian spatial correlation structure corGaus <- ## Constructor for the corGaus class function(value = numeric(0), form = ~ 1, nugget = FALSE, metric = c("euclidean", "maximum", "manhattan"), fixed = FALSE) { attr(value, "formula") <- form attr(value, "nugget") <- nugget attr(value, "metric") <- match.arg(metric) attr(value, "fixed") <- fixed class(value) <- c("corGaus", "corSpatial", "corStruct") value } ###*# Methods for standard generics summary.corGaus <- function(object, structName = "Gaussian spatial correlation", ...) { summary.corStruct(object, structName) } Variogram.corGaus <- function(object, distance = NULL, sig2 = 1, length.out = 50, ...) { Variogram.corSpatial(object, distance, sig2, length.out, function(x, y){ 1 - exp(-(x/y)^2) }) } ###*# corLin - Linear spatial correlation structure corLin <- ## Constructor for the corLin class function(value = numeric(0), form = ~ 1, nugget = FALSE, metric = c("euclidean", "maximum", "manhattan"), fixed = FALSE) { attr(value, "formula") <- form attr(value, "nugget") <- nugget attr(value, "metric") <- match.arg(metric) attr(value, "fixed") <- fixed class(value) <- c("corLin", "corSpatial", "corStruct") value } ###*# Methods for standard generics coef.corLin <- function(object, unconstrained = TRUE, ...) { val <- NextMethod() if (!unconstrained) val[1] <- val[1] + attr(object, "minD") val } Initialize.corLin <- function(object, data, ...) { if (!is.null(attr(object, "minD"))) { #already initialized return(object) } object <- Initialize.corStruct(object, data) nug <- attr(object, "nugget") minD <- min(unlist(attr(object, "covariate"))) val <- as.vector(object) if (length(val) > 0) { # initialized if (val[1] <= 0) { stop("'range' must be > 0 in \"corLin\" initial value") } if (val[1] <= minD) { warning("initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)") val[1] <- 1.1 * minD } if (nug) { # with nugget effect if (length(val) == 1) { # assuming nugget effect not given val <- c(val, 0.1) # setting it to 0.1 } else { if (length(val) != 2) { stop("initial value for \"corLin\" parameters of wrong dimension") } } if ((val[2] <= 0) || (val[2] >= 1)) { stop("initial value of nugget ratio must be between 0 and 1") } } else { # only range parameter if (length(val) != 1) { stop("initial value for \"corLin\" parameters of wrong dimension") } } } else { val <- minD * 1.1 if (nug) val <- c(val, 0.1) } val[1] <- log(val[1] - minD) if (nug) val[2] <- log(val[2]/(1 - val[2])) oldAttr <- attributes(object) object <- val attributes(object) <- oldAttr attr(object, "minD") <- minD attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") object } summary.corLin <- function(object, structName = "Linear spatial correlation", ...) { summary.corStruct(object, structName) } Variogram.corLin <- function(object, distance = NULL, sig2 = 1, length.out = 50, ...) { Variogram.corSpatial(object, distance, sig2, length.out, function(x, y) { pmin(x/y, 1) }) } ###*# corRatio - rational quadratic spatial correlation structure corRatio <- ## Constructor for the corRational class function(value = numeric(0), form = ~ 1, nugget = FALSE, metric = c("euclidean", "maximum", "manhattan"), fixed = FALSE) { attr(value, "formula") <- form attr(value, "nugget") <- nugget attr(value, "metric") <- match.arg(metric) attr(value, "fixed") <- fixed class(value) <- c("corRatio", "corSpatial", "corStruct") value } ###*# Methods for standard generics summary.corRatio <- function(object, structName = "Rational quadratic spatial correlation", ...) { summary.corStruct(object, structName) } Variogram.corRatio <- function(object, distance = NULL, sig2 = 1, length.out = 50, ...) { Variogram.corSpatial(object, distance, sig2, length.out, function(x, y) { x <- (x/y)^2 x/(1+x) }) } ###*# corSpher - spherical spatial correlation structure corSpher <- ## Constructor for the corSpher class function(value = numeric(0), form = ~ 1, nugget = FALSE, metric = c("euclidean", "maximum", "manhattan"), fixed = FALSE) { attr(value, "formula") <- form attr(value, "nugget") <- nugget attr(value, "metric") <- match.arg(metric) attr(value, "fixed") <- fixed class(value) <- c("corSpher", "corSpatial", "corStruct") value } ###*# Methods for standard generics coef.corSpher <- function(object, unconstrained = TRUE, ...) { val <- NextMethod() if (!unconstrained) val[1] <- val[1] + attr(object, "minD") val } Initialize.corSpher <- function(object, data, ...) { if (!is.null(attr(object, "minD"))) { #already initialized return(object) } object <- Initialize.corStruct(object, data) nug <- attr(object, "nugget") minD <- min(unlist(attr(object, "covariate"))) val <- as.vector(object) if (length(val) > 0) { # initialized if (val[1] <= 0) { stop("range must be > 0 in \"corSpher\" initial value") } if (val[1] <= minD) { warning("initial value for 'range' less than minimum distance. Setting it to 1.1 * min(distance)") val[1] <- 1.1 * minD } if (nug) { # with nugget effect if (length(val) == 1) { # assuming nugget effect not given val <- c(val, 0.1) # setting it to 0.1 } else { if (length(val) != 2) { stop("initial value for \"corSpher\" parameters of wrong dimension") } } if ((val[2] <= 0) || (val[2] >= 1)) { stop("initial value of nugget ratio must be between 0 and 1") } } else { # only range parameter if (length(val) != 1) { stop("initial value for \"corSpher\" parameters of wrong dimension") } } } else { val <- minD * 1.1 if (nug) val <- c(val, 0.1) } val[1] <- log(val[1] - minD) if (nug) val[2] <- log(val[2]/(1 - val[2])) oldAttr <- attributes(object) object <- val attributes(object) <- oldAttr attr(object, "minD") <- minD attr(object, "factor") <- corFactor(object) attr(object, "logDet") <- -attr(attr(object, "factor"), "logDet") object } summary.corSpher <- function(object, structName = "Spherical spatial correlation", ...) { summary.corStruct(object, structName) } Variogram.corSpher <- function(object, distance = NULL, sig2 = 1, length.out = 50, ...) { Variogram.corSpatial(object, distance, sig2, length.out, function(x, y) { x <- pmin(x/y, 1) 1.5 * x - 0.5 * x^3 }) } ####*# corWave - Wave spatial correlation structure #corWave <- # ## Constructor for the corWave class # function(value = numeric(0), form = ~ 1, nugget = FALSE, # metric = c("euclidean", "maximum", "manhattan")) #{ # attr(value, "formula") <- form # attr(value, "nugget") <- nugget # attr(value, "metric") <- match.arg(metric) # class(value) <- c("corWave", "corSpatial", "corStruct") # value #} ####*# Methods for standard generics #summary.corWave <- # function(object, structName = "Wave spatial correlation") #{ # summary.corStruct(object, structName) #} ##*## Beginning of epilogue ### This file is automatically placed in Outline minor mode. ### The file is structured as follows: ### Chapters: ^L # ### Sections: ##*## ### Subsections: ###*### ### Components: non-comment lines flushed left ### Random code beginning with a ####* comment ### Local variables: ### mode: S ### mode: outline-minor ### outline-regexp: "\^L\\|\\`#\\|##\\*\\|###\\*\\|[a-zA-Z]\\|\\\"[a-zA-Z]\\|####\\*" ### End: nlme/R/newGenerics.R0000644000176000001440000001221511534450125014033 0ustar ripleyusers### New generics used with corStruct, varFunc, groupedData, and reStruct ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # ACF <- ## autocorrelation function - needed not exist if acf were generic function(object, maxLag, ...) UseMethod("ACF") asTable <- ## Return the object in a tabular form function(object) UseMethod("asTable") augPred <- ## Return the data used to fit the model augmented with the predictions function(object, primary = NULL, minimum = min(primary), maximum = max(primary), length.out = 51, ...) UseMethod("augPred") "coef<-" <- "coefficients<-" <- ## Assignment of the unconstrained parameter function(object, ..., value) UseMethod("coef<-") collapse <- ## collapse a data frame according to a factor, or several nested factors function(object, ...) UseMethod("collapse") comparePred <- ## compare predictions from different fitted objects function(object1, object2, primary = NULL, minimum = min(primary), maximum = max(primary), length.out = 51, level = NULL, ...) UseMethod("comparePred") "covariate<-" <- ## Assignment of the primary covariate function(object, value) UseMethod("covariate<-") Dim <- ## Extract dimensions of an object. Not needed if "dims" were generic function(object, ...) UseMethod("Dim") fixed.effects <- ## Generic extractor for estimates of fixed effects function(object, ...) UseMethod("fixef") fixef <- ## Short form for generic extractor for estimates of fixed effects function(object, ...) UseMethod("fixef") getCovariate <- ## Return the primary covariate associated with object according to form function(object, form = formula(object), data) UseMethod("getCovariate") getData <- ## Return the data.frame used to fit an object, if any was given in ## the call that produced it function(object) UseMethod("getData") getGroups <- ## Return the groups associated with object according to form. function(object, form = formula(object), level, data, sep = "/") UseMethod("getGroups") getGroupsFormula <- ## Return the formula(s) for the groups associated with object. ## The result is a one-sided formula unless asList is TRUE in which case ## it is a list of formulas, one for each level. function(object, asList = FALSE, sep = "/") UseMethod("getGroupsFormula") getResponse <- ## Return the response associated with object according to form. function(object, form = formula(object)) UseMethod("getResponse") isBalanced <- ## Check for balance, especially in a groupedData object function(object, countOnly = FALSE, level) UseMethod("isBalanced") isInitialized <- ## Determine if the object has been assigned a value function(object) UseMethod("isInitialized") Initialize <- ## Initialize objects function(object, data, ...) UseMethod("Initialize") intervals <- ## generate confidence intervals for the parameters in object function(object, level = 0.95, ...) UseMethod("intervals") logDet <- ## Returns the negative of the sum of the logarithm of the determinant function(object, ...) UseMethod("logDet") "matrix<-" <- ## Assignment of the matrix in an object representing special types of matrices function(object, value) UseMethod("matrix<-") Names <- ## Extract names of an object. Not needed if "names" were generic function(object, ...) UseMethod("Names") "Names<-" <- ## Assignment of names. Not needed if "names<-" were generic function(object, ..., value) UseMethod("Names<-") needUpdate <- ## Checks if model plug-in needs to be updated after an estimation cycle function(object) UseMethod("needUpdate") #pruneLevels <- # ## Returns the factor with the levels attribute truncated to only those # ## levels occuring in the factor # function(object) UseMethod("pruneLevels") random.effects <- ## Generic function for extracting the random effects ## If aug.frame is true, the returned data frame is augmented with ## values from the original data object, if available. The variables ## in the original data are collapsed over the groups variable by the ## function fun. function(object, ...) UseMethod("ranef") ranef <- ## Short form for generic function for extracting the random effects function(object, ...) UseMethod("ranef") recalc <- ## Recalculate condensed linear object, according to model plug-in function(object, conLin, ...) UseMethod("recalc") Variogram <- ## calculates variogram of a vector according to a distance matrix function(object, distance, ...) UseMethod("Variogram") ### Local variables: ### mode: S ### End: nlme/R/nlsList.R0000644000176000001440000001457112030057547013224 0ustar ripleyusers### Create a list of nls objects ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # nlsList <- ## A list of nls objects function(model, data, start, control, level, subset, na.action = na.fail, pool = TRUE) UseMethod("nlsList") nlsList.selfStart <- function (model, data, start, control, level, subset, na.action = na.fail, pool = TRUE) { mCall <- as.list(match.call())[-1] if (!inherits(data, "groupedData")) { stop("second argument must be a groupedData object") } marg <- substitute(model) if (mode(marg) != "name") { stop("cannot use an anonymous function for the model") } # Build up a call to the model function m <- call(as.character(marg)) args <- lapply(names(formals(eval(marg))), as.name) args[[1]] <- getCovariateFormula(data)[[2]] m[1 + seq_along(args)] <- args form <- formula(data) form[[3]][[2]] <- m mCall$model <- form do.call("nlsList.formula", mCall) } nlsList.formula <- function(model, data, start = NULL, control, level, subset, na.action = na.fail, pool = TRUE) { Call <- match.call() if (!missing(subset)) { data <- data[eval(asOneSidedFormula(Call[["subset"]])[[2]], data),, drop = FALSE] } if (!inherits(data, "data.frame")) data <- as.data.frame(data) data <- na.action(data) if (is.null(grpForm <- getGroupsFormula(model))) { if (inherits(data, "groupedData")) { if (missing(level)) level <- length(getGroupsFormula(data, asList = TRUE)) else if (length(level) > 1) { stop("multiple levels not allowed") } groups <- getGroups(data, level = level)[drop = TRUE] grpForm <- getGroupsFormula(data) } else { stop("'data' must be a \"groupedData\" object if 'formula' does not include groups") } } else { if (missing(level)) { level <- length(getGroupsFormula(model, asList = TRUE)) } else if (length(level) > 1) { stop("multiple levels not allowed") } model <- eval(parse(text = paste(paste(deparse(model[[2]]), collapse=" "), paste(deparse(getCovariateFormula(model)[[2]]), collapse=" "), sep = "~"))) groups <- getGroups(data, form = grpForm, level = level)[drop = TRUE] } if (is.null(start) && is.null(attr(data, "parameters"))) { ## no starting values ## checking for old-style selfStart functions FUN <- eval(model[[3]][[1]]) if (is.function(FUN) && class(FUN) != "selfStart" && !is.null(attr(FUN, "initial"))) { stop(paste("old-style self-starting model functions\n", "are no longer supported.\n", "New selfStart functions are available.\n", "Use\n", " SSfpl instead of fpl,\n", " SSfol instead of first.order.log,\n", " SSbiexp instead of biexp,\n", " SSlogis instead of logistic.\n", "If writing your own selfStart model, see\n", " \"help(selfStart)\"\n", "for the new form of the \"initial\" attribute.", sep="" ), domain = NA) } } controlvals <- nls.control() if(!missing(control)) { controlvals[names(control)] <- control } val <- lapply(split(data, groups), function(dat, formula, start, control, first = TRUE) { ans <- try({ data <- as.data.frame(dat) if (is.null(start)) { nls(formula = formula, data = data, control = control) } else { nls(formula = formula, data = data, start = start, control = control) } }) if (inherits(ans, "try-error")) NULL else ans }, formula = model, start = start, control = controlvals) if (inherits(data, "groupedData")) { ## saving labels and units for plots attr(val, "units") <- attr(data, "units") attr(val, "labels") <- attr(data, "labels") attr(val, "outer") <- attr(data, "outer") } attr(val, "dims") <- list(N = nrow(data), M = length(val)) attr(val, "call") <- Call attr(val,"groups") <- ordered(groups, levels = names(val)) attr(val, "origOrder") <- match(unique(as.character(groups)), names(val)) attr(val, "pool") <- pool attr(val, "groupsForm") <- grpForm class(val) <- c("nlsList", "lmList") val } ###*# Methods for standard generics coef.summary.nlsList <- function(object, ...) object$parameters formula.nlsList <- function(x, ...) eval(attr(x, "call")[["model"]]) summary.nlsList <- function(object, ...) { val <- NextMethod("summary") class(val) <- c("summary.nlsList", class(val)) val } update.nlsList <- function (object, model., ..., evaluate = TRUE) { call <- attr(object, "call") if (is.null(call)) stop("missing call attribute in \"nlsList\" object") extras <- match.call(expand.dots = FALSE)$... if (!missing(model.)) call$model <- update.formula(formula(object), model.) if(length(extras) > 0) { existing <- !is.na(match(names(extras), names(call))) ## do these individually to allow NULL to remove entries. for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if(any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if(evaluate) eval(call, parent.frame()) else call } #update.nlsList <- # function(object, model, data, start, control, level, subset, na.action, # pool, ...) #{ # thisCall <- as.list(match.call())[-(1:2)] # if (!missing(model)) { # names(thisCall)[match(names(thisCall), "model")] <- "object" # } # nextCall <- as.list(attr(object, "call")[-1]) # nextCall[names(thisCall)] <- thisCall # do.call("nlsList", nextCall) #} ### Local variables: ### mode: S ### End: nlme/R/reStruct.R0000644000176000001440000003146012030057547013403 0ustar ripleyusers### Methods for the class of random-effects structures. ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # ##*## Generics that should be implemented for any reStruct class ###*# Constructor reStruct <- function(object, pdClass = "pdLogChol", REML = FALSE, data = sys.frame(sys.parent())) { ## object can be: ## 1) a named list of formulas or pdMats with grouping factors as names ## (assume same order of nesting as order of names) ## 2) a formula of the form ~ x | g or ~ x | g1/g2/../gn ## 3) a list of formulas like ~x | g ## 4) a formula like ~x, a pdMat object, or a list of such ## formulas or objects . In this case, the data used to ## initialize the reStruct will be required to inherit from class ## "groupedData" ## 5) another reStruct object ## parametrization specifies the pdMat constructor to be used for all ## formulas used in object if (inherits(object, "reStruct")) { # little to do, return object if (!missing(REML)) attr(object, "settings")[1] <- as.integer(REML) object[] <- lapply(object, function(el, data) { pdMat(el, data = data) }, data = data) return(object) } plen <- NULL if (inherits(object, "formula")) { # given as a formula if (is.null(grpForm <- getGroupsFormula(object, asList = TRUE))) { object <- list( object ) } else { if (length(object) == 3) { # nlme type of formula object <- eval(parse(text = paste(deparse(getResponseFormula(object)[[2]]), deparse(getCovariateFormula(object)[[2]], width.cutoff=500), sep = "~"))) } else { object <- getCovariateFormula(object) } object <- rep( list(object), length( grpForm ) ) names( object ) <- names( grpForm ) } } else if (inherits(object, "pdMat")) { # single group, as pdMat if (is.null(formula(object))) { stop("\"pdMat\" element must have a formula") } object <- list(object) } else { if (data.class(object) != "list") { stop("'object' must be a list or a formula") } ## checking if nlme-type list - unnamed list of 2-sided formulas if (is.null(names(object)) && all(unlist(lapply(object, function(el) { inherits(el, "formula") && length(el) == 3})))) { object <- list(object) } else { ## checking if elements are valid object <- lapply(object, function(el) { if (inherits(el, "pdMat")) { if (is.null(formula(el))) { stop("\"pdMat\" elements must have a formula") } return(el) } if (inherits(el, "formula")) { grpForm <- getGroupsFormula(el) if (!is.null(grpForm)) { el <- getCovariateFormula(el) attr(el, "grpName") <- deparse(grpForm[[2]]) } return(el) } else { if (data.class(el) == "list" && all(unlist(lapply(el, function(el1) { inherits(el1, "formula") && length(el1) == 3 })))) { return(el) } else { stop("elements in 'object' must be formulas or \"pdMat\" objects") } } }) } if (is.null(namObj <- names(object))) { namObj <- rep("", length(object)) } aux <- unlist(lapply(object, function(el) { if (inherits(el, "formula") && !is.null(attr(el, "grpName"))) { attr(el, "grpName") } else "" })) auxNam <- namObj == "" if (any(auxNam)) { namObj[auxNam] <- aux[auxNam] } names(object) <- namObj } ## converting elements in object to pdMat objects object <- lapply(object, function(el, pdClass, data) { # if (data.class(el) == "pdSymm") # warning("class pdSymm may cause problems if using analytic gradients") pdMat(el, pdClass = pdClass, data = data) }, pdClass = pdClass, data = data) object <- rev(object) # inner to outer groups if (all(unlist(lapply(object, isInitialized)))) { plen <- unlist(lapply(object, function(el) length(coef(el)))) } pC <- unlist(lapply(object, data.class)) pC <- match(pC, c("pdSymm", "pdDiag", "pdIdent", "pdCompSymm", "pdLogChol"), 0) - 1 # if (any(pC == -1)) { # multiple nesting # pC <- -1 # } ## at this point, always require asDelta = TRUE and gradHess = 0 attr(object, "settings") <- c(as.integer(REML), 1, 0, pC) attr(object, "plen") <- plen class(object) <- "reStruct" object } ###*# Methods for pdMat generics corMatrix.reStruct <- function(object, ...) { if (!isInitialized(object)) { stop("cannot access the matrix of uninitialized objects") } as.list(rev(lapply(object, corMatrix))) } pdFactor.reStruct <- function(object) { unlist(lapply(object, pdFactor)) } pdMatrix.reStruct <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot access the matrix of uninitialized objects") } as.list(rev(lapply(object, pdMatrix, factor))) } ###*# Methods for standard generics as.matrix.reStruct <- function(x, ...) pdMatrix(x) coef.reStruct <- function(object, unconstrained = TRUE, ...) { unlist(lapply(object, coef, unconstrained)) } "coef<-.reStruct" <- function(object, ..., value) { if (is.null(plen <- attr(object, "plen"))) { stop("cannot change the parameter when ength of parameters is undefined") } if (length(value) != sum(plen)) { stop("cannot change parameter length of initialized objects") } ends <- cumsum(plen) starts <- 1 + c(0, ends[-length(ends)]) for (i in seq_along(object)) { coef(object[[i]]) <- value[(starts[i]):(ends[i])] } object } formula.reStruct <- function(x, asList = FALSE, ...) { as.list(lapply(x, formula, asList)) } getGroupsFormula.reStruct <- function(object, asList = FALSE, sep) { if (is.null(val <- rev(formula(object)))) { stop("cannot extract groups formula without a formula") } if (is.null(nVal <- names(val))) return(NULL) if (asList) { for(i in nVal) { val[[i]] <- eval(parse(text = paste("~",i))) } } else { val <- eval(parse(text = paste("~",paste(nVal, collapse = "/")))) } val } isInitialized.reStruct <- function(object) all(unlist(lapply(object, isInitialized))) Initialize.reStruct <- function(object, data, conLin, control = list(niterEM = 20), ...) { ## initialize reStruct object, possibly getting initial estimates seqO <- seq_along(object) ## check if names are defined lNams <- unlist(lapply(object, function(el) length(Names(el)))) == 0 if (any(lNams)) { # need to resolve formula names aux <- seqO[lNams] object[aux] <- lapply(object[aux], function(el, data) { pdConstruct(el, el, data = data) }, data = data) } ## obtaining the parameters mapping plen <- unlist(lapply(object, function(el) { if (isInitialized(el)) { length(coef(el)) } else { matrix(el) <- diag(length(Names(el))) length(coef(el)) } })) if (!all(plen > 0)) { stop("all elements of a \"reStruct\" object must have a non-zero size") } attr(object, "plen") <- plen ## checking initialization isIni <- unlist(lapply(object, isInitialized)) if (!all(isIni)) { # needs initialization dims <- conLin$dims Q <- dims$Q qvec <- dims$qvec[1:Q] auxInit <- lapply(split(0.375^2 * apply((conLin$Xy[, 1:sum(qvec), drop = FALSE])^2, 2, sum)/ rep(dims$ngrps[1:Q], qvec), rep(1:Q, qvec)), function(x) diag(x, length(x))) } for(i in seqO) { if (isIni[i]) { object[[i]] <- solve(object[[i]]) #working with precisions } else { matrix(object[[i]]) <- auxInit[[i]] } NULL } MEEM(object, conLin, control$niterEM) # refine initial estimates with EM } logDet.reStruct <- function(object, ...) { unlist(lapply(object, logDet)) } logLik.reStruct <- function(object, conLin, ...) { if(any(!is.finite(conLin$Xy))) return(-Inf) .C(mixed_loglik, as.double(conLin$Xy), as.integer(unlist(conLin$dims)), as.double(pdFactor(object)), as.integer(attr(object, "settings")), loglik = double(1), double(1))$loglik } "matrix<-.reStruct" <- function(object, value) { if (data.class(value) != "list") value <- list(value) if (length(value) != length(object)) { stop("cannot change the length of 'object'") } value <- rev(value) # same order as object for(i in seq_along(object)) { matrix(object[[i]]) <- value[[i]] } object } model.matrix.reStruct <- function(object, data, contrast = NULL, ...) { if (is.null(form <- formula(object, asList = TRUE))) { stop("cannot extract model matrix without formula") } form1 <- asOneFormula(form) if (length(form1) > 0) { data <- model.frame(form1, data = data) } else { data <- data.frame("(Intercept)" = rep(1, nrow(data))) } any2list <- function( object, data, contrast ) { form2list <- function(form, data, contrast) { if (length(asOneFormula( form )) == 0) {# the ~ 1 case return(list("(Intercept)" = rep(1, dim(data)[1]))) } as.data.frame(unclass(model.matrix(form, model.frame(form, data), contrast))) } if (inherits( object, "formula" )) { return( form2list( object, data, contrast ) ) } if (is.list( object ) ) { return( unlist(lapply(object, form2list, data = data, contrast = contrast), recursive = FALSE ) ) } return( NULL) } value <- as.list(lapply(form, any2list, data = data, contrast = contrast)) ## save the contrasts currently in effect for later predictions contr <- as.list(lapply( as.data.frame(data), function(x) if( inherits( x, "factor" ) && length(levels(x)) > 1) contrasts(x) else NULL )) contr[names(contrast)] <- contrast ncols <- as.vector(unlist(lapply(value, length))) nams <- if (length(value) == 1) { names(value[[1]]) } else { paste(rep(names(value), ncols), unlist(lapply(value, names)), sep = ".") } val <- matrix(unlist(value), nrow = nrow(data), dimnames = list(row.names(data), nams)) attr(val, "ncols") <- ncols attr(val, "nams") <- as.list(lapply(value, names)) attr(val, "contr") <- contr val } Names.reStruct <- function(object, ...) { as.list(lapply(object, Names)) } "Names<-.reStruct" <- function(object, ..., value) { if (length(object) != length(value)) { stop("incompatible lengths for object names") } for(i in seq_along(object)) { Names(object[[i]]) <- value[[i]] } object } needUpdate.reStruct <- function(object) FALSE print.reStruct <- function(x, sigma = 1, reEstimates, verbose = FALSE, ...) { ox <- x if (isInitialized(x)) { nobj <- length(x) if (is.null(namx <- names(x))) names(x) <- nobj:1 aux <- t(array(rep(names(x), nobj), c(nobj, nobj))) aux[lower.tri(aux)] <- "" x[] <- rev(x) names(x) <- rev(apply(aux, 1, function(x) paste(x[x != ""], collapse = " %in% "))) cat("Random effects:\n") for(i in seq_along(x)) { print(summary(x[[i]]), sigma, Level = names(x)[i], resid = (i == length(x)), ...) if (verbose) { cat("Random effects estimates:\n") print(reEstimates[[i]]) } cat("\n") } } else { cat("Uninitialized random effects structure\n") } invisible(ox) } recalc.reStruct <- function(object, conLin, ...) { conLin[["logLik"]] <- conLin[["logLik"]] + logLik(object, conLin) conLin } solve.reStruct <- function(a, b, ...) { a[] <- lapply(a, solve) a } summary.reStruct <- function(object, ...) object update.reStruct <- function(object, data, ...) { object } "[.reStruct" <- function(x, ...) { val <- NextMethod() if (length(val)) class(val) <- "reStruct" val } ### Local variables: ### mode: S ### End: nlme/R/modelStruct.R0000644000176000001440000000471311534450125014073 0ustar ripleyusers### modelStruct - a virtual class of model structures ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # ### Constructor ### There is no constructor function for this class (i.e. no function ### called modelStruct) because the class is virtual. ### Objects inheriting from this class are required to have a "conLin" ### (condensed linear model) attribute and a "pmap" (parameter map) ### attribute ###*# Methods for standard generics coef.modelStruct <- function(object, unconstrained = TRUE, ...) { unlist(lapply(object, coef, unconstrained)) } "coef<-.modelStruct" <- function(object, ..., value) { value <- as.numeric(value) parMap <- attr(object, "pmap") for(i in names(object)) { if (any(parMap[,i])) { coef(object[[i]]) <- value[parMap[,i]] } } object } formula.modelStruct <- function(x, ...) { lapply(x, formula) } needUpdate.modelStruct <- function(object) any(unlist(lapply(object, needUpdate))) print.modelStruct <- function(x, ...) { for(i in names(x)) { if ((length(aux <- coef(x[[i]]))) > 0) { cat(paste(i, " parameters:\n")) print(aux) } } invisible(x) } print.summary.modelStruct <- function(x, ...) { lapply(x, print, ...) invisible(x) } recalc.modelStruct <- function(object, conLin = attr(object, "conLin"), ...) { for(i in rev(seq_along(object))) { conLin <- recalc(object[[i]], conLin) NULL } conLin } summary.modelStruct <- function(object, ...) { value <- lapply(object, summary) class(value) <- "summary.modelStruct" value } ## will not work as it is. fitted needs more than one argument! update.modelStruct <- function(object, data, ...) { if (needUpdate(object)) { object[] <- lapply(object, update, c(list("." = object), as.list(data))) } object } ### Local Variables: ### mode:S ### End: nlme/R/VarCov.R0000644000176000001440000001075412030057547012773 0ustar ripleyusers## Contributed by Mary Lindstrom # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # getVarCov <- function(obj, ...) UseMethod("getVarCov") getVarCov.lme <- function(obj, individuals, type= c("random.effects","conditional","marginal"), ...) { type <- match.arg(type) if(any("nlme" == class(obj))) stop("not implemented for \"nlme\" objects") if(length(obj$group) > 1) stop("not implemented for multiple levels of nesting") sigma <- obj$sigma D <- as.matrix(obj$modelStruct$reStruct[[1]]) * sigma^2 if (type=="random.effects") { result <- D } else { result <- list() groups <- obj$groups[[1]] ugroups <- unique(groups) if (missing(individuals)) individuals <- as.matrix(ugroups)[1,] if (is.numeric(individuals)) individuals <- ugroups[individuals] for (individ in individuals) { indx <- (1:length(ugroups))[individ==ugroups] if (!length(indx)) stop(gettextf("individual %s was not used in the fit", sQuote(individ)), domain = NA) if (is.na(indx)) stop(gettextf("individual %s was not used in the fit", sQuote(individ)), domain = NA) ind <- groups == individ if(!is.null(obj$modelStruct$corStruct)) { V <- corMatrix(obj$modelStruct$corStruct)[[as.character(individ)]] } else V <- diag(sum(ind)) if(!is.null(obj$modelStruct$varStruct)) sds <- 1/varWeights(obj$modelStruct$varStruct)[ind] else sds <- rep(1, sum(ind)) sds <- obj$sigma * sds cond.var <- t(V * sds) * sds dimnames(cond.var) <- list(1:nrow(cond.var),1:ncol(cond.var)) if (type=="conditional") result[[as.character(individ)]] <- cond.var else { Z <- model.matrix(obj$modelStruct$reStruc, getData(obj))[ind, , drop = FALSE] result[[as.character(individ)]] <- cond.var + Z %*% D %*% t(Z) } } } class(result) <- c(type,"VarCov") attr(result,"group.levels") <- names(obj$groups) result } getVarCov.gls <- function(obj, individual = 1, ...) { S <- corMatrix(obj$modelStruct$corStruct)[[individual]] if (!is.null( obj$modelStruct$varStruct)) { ind <- obj$groups==individual vw <- 1/varWeights(obj$modelStruct$varStruct)[ind] } else vw <- rep(1,nrow(S)) vars <- (obj$sigma * vw)^2 result <- t(S * sqrt(vars))*sqrt(vars) class(result) <- c("marginal","VarCov") attr(result,"group.levels") <- names(obj$groups) result } print.VarCov <- function(x, corr = FALSE, stdevs = TRUE, digits = 5, ...) { pvc <- function(x, type, corr, stdevs, digits) { cat(c("Random effects","Conditional", "Marginal")[match(type, c("random.effects","conditional", "marginal"))], " ", sep = "") x <- as.matrix(x) class(x) <- NULL attr(x,"group.levels") <- NULL if (corr) { cat("correlation matrix\n") sds <- sqrt(diag(x)) print(signif(t(x/sds)/sds,digits)) } else { cat("variance covariance matrix\n") print(signif(x,digits)) if(stdevs) sds <- sqrt(diag(x)) } if (stdevs) cat(" Standard Deviations:",signif(sds,digits),"\n") } if (!is.list(x)) pvc(x,class(x)[1],corr,stdevs,digits) else { for (nm in names(x)) { cat(attr(x,"group.levels"),nm,"\n") pvc(x[[nm]],class(x)[1],corr,stdevs,digits) } } invisible(x) } nlme/R/varFunc.R0000644000176000001440000010676212030057547013204 0ustar ripleyusers### Classes of variance functions ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # ##*## Generics that should be implemented for any varFunc class varWeights <- ## Calculates the weights of the variance function function(object) UseMethod("varWeights") ##*## varFunc - a virtual class of variance functions ###*# Constructor varFunc <- ## Can take as argument either a varFunc object, in which case it does ## nothing, a formula or a character string , in which case it ## calls varFixed function(object) { if(is.null(object)) return(object) # NULL object - no varFunc structure if (inherits(object, "varFunc")) { ## constructing from another varFunc object return(object) } if (inherits(object, "formula") || is.character(object)) { ## constructing from a formula of the form ~ x return(varFixed(asOneSidedFormula(object))) } stop("can only construct \"varFunc\" object from another \"varFunc\" object, a formula, or a character string") } ###*# Methods for local generics varWeights.varFunc <- function(object) attr(object, "weights") ###*# Methods for standard generics coef.varFunc <- function(object, unconstrained = TRUE, allCoef = FALSE, ...) { ### checking if initialized wPar <- attr(object, "whichFix") if (is.null(wPar) || (length(object) != (length(wPar) - sum(wPar)))) { stop("cannot extract parameters of uninitialized object") } if (unconstrained) { if (allCoef) { val <- double(length(wPar)) if (any(wPar)) { val[wPar] <- attr(object, "fixed") } if (any(!wPar)) { val[!wPar] <- as.vector(object) } } else { val <- as.vector(object) } val } else { stop(gettextf("do not know how to get coefficients for %s object", dQuote(class(object)[1])), domain = NA) } } "covariate<-.varFunc" <- function(object, value) { value <- as.numeric(value) if (!is.null(aux <- getCovariate(object))) { if (length(aux) != length(value)) { stop("cannot change the length of covariate in \"varFunc\" object") } } attr(object, "covariate") <- value object } formula.varFunc <- function(x, ...) eval(attr(x, "formula")) getCovariate.varFunc <- function(object, form, data) attr(object, "covariate") getGroups.varFunc <- function(object, form, level, data, sep) attr(object, "groups") Initialize.varFunc <- function(object, data, ...) { if (is.null(varWeights(object))) { attr(object, "weights") <- rep(1, dim(data)[1]) } if (is.null(logLik(object))) { attr(object, "logLik") <- 0 } object } ## NB no nobs logLik.varFunc <- function(object, data, ...) { if (is.null(ll <- attr(object, "logLik"))) return(NULL) attr(ll, "df") <- length(object) class(ll) <- "logLik" ll } print.summary.varFunc <- function(x, header = TRUE, ...) { ox <- x class(x) <- attr(x, "oClass") if (length(aux <- coef(x, uncons = FALSE, allCoef = TRUE)) > 0) { if (header) cat("Variance function:\n") cat(paste(" Structure: ", attr(x, "structName"), "\n", sep = "")) cat(paste(" Formula:", deparse(formula(x)),"\n")) cat(" Parameter estimates:\n") print(aux) } else { if (inherits(x, "varIdent")) { ## varIdent with no parameters - nothing to print return() } cat("Variance function structure of class", class(x)[1], "with no parameters, or uninitialized\n") } invisible(ox) } print.varFunc <- function(x, ...) { if (length(aux <- coef(x, uncons = FALSE, allCoef = TRUE)) > 0) { cat("Variance function structure of class", class(x)[1], "representing\n") print(aux, ...) } else { cat("Variance function structure of class", class(x)[1], "with no parameters, or uninitialized\n") } invisible(x) } recalc.varFunc <- function(object, conLin, ...) { conLin$Xy[] <- conLin$Xy * varWeights(object) conLin$logLik <- conLin$logLik + logLik(object) conLin } summary.varFunc <- function(object, structName = class(object)[1], ...) { attr(object, "structName") <- structName attr(object, "oClass") <- class(object) class(object) <- "summary.varFunc" object } update.varFunc <- function(object, data, ...) { if (needUpdate(object)) { covariate(object) <- eval(getCovariateFormula(object)[[2]], data) } object } ##*## Classes that substitute for (i.e. inherit from) varFunc ###*# varFixed - fixed weights ####* Constructor varFixed <- function(value = ~ 1) { if (!inherits(value, "formula")) { stop("'value' must be a one sided formula") } form <- asOneSidedFormula(value) if (length(all.vars(getCovariateFormula(form))) == 0) { stop("'form' must have a covariate") } if (!is.null(getGroupsFormula(form))) { form <- getCovariateFormula(form) warning("ignoring 'group' in \"varFixed\" formula") } value <- numeric(0) attr(value, "formula") <- form class(value) <- c("varFixed", "varFunc") value } ###*# Methods for standard generics coef.varFixed <- function(object, ...) numeric(0) "coef<-.varFixed" <- function(object, ..., value) object Initialize.varFixed <- function(object, data, ...) { form <- formula(object) if (any(is.na(match(all.vars(form), names(data))))) { ## cannot evaluate covariate on data stop("all variables used in 'formula' must be in 'data'") } attr(object, "needUpdate") <- FALSE attr(object, "covariate") <- getCovariate(data, form) attr(object, "logLik") <- sum(log(attr(object, "weights") <- 1/sqrt(abs(attr(object,"covariate"))))) object } print.summary.varFixed <- function(x, header = TRUE, ...) { cat("Variance function:\n") cat(" Structure: fixed weights\n") cat(paste(" Formula:", deparse(formula(x)),"\n")) invisible(x) } summary.varFixed <- function(object, structName, ...) { class(object) <- "summary.varFixed" object } ###*# varFIdent - equal variances per stratum structure ####* Constructor varIdent <- function(value = numeric(0), form = ~ 1, fixed = NULL) { if (is.null(getGroupsFormula(form))) { # constant value value <- numeric(0) attr(value, "fixed") <- NULL # nothing to estimate } else { if ((lv <- length(value)) > 0) { # initialized if (is.null(grpNames <- names(value)) && (lv > 1)) { stop("initial values must have group names in 'varIdent'") } value <- unlist(value) # may be a list with names if (any(value <= 0)) { stop("initial values for 'varIdent' must be > 0") } value <- log(value) # unconstrained form } else grpNames <- NULL attr(value, "groupNames") <- grpNames if (!is.null(fixed)) { fix <- attr(value, "fixed") <- log(unlist(fixed)) if (is.null(fixNames <- names(fix))) { stop("fixed parameters must have names in 'varIdent'") } if (!is.null(attr(value, "groupNames"))) { attr(value, "groupNames") <- c(attr(value, "groupNames"), fixNames) } } } attr(value, "formula") <- asOneSidedFormula(form) class(value) <- c("varIdent", "varFunc") value } ###*# Methods for standard generics coef.varIdent <- function(object, unconstrained = TRUE, allCoef = FALSE, ...) { if (!is.null(getGroupsFormula(object)) && !is.null( wPar <- attr(object, "whichFix"))) { ## different groups variances if (unconstrained && !allCoef) { return(as.vector(object)) } val <- double(length(wPar)) if (any(wPar)) { val[wPar] <- attr(object, "fixed") } if (any(!wPar)) { val[!wPar] <- as.vector(object) } if (!unconstrained) { val <- c(1, exp(val)) names(val) <- attr(object, "groupNames") if (!allCoef) { val <- val[c(FALSE, !attr(object, "whichFix"))] } } val } else { numeric(0) } } "coef<-.varIdent" <- function(object, ..., value) { if (!(is.null(grps <- getGroups(object)) || all(attr(object, "whichFix")))) { ## different group variances & varying parameters value <- as.numeric(value) nGroups <- length(attr(object, "groupNames")) # if (nGroups == 0) { # stop("Cannot assign parameters of uninitialized varIdent object") # } ## fix from PR#9831 nFixed <- sum(as.numeric(attr(object,"whichFix"))) if (length(value) != nGroups - nFixed - 1) { stop("cannot change the length of the \"varIdent\" parameter after initialization") } object[] <- value natPar <- coef(object, FALSE, allCoef = TRUE) attr(object, "logLik") <- sum(log(attr(object, "weights") <- 1/natPar[grps])) } object } Initialize.varIdent <- function(object, data, ...) { if (!is.null(form <- formula(object)) && !is.null(grpForm <- getGroupsFormula(form))) { if (length(coef(object)) > 0) { # initialized - nothing to do return(object) } strat <- attr(object, "groups") <- as.character(getGroups(data, form, level = length(splitFormula(grpForm, sep = "*")), sep = "*")) if (length((uStrat <- unique(strat))) == 1) { ## equal variances structure return(Initialize(varIdent(), data)) } if (!is.null(fix <- attr(object, "fixed"))) { fixNames <- names(fix) if (any(is.na(match(fixNames, uStrat)))) { stop("fixed parameter names in 'varIdent' must be a subset of group names") } uStratVar <- uStrat[is.na(match(uStrat, fixNames))] # varying strata uStrat <- c(uStratVar, fixNames) } else { # nothing fixed uStratVar <- uStrat } if ((nStratVar <- length(uStratVar)) == 0) { stop("cannot fix variances in all groups") } if (nStratVar > 1) { if (length(object) <= 1) { ## repeat for all groups oldAttr <- attributes(object) if (length(object) > 0) { # initialized object <- rep(as.vector(object), nStratVar - 1) } else { # uninitialized object <- rep(0, nStratVar - 1) } attributes(object) <- oldAttr attr(object, "groupNames") <- uStrat } else { if (length(as.vector(object)) != (len <- (nStratVar - 1))) { stop(gettextf("initial value for \"varIdent\" should be of length %d", len), domain = NA) } if (!is.null(stN <- attr(object, "groupNames"))) { missStrat <- uStrat[is.na(match(uStrat, stN))] if (length(missStrat) != 1) { stop("names of starting value for \"varIdent\" object must contain all but one of the stratum levels") } stN <- c(missStrat, stN) if ((length(stN) != length(uStrat)) || any(sort(stN) != sort(uStrat))) { stop("nonexistent group names for initial values in 'varIdent'") } attr(object, "groupNames") <- stN } else { attr(object, "groupNames") <- uStrat } } } else { # fixed for all but one strata oldAttr <- attributes(object) object <- numeric(0) attributes(object) <- oldAttr attr(object, "groupNames") <- uStrat } attr(object, "whichFix") <- !is.na(match(attr(object, "groupNames")[-1], names(fix))) if (all(attr(object, "whichFix"))) { if (all(attr(object, "fixed") == 0)) { ## equal variances structure return(Initialize(varIdent(), data)) } else { oldAttr <- attributes(object) object <- numeric(0) attributes(object) <- oldAttr } } ## initializing weights and logDet attr(object, "logLik") <- sum(log(attr(object, "weights") <- 1/coef(object, FALSE, allCoef = TRUE)[strat])) object } else { # no strata attr(object, "whichFix") <- TRUE NextMethod() } } needUpdate.varIdent <- function(object) FALSE recalc.varIdent <- function(object, conLin, ...) { if (is.null(formula(object))) conLin else NextMethod() } summary.varIdent <- function(object, structName = if (is.null(formula(object))) "Constant variance" else "Different standard deviations per stratum", ...) { summary.varFunc(object, structName) } ###*# varPower - power of variance covariate variance structure ####* Constructor varPower <- function(value = numeric(0), form = ~ fitted(.), fixed = NULL) { value <- unlist(value) # may be given as a list fixed <- attr(value, "fixed") <- unlist(fixed) attr(value, "formula") <- form <- asOneSidedFormula(form) if (length(all.vars(getCovariateFormula(form))) == 0) { stop("'form' must have a covariate") } if (!is.null(getGroupsFormula(form))) { if (is.null(grpNames <- names(value)) && (length(value) > 1)) { stop("initial values must have group names in 'varPower'") } if (!is.null(fixed)) { if (is.null(names(fixed))) { stop("fixed parameters must have group names in 'varPower'") } } attr(value, "groupNames") <- c(grpNames, names(fixed)) } else { # single parameter attr(value, "whichFix") <- !is.null(fixed) } class(value) <- c("varPower", "varFunc") value } ###*# Methods for standard generics coef.varPower <- function(object, unconstrained = TRUE, allCoef = FALSE, ...) { if (((length(object) == 0) && (!allCoef || is.null(attr(object, "fixed")))) || is.null(wPar <- attr(object, "whichFix"))) { ## uninitialized return(numeric(0)) } val <- double(length(wPar)) if (any(wPar)) { val[wPar] <- attr(object, "fixed") } if (any(!wPar)) { val[!wPar] <- as.vector(object) } if (!is.null(getGroupsFormula(object))) { ##different values per group names(val) <- attr(object, "groupNames") } else { names(val) <- "power" } if (!allCoef) { val <- val[!wPar] } val } "coef<-.varPower" <- function(object, ..., value) { if ((len <- length(object)) > 0) { # varying parameters value <- as.numeric(value) if (length(value) != len) { stop("cannot change the length of the \"varStruct\" parameter after initialization") } object[] <- value aux <- coef(object, FALSE, allCoef = TRUE) if (!is.null(grps <- getGroups(object))) { aux <- aux[grps] } covariateObj <- getCovariate(object) if(is.null(covariateObj)) covariateObj <- NA attr(object, "logLik") <- sum(log(attr(object, "weights") <- abs(covariateObj)^(-aux))) } else { stop("cannot change coefficients before initialization or when all parameters are fixed") } object } Initialize.varPower <- function(object, data, ...) { form <- formula(object) if (all(!is.na(match(all.vars(getCovariateFormula(form)), names(data))))) { ## can evaluate covariate on data attr(object, "needUpdate") <- FALSE attr(object, "covariate") <- getCovariate(data, form) } else { attr(object, "needUpdate") <- TRUE } if (!is.null(grpForm <- getGroupsFormula(form))) { strat <- as.character(getGroups(data, form, level = length(splitFormula(grpForm, sep = "*")), sep = "*")) uStrat <- unique(strat) if (length(uStrat) > 1) { # multi-groups attr(object, "groups") <- strat if (!is.null(attr(object, "fixed"))) { fixNames <- names(attr(object, "fixed")) if (is.null(fixNames)) { stop("fixed parameters must have group names") } if (any(is.na(match(fixNames, uStrat)))) { stop("mismatch between group names and fixed values names") } } else { fixNames <- NULL } uStratVar <- uStrat[is.na(match(uStrat, fixNames))] nStratVar <- length(uStratVar) attr(object, "whichFix") <- !is.na(match(uStrat, fixNames)) if (nStratVar > 0) { if (length(object) <= 1) { ## repeat for all groups names(object) <- NULL oldAttr <- attributes(object) if (length(object) > 0) { object <- rep(as.vector(object), nStratVar) } else { object <- rep(0, nStratVar) } attributes(object) <- oldAttr attr(object, "groupNames") <- uStrat names(object) <- uStratVar } else { if (length(as.vector(object)) != nStratVar) { stop(gettextf("initial value for \"varPower\" should be of length %d", nStratVar), domain = NA) } stN <- attr(object, "groupNames") # must have names if (length(stN) != length(uStrat) || any(sort(stN) != sort(uStrat))) { stop("nonexistent group names for initial values in \"varPower\"") } } } else { # all parameters are fixed if (all(attr(object, "fixed") == 0)) { ## equal variances structure return(Initialize(varIdent(), data)) } else { oldAttr <- attributes(object) object <- numeric(0) attributes(object) <- oldAttr attr(object, "groupNames") <- uStrat } } } else { # single stratum attr(object, "formula") <- getCovariateFormula(formula(object)) attr(object, "whichFix") <- !is.null(attr(object, "fixed")) } } if (is.null(getGroupsFormula(object))) { ## single stratum if (attr(object, "whichFix")) { if (attr(object, "fixed") == 0) { ## equal variances structure return(Initialize(varIdent(), data)) } else { # fixed power oldAttr <- attributes(object) object <- numeric(0) attributes(object) <- oldAttr } } else { len <- length(as.vector(object)) if (len == 0) { # uninitialized oldAttr <- attributes(object) object <- 0 attributes(object) <- oldAttr } else if (len > 1) { stop("initial value for \"varPower\" should be of length 1") } } } if (!is.null(covar <- getCovariate(object))) { natPar <- coef(object, allCoef = TRUE) if (!is.null(grps <- getGroups(object))) { natPar <- natPar[grps] } attr(object, "logLik") <- sum(log(attr(object, "weights") <- abs(covar^(-natPar)))) object } else { NextMethod() } } summary.varPower <- function(object, structName = "Power of variance covariate", ...) { if (!is.null(getGroupsFormula(object))) { structName <- paste(structName, " different strata", sep = ",") } summary.varFunc(object, structName) } update.varPower <- function(object, data, ...) { val <- NextMethod() if (length(val) == 0) { # chance to update weights aux <- coef(val, allCoef = TRUE) if (!is.null(grps <- getGroups(val))) { aux <- aux[grps] } attr(val, "logLik") <- sum(log(attr(val, "weights") <- abs(getCovariate(val))^(-aux))) } val } ###*# varExp - exponential of variance covariate variance structure ####* Constructor varExp <- function(value = numeric(0), form = ~ fitted(.), fixed = NULL) { value <- unlist(value) # may be given as a list fixed <- attr(value, "fixed") <- unlist(fixed) attr(value, "formula") <- form <- asOneSidedFormula(form) if (length(all.vars(getCovariateFormula(form))) == 0) { stop("'form' must have a covariate") } if (!is.null(getGroupsFormula(form))) { if (is.null(grpNames <- names(value)) && (length(value) > 1)) { stop("initial values must have group names in 'varExp'") } if (!is.null(fixed)) { if (is.null(names(fixed))) { stop("fixed parameters must have group names in 'varExp'") } } attr(value, "groupNames") <- c(grpNames, names(fixed)) } else { attr(value, "whichFix") <- !is.null(fixed) } class(value) <- c("varExp", "varFunc") value } ###*# Methods for standard generics coef.varExp <- function(object, unconstrained = TRUE, allCoef = FALSE, ...) { if (((length(object) == 0) && (!allCoef || is.null(attr(object, "fixed")))) || is.null( wPar <- attr(object, "whichFix"))) { return(numeric(0)) } val <- double(length(wPar)) if (any(wPar)) { val[wPar] <- attr(object, "fixed") } if (any(!wPar)) { val[!wPar] <- as.vector(object) } if (!is.null(getGroupsFormula(object))) { ##different values per group names(val) <- attr(object, "groupNames") } else { names(val) <- "expon" } if (!allCoef) { val <- val[!wPar] } val } "coef<-.varExp" <- function(object, ..., value) { if (length(object) > 0) { # varying parameters value <- as.numeric(value) if (length(value) != length(object)) { stop("cannot change the length of the \"varExp\" parameter after initialization") } object[] <- value aux <- coef(object, FALSE, allCoef = TRUE) if (!is.null(grps <- getGroups(object))) { aux <- aux[grps] } attr(object, "logLik") <- sum(log(attr(object, "weights") <- exp(-aux * getCovariate(object)))) } else { stop("cannot change coefficients before initialization or when all parameters are fixed") } object } Initialize.varExp <- function(object, data, ...) { form <- formula(object) if (all(!is.na(match(all.vars(getCovariateFormula(form)), names(data))))) { ## can evaluate covariate on data attr(object, "needUpdate") <- FALSE attr(object, "covariate") <- getCovariate(data, form) } else { attr(object, "needUpdate") <- TRUE } if (!is.null(grpForm <- getGroupsFormula(form))) { strat <- as.character(getGroups(data, form, level = length(splitFormula(grpForm, sep = "*")), sep = "*")) uStrat <- unique(strat) if (length(uStrat) > 1) { # multi-groups attr(object, "groups") <- strat if (!is.null(attr(object, "fixed"))) { fixNames <- names(attr(object, "fixed")) if (is.null(fixNames)) { stop("fixed parameters must have group names") } if (any(is.na(match(fixNames, uStrat)))) { stop("mismatch between group names and fixed values names") } } else { fixNames <- NULL } uStratVar <- uStrat[is.na(match(uStrat, fixNames))] nStratVar <- length(uStratVar) attr(object, "whichFix") <- !is.na(match(uStrat, fixNames)) if (nStratVar > 0) { if (length(object) <= 1) { ## repeat for all groups names(object) <- NULL oldAttr <- attributes(object) if (length(object) > 0) { object <- rep(as.vector(object), nStratVar) } else { object <- rep(0, nStratVar) } attributes(object) <- oldAttr attr(object, "groupNames") <- uStrat names(object) <- uStratVar } else { if (length(as.vector(object)) != nStratVar) { stop(gettextf("initial value for \"varExp\" should be of length %d", nStratVar), domain = NA) } stN <- attr(object, "groupNames") #must have names if ((length(stN) != length(uStrat)) || any(sort(stN) != sort(uStrat))) { stop("nonexistent group names for initial values in \"varExp\"") } } } else { if (all(attr(object, "fixed") == 0)) { ## equal variances structure return(Initialize(varIdent(), data)) } else { oldAttr <- attributes(object) object <- numeric(0) attributes(object) <- oldAttr attr(object, "groupNames") <- uStrat } } } else { # single stratum attr(object, "formula") <- getCovariateFormula(formula(object)) attr(object, "whichFix") <- !is.null(attr(object, "fixed")) } } if (is.null(getGroupsFormula(object))) { ## single stratum if (attr(object, "whichFix")) { if (!attr(object, "fixed")) { ## equal variances structure return(Initialize(varIdent(), data)) } else { oldAttr <- attributes(object) object <- numeric(0) attributes(object) <- oldAttr } } else { len <- length(as.vector(object)) if (len == 0) { # uninitialized oldAttr <- attributes(object) object <- 0 attributes(object) <- oldAttr } else if (len > 1) { stop("initial value for \"varExp\" should be of length 1") } } } if (!is.null(covar <- getCovariate(object))) { natPar <- coef(object, allCoef = TRUE) if (!is.null(grps <- getGroups(object))) { natPar <- natPar[grps] } attr(object, "logLik") <- sum(log(attr(object, "weights") <- exp(-natPar * covar))) object } else { NextMethod() } } summary.varExp <- function(object, structName = "Exponential of variance covariate", ...) { if (!is.null(getGroupsFormula(object))) { structName <- paste(structName, " different strata", sep = ",") } summary.varFunc(object, structName) } update.varExp <- function(object, data, ...) { val <- NextMethod() if (length(val) == 0) { # chance to update weights aux <- coef(val, allCoef = TRUE) if (!is.null(grps <- getGroups(val))) { aux <- aux[grps] } attr(val, "logLik") <- sum(log(attr(val, "weights") <- exp(-aux * getCovariate(val)))) } val } ###*# varConstPower - Constant plus power of covariance function ###*# variance structure ####* Constructor varConstPower <- ## Constructor for the varConstPower class function(const = numeric(0), power = numeric(0), form = ~ fitted(.), fixed = NULL) { CPconstr <- function(val, form, nam) { if ((lv <- length(val)) == 0) return(val) if (lv > 2) { stop(gettextf("%s can have at most two components", nam), domain = NA) } if (is.null(nv <- names(val))) { names(val) <- c("const", "power")[1:lv] } else { if (any(is.na(match(nv, c("const", "power"))))) { stop(gettextf("%s can only have names \"const\" and \"power\"", nam), domain = NA) } } nv <- names(val) if (data.class(val) == "list") { val <- lapply(val, unlist) grpNames <- unique(unlist(lapply(val, names))) } else { # must be a vector or a scalar if (!is.numeric(val)) { stop(gettextf("%s can only be a list or numeric", nam), domain = NA) } val <- as.list(val) names(val) <- nv grpNames <- NULL } if (!is.null(getGroupsFormula(form))) { if (any(unlist(lapply(val, function(el) { (length(el) > 1) && is.null(names(el)) })))) { stop(gettextf("%s must have group names in 'varConstPower'", nam), domain = NA) } attr(val, "groupNames") <- grpNames } if (length(val$const) > 0) { if (any(val$const <= 0)) { stop("constant in \"varConstPower\" structure must be > 0") } val$const <- log(val$const) } list(const = val$const, power = val$power) } value <- list(const = const, power = power) form <- asOneSidedFormula(form) if (length(all.vars(getCovariateFormula(form))) == 0) { stop("'form' must have a covariate") } ## initial value may be given as a vector or list. If groups are ## present and different initial values are given for each group, then ## it must be a list with components "const" and/or "power" value <- CPconstr(value, form, "Value") fixed <- CPconstr(fixed, form, "Fixed") attr(value, "formula") <- form attr(value, "groupNames") <- unique(c(attr(value, "groupNames"), attr(attr(value[["const"]], "fixed"), "groupNames"), attr(attr(value[["power"]], "fixed"), "groupNames"))) for (i in names(fixed)) { attr(value[[i]], "fixed") <- c(fixed[[i]]) } if (is.null(getGroupsFormula(form))) { # no groups whichFix <- array(FALSE, c(2,1), list(c("const", "power"), NULL)) whichFix[,1] <- unlist(lapply(value, function(el) !is.null(attr(el, "fixed")))) attr(value, "whichFix") <- whichFix } class(value) <- c("varConstPower", "varFunc") value } ###*# Methods for standard generics coef.varConstPower <- function (object, unconstrained = TRUE, allCoef = FALSE, ...) { wPar <- attr(object, "whichFix") nonInit <- !unlist(lapply(object, length)) nonInit <- is.null(wPar) || (any(nonInit) && !all(c(wPar[nonInit, ]))) if (nonInit || (!allCoef && (length(unlist(object)) == 0))) { return(numeric(0)) } val <- array(0, dim(wPar), dimnames(wPar)) for (i in names(object)) { if (any(wPar[i, ])) { val[i, wPar[i, ]] <- attr(object[[i]], "fixed") } if (any(!wPar[i, ])) { val[i, !wPar[i, ]] <- c(object[[i]]) } } if (!unconstrained) { val[1, ] <- exp(val[1, ]) } if (!allCoef) { val <- list(const = if (!all(wPar[1, ])) val[1, !wPar[1, ]] else NULL, power = if (!all(wPar[2, ])) val[2, !wPar[2, ]] else NULL) val <- lapply(val, function(el) if(length(el) == 1) as.vector(el) else el) val <- unlist(val[!unlist(lapply(val, is.null))]) } else { val <- val[, 1:ncol(val)] } val } "coef<-.varConstPower" <- function(object, ..., value) { if (length(unlist(object)) > 0) { # varying parameters value <- as.numeric(value) if (length(value) != length(unlist(object))) { stop("cannot change the length of the parameter after initialization") } start <- 0 for(i in names(object)) { if (aux <- length(object[[i]])) { object[[i]][] <- value[start + (1:aux)] start <- start + aux } } natPar <- as.matrix(coef(object, FALSE, allCoef = TRUE)) if (!is.null(grps <- getGroups(object))) { natPar <- natPar[, grps] } attr(object, "logLik") <- sum(log(attr(object, "weights") <- 1/(natPar[1,] + abs(getCovariate(object))^natPar[2,]))) } else { stop("cannot change coefficients before initialization or when all parameters are fixed") } object } Initialize.varConstPower <- function(object, data, ...) { form <- formula(object) if (all(!is.na(match(all.vars(getCovariateFormula(form)), names(data))))) { ## can evaluate covariate on data attr(object, "needUpdate") <- FALSE attr(object, "covariate") <- getCovariate(data, form) } else { attr(object, "needUpdate") <- TRUE } dfltCoef <- c(const = log(0.1), power = 0) if (!is.null(grpForm <- getGroupsFormula(form))) { strat <- as.character(getGroups(data, form, level = length(splitFormula(grpForm, sep = "*")), sep = "*")) uStrat <- unique(strat) whichFix <- array(FALSE, c(2, length(uStrat)), list(c("const", "power"), uStrat)) if (length(uStrat) > 1) { # multi-groups attr(object, "groups") <- strat for(i in names(object)) { if (!is.null(attr(object[[i]], "fixed"))) { fixNames <- names(attr(object[[i]], "fixed")) if (is.null(fixNames)) { stop("fixed parameters must have group names") } if (any(is.na(match(fixNames, uStrat)))) { stop("mismatch between group names and fixed values names") } } else { fixNames <- NULL } uStratVar <- uStrat[is.na(match(uStrat, fixNames))] nStratVar <- length(uStratVar) whichFix[i,] <- !is.na(match(uStrat, fixNames)) if (nStratVar > 0) { if (length(object[[i]]) <= 1) { ## repeat for all groups names(object[[i]]) <- NULL oldAttr <- attributes(object[[i]]) if (length(object[[i]]) > 0) { object[[i]] <- rep(as.vector(object[[i]]), nStratVar) } else { object[[i]] <- rep(dfltCoef[i], nStratVar) } attributes(object[[i]]) <- oldAttr names(object[[i]]) <- uStratVar } else { if (length(as.vector(object[[i]])) != nStratVar) { stop(gettext("initial value should be of length %d", nStratVar), domain = NA) } stN <- names(object[[i]]) # must have names if ((length(stN) != length(uStratVar)) || any(sort(stN) != sort(uStratVar))) { stop("nonexistent group names for initial values") } } } } if (all(whichFix) && all(attr(object[["const"]], "fixed") == 0) && all(attr(object[["power"]], "fixed") == 0)) { ## equal variances structure return(Initialize(varIdent(), data)) } for(i in names(object)) { if (all(whichFix[i,])) { oldAttr <- attributes(object[[i]]) object[[i]] <- numeric(0) attributes(object[[i]]) <- oldAttr } } attr(object, "whichFix") <- whichFix attr(object, "groupNames") <- uStrat return(NextMethod()) } } ## single stratum whichFix <- attr(object, "whichFix") if (all(whichFix) && !any(unlist(lapply(object, function(el) attr(el, "fixed"))))) { ## equal variances structure return(Initialize(varIdent(), data)) } for(i in names(object)) { if (all(whichFix[i,])) { oldAttr <- attributes(object[[i]]) object[[i]] <- numeric(0) attributes(object[[i]]) <- oldAttr } else { if (length(object[[i]]) == 0) { object[[i]] <- dfltCoef[i] } } } aux <- 2 - sum(whichFix[,1]) if (length(as.vector(unlist(object))) != aux) { stop(gettext("initial value should be of length %d", aux), domain = NA) } NextMethod() } summary.varConstPower <- function(object, structName = "Constant plus power of variance covariate", ...) { if (!is.null(getGroupsFormula(object))) { structName <- paste(structName, " different strata", sep = ",") } summary.varFunc(object, structName) } update.varConstPower <- function(object, data, ...) { val <- NextMethod() if (length(unlist(val)) == 0) { # chance to update weights aux <- as.matrix(coef(val, FALSE, allCoef = TRUE)) if (!is.null(grps <- getGroups(val))) { aux <- aux[, grps] } attr(val, "logLik") <- sum(log(attr(val, "weights") <- 1/(aux[1,] + abs(getCovariate(val))^aux[2,]))) } val } ###*# varFComb - combination of variance function structures ####* Constructor varComb <- ## constructor for the varComb class function(...) { val <- list(...) if (!all(unlist(lapply(val, inherits, "varFunc")))) { stop("all arguments to 'varComb' must be of class \"varFunc\".") } if (is.null(names(val))) { names(val) <- LETTERS[1:length(val)] } class(val) <- c("varComb", "varFunc") val } ####* Methods for local generics varWeights.varComb <- function(object) { apply(as.data.frame(lapply(object, varWeights)), 1, prod) } ###*# Methods for standard generics coef.varComb <- function(object, unconstrained = TRUE, allCoef = FALSE, ...) { unlist(lapply(object, coef, unconstrained, allCoef)) } "coef<-.varComb" <- function(object, ..., value) { plen <- attr(object, "plen") if ((len <- sum(plen)) > 0) { # varying parameters if (length(value) != len) { stop("cannot change parameter length of initialized \"varComb\" object") } start <- 0 for (i in seq_along(object)) { if (plen[i] > 0) { coef(object[[i]]) <- value[start + (1:plen[i])] start <- start + plen[i] } } } object } formula.varComb <- function(x, ...) lapply(x, formula) Initialize.varComb <- function(object, data, ...) { val <- lapply(object, Initialize, data) attr(val, "plen") <- unlist(lapply(val, function(el) length(coef(el)))) class(val) <- c("varComb", "varFunc") val } logLik.varComb <- function(object, ...) { lls <- lapply(object, logLik) val <- sum(unlist(lls)) attr(val, "df") <- sum(unlist(lapply(lls, attr, "df"))) class(val) <- "logLik" val } needUpdate.varComb <- function(object) any(unlist(lapply(object, needUpdate))) print.varComb <- function(x, ...) { cat("Combination of:\n") lapply(x, print) invisible(x) } print.summary.varComb <- function(x, ...) { cat(attr(x, "structName"),"\n") lapply(x, print, FALSE) invisible(x) } summary.varComb <- function(object, structName = "Combination of variance functions:", ...) { object[] <- lapply(object, summary) attr(object, "structName") <- structName class(object) <- c("summary.varComb", class(object)) object } update.varComb <- function(object, data, ...) { object[] <- lapply(object, update, data) object } nlme/R/pdMat.R0000644000176000001440000016736612030057547012654 0ustar ripleyusers### Classes of positive-definite matrices ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # pdConstruct <- ## a virtual constructor for these objects function(object, value, form, nam, data, ...) UseMethod("pdConstruct") pdFactor <- function(object) UseMethod("pdFactor") pdMatrix <- ## extractor for the pd, correlation, or square-root factor matrix function(object, factor = FALSE) UseMethod("pdMatrix") ##*## pdMat - a virtual class of positive definite matrices ###*# constructor for the virtual class pdMat <- function(value = numeric(0), form = NULL, nam = NULL, data = sys.frame(sys.parent()), pdClass = "pdSymm") { if (inherits(value, "pdMat")) { # nothing to construct pdClass <- class(value) } object <- numeric(0) class(object) <- unique(c(pdClass, "pdMat")) pdConstruct(object, value, form, nam, data) } ###*# Methods for local generics corMatrix.pdMat <- function(object, ...) { if (!isInitialized(object)) { stop("cannot access the matrix of uninitialized objects") } Var <- pdMatrix(object) if (length(unlist(dimnames(Var))) == 0) { aux <- paste("V", 1:(Dim(Var)[2]), sep = "") dimnames(Var) <- list(aux, aux) } dd <- dim(Var) dn <- dimnames(Var) stdDev <- sqrt(diag(Var)) names(stdDev) <- colnames(Var) value <- array(t(Var/stdDev)/stdDev, dd, dn) attr(value, "stdDev") <- stdDev value } pdConstruct.pdMat <- function(object, value = numeric(0), form = formula(object), nam = Names(object), data = sys.frame(sys.parent()), ...) { if (inherits(value, "pdMat")) { # constructing from another pdMat if (length(form) == 0) { form <- formula(value) } if (length(nam) == 0) { nam <- Names(value) } if (isInitialized(value)) { return(pdConstruct(object, as.matrix(value), form, nam, data)) } else { return(pdConstruct(object, form = form, nam = nam, data = data)) } } if (length(value) > 0) { if (inherits(value, "formula") || data.class(value) == "call") { ## constructing from a formula if (!is.null(form)) { warning("ignoring argument 'form'") } form <- formula(value) if (length(form) == 3) { #two-sided case - nlme form <- list(form) } } else if (is.character(value)) { # constructing from character array if (length(nam) > 0) { warning("ignoring argument 'nam'") } nam <- value } else if (is.matrix(value)) { # constructing from a pd matrix vdim <- dim(value) if (length(vdim) != 2 || diff(vdim) != 0) { stop("'value' must be a square matrix") } if (length(unlist(vnam <- dimnames(value))) > 0) { vnam <- unique(unlist(vnam)) if (length(vnam) != vdim[1]) { stop("dimnames of 'value' must match or be NULL") } dimnames(value) <- list(vnam, vnam) if (length(nam) > 0) { # check consistency if (any(is.na(match(nam, vnam))) || any(is.na(match(vnam, nam)))) { stop("names of 'value' are not consistent with 'nam' argument") } value <- value[nam, nam, drop = FALSE] } else { nam <- vnam } } form <- form # avoid problems with lazy evaluation nam <- nam object <- chol((value + t(value))/2) # ensure it is positive-definite attr(object, "dimnames") <- NULL attr(object, "rank") <- NULL } else if (is.numeric(value)) { # constructing from the parameter value <- as.numeric(value) attributes(value) <- attributes(object) object <- value } else if (data.class(value) == "list") { ## constructing from a list of two-sided formulae - nlme case if (!is.null(form)) { warning("ignoring argument 'form'") } form <- value } else { stop(gettextf("%s is not a valid object for \"pdMat\"", sQuote(deparse(object))), domain = NA) } } if (!is.null(form)) { if (inherits(form, "formula") && length(form) == 3) {#two-sided case - nlme form <- list(form) } if (is.list(form)) { # list of formulae if (any(!unlist(lapply(form, function(el) { inherits(el, "formula") && length(el) == 3 })))) { stop("all elements of 'form' list must be two-sided formulas") } val <- list() for(i in seq_along(form)) { if (is.name(form[[i]][[2]])) { val <- c(val, list(form[[i]])) } else { val <- c(val, eval(parse(text = paste("list(", paste(paste(all.vars(form[[i]][[2]]), deparse(form[[i]][[3]]), sep = "~"), collapse=","),")")))) } } form <- val class(form) <- "listForm" namesForm <- Names(form, data) } else { if (inherits(form, "formula")) { namesForm <- Names(asOneSidedFormula(form), data) ## namesForm1 <- NULL } else { stop("'form' can only be a formula or a list of formulae") } } if (length(namesForm) > 0) { if (length(nam) == 0) { # getting names from formula nam <- namesForm } else { # checking consistency with names if (any(noMatch <- is.na(match(nam, namesForm)))) { err <- TRUE namCopy <- nam indNoMatch <- (1:length(nam))[noMatch] if (any(wch1 <- (nchar(nam, "c") > 12))) { ## possibly names with .(Intercept) in value wch1 <- substring(nam, nchar(nam, "c")-10) == "(Intercept)" if (any(wch1)) { namCopy[indNoMatch[wch1]] <- substring(nam[wch1], 1, nchar(nam[wch1], "c") - 12) noMatch[wch1] <- FALSE indNoMatch <- indNoMatch[!wch1] # possibly not matched } } if (sum(noMatch) > 0) { ## still no matches - try adding .(Intercept) namCopy[indNoMatch] <- paste(namCopy[indNoMatch], "(Intercept)", sep = ".") } ## try matching modified value if (!any(is.na(match(namCopy, namesForm)))) { err <- FALSE } if (err) stop("'form' not consistent with 'nam'") } } } } if (is.matrix(object)) { # initialized as matrix, check consistency if (length(nam) > 0 && (length(nam) != dim(object)[2])) { stop("length of 'nam' not consistent with dimensions of initial value") } } attr(object, "formula") <- form attr(object, "Dimnames") <- list(nam, nam) object } pdFactor.pdMat <- function(object) { c(qr.R(qr(pdMatrix(object)))) } pdMatrix.pdMat <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot access the matrix of uninitialized objects") } if (factor) { stop("no default method for extracting the square root of a \"pdMat\" object") } else { crossprod(pdMatrix(object, factor = TRUE)) } } ###*# Methods for standard generics as.matrix.pdMat <- function(x, ...) pdMatrix(x) coef.pdMat <- function(object, unconstrained = TRUE, ...) { if (unconstrained || !isInitialized(object)) { as.vector(object) } else { stop("do not know how to obtain constrained coefficients") } } "coef<-.pdMat" <- function(object, ..., value) { value <- as.numeric(value) if (isInitialized(object)) { if (length(value) != length(object)) { stop("cannot change the length of the parameter after initialization") } } else { return(pdConstruct(object, value)) } class(value) <- class(object) attributes(value) <- attributes(object) value } Dim.pdMat <- function(object, ...) { if ((val <- length(Names(object))) > 0) { return(c(val, val)) } else if (isInitialized(object)) { return(dim(as.matrix(object))) } stop("cannot access the number of columns of uninitialized objects without names") } formula.pdMat <- function(x, asList, ...) eval(attr(x, "formula")) isInitialized.pdMat <- function(object) { length(object) > 0 } logDet.pdMat <- function(object, ...) { if (!isInitialized(object)) { stop("cannot extract the log of the determinant from an uninitialized object") } sum(log(svd(pdMatrix(object, factor = TRUE))$d)) } "matrix<-.pdMat" <- function(object, value) { value <- as.matrix(value) ## check for consistency of dimensions when object is initialized if (isInitialized(object) && any(dim(value) != Dim(object))) { stop("cannot change dimensions on an initialized \"pdMat\" object") } pdConstruct(object, value) } Names.pdMat <- function(object, ...) { as.character(attr(object, "Dimnames")[[2]]) } "Names<-.pdMat" <- function(object, ..., value) { if (is.null(value)) { attr(object, "Dimnames") <- NULL return(object) } else { value <- as.character(value) if (length(dn <- Names(object)) == 0) { if (isInitialized(object)) { # object is initialized without names if (length(value) != (aux <- Dim(object)[2])) { stop(gettextf("Length of names should be %d", aux), domain = NA) } } attr(object, "Dimnames") <- list(value, value) return(object) } if (length(dn) != length(value)) { stop(gettextf("Length of names should be %d", length(dn)), domain = NA) } err <- FALSE if (any(noMatch <- is.na(match(value, dn)))) { err <- TRUE ## checking nlme case valueCopy <- value indNoMatch <- (1:length(value))[noMatch] nam1 <- value[noMatch] # no matching names if (any(wch1 <- (nchar(nam1, "c") > 12))) { ## possibly names with .(Intercept) in value wch1 <- substring(nam1, nchar(nam1, "c")-10) == "(Intercept)" if (any(wch1)) { valueCopy[indNoMatch[wch1]] <- substring(nam1[wch1], 1, nchar(nam1[wch1], "c") - 12) noMatch[wch1] <- FALSE indNoMatch <- indNoMatch[!wch1] # possibly not matched } } if (sum(noMatch) > 0) { ## still no matches - try adding .(Intercept) valueCopy[indNoMatch] <- paste(valueCopy[indNoMatch], "(Intercept)", sep = ".") } ## try matching modified value indMatch <- match(valueCopy, dn) if (!any(is.na(indMatch))) { # all match attr(object, "Dimnames") <- list(value, value) if ((length(indMatch)) > 1 && any(diff(indMatch) != 1) && isInitialized(object)) { # permutation auxMat <- as.matrix(object)[indMatch, indMatch, drop = FALSE] dimnames(auxMat) <- list(value, value) return(pdConstruct(object, auxMat)) } return(object) } } if (err) { stop("names being assigned do not correspond to a permutation of previous names") } indMatch <- match(value, dn) if ((length(indMatch) == 1) || all(diff(indMatch) == 1)) { return(object) } ## must be a permutation of names attr(object, "Dimnames") <- list(value, value) if (isInitialized(object)) { auxMat <- as.matrix(object)[indMatch, indMatch, drop = FALSE] dimnames(auxMat) <- list(value, value) return(pdConstruct(object, auxMat)) } object } } plot.pdMat <- function(x, nseg = 50, levels = 1, center = rep(0, length(stdDev)), additional, ...) { corr <- corMatrix(x) stdDev <- attr(corr, "stdDev") attr(corr, "stdDev") <- NULL assign(".corr", corr) assign(".angles", seq(-pi, pi, length = nseg + 1)) assign(".cosines", cos(.angles)) nlev <- length(levels) dataMat <- array(aperm(outer(rbind(-stdDev, stdDev), levels), c(1, 3, 2)), dim = c(nlev * 2, length(stdDev)), dimnames = list(NULL, names(stdDev))) groups <- rep(1:nlev, rep(2, nlev)) dataMat <- t(t(dataMat) + center) if (!missing(additional)) { additional <- as.matrix(additional) dataMat <- rbind(dataMat, additional) groups <- c(groups, rep(0, nrow(additional))) } splom(~ dataMat, panel = function(x, y, subscripts, groups, ...) { groups <- groups[subscripts] # should be a no-op but if (any(g0 <- groups == 0)) { # plot as points panel.xyplot(x[g0], y[g0], ..., type = "p") } g1 <- groups == 1 # plot the center points panel.xyplot(mean(x[g1]), mean(y[g1]), ..., type = "p", pch = 3) p <- ncol(.corr) laggedCos <- cos(.angles + acos(.corr[round(mean(x[g1])*p + 0.5), round(mean(y[g1])*p + 0.5)])) xylist <- lapply(split(data.frame(x = x[!g0], y = y[!g0]), groups[!g0]), function(el, lagged) { if (nrow(el) != 2) { stop("x-y data to splom got botched somehow") } sumDif <- array(c(1,1,1,-1)/2, c(2,2)) %*% as.matrix(el) list(x = sumDif[1,1] + .cosines * sumDif[2,1], y = sumDif[1,2] + lagged * sumDif[2,2]) }, lagged = laggedCos) gg <- rep(seq_along(xylist), rep(length(.angles), length(xylist))) panel.superpose(unlist(lapply(xylist, "[[", "x")), unlist(lapply(xylist, "[[", "y")), subscripts = seq_along(gg), groups = gg, ..., type = "l") }, subscripts = TRUE, groups = groups) } print.pdMat <- function(x, ...) { if (isInitialized(x)) { cat("Positive definite matrix structure of class", class(x)[1], "representing\n") print(as.matrix(x), ...) } else { cat("Uninitialized positive definite matrix structure of class ", class(x)[1], ".\n", sep = "") } invisible(x) } print.summary.pdMat <- function(x, sigma = 1, rdig = 3, Level = NULL, resid = FALSE, ...) ## resid = TRUE causes an extra row to be added { if (!is.list(x)) { if (!(is.null(form <- attr(x, "formula")))) { cat(paste(" Formula: ")) if (inherits(form, "formula")) { cat(deparse(form)) if (!is.null(Level)) { cat( paste( " |", Level ) ) } } else { if (length(form) == 1) { cat(deparse(form[[1]])) if (!is.null(Level)) { cat( paste( " |", Level ) ) } } else { cat(deparse(lapply(form, function(el) as.name(deparse(el))))) cat("\n Level:", Level) } } cat( "\n" ) } if (ncol(x) == 1) { if (resid) { print(array(sigma * c(attr(x, "stdDev"), 1), c(1, 2), list("StdDev:", c(names(attr(x, "stdDev")), "Residual"))), ... ) } else { print(array(sigma * attr(x, "stdDev"), c(1,1), list("StdDev:", names(attr(x, "stdDev")))), ... ) } } else { cat(paste(" Structure: ", attr(x, "structName"), "\n", sep = "")) if (attr(x, "noCorrelation") | (1 >= (p <- dim(x)[2]))) { if (resid) { print(array(sigma * c(attr(x, "stdDev"), 1), c(1, p + 1), list("StdDev:", c(names(attr(x, "stdDev")), "Residual"))), ...) } else { print(array(sigma * attr(x, "stdDev"), c(1, p), list("StdDev:", names(attr(x, "stdDev")))), ...) } } else { # we essentially do print.correlation here ll <- lower.tri(x) stdDev <- attr(x, "stdDev") x[ll] <- format(round(x[ll], digits = rdig), ...) x[!ll] <- "" xx <- array("", dim(x), list(names(attr(x, "stdDev")), c("StdDev", "Corr", rep("", p - 2)))) xx[, 1] <- format(sigma * attr(x, "stdDev")) xx[-1, -1] <- x[ -1, -p ] if (!is.null(colnames(x))) { xx[1, -1] <- abbreviate(colnames(x)[ -p ], minlength = rdig + 3) } if (resid) { x <- array("", dim(xx) + c(1, 0), list(c(rownames(xx), "Residual"), colnames(xx))) x[ 1:p, ] <- xx x[ , 1 ] <- format(sigma * c(stdDev, 1)) xx <- x } print( xx, ..., quote = FALSE ) } } } else { # composite structure cat(paste(" Composite Structure: ", attr(x, "structName"), "\n", sep ="")) elName <- attr(x, "elementName") compNames <- names(x) for (i in seq_along(x)) { cat(paste("\n ", elName, " ", i, ": ", compNames[i], "\n", sep = "")) print.summary.pdMat(x[[i]], sigma = sigma, Level = Level, resid = resid && (i == length(x)), ...) } } invisible(x) } solve.pdMat <- function(a, b, ...) { if (!isInitialized(a)) { stop("cannot get the inverse of an uninitialized object") } matrix(a) <- solve(as.matrix(a)) a } summary.pdMat <- function(object, structName = class(object)[1], noCorrelation = FALSE, ...) { if (isInitialized(object)) { value <- corMatrix(object) attr(value, "structName") <- structName attr(value, "noCorrelation") <- noCorrelation attr(value, "formula") <- formula(object) class(value) <- "summary.pdMat" value } else { object } } "[.pdMat" <- function(x, i, j, drop = TRUE) { xx <- x x <- as.matrix(x) if (missing(i)) li <- 0 else li <- length(i) if (missing(j)) lj <- 0 else lj <- length(j) if ((li + lj == 0) || (li == lj) && ((mode(i) == mode(j)) && all(i == j))) { drop <- FALSE # even for a 1 by 1 submatrix, # you want it to be a matrix pdConstruct(xx, NextMethod()) } else { NextMethod() } } "[<-.pdMat" <- function(x, i, j, value) { xx <- x x <- as.matrix(x) pdConstruct(xx, NextMethod()) } ##*## Classes that substitute for (i.e. inherit from) pdMat ###*# pdSymm - a class of general pd matrices ####* Constructor pdSymm <- ## Constructor for the pdSymm class function(value = numeric(0), form = NULL, nam = NULL, data = parent.frame()) { object <- numeric(0) class(object) <- c("pdSymm", "pdMat") pdConstruct(object, value, form, nam, data) } ####* Methods for local generics pdConstruct.pdSymm <- function(object, value = numeric(0), form = formula(object), nam = Names(object), data = sys.frame(sys.parent()), ...) { val <- NextMethod() if (length(val) == 0) { # uninitialized object class(val) <- c("pdSymm", "pdMat") return(val) } if (is.matrix(val)) { vald <- svd(val, nu = 0) object <- vald$v %*% (log(vald$d) * t(vald$v)) value <- object[row(object) <= col(object)] attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] class(value) <- c("pdSymm", "pdMat") return(value) } Ncol <- round((sqrt(8*length(val) + 1) - 1)/2) if (length(val) != round((Ncol * (Ncol + 1))/2)) { stop(gettextf("an object of length %d does not match the required parameter size", length(val)), domain = NA) } class(val) <- c("pdSymm", "pdMat") val } pdFactor.pdSymm <- function(object) { Ncol <- round((-1 + sqrt(1 + 8 * length(object))) / 2) .C(matrixLog_pd, Factor = double(Ncol * Ncol), as.integer(Ncol), as.double(object))$Factor } pdMatrix.pdSymm <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot extract matrix from an uninitialized object") } if (factor) { Ncol <- Dim(object)[2] value <- array(pdFactor(object), c(Ncol, Ncol), attr(object, "Dimnames")) attr(value, "logDet") <- sum(log(abs(svd(value)$d))) value } else { NextMethod() } } ####* Methods for standard generics coef.pdSymm <- function(object, unconstrained = TRUE, ...) { if (unconstrained || !isInitialized(object)) NextMethod() else { # upper triangular elements val <- as.matrix(object) aN <- Names(object) aN1 <- paste("cov(", aN, sep ="") aN2 <- paste(aN, ")", sep ="") aNmat <- t(outer(aN1, aN2, paste, sep = ",")) aNmat[row(aNmat) == col(aNmat)] <- paste("var(",aN,")",sep="") val <- val[row(val) <= col(val)] names(val) <- aNmat[row(aNmat) <= col(aNmat)] val } } Dim.pdSymm <- function(object, ...) { if (isInitialized(object)) { val <- round((sqrt(8*length(object) + 1) - 1)/2) c(val, val) } else { NextMethod() } } logDet.pdSymm <- function(object, ...) { if (!isInitialized(object)) { stop("cannot extract the log of the determinant from an uninitialized object") } attr(pdMatrix(object, factor = TRUE), "logDet") } solve.pdSymm <- function(a, b, ...) { if (!isInitialized(a)) { stop("cannot extract the inverse from an uninitialized object") } coef(a) <- -coef(a, TRUE) a } summary.pdSymm <- function(object, structName = "General positive-definite", ...) { summary.pdMat(object, structName) } ### No need to implement other methods as the methods for pdMat ### are sufficient. ###*# pdLogChol - a general positive definite structure parameterized ### by the non-zero elements of the Cholesky factor with the diagonal ### elements given in the logarithm scale. ####* Constructor pdLogChol <- ## Constructor for the pdLogChol class function(value = numeric(0), form = NULL, nam = NULL, data = sys.parent()) { object <- numeric(0) class(object) <- c("pdLogChol", "pdMat") pdConstruct(object, value, form, nam, data) } ####* Methods for local generics pdConstruct.pdLogChol <- function(object, value = numeric(0), form = formula(object), nam = Names(object), data = sys.parent(), ...) { val <- pdConstruct.pdMat(object, value, form, nam, data) if (length(val) == 0) { # uninitialized object class(val) <- c("pdLogChol", "pdSymm", "pdMat") return(val) } if (is.matrix(val)) { value <- c(log(diag(val)), val[row(val) < col(val)]) attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] class(value) <- c("pdLogChol", "pdSymm", "pdMat") return(value) } Ncol <- round((sqrt(8*length(val) + 1) - 1)/2) if (length(val) != round((Ncol * (Ncol + 1))/2)) { stop(gettextf("an object of length %d does not match a Cholesky factor", length(val)), domain = NA) } class(val) <- c("pdLogChol", "pdSymm", "pdMat") val } pdFactor.pdLogChol <- function(object) { Ncol <- round((-1 + sqrt(1 + 8 * length(object))) / 2) .C(logChol_pd, Factor = double(Ncol * Ncol), as.integer(Ncol), as.double(object))$Factor } ####* Methods for standard generics solve.pdLogChol <- function(a, b, ...) { if (!isInitialized(a)) { stop("cannot get the inverse of an uninitialized object") } Ncol <- (-1 + sqrt(1 + 8 * length(a))) / 2 # val <- array(.Fortran("dbksl", # as.double(pdFactor(a)), # as.integer(Ncol), # as.integer(Ncol), # val = as.double(diag(Ncol)), # as.integer(Ncol), # integer(1))[["val"]], c(Ncol, Ncol)) # val <- qr(t(val))$qr val <- qr(t(solve(pdMatrix(a, factor = TRUE))))$qr val <- sign(diag(val)) * val coef(a) <- c(log(diag(val)), val[c(row(val) < col(val))]) a } summary.pdLogChol <- function(object, structName = "General positive-definite, Log-Cholesky parametrization", ...) { summary.pdMat(object, structName) } ### No need to implement other methods as the methods for pdMat ### are sufficient. ####*# pdChol - a general positive definite structure parameterized by #### the non-zero elements of the Cholesky factor. #####* Constructor #pdChol <- # ## Constructor for the pdChol class # function(value = numeric(0), form = NULL, nam = NULL, data = sys.parent()) #{ # object <- numeric(0) # class(object) <- c("pdChol", "pdMat") # pdConstruct(object, value, form, nam, data) #} #####* Methods for local generics #pdConstruct.pdChol <- # function(object, value = numeric(0), form = formula(object), # nam = Names(object), data = sys.parent()) #{ # val <- pdConstruct.pdMat(object, value, form, nam, data) # if (length(val) == 0) { # uninitialized object # class(val) <- c("pdChol", "pdSymm", "pdMat") # return(val) # } # if (is.matrix(val)) { # value <- val[row(val) <= col(val)] # attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] # class(value) <- c("pdChol", "pdSymm", "pdMat") # return(value) # } # Ncol <- round((sqrt(8*length(val) + 1) - 1)/2) # if (length(val) != round((Ncol * (Ncol + 1))/2)) { # stop(paste("An object of length", length(val), # "does not match a Cholesky factor")) # } # class(val) <- c("pdChol", "pdSymm", "pdMat") # val #} #pdFactor.pdChol <- # function(object) #{ # round(Ncol <- (-1 + sqrt(1 + 8 * length(object))) / 2) # .C("Chol_pd", # Factor = double(Ncol * Ncol), # as.integer(Ncol), # as.double(object))$Factor #} #####* Methods for standard generics #solve.pdChol <- # function(a, b) #{ # if (!isInitialized(a)) { # stop("cannot get the inverse of an uninitialized object") # } # Ncol <- (-1 + sqrt(1 + 8 * length(a))) / 2 # val <- array(.Fortran("dbksl", # as.double(pdFactor(a)), # as.integer(Ncol), # as.integer(Ncol), # val = as.double(diag(Ncol)), # as.integer(Ncol), # integer(1))[["val"]], c(Ncol, Ncol)) # coef(a) <- qr(t(val))$qr[c(row(val) <= col(val))] # a #} #summary.pdChol <- # function(object, # structName = "General positive-definite, Cholesky parametrization") #{ # summary.pdMat(object, structName) #} #### No need to implement other methods as the methods for pdMat #### are sufficient. ####*# pdSpher - a general positive definite structure parameterized #### by the non-zero elements of the Cholesky factor with each column #### represented in spherical coordinates #####* Constructor #pdSpher <- # ## Constructor for the pdSpher class # function(value = numeric(0), form = NULL, nam = NULL, data = sys.parent()) #{ # object <- numeric(0) # class(object) <- c("pdSpher", "pdMat") # pdConstruct(object, value, form, nam, data) #} #####* Methods for local generics #pdConstruct.pdSpher <- # function(object, value = numeric(0), form = formula(object), # nam = Names(object), data = sys.parent()) #{ # val <- pdConstruct.pdMat(object, value, form, nam, data) # if (length(val) == 0) { # uninitiliazed object # class(val) <- c("pdSpher", "pdSymm", "pdMat") # return(val) # } # if (is.matrix(val)) { # Ncol <- dim(val)[2] # value <- log(apply(val, FUN = function(x){sqrt(sum(x^2))},2)) # for(i in (1:Ncol)[-1]) { # aux <- acos(val[1:(i-1),i]/sqrt(cumsum(val[i:1,i]^2)[i:2])) # value <- c(value, log(aux/(pi - aux))) # } # attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] # class(value) <- c("pdSpher", "pdSymm", "pdMat") # return(value) # } # Ncol <- round((sqrt(8*length(val) + 1) - 1)/2) # if (length(val) != round((Ncol * (Ncol + 1))/2)) { # stop(paste("An object of length", length(val), # "does not match a Cholesky factor")) # } # class(val) <- c("pdSpher", "pdSymm", "pdMat") # val #} #pdFactor.pdSpher <- # function(object) #{ # round(Ncol <- (-1 + sqrt(1 + 8 * length(object))) / 2) # .C("spher_pd", # Factor = double(Ncol * Ncol), # as.integer(Ncol), # as.double(object))$Factor #} #####* Methods for standar generics #summary.pdSpher <- # function(object, # structName = "General positive-definite, Spherical parametrization") #{ # summary.pdMat(object, structName) #} ####*# pdMatrixLog - a general positive definite structure parameterized #### by the matrix logarithm. #####* Constructor #pdMatrixLog <- # ## Constructor for the pdMatrixLog class # function(value = numeric(0), form = NULL, nam = NULL, data = sys.parent()) #{ # object <- numeric(0) # class(object) <- c("pdMatrixLog", "pdMat") # pdConstruct(object, value, form, nam, data) #} #####* Methods for local generics #pdConstruct.pdMatrixLog <- # function(object, value = numeric(0), form = formula(object), # nam = Names(object), data = sys.parent()) #{ # val <- pdConstruct.pdMat(object, value, form, nam, data) # if (length(val) == 0) { # uninitialized object # class(val) <- c("pdMatrixLog", "pdSymm", "pdMat") # return(val) # } # if (is.matrix(val)) { # object <- eigen(crossprod(val), symmetric = TRUE) # object <- object$vectors %*% (log(object$values) * t(object$vectors)) # value <- object[row(object) <= col(object)] # attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] # class(value) <- c("pdMatrixLog", "pdSymm", "pdMat") # return(value) # } # Ncol <- round((sqrt(8*length(val) + 1) - 1)/2) # if (length(val) != round((Ncol * (Ncol + 1))/2)) { # stop(paste("An object of length", length(val), # "does not match the required parameter size")) # } # class(val) <- c("pdMatrixLog", "pdSymm", "pdMat") # val #} #pdFactor.pdMatrixLog <- # function(object) #{ # round(Ncol <- (-1 + sqrt(1 + 8 * length(object))) / 2) # .C("matrixLog_pd", # Factor = double(Ncol * Ncol), # as.integer(Ncol), # as.double(object))$Factor #} #####* Methods for standard generics #solve.pdMatrixLog <- # function(a, b) #{ # if (!isInitialized(a)) { # stop("cannot extract the inverse from an uninitialized object") # } # coef(a) <- -coef(a, TRUE) # a #} #summary.pdMatrixLog <- # function(object, # structName = "General positive-definite") #{ # summary.pdMat(object, structName) #} #### No need to implement other methods as the methods for pdMat #### are sufficient. ####*# pdGivens - a general positive definite structure parameterized #### by the eigenvalues and eigenvectors (as Givens rotations) #####* Constructor #pdGivens <- # ## Constructor for the pdGivens class # function(value = numeric(0), form = NULL, nam = NULL, data = sys.parent()) #{ # object <- numeric(0) # class(object) <- c("pdGivens", "pdMat") # pdConstruct(object, value, form, nam, data) #} #####* Methods for local generics #pdConstruct.pdGivens <- # function(object, value = numeric(0), form = formula(object), # nam = Names(object), data = sys.parent()) #{ # val <- pdConstruct.pdMat(object, value, form, nam, data) # if (length(val) == 0) { # uninitiliazed object # class(val) <- c("pdGivens", "pdSymm", "pdMat") # return(val) # } # if (is.matrix(val)) { # q <- dim(val)[1] # aux <- eigen(crossprod(val), symmetric = TRUE) # Q <- aux$vectors # values <- aux$values # angles <- array(0,q*(q-1)/2) # k <- 0 # for(i in 1:(q-1)) { # for(j in ((i+1):q)) { # k <- k + 1 # p <- sqrt(Q[i,i]^2 + Q[j,i]^2) # if (p == 0) { # angles[k] <- 0 # } else { # aux0 <- Q[i,i]/p # aux1 <- Q[j,i]/p # if (aux1 < 0) { # aux0 <- -aux0 # aux1 <- -aux1 # } # aux <- Q[i,] # angles[k] <- log(acos(aux0)/(pi - acos(aux0))) # Q[i,] <- Q[i,] * aux0 + Q[j,] * aux1 # Q[j,] <- Q[j,] * aux0 - aux * aux1 # } # } # } # value <- c(log(c(values[q], diff(values[q:1]))), angles) # attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] # class(value) <- c("pdGivens", "pdSymm", "pdMat") # return(value) # } # Ncol <- round((sqrt(8*length(val) + 1) - 1)/2) # if (length(val) != round((Ncol * (Ncol + 1))/2)) { # stop(paste("An object of length", length(val), # "does not match the required parameter size")) # } # class(val) <- c("pdGivens", "pdSymm", "pdMat") # val #} #pdFactor.pdGivens <- # function(object) #{ # round(Ncol <- (-1 + sqrt(1 + 8 * length(object))) / 2) # .C("Givens_pd", # Factor = double(Ncol * Ncol), # as.integer(Ncol), # as.double(object))$Factor #} #####* Methods for standard generics #summary.pdGivens <- # function(object, # structName = "General positive-definite, Givens parametrization") #{ # summary.pdMat(object, structName) #} #### No need to implement other methods as the methods for pdMat #### are sufficient. #pdConstruct.pdSymm <- pdConstruct.pdMatrixLog #default parametrization ####*# pdNatural - a general positive definite structure parameterized #### by the log of the square root of the diagonal elements and the #### generalized logit of the correlations. This is NOT an unrestricted #### parametrization ####* Constructor pdNatural <- ## Constructor for the pdNatural class function(value = numeric(0), form = NULL, nam = NULL, data = sys.frame(sys.parent())) { object <- numeric(0) class(object) <- c("pdNatural", "pdMat") pdConstruct(object, value, form, nam, data) } ####* Methods for local generics pdConstruct.pdNatural <- function(object, value = numeric(0), form = formula(object), nam = Names(object), data = sys.frame(sys.parent()), ...) { val <- pdConstruct.pdMat(object, value, form, nam, data) if (length(val) == 0) { # uninitiliazed object class(val) <- c("pdNatural", "pdMat") return(val) } if (is.matrix(val)) { q <- ncol(val) if (q > 1) { aux <- crossprod(val) stdDev <- sqrt(diag(aux)) aux <- t(aux/stdDev)/stdDev aux <- aux[row(aux) > col(aux)] value <- c(log(stdDev), log((aux + 1)/(1 - aux))) } else { value <- log(val) } attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] class(value) <- c("pdNatural", "pdMat") return(value) } Ncol <- round((sqrt(8*length(val) + 1) - 1)/2) if (length(val) != round((Ncol * (Ncol + 1))/2)) { stop(gettextf("an object of length %d does not match the required parameter size", length(val)), domain = NA) } class(val) <- c("pdNatural", "pdMat") val } pdFactor.pdNatural <- function(object) { Ncol <- round((-1 + sqrt(1 + 8 * length(object))) / 2) .C(natural_pd, Factor = double(Ncol * Ncol), as.integer(Ncol), as.double(object))$Factor } pdMatrix.pdNatural <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot extract matrix from an uninitialized object") } if (factor) { Ncol <- Dim(object)[2] value <- array(pdFactor(object), c(Ncol, Ncol), attr(object, "Dimnames")) attr(value, "logDet") <- sum(log(diag(value))) value } else { NextMethod() } } ####* Methods for standard generics coef.pdNatural <- function(object, unconstrained = TRUE, ...) { if (unconstrained || !isInitialized(object)) NextMethod() else { # standard deviations and correlations Ncol <- round((-1 + sqrt(1 + 8 * length(object))) / 2) val <- exp(as.vector(object)) aux <- val[-(1:Ncol)] val[-(1:Ncol)] <- (aux - 1) / (aux + 1) aN <- Names(object) aNmat <- t(outer(aN, aN, paste, sep = ",")) names(val) <- c(paste("sd(",aN,")", sep = ""), if (Ncol > 1) { paste("cor(", aNmat[row(aNmat) > col(aNmat)],")",sep="") }) val } } Dim.pdNatural <- function(object, ...) { if (isInitialized(object)) { val <- round((sqrt(8*length(object) + 1) - 1)/2) c(val, val) } else { NextMethod() } } logDet.pdNatural <- function(object, ...) { if (!isInitialized(object)) { stop("cannot extract the log of the determinant from an uninitialized object") } attr(pdMatrix(object, factor = TRUE), "logDet") } solve.pdNatural <- function(a, b, ...) { if (!isInitialized(a)) { stop("cannot get the inverse of an uninitialized object") } Ncol <- round((-1 + sqrt(1 + 8 * length(a))) / 2) if (Ncol > 1) { # val <- array(.Fortran("dbksl", # as.double(pdFactor(a)), # as.integer(Ncol), # as.integer(Ncol), # val = as.double(diag(Ncol)), # as.integer(Ncol), # integer(1))[["val"]], c(Ncol, Ncol)) val <- solve(pdMatrix(a, factor = TRUE)) val <- val %*% t(val) stdDev <- sqrt(diag(val)) val <- t(val/stdDev)/stdDev val <- val[row(val) > col(val)] coef(a) <- c(log(stdDev), log((val + 1)/(1 - val))) } else { coef(a) <- -coef(a) } a } summary.pdNatural <- function(object, structName = "General positive-definite, Natural parametrization", ...) { summary.pdMat(object, structName) } ### No need to implement other methods as the methods for pdMat ### are sufficient. ###*# pdDiag - diagonal structure parameterized by the logarithm of ### the square root of the diagonal terms. ####* Constructor pdDiag <- ## Constructor for the pdDiag class function(value = numeric(0), form = NULL, nam = NULL, data = sys.frame(sys.parent())) { object <- numeric(0) class(object) <- c("pdDiag", "pdMat") pdConstruct(object, value, form, nam, data) } ####* Methods for local generics corMatrix.pdDiag <- function(object, ...) { val <- diag(length(as.vector(object))) attr(val, "stdDev") <- exp(as.vector(object)) len <- length(as.vector(object)) if (length(nm <- Names(object)) == 0) { nm <- paste("V", 1:len, sep = "") dimnames(val) <- list(nm, nm) } names(attr(val, "stdDev")) <- nm val } pdConstruct.pdDiag <- function(object, value = numeric(0), form = formula(object), nam = Names(object), data = sys.frame(sys.parent()), ...) { val <- NextMethod() if (length(val) == 0) { # uninitiliazed object return(val) } if (is.matrix(val)) { # initialize from a positive definite # if (any(value[row(val) != col(val)])) { # warning("Initializing matrix is not diagonal") # } value <- log(diag(crossprod(val)))/2 attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] class(value) <- c("pdDiag", "pdMat") return(value) } if ((aux <- length(Names(val))) > 0) { if (aux && (aux != length(val))) { stop(gettextf("an object of length %d does not match the required parameter size", length(val)), domain = NA) } } val } pdFactor.pdDiag <- function(object) { diag(exp(as.vector(object)), length(object)) } pdMatrix.pdDiag <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot extract the matrix from an uninitialized object") } len <- length(as.vector(object)) if (factor) { value <- diag(exp(as.vector(object)), len) attr(value, "logDet") <- sum(as.vector(object)) } else { value <- diag(exp(2 * as.vector(object)), len) } dimnames(value) <- attr(object, "Dimnames") value } ####* Methods for standard generics coef.pdDiag <- function(object, unconstrained = TRUE, ...) { if (unconstrained) NextMethod() else { val <- exp(as.vector(object)) names(val) <- paste("sd(",Names(object),")", sep ="") val } } Dim.pdDiag <- function(object, ...) { if (isInitialized(object)) { val <- length(object) c(val, val) } else { NextMethod() } } logDet.pdDiag <- function(object, ...) { if (!isInitialized(object)) { stop("cannot extract the log of the determinant from an uninitialized object") } sum(as.vector(object)) } solve.pdDiag <- function(a, b, ...) { if (!isInitialized(a)) { stop("cannot extract the inverse from an uninitialized object") } coef(a) <- -coef(a, TRUE) a } summary.pdDiag <- function(object, structName = "Diagonal", ...) { summary.pdMat(object, structName, noCorrelation = TRUE) } ### No need to implement other methods as the "pdMat" methods suffice. ###*# pdIdent: multiple of the identity matrix - the parameter is ### the log of the multiple. ####* Constructor pdIdent <- ## Constructor for the pdIdent class function(value = numeric(0), form = NULL, nam = NULL, data = sys.frame(sys.parent())) { object <- numeric(0) class(object) <- c("pdIdent", "pdMat") pdConstruct(object, value, form, nam, data) } ####* Methods for local generics corMatrix.pdIdent <- function(object, ...) { if (!isInitialized(object)) { stop("cannot extract the matrix from an uninitialized \"pdIdent\" object") } if (is.null(Ncol <- attr(object, "ncol"))) { stop("cannot extract the matrix with uninitialized dimensions") } val <- diag(nrow = Ncol) attr(val, "stdDev") <- rep(exp(as.vector(object)), Ncol) if (length(nm <- Names(object)) == 0) { nm <- paste("V", 1:Ncol, sep = "") } dimnames(val) <- list(nm, nm) names(attr(val, "stdDev")) <- nm val } pdConstruct.pdIdent <- function(object, value = numeric(0), form = formula(object), nam = Names(object), data = sys.frame(sys.parent()), ...) { val <- NextMethod() if (length(val) == 0) { # uninitialized object if ((ncol <- length(Names(val))) > 0) { attr(val, "ncol") <- ncol } return(val) } if (is.matrix(val)) { # if (any(val[row(val) != col(val)])) { # warning("Initializing pdIdent object from non-diagonal matrix") # } # if (any(diag(val) != val[1,1])) { # warning("Diagonal of initializing matrix is not constant") # } value <- log(mean(diag(crossprod(val))))/2 attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] attr(value, "ncol") <- dim(val)[2] class(value) <- c("pdIdent", "pdMat") return(value) } if (length(val) > 1) { stop(gettextf("an object of length %d does not match the required parameter size", length(val)), domain = NA) } if (((aux <- length(Names(val))) == 0) && is.null(formula(val))) { stop("must give names when initializing \"pdIdent\" from parameter without a formula") } else { attr(val, "ncol") <- aux } val } pdFactor.pdIdent <- function(object) { exp(as.vector(object)) * diag(attr(object, "ncol")) } pdMatrix.pdIdent <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot extract the matrix from an uninitialized \"pdIdent\" object") } if (is.null(Ncol <- attr(object, "ncol"))) { stop("cannot extract the matrix with uninitialized dimensions") } value <- diag(Ncol) if (factor) { value <- exp(as.vector(object)) * value attr(value, "logDet") <- Ncol * as.vector(object) } else { value <- exp(2 * as.vector(object)) * value } dimnames(value) <- attr(object, "Dimnames") value } ####* Methods for standard generics coef.pdIdent <- function(object, unconstrained = TRUE, ...) { if (unconstrained) NextMethod() else structure(exp(as.vector(object)), names = c(paste("sd(", deparse(formula(object)[[2]]),")",sep = ""))) } Dim.pdIdent <- function(object, ...) { if (!is.null(val <- attr(object, "ncol"))) { c(val, val) } else { stop("cannot extract the dimensions") } } logDet.pdIdent <- function(object, ...) { attr(object, "ncol") * as.vector(object) } solve.pdIdent <- function(a, b, ...) { if (!isInitialized(a)) { stop("cannot extract the inverse from an uninitialized object") } coef(a) <- -coef(a, TRUE) a } summary.pdIdent <- function(object, structName = "Multiple of an Identity", ...) { summary.pdMat(object, structName, noCorrelation = TRUE) } ###*# pdCompSymm: Compound symmetry structure ####* Constructor pdCompSymm <- ## Constructor for the pdCompSymm class function(value = numeric(0), form = NULL, nam = NULL, data = sys.frame(sys.parent())) { object <- numeric(0) class(object) <- c("pdCompSymm", "pdMat") pdConstruct(object, value, form, nam, data) } ####* Methods for local generics corMatrix.pdCompSymm <- function(object, ...) { if (!isInitialized(object)) { stop("cannot extract the matrix from an uninitialized \"pdCompSymm\" object") } if (is.null(Ncol <- attr(object, "ncol"))) { stop("cannot extract the matrix with uninitialized dimensions") } obj <- as.vector(object) aux <- exp(obj[2]) aux <- c(exp(2 * obj[1]), (aux - 1/(Ncol - 1))/(aux + 1)) value <- array(aux[2], c(Ncol, Ncol)) value[row(value) == col(value)] <- 1 attr(value, "stdDev") <- rep(exp(obj[1]), Ncol) if (length(nm <- Names(object)) == 0) { nm <- paste("V", 1:Ncol, sep = "") dimnames(value) <- list(nm, nm) } names(attr(value, "stdDev")) <- nm value } pdConstruct.pdCompSymm <- function(object, value = numeric(0), form = formula(object), nam = Names(object), data = sys.frame(sys.parent()), ...) { val <- NextMethod() if (length(val) == 0) { # uninitialized object if ((nc <- length(Names(val))) > 0) { attr(val, "ncol") <- nc } return(val) } if (is.matrix(val)) { value <- crossprod(val) # if (length(unique(value[row(value) != col(value)])) > 1) { # warning("Initializing pdCompSymm object from non-compound symmetry matrix") # } # if (any(diag(value) != value[1,1])) { # warning("Diagonal of initializing matrix is not constant") # } nc <- dim(value)[2] aux <- 1/sqrt(diag(value)) aux <- aux * t(value * aux) if ((aux <- mean(aux[row(aux) != col(aux)])) <= -1/(nc - 1)) { aux <- -1/nc warning("initializing \"pdCompSymm\" object is not positive definite") } value <- c(log(mean(diag(value)))/2, log((aux + 1/(nc - 1))/(1 - aux))) attributes(value) <- attributes(val)[names(attributes(val)) != "dim"] attr(value, "ncol") <- nc class(value) <- c("pdCompSymm", "pdMat") return(value) } if (length(val) != 2) { stop(gettextf("an object of length %d does not match the required parameter size", length(val)), domain = NA) } if (((aux <- length(Names(val))) == 0) && is.null(formula(val))) { stop("must give names when initializing \"pdCompSymm\" from parameter without a formula") } else { attr(val, "ncol") <- aux } val } pdFactor.pdCompSymm <- function(object) { Ncol <- attr(object, "ncol") .C(compSymm_pd, Factor = double(Ncol * Ncol), as.integer(Ncol), as.double(object))$Factor } pdMatrix.pdCompSymm <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot extract the matrix from an uninitialized \"pdCompSymm\" object") } if (is.null(Ncol <- attr(object, "ncol"))) { stop("cannot extract the matrix with uninitialized dimensions") } obj <- as.vector(object) aux <- exp(obj[2]) aux <- c(exp(2 * obj[1]), (aux - 1/(Ncol - 1))/(aux + 1)) if (factor) { value <- array(pdFactor(object), c(Ncol, Ncol)) attr(value, "logDet") <- Ncol * obj[1] + ((Ncol - 1) * log(1 - aux[2]) + log(1 + (Ncol - 1) * aux[2]))/2 } else { value <- array(aux[2], c(Ncol, Ncol)) value[row(value) == col(value)] <- 1 value <- aux[1] * value } dimnames(value) <- attr(object, "Dimnames") value } ####* Methods for standard generics coef.pdCompSymm <- function(object, unconstrained = TRUE, ...) { if (unconstrained || !isInitialized(object)) NextMethod() else { if (is.null(Ncol <- attr(object, "ncol"))) { stop("cannot obtain constrained coefficients with uninitialized dimensions") } val <- as.vector(object) aux <- exp(val[2]) val <- c(exp(val[1]), (aux - 1 / (Ncol - 1)) / (aux + 1)) names(val) <- c("std. dev", "corr.") val } } Dim.pdCompSymm <- function(object, ...) { if (!is.null(val <- attr(object, "ncol"))) { c(val, val) } else { stop("cannot extract the dimensions") } } logDet.pdCompSymm <- function(object, ...) { attr(pdMatrix(object, factor = TRUE), "logDet") } summary.pdCompSymm <- function(object, structName = "Compound Symmetry", ...) { summary.pdMat(object, structName) } ####*# pdBlocked: A blocked variance structure #####* Constructor pdBlocked <- ## Constructor for the pdBlocked class function(value = numeric(0), form = NULL, nam = NULL, data = sys.frame(sys.parent()), pdClass = "pdSymm") { object <- numeric(0) class(object) <- c("pdBlocked", "pdMat") pdConstruct(object, value, form, nam, data, pdClass) } ####* Methods for local generics corMatrix.pdBlocked <- function(object, ...) { if (!isInitialized(object)) { stop("cannot access the matrix of uninitialized objects") } if (length(Names(object)) == 0) { stop("cannot access the matrix of object without names") } namesList <- Names(object, TRUE) Ncol <- Dim(object)[2] value <- array(0, c(Ncol, Ncol), attr(object, "Dimnames")) stdDev <- double(Ncol) names(stdDev) <- colnames(value) for (i in seq_along(object)) { aux <- corMatrix(object[[i]]) value[namesList[[i]], namesList[[i]]] <- as.vector(aux) stdDev[namesList[[i]]] <- attr(aux, "stdDev") } attr(value, "stdDev") <- stdDev value } pdConstruct.pdBlocked <- function(object, value = numeric(0), form = formula(object, TRUE), nam = Names(object, TRUE), data = sys.frame(sys.parent()), pdClass = "pdSymm", ...) { if (inherits(value, "pdMat")) { # constructing from another pdMat if (inherits(value, "pdBlocked")) { if (length(form) == 0) form <- formula(value, TRUE) if (length(nam) == 0) nam <- Names(value, TRUE) if (missing(pdClass)) pdClass <- unlist(lapply(value, data.class)) } if (isInitialized(value)) { return(pdConstruct(object, as.matrix(value), form, nam, data, pdClass)) } else { return(pdConstruct(object, form = form, nam = nam, data = data, pdClass = pdClass)) } } ## checking validity and consistency of form, nam, and pdClass if (!is.null(form)) { if (data.class(form) != "list") { stop("'form' must be a list") } nF <- length(form) } else { nF <- 0 } if (!is.null(nam)) { if (data.class(nam) != "list") { stop("'nam' must be a list") } nN <- length(nam) if ((nF > 0) && (nN != nF)) { stop("'form' and 'nam' have incompatible lengths") } } else { nN <- 0 } if (!missing(pdClass)) { if (!is.character(pdClass)) { stop("'pdClass' must be a character vector") } nP <- length(pdClass) if ((nP > 1)) { if ((nF > 0) && (nF != nP)) { stop("'form' and 'pdClass' have incompatible lengths") } if ((nN > 0) && (nN != nP)) { stop("'nam' and 'pdClass' have incompatible lengths") } } } else { nP <- 1 } nB <- max(c(nF, nN, nP)) oVal <- value if (length(value) == 0 || is.matrix(value) || is.numeric(value)) { if (nB == 1) { stop("LNone of the arguments specify more than one block") } ## will first do a null initialization when value is a matrix or numeric value <- lapply(vector("list", nB), function(el) numeric(0)) } else { if (data.class(value) != "list") { stop("'object' must be a list when not missing, not a matrix, and not numeric") } nO <- length(value) if ((nB > 1) && (nB != nO)) { stop("arguments imply different number of blocks") } nB <- nO } if (nP == 1) { pdClass <- rep(pdClass, nB) } object <- vector("list", nB) namInterc <- rep(FALSE, nB) namCoef <- vector("list", nB) for(i in 1:nB) { if (is.null(nm <- nam[[i]])) { if (is.null(frm <- form[[i]])) { if (inherits(value[[i]], "formula")) { nm <- Names(getCovariateFormula(value[[i]])) if ((length(nm) == 1) && (nm == "(Intercept)") && length(value[[i]]) == 3) { ## nlme case with single intercept terms nm <- sapply(splitFormula(getResponseFormula(value[[i]])[[2]], sep = "+"), function(el) deparse(el[[2]])) } if (length(value[[i]]) == 3) { # nlme case namCoef[[i]] <- sapply(splitFormula(getResponseFormula(value[[i]])[[2]], sep = "+"), function(el) deparse(el[[2]])) } } } else { if (inherits(frm, "formula")) { nm <- Names(getCovariateFormula(frm)) if ((length(nm) == 1) && (nm == "(Intercept)") && length(frm) == 3) { ## nlme case with single intercept terms nm <- sapply(splitFormula(getResponseFormula(frm)[[2]], sep = "+"), function(el) deparse(el[[2]])) } if (length(value[[i]]) == 3) { # nlme case namCoef[[i]] <- sapply(splitFormula(getResponseFormula(value[[i]])[[2]], sep = "+"), function(el) deparse(el[[2]])) } } else { # listForm nm <- unique(unlist(lapply(frm, function(el) { Names(getCovariateFormula(el)) }))) if ((length(nm) == 1) && (nm == "(Intercept)") && length(frm[[1]]) == 3) { ## nlme case with single intercept terms nm <- sapply(frm, function(el) { sapply(splitFormula(getResponseFormula(el)[[2]], sep = "+"), function(el1) deparse(el1[[2]])) }) } namCoef[[i]] <- sapply(frm, function(el) { sapply(splitFormula(getResponseFormula(el)[[2]], sep = "+"), function(el1) deparse(el1[[2]])) }) } } } if (!is.null(nm)) { namInterc[i] <- (length(nm) == 1) && (nm == "(Intercept)") } object[[i]] <- pdMat(value[[i]], form[[i]], nam[[i]], data, pdClass[i]) } if (!all(unlist(lapply(object, inherits, "pdMat")))) { stop("all elements in the argument must generate \"pdMat\" objects") } namesList <- lapply(object, Names) lNam <- unlist(lapply(namesList, length)) # namInterc <- unlist(lapply(namesList, # function(el) { # (length(el) == 1) && (el == "(Intercept)") # })) if (!is.null(namCoef[[1]])) { # nlme case namCoef <- unlist(namCoef) duplCoef <- unique(namCoef[duplicated(namCoef)]) if (length(duplCoef) > 0) { for(i in 1:nB) { wchDupl <- !is.na(match(namesList[[i]], duplCoef)) if (any(wchDupl)) { namesList[[i]][wchDupl] <- paste(namesList[[i]][wchDupl], "(Intercept)", sep = ".") Names(object[[i]]) <- namesList[[i]] } } } } if (sum(namInterc) > 1 && (length(unique(lNam[namInterc])) == 1)) { stop("cannot have duplicated column names in a \"pdMat\" object") } if ((sum(namInterc) == length(lNam)) || !any(lNam[!namInterc])) { # no names class(object) <- c("pdBlocked", "pdMat") if (is.null(formula(object))) { stop("must have formula when no names are given") } if (length(oVal) && (is.matrix(oVal) || is.numeric(oVal))) { stop("must give names when initializing from matrix or parameter") } return(object) } else { if (!all(lNam)) { stop("all elements must have names when any has names") } attr(object, "namesList") <- namesList allNames <- unlist(namesList) if (any(duplicated(allNames))) { stop("cannot have duplicated column names in a \"pdMat\" object") } plen <- unlist(lapply(object, function(el) { if (isInitialized(el)) { length(coef(el, TRUE)) } else { matrix(el) <- diag(length(Names(el))) length(coef(el, TRUE)) } })) if (!all(plen)) { stop("all elements must have a non-zero size") } attr(object, "plen") <- plen attr(object, "Dimnames") <- list(allNames, allNames) class(object) <- c("pdBlocked", "pdMat") if (length(oVal) > 0) { if (is.matrix(oVal)) { # initializing from matrix matrix(object) <- oVal } else if (is.numeric(oVal)){ # initializing from a vector coef(object) <- oVal } } return(object) } } pdMatrix.pdBlocked <- function(object, factor = FALSE) { if (!isInitialized(object)) { stop("cannot access the matrix of uninitialized objects") } if (length(Names(object)) == 0) { stop("cannot access the matrix of object without names") } namesList <- Names(object, TRUE) Ncol <- Dim(object)[2] value <- array(0, c(Ncol, Ncol), attr(object, "Dimnames")) if (factor) { lD <- 0 } for (i in seq_along(object)) { aux <- pdMatrix(object[[i]], factor) value[namesList[[i]], namesList[[i]]] <- as.vector(aux) if (factor) lD <- lD + attr(aux, "logDet") } if (factor) attr(value, "logDet") <- lD value } ####* Methods for standard generics coef.pdBlocked <- function(object, unconstrained = TRUE, ...) { unlist(lapply(object, coef, unconstrained)) } "coef<-.pdBlocked" <- function(object, ..., value) { if (is.null(plen <- attr(object, "plen"))) { stop("cannot change the parameter when length of parameters is undefined") } if (length(value) != sum(plen)) { stop("cannot change parameter length of initialized \"pdMat\" object") } ends <- cumsum(plen) starts <- 1 + c(0, ends[-length(ends)]) for (i in seq_along(object)) { coef(object[[i]]) <- value[(starts[i]):(ends[i])] } object } formula.pdBlocked <- function(x, asList = TRUE, ...) { val <- lapply(x, formula) isNULL <- unlist(lapply(val, is.null)) if (all(isNULL)) return(NULL) if (any(isNULL)) { stop("all elements must have formulas when any has a formula") } if (asList) return(val) isTwoSided <- unlist(lapply(val, function(el) { inherits(el, "listForm") })) if (all(isTwoSided)) { ## list of two-sided formulas val <- do.call("c", val) # for(i in seq(along = object)) { # val <- if (inherits(object[[i]], "formula")) list(object[[i]]) # else object[[i]] # } class(val) <- "listForm" return(val) } if (any(isTwoSided)) { stop("all elements of formula must be list of two-sided formulae or two-sided formulae") } val <- lapply(val, terms) aux <- paste(unlist(lapply(val, function(el) attr(el, "term.labels"))), collapse = "+") if (!any(unlist(lapply(val, function(el) attr(el, "intercept"))))) { ## no intercept aux <- paste(aux, " - 1") } eval(parse(text = paste("~", aux))) } isInitialized.pdBlocked <- function(object) { all(unlist(lapply(object, isInitialized))) } logDet.pdBlocked <- function(object, ...) { sum(unlist(lapply(object, logDet))) } "matrix<-.pdBlocked" <- function(object, value) { value <- as.matrix(value) namesList <- Names(object, TRUE) Ncol <- Dim(object)[2] dims <- dim(value) if (!((dims[1] == dims[2]) && (dims[1] == Ncol))) { stop("cannot change the number of columns on an initialized object") } if (is.null(vNames <- rownames(value))) { vNames <- unlist(namesList) dimnames(value) <- list(vNames, vNames) } else { if (!(all(match(unlist(namesList), vNames, nomatch = 0)))) { stop("names of object and value must match") } attr(object, "Dimnames") <- list(vNames, vNames) } for (i in seq_along(object)) { matrix(object[[i]]) <- value[namesList[[i]], namesList[[i]]] } object } Names.pdBlocked <- function(object, asList = FALSE, ...) { if (asList) attr(object, "namesList") else attr(object, "Dimnames")[[2]] } "Names<-.pdBlocked" <- function(object, ..., value) { if (!is.null(Names(object))) NextMethod() else { ## cannot do anything before initialization of names object } } pdFactor.pdBlocked <- function(object) { pdMatrix(object, factor = TRUE) } solve.pdBlocked <- function(a, b, ...) { if (!isInitialized(a)) { stop("cannot get the inverse of an uninitialized object") } coef(a) <- unlist(lapply(a, function(el) coef(solve(el), TRUE))) a } summary.pdBlocked <- function(object, structName = "Blocked", ...) { value <- lapply(object, summary) names(value) <- unlist(lapply(object, function(el) paste(Names(el), collapse = ", "))) attr(value, "structName") <- structName attr(value, "elementName") <- "Block" class(value) <- "summary.pdMat" value } "[.pdBlocked" <- function(x, i, j, drop = TRUE) { xx <- x x <- as.matrix(x) mCall <- match.call() mCall[[1]] <- get("[") mCall[["x"]] <- x mCall[["drop"]] <- drop if (length(i) == length(j) && mode(i) == mode(j) && all(i == j)) { mCall[["drop"]] <- FALSE # even for a 1 by 1 submatrix, # you want it to be a matrix val <- eval(mCall) vNames <- colnames(val) auxNames <- lapply(Names(xx, TRUE), function(el, vN) { aux <- match(vN, el) if (any(aux1 <- !is.na(aux))) { el[aux[aux1]] } }, vN = vNames) auxWhich <- !unlist(lapply(auxNames, is.null)) if (sum(auxWhich) == 1) { return(pdConstruct(as.list(xx)[auxWhich][[1]], val)) } auxNames <- auxNames[auxWhich] auxClass <- unlist(lapply(xx, function(el) class(el)[1]))[auxWhich] return(pdConstruct(xx, val, nam = auxNames, form = NULL, pdClass = auxClass)) } else { eval(mCall) } } ### Local variables: ### mode: S ### End: nlme/R/simulate.R0000644000176000001440000004540112030057547013413 0ustar ripleyusers### Fit a general linear mixed effects model ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # createConLin <- function(fixed, data = sys.frame(sys.parent()), random = pdSymm(eval(as.call(fixed[-2]))), ...) { ## Call <- match.call() if(!inherits(fixed, "formula") || length(fixed) != 3) { stop("\nfixed-effects model must be a formula of the form \"resp ~ pred\"") } REML <- FALSE reSt <- reStruct(random, REML = REML, data = NULL) groups <- getGroupsFormula(reSt) if(is.null(groups)) { if(inherits(data, "groupedData")) { groups <- getGroupsFormula(data) groupsL <- rev(getGroupsFormula(data, asList = TRUE)) Q <- length(groupsL) if(length(reSt) != Q) { # may need to repeat reSt if(length(reSt) != 1) { stop("incompatible lengths for 'random' and grouping factors") } auxForm <- eval(parse(text = paste("~", deparse(formula(random)[[2]]), "|", deparse(groups[[2]])))) reSt <- reStruct(auxForm, REML = REML, data = NULL) } else { names(reSt) <- names(groupsL) } } else { stop("'data' must inherit from \"groupedData\" class if 'random' does not define groups") } } ## create an lme structure containing the random effects model lmeSt <- lmeStruct(reStruct = reSt) ## extract a data frame with enough information to evaluate ## fixed, groups, reStruct, corStruct, and varStruct dataMix <- model.frame(formula = asOneFormula(formula(lmeSt), fixed, groups), data = data, drop.unused.levels = TRUE) origOrder <- row.names(dataMix) # preserve the original order ## sort the model.frame by groups and get the matrices and parameters ## used in the estimation procedures grps <- getGroups(dataMix, eval(parse(text = paste("~1", deparse(groups[[2]]), sep = "|")))) ## ordering data by groups if(inherits(grps, "factor")) { # single level ##"order" treats a single named argument peculiarly so must split this off ord <- order(grps) grps <- data.frame(grps) row.names(grps) <- origOrder names(grps) <- as.character(deparse((groups[[2]]))) } else { ord <- do.call("order", grps) ## making group levels unique for(i in 2:ncol(grps)) { grps[, i] <- as.factor(paste(as.character(grps[, i - 1]), as.character(grps[, i]), sep = "/")) NULL } } grps <- grps[ord, , drop = FALSE] dataMix <- dataMix[ord, , drop = FALSE] ## revOrder <- match(origOrder, row.names(dataMix)) # putting in orig. order ## obtaining basic model matrices N <- nrow(grps) Z <- model.matrix(reSt, dataMix) ncols <- attr(Z, "ncols") Names(lmeSt$reStruct) <- attr(Z, "nams") ## keeping the contrasts for later use in predict contr <- attr(Z, "contr") X <- model.frame(fixed, dataMix) auxContr <- lapply(X, function(el) if(inherits(el, "factor")) contrasts(el)) contr <- c(contr, auxContr[is.na(match(names(auxContr), names(contr)))]) contr <- contr[!unlist(lapply(contr, is.null))] X <- model.matrix(fixed, X) y <- eval(fixed[[2]], dataMix) ncols <- c(ncols, dim(X)[2], 1) Q <- ncol(grps) ## creating the condensed linear model list(Xy = array(c(Z, X, y), c(N, sum(ncols)), list(row.names(dataMix), c(colnames(Z), colnames(X), deparse(fixed[[2]])))), dims = MEdims(grps, ncols), logLik = 0) } simulate.lme <- function(object, nsim = 1, seed = as.integer(runif(1, 0, .Machine$integer.max)), m2, method = c("REML", "ML"), niterEM = c(40, 200), useGen = FALSE, ...) { if (inherits(nsim, "lm") || inherits(nsim, "lme")) stop("order of arguments in 'simulate.lme' has changed to conform with generic in R-2.2.0", domain = NA) ## object is a list of arguments to lme, or an lme object from which the ## call is extracted, to define the null model ## m2 is an option list of arguments to lme to define the feared model getResults1 <- function(conLin, nIter, pdClass, REML, ssq, p, pp1) { unlist(.C(mixed_combined, as.double(conLin$Xy), as.integer(unlist(conLin$dims)), double(ssq), as.integer(nIter), as.integer(pdClass), as.integer(REML), logLik = double(1), R0 = double(pp1), lRSS = double(1), info = integer(1))[c("info", "logLik")]) } getResults2 <- function(conLin, reSt, REML, control) { lmeSt <- lmeStruct(reStruct = reStruct(reSt, REML = REML)) attr(lmeSt, "conLin") <- conLin lmeSt <- Initialize(lmeSt, data = NULL, groups = NULL, control = control) attr(lmeSt, "conLin") <- MEdecomp(attr(lmeSt, "conLin")) aMs <- nlminb(c(coef(lmeSt)), function(lmePars) -logLik(lmeSt, lmePars), control = list(iter.max = control$msMaxIter, eval.max = control$msMaxEval, trace = control$msVerbose)) c(info = aMs$flags[1], logLik = -aMs$value) } if(!exists(".Random.seed", envir = .GlobalEnv)) runif(1) # initialize the RNG if necessary RNGstate <- get(".Random.seed", envir = .GlobalEnv) set.seed(seed) if (inherits(object, "lme")) { # given as an lme object fit1 <- object object <- as.list(object$call[-1]) } else { object <- as.list(match.call(lme, substitute(object))[ -1 ]) fit1 <- do.call("lme", object) } if (length(fit1$modelStruct) > 1) { stop("models with \"corStruct\" and/or \"varFunc\" objects not allowed") } reSt1 <- fit1$modelStruct$reStruct condL1 <- do.call("createConLin", object) pdClass1 <- unlist(lapply(reSt1, data.class)) pdClass1 <- match(pdClass1, c("pdSymm", "pdDiag", "pdIdent", "pdCompSymm", "pdLogChol"), 0) - 1 control1 <- lmeControl() if (!is.null(object$control)) { control1[names(object$control)] <- object$control } control1$niterEM <- niterEM[1] sig <- fit1$sigma DeltaInv <- pdMatrix(reSt1, factor = TRUE) for(i in names(DeltaInv)) { DeltaInv[[i]] <- sig * DeltaInv[[i]] } if (missing(useGen)) { useGen <- any(pdClass1 == -1) } nullD <- condL1$dims N <- nullD$N Q <- nullD$Q p1 <- nullD$ncol[Q + 1] pp11 <- p1 * (p1 + 1) ycol1 <- sum(nullD$ncol) qvec <- nullD$qvec[1:Q] ssq1 <- sum(qvec^2) csq1 <- cumsum(c(1, qvec[ - Q])) csq2 <- cumsum(qvec) ngrp <- nullD$ngrps ind <- vector("list", Q) ## base for creating response base <- condL1$Xy[, ycol1 - (nullD$ncol[Q + 1]:1), drop = FALSE] %*% fixef(fit1) for(i in 1:Q) { ind[[i]] <- rep(1:ngrp[i], nullD$ZXlen[[i]]) } value <- list(null = list()) if (ML <- !is.na(match("ML", method))) { value$null$ML <- array(0, c(nsim, 2), list(1:nsim, c("info", "logLik"))) } if (REML <- !is.na(match("REML", method))) { value$null$REML <- array(0, c(nsim, 2), list(1:nsim, c("info", "logLik"))) } attr(value, "call") <- match.call() attr(value, "seed") <- seed ALT <- FALSE if (!missing(m2)) { ALT <- TRUE if (inherits(m2, "lme")) { # given as an lme object fit2 <- m2 m2 <- as.list(m2$call[-1]) } else { m2 <- as.list(match.call(lme, substitute(m2))[ -1 ]) if (is.null(m2$random)) { m2$random <- asOneSidedFormula(object$fixed[-2]) } aux <- object aux[names(m2)] <- m2 m2 <- aux fit2 <- do.call("lme", m2) } if (length(fit2$modelStruct) > 1) { stop("models with \"corStruct\" and/or \"varFunc\" objects not allowed") } condL2 <- do.call("createConLin", m2) reSt2 <- fit2$modelStruct$reStruct control2 <- lmeControl() if (!is.null(m2$control)) { control2[names(m2$control)] <- m2$control } control2$niterEM <- niterEM[2] pdClass2 <- unlist(lapply(fit2$modelStruct$reStruct, data.class)) pdClass2 <- match(pdClass2, c("pdSymm", "pdDiag", "pdIdent", "pdCompSymm", "pdLogChol"), 0) - 1 useGen <- useGen || any(pdClass2 == -1) altD <- condL2$dims ssq2 <- sum((altD$qvec[1:altD$Q])^2) p2 <- altD$ncol[altD$Q + 1] pp12 <- p2 * (p2 + 1) ycol2 <- sum(altD$ncol) if (ML) { value$alt$ML <- value$null$ML } if (REML) { value$alt$REML <- value$null$REML } } for(i in 1:nsim) { base2 <- base + rnorm(N, sd = sig) for(j in 1:Q) { base2 <- base2 + ((array(rnorm(ngrp[j] * qvec[j]), c(ngrp[j], qvec[j]), list(1:ngrp[j], NULL)) %*% DeltaInv[[j]])[ind[[j]], , drop = FALSE] * condL1$Xy[,csq1[j]:csq2[j], drop = FALSE]) %*% rep(1, qvec[j]) } condL1$Xy[, ycol1] <- base2 if (REML) { if (useGen) { value$null$REML[i,] <- getResults2(condL1, reSt1, TRUE, control1) } else { value$null$REML[i,] <- getResults1(condL1, niterEM[1], pdClass1, TRUE, ssq1, p1, pp11) } } if (ML) { if (useGen) { value$null$ML[i,] <- getResults2(condL1, reSt1, FALSE, control1) } else { value$null$ML[i,] <- getResults1(condL1, niterEM[1], pdClass1, FALSE, ssq1, p1, pp11) } } if (ALT) { condL2$Xy[, ycol2] <- base2 if (REML) { if (useGen) { value$alt$REML[i,] <- getResults2(condL2, reSt2, TRUE, control2) } else { value$alt$REML[i,] <- getResults1(condL2, niterEM[2], pdClass2, TRUE, ssq2, p2, pp12) } } if (ML) { if (useGen) { value$alt$ML[i,] <- getResults2(condL2, reSt2, FALSE, control2) } else { value$alt$ML[i,] <- getResults1(condL2, niterEM[2], pdClass2, FALSE, ssq2, p2, pp12) } } } } if (ML) { value$null$ML[, "logLik"] <- N * (log(N) - (1 + log(2*pi)))/2 + value$null$ML[, "logLik"] if (ALT) { value$alt$ML[, "logLik"] <- N * (log(N) - (1 + log(2*pi)))/2 + value$alt$ML[, "logLik"] } } if (REML) { value$null$REML[, "logLik"] <- (N - p1) * (log(N - p1) - (1 + log(2*pi)))/2 + value$null$REML[, "logLik"] if (ALT) { value$alt$REML[, "logLik"] <- (N - p2) * (log(N - p2) - (1 + log(2*pi)))/2 + value$alt$REML[, "logLik"] } } attr(value, "df") <- p1 + length(coef(reSt1)) + 1 if (ALT) { attr(value, "df") <- abs(attr(value, "df") - (p2 + length(coef(reSt2)) + 1)) } attr(value, "useGen") <- useGen class(value) <- "simulate.lme" assign(".Random.seed", RNGstate, envir = .GlobalEnv) value } print.simulate.lme <- function(x, ...) { ox <- x if (is.null(attr(x, "useGen"))) { # from simulate.lme attr(x$null, "dims") <- NULL if (!is.null(x$alt)) { attr(x$alt, "dims") <- NULL } } else { attr(x, "useGen") <- attr(x, "df") <- NULL } attr(x, "seed") <- attr(x, "call") <- NULL NextMethod() invisible(ox) } plot.simulate.lme <- function(x, form = y ~ x | df * method, df = attr(x, "df"), weights, xlab = "Empirical p-value", ylab = "Nominal p-value", xlim = c(0.037, 0.963), ylim = c(0.037, 0.963), aspect = 1, strip = function(...) strip.default(..., style = 1), ...) { ML <- !is.null(x$null$ML) if(ML) { if (is.null(x$alt$ML)) stop("plot method only implemented for comparing models") okML <- x$null$ML[, "info"] < 8 & x$alt$ML[, "info"] < 8 } REML <- !is.null(x$null$REML) if(REML) { if (is.null(x$alt$REML)) stop("plot method only implemented for comparing models") okREML <- x$null$REML[, "info"] < 8 & x$alt$REML[, "info"] < 8 } if (is.null(df)) { stop("no degrees of freedom specified") } if ((ldf <- length(df)) > 1) { df <- sort(unique(df)) if (missing(weights)) { weights <- rep.int(1/ldf, ldf) } else { if (!identical(weights,FALSE) && length(weights) != ldf) stop("degrees of freedom and weights must have the same length") } } else { weights <- FALSE } useWgts <- (length(weights) != 1) if (any(df < 0)) { stop("negative degrees of freedom not allowed") } else { if ((ldf == 1) && (df == 0)) { stop("more than one degree of freedom is needed when one them is zero.") } } if (ML) { MLstat <- rev(sort(2 * pmax(0, x$alt$ML[okML, "logLik"] - x$null$ML[okML,"logLik"]))) MLy <- lapply(df, function(df, x) { if (df > 0) 1 - pchisq(x, df) else 1*(x == 0) }, x = MLstat) dfC <- paste("df",df,sep="=") if (useWgts) { # has weights if (ldf == 2) { # will interpolate MLy <- c(MLy[[1]], weights[1] * MLy[[1]] + weights[2] * MLy[[2]], MLy[[2]]) MLdf <- rep(c(dfC[1], paste("Mix(",df[1],",",df[2],")",sep=""), dfC[2]), rep(length(MLstat), ldf + 1)) } else { aux <- weights[1] * MLy[[1]] auxNam <- paste("Mix(",df[1],sep="") for(i in 2:ldf) { aux <- aux + weights[i] * MLy[[i]] auxNam <- paste(auxNam, ",", df[i],sep="") } auxNam <- paste(auxNam, ")",sep="") MLy <- c(unlist(MLy), aux) MLdf <- rep(c(dfC, auxNam), rep(length(MLstat), ldf + 1)) } MLx <- rep((1:length(MLstat) - 0.5)/length(MLstat), ldf + 1) } else { MLy <- unlist(MLy) MLdf <- rep(dfC, rep(length(MLstat), ldf)) MLx <- rep((1:length(MLstat) - 0.5)/length(MLstat), ldf) } auxInd <- MLdf != "df=0" meth <- rep("ML", length(MLy)) Mdf <- MLdf } else { MLy <- MLdf <- MLx <- auxInd <- meth <- Mdf <- NULL } if (REML) { REMLstat <- rev(sort(2 * pmax(0, x$alt$REML[okREML, "logLik"] - x$null$REML[okREML, "logLik"]))) REMLy <- lapply(df, function(df, x) { if (df > 0) { 1 - pchisq(x, df) } else { val <- rep(0, length(x)) val[x == 0] <- 1 val } }, x = REMLstat) dfC <- paste("df",df,sep="=") if (useWgts) { # has weights if (ldf == 2) { # will interpolate REMLy <- c(REMLy[[1]], weights[1] * REMLy[[1]] + weights[2] * REMLy[[2]], REMLy[[2]]) REMLdf <- rep(c(dfC[1], paste("Mix(",df[1],",",df[2],")",sep=""), dfC[2]), rep(length(REMLstat), ldf + 1)) } else { aux <- weights[1] * REMLy[[1]] auxNam <- paste("Mix(",df[1],sep="") for(i in 2:ldf) { aux <- aux + weights[i] * REMLy[[i]] auxNam <- paste(auxNam, ",", df[i],sep="") } auxNam <- paste(auxNam, ")",sep="") REMLy <- c(unlist(REMLy), aux) REMLdf <- rep(c(dfC, auxNam), rep(length(REMLstat), ldf + 1)) } REMLx <- rep((1:length(REMLstat) - 0.5)/length(REMLstat), ldf + 1) } else { REMLy <- unlist(REMLy) REMLdf <- rep(dfC, rep(length(REMLstat), ldf)) REMLx <- rep((1:length(REMLstat) - 0.5)/length(REMLstat), ldf) } auxInd <- c(auxInd, REMLdf != "df=0") meth <- c(meth, rep("REML", length(REMLy))) Mdf <- c(Mdf, REMLdf) } else { REMLy <- REMLdf <- REMLx <- NULL } meth <- meth[auxInd] Mdf <- Mdf[auxInd] Mdf <- ordered(Mdf, levels = unique(Mdf)) frm <- data.frame(x = c(MLx, REMLx)[auxInd], y = c(MLy, REMLy)[auxInd], df = Mdf, method = meth) ## names(frm$x) <- rep(1, nrow(frm)) ## if (df[1] == 0) { ## names(frm$x)[substring(frm$df,1,3) == "Mix"] <- 1 - weights[1] ## if (missing(ylim)) { ## ylim <- c(0.0384, 1) ## } ## } xyplot(form, data = frm, type = c('g', 'l'), ## panel = function(x, y, ...) { ## panel.grid() ## panel.xyplot(x, y, type = "l", ...) ## if ((dfType <- as.double(names(x)[1])) == 1) { ## panel.abline( 0, as.double(names(x)[1]), lty = 2 ) ## } else { ## panel.xyplot(c(0,dfType,dfType,1), c(0,dfType,1,1), ## type="l", lty = 2, col = 1) ## } ## }, strip = strip, xlab = xlab, ylab = ylab, aspect = aspect, xlim = xlim, ylim = ylim, ...) } nlme/R/newFunc.R0000644000176000001440000003004712223220012013154 0ustar ripleyusers### Functions that are used in several parts of the nlme library ### but do not belong to any specific part ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # allCoef <- ## Combines different coefficient vectors into one vector, keeping track ## of which coefficients came from which object function(..., extract = coef) { dots <- list(...) theta <- lapply(dots, extract) len <- unlist(lapply(theta, length)) num <- seq_along(len) if (sum(len) > 0) { which <- outer(rep(num, len), num, "==") } else { which <- array(FALSE, c(1, length(len))) } cnames <- unlist(as.list(sys.call()[-1])) dimnames(which) <- list(NULL, cnames[cnames != substitute(extract)]) theta <- unlist(theta) attr(theta, "map") <- which theta } allVarsRec <- ## Recursive version of all.vars function(object) { if (is.list(object)) { unlist(lapply(object, allVarsRec)) } else { all.vars(object) } } asOneFormula <- ## Constructs a linear formula with all the variables used in a ## list of formulas, except for the names in omit function(..., omit = c(".", "pi")) { dots <- list(...) names <- unique(allVarsRec((dots))) names <- names[is.na(match(names, omit))] if (length(names)) eval(parse(text = paste("~", paste(names, collapse = "+")))[[1]]) else ~1 } compareFits <- ## compares coeffificients from different fitted objects function(object1, object2, which = 1:ncol(object1)) { dn1 <- dimnames(object1) dn2 <- dimnames(object2) aux <- rep(NA, length(dn1[[1]])) if (any(aux1 <- is.na(match(dn2[[2]], dn1[[2]])))) { object1[,dn2[[2]][aux1]] <- aux } if (any(aux1 <- is.na(match(dn1[[2]], dn2[[2]])))) { object2[,dn1[[2]][aux1]] <- aux } dn1 <- dimnames(object1) c1 <- deparse(substitute(object1)) c2 <- deparse(substitute(object2)) if (any(sort(dn1[[1]]) != sort(dn2[[1]]))) { stop("objects must have coefficients with same row names") } ## putting object2 in same order object2 <- object2[dn1[[1]], dn1[[2]], drop = FALSE] object1 <- object1[, which, drop = FALSE] object2 <- object2[, which, drop = FALSE] dn1 <- dimnames(object1) dm1 <- dim(object1) out <- array(0, c(dm1[1], 2, dm1[2]), list(dn1[[1]], c(c1,c2), dn1[[2]])) for(i in dn1[[2]]) { out[,,i] <- cbind(object1[[i]], object2[[i]]) } class(out) <- "compareFits" out } fdHess <- function(pars, fun, ..., .relStep = (.Machine$double.eps)^(1/3), minAbsPar = 0) ## Use a Koschal design to establish a second order model for the response { pars <- as.numeric(pars) npar <- length(pars) incr <- ifelse( abs(pars) <= minAbsPar, minAbsPar * .relStep, abs(pars) * .relStep ) baseInd <- diag(npar) frac <- c(1, incr, incr^2) cols <- list(0, baseInd, -baseInd) for ( i in seq_along(pars)[ -npar ] ) { cols <- c( cols, list( baseInd[ , i ] + baseInd[ , -(1:i) ] ) ) frac <- c( frac, incr[ i ] * incr[ -(1:i) ] ) } indMat <- do.call( "cbind", cols) shifted <- pars + incr * indMat indMat <- t(indMat) Xcols <- list(1, indMat, indMat^2) for ( i in seq_along(pars)[ - npar ] ) { Xcols <- c( Xcols, list( indMat[ , i ] * indMat[ , -(1:i) ] ) ) } coefs <- solve( do.call( "cbind", Xcols ) , apply(shifted, 2, fun, ...) )/frac Hess <- diag( coefs[ 1 + npar + seq_along(pars) ], ncol = npar ) Hess[ row( Hess ) > col ( Hess ) ] <- coefs[ -(1:(1 + 2 * npar)) ] list( mean = coefs[ 1 ], gradient = coefs[ 1 + seq_along(pars) ], Hessian = ( Hess + t(Hess) ) ) } gapply <- ## Apply a function to the subframes of a data.frame ## If "apply" were generic, this would be the method for groupedData function(object, which, FUN, form = formula(object), level, groups = getGroups(object, form, level), ...) { if (!inherits(object, "data.frame")) { stop("object must inherit from \"data.frame\"") } ## Apply a function to the subframes of a groupedData object if (missing(groups)) { # formula and level are required if (!inherits(form, "formula")) { stop("'form' must be a formula") } if (is.null(grpForm <- getGroupsFormula(form, asList = TRUE))) { ## will use right hand side of form as groups formula grpForm <- splitFormula(asOneSidedFormula(form[[length(form)]])) } if (missing(level)) level <- length(grpForm) else if (length(level) != 1) { stop("only one level allowed in 'gapply'") } groups <- groups # forcing evaluation } if (!missing(which)) { switch(mode(which), character = { wchNot <- is.na(match(which, names(object))) if (any(wchNot)) { stop(sprintf(ngettext(sum(wchNot), "%s not matched", "%s not matched"), paste(which[wchNot], collapse = ",")), domain = NA) } }, numeric = { if (any(is.na(match(which, 1:ncol(object))))) { stop(gettextf("'which' must be between 1 and %d", ncol(object)), domain = NA) } }, stop("'which' can only be character or integer") ) object <- object[, which, drop = FALSE] } val <- lapply(X = split(object, groups), FUN = FUN, ...) if (is.atomic(val[[1]]) && length(val[[1]]) == 1) { val <- unlist(val) } val } getCovariateFormula <- function(object) { ## Return the primary covariate formula as a one sided formula form <- formula(object) if (!(inherits(form, "formula"))) { stop("formula(object) must return a formula") } form <- form[[length(form)]] if (length(form) == 3 && form[[1]] == as.name("|")){ # conditional expression form <- form[[2]] } eval(substitute(~form)) } getResponseFormula <- function(object) { ## Return the response formula as a one sided formula form <- formula(object) if (!(inherits(form, "formula") && (length(form) == 3))) { stop("'form' must be a two-sided formula") } eval(parse(text = paste("~", deparse(form[[2]])))) } gsummary <- ## Summarize an object according to the levels of a grouping factor ## function(object, FUN = function(x) mean(x, na.rm = TRUE), omitGroupingFactor = FALSE, form = formula(object), level, groups = getGroups(object, form , level), invariantsOnly = FALSE, ...) { if (!inherits(object, "data.frame")) { stop("object must inherit from \"data.frame\"") } if (missing(groups)) { # formula and level are required if (!inherits(form, "formula")) { stop("'form' must be a formula") } if (is.null(grpForm <- getGroupsFormula(form, asList = TRUE))) { ## will use right hand side of form as groups formula grpForm <- splitFormula(asOneSidedFormula(form[[length(form)]])) } if (missing(level)) level <- length(grpForm) else if (length(level) != 1) { stop("only one level allowed in 'gsummary'") } } gunique <- unique(groups) firstInGroup <- match(gunique, groups) asFirst <- firstInGroup[match(groups, gunique)] value <- as.data.frame(object[firstInGroup, , drop = FALSE]) row.names(value) <- as.character(gunique) value <- value[as.character(sort(gunique)), , drop = FALSE] varying <- unlist(lapply(object, function(column, frst) { aux <- as.character(column) any(!identical(aux, aux[frst])) }, frst = asFirst)) if (any(varying) && (!invariantsOnly)) { # varying wanted Mode <- function(x) { aux <- table(x) names(aux)[match(max(aux), aux)] } if (data.class(FUN) == "function") { # single function given FUN <- list(numeric = FUN, ordered = Mode, factor = Mode) } else { if (!(is.list(FUN) && all(sapply(FUN, data.class) == "function"))) { stop("'FUN' can only be a function or a list of functions") } auxFUN <- list(numeric = mean, ordered = Mode, factor = Mode) aux <- names(auxFUN)[is.na(match(names(auxFUN), names(FUN)))] if (length(aux) > 0) FUN[aux] <- auxFUN[aux] } for(nm in names(object)[varying]) { ## dClass <- data.class(object[[nm]]) ## The problem here is that dclass may find an irrelevant class, ## e.g. Hmisc's "labelled" dClass <- if(is.ordered(object[[nm]])) "ordered" else if(is.factor(object[[nm]])) "factor" else mode(object[[nm]]) if (dClass == "numeric") { value[[nm]] <- as.vector(tapply(object[[nm]], groups, FUN[["numeric"]],...)) } else { value[[nm]] <- as.vector(tapply(as.character(object[[nm]]), groups, FUN[[dClass]])) if (inherits(object[,nm], "ordered")) { value[[nm]] <- ordered(value[,nm], levels = levels(object[,nm]))[drop = TRUE] } else { value[[nm]] <- factor(value[,nm], levels = levels(object[,nm]))[drop = TRUE] } } } } else { # invariants only value <- value[, !varying, drop = FALSE] } if (omitGroupingFactor) { if (is.null(form)) { stop("cannot omit grouping factor without 'form'") } grpForm <- getGroupsFormula(form, asList = TRUE) if (missing(level)) level <- length(grpForm) grpNames <- names(grpForm)[level] whichKeep <- is.na(match(names(value), grpNames)) if (any(whichKeep)) { value <- value[ , whichKeep, drop = FALSE] } else { return(NULL); } } value } pooledSD <- function(object) { if (!inherits(object, "lmList")) { stop("object must inherit from class \"lmList\"") } aux <- apply(sapply(object, function(el) { if (is.null(el)) { c(0,0) } else { aux <- resid(el) c(sum(aux^2), length(aux) - length(coef(el))) } }), 1, sum) if (aux[2] == 0) { stop("no degrees of freedom for estimating std. dev.") } val <- sqrt(aux[1]/aux[2]) attr(val, "df") <- aux[2] val } splitFormula <- ## split, on the nm call, the rhs of a formula into a list of subformulas function(form, sep = "/") { if (inherits(form, "formula") || mode(form) == "call" && form[[1]] == as.name("~")) return(splitFormula(form[[length(form)]], sep = sep)) if (mode(form) == "call" && form[[1]] == as.name(sep)) return(do.call("c", lapply(as.list(form[-1]), splitFormula, sep = sep))) if (mode(form) == "(") return(splitFormula(form[[2]], sep = sep)) if (length(form) < 1) return(NULL) list(asOneSidedFormula(form)) } ##*## phenoModel - one-compartment open model with intravenous ##*## administration and first-order elimination for the Phenobarbital data phenoModel <- function(Subject, time, dose, lCl, lV) { .C(nlme_one_comp_first, as.integer(length(time)), resp = as.double(dose), as.double(cbind(Subject, time, dose, exp(lV), exp(lCl))), NAOK = TRUE)$resp } ##*## quinModel - one-compartment open model with first order ##*## absorption for the Quinidine data quinModel <- function(Subject, time, conc, dose, interval, lV, lKa, lCl) { .C(nlme_one_comp_open, as.integer(length(time)), resp = as.double(dose), as.double(cbind(Subject, time, conc, dose, interval, exp(lV), exp(lKa), exp(lCl - lV))), NAOK = TRUE)$resp } LDEsysMat <- function(pars, incidence) { tt <- incidence[, "To"] ff <- incidence[, "From"] pp <- pars[incidence[, "Par"]] n <- max(ff, tt) val <- array(double(n * n), c(n, n)) diag(val) <- - tapply(pp, ff, sum) val[incidence[tt > 0, c("To", "From"), drop = FALSE]] <- pp[tt > 0] val } ## Local Variables: ## mode:S ## End: nlme/R/VarCorr.R0000644000176000001440000001064611534450125013146 0ustar ripleyusers### Extract variance components of lme models. ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # VarCorr <- function( x, sigma = 1, rdig = 3) UseMethod("VarCorr") VarCorr.lme <- function( x, sigma = 1., rdig = 3) { sigma <- x$sigma m <- lapply( rev( x$modelStruct$reStruct ), VarCorr, sigma = sigma, rdig = rdig) Q <- length( m ) if (Q <= 1) { nm <- names(m) m <- m[[1]] mm <- rbind(m, Residual = c(Variance = sigma^2, StdDev = sigma)) v <- array( "", dim(mm), dimnames(mm) ) v[, 1] <- format( mm[, 1] ) v[, 2] <- format( mm[, 2] ) if (!is.null( attr(m, "corr") ) ) { v <- cbind( v, rbind(attr(m, "corr"), Residual = rep("", ncol(attr(m, "corr"))))) } attr( v, "title" ) <- paste( nm, "=", attr( m, "formStr" ) ) class( v ) <- "VarCorr.lme" return( v ) } ## multiple nested levels case nrows <- sapply( m, nrow ) trows <- 1 + c(0, cumsum(1 + nrows))[1:Q] bd <- rbind( do.call("rbind", m), c(Variance = sigma^2, StdDev = sigma) ) corr <- lapply( m, attr, which = "corr") colnames <- colnames(bd) maxCorr <- 0 if ( !all( Nulls <- sapply( corr, is.null ) ) ) { maxCorr <- max( sapply( corr[!Nulls], ncol ) ) colnames <- c( colnames, "Corr", rep("", maxCorr - 1 ) ) } v <- array("", c(sum(nrows) + Q + 1, 2 + maxCorr), list(NULL, colnames)) v[-trows, 1] <- format(bd[, 1]) v[-trows, 2] <- format(bd[, 2]) v[trows, 1] <- sapply( m, attr, which = "formStr" ) rownames <- rep("", sum(nrows) + Q) rownames[trows] <- paste( names( m ), "=" ) rr <- 1 for (i in seq_along( m ) ) { rownames[ rr + (1:nrows[i]) ] <- dimnames( m[[i]] )[[1]] if (!is.null( corr[[i]] )) { v[ rr + (1:nrows[i]), 2 + (1:ncol(corr[[i]])) ] <- corr[[i]] } rr <- rr + nrows[i] + 1 } rownames(v) <- c(rownames, "Residual") class(v) <- "VarCorr.lme" v } print.VarCorr.lme <- function(x, ...) { if (!is.null(attr(x, "title"))) { cat(attr( x, "title" ), "\n") attr(x, "title") <- NULL } print(unclass(x), ..., quote = FALSE ) invisible(x) } VarCorr.pdMat <- function( x, sigma = 1., rdig = 3) { sx <- summary( x ) sd <- sigma * attr( sx, "stdDev" ) var <- sd^2 p <- dim(sx)[2] v <- array(c(var, sd), c(p, 2), list( names(sd), c( "Variance", "StdDev" ))) # attr(v, "formStr") <- deparse(as.call(list(as.name(class(x)[[1]]), # as.vector(attr(x, "formula"))))) # ## puts in an extra blank. We'll do it the clunky way instead attr(v, "formStr") <- if ( inherits( attr(x, "formula"), "listForm" ) ) {# an nlme'ism paste(class(x)[[1]], "(list(", paste( sapply( attr(x, "formula"), function(x) as.character(deparse(x))), collapse=","), "))", sep = "") } else { paste(class(x)[[1]], "(", substring(deparse(attr(x, "formula")), 2), ")", sep = "") } if ( attr(sx, "noCorrelation") | (p <= 1) ) { return(v) } ll <- lower.tri(sx) sx[ll] <- format(round(sx[ll], digits = rdig)) sx[!ll] <- "" if (!is.null(colnames(sx))) { sx[1,] <- abbreviate(colnames(sx), minlength = rdig + 3) } dimnames(sx) <- list(names(sd), c("Corr", rep("", p - 1))) attr(v, "corr") <- sx[, -p, drop = FALSE ] v } VarCorr.pdBlocked <- function( x, sigma = 1., rdig = 3) { m <- lapply( x, VarCorr, sigma = sigma, rdig = rdig) bd <- do.call("rbind", m) ## the following code does not appear to be used at all ## corr <- lapply( m, attr, which = "corr") ## maxCorr <- 0 ## if ( !all( Nulls <- sapply( corr, is.null ) ) ) { ## maxCorr <- max( sapply( corr[!Nulls], ncol ) ) ## } attr(bd, "formStr") <- paste( sapply( m, attr, which = "formStr" ), collapse = ", ") bd } ### Local variables: ### mode: S ### End: nlme/R/lmList.R0000644000176000001440000013376212203151370013033 0ustar ripleyusers### Create a list of lm objects ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # lmList <- ## a list of lm objects from a formula or a groupedData object function(object, data, level, subset, na.action = na.fail, pool = TRUE) UseMethod("lmList") lmList.groupedData <- function(object, data, level, subset, na.action = na.fail, pool = TRUE) { ### object will provide the formula, the data, and the groups form <- formula(object) args <- as.list(match.call())[-1] args[["object"]] <- as.vector(eval(parse(text = paste(deparse(form[[2]]), "~", deparse(form[[3]][[2]]))))) if (!missing(data)) { args[["data"]] <- substitute(object) } else { args <- as.list(c(args, list(data = substitute(object)))) } do.call("lmList.formula", args) } lmList.formula <- function(object, data, level, subset, na.action = na.fail, pool = TRUE) { Call <- match.call() if (!missing(subset)) { data <- data[eval(asOneSidedFormula(Call[["subset"]])[[2]], data),, drop = FALSE] } if (!inherits(data, "data.frame")) data <- as.data.frame(data) data <- na.action(data) if (is.null(grpForm <- getGroupsFormula(object))) { if (inherits(data, "groupedData")) { if (missing(level)) level <- length(getGroupsFormula(data, asList = TRUE)) else if (length(level) > 1) { stop("multiple levels not allowed") } groups <- getGroups(data, level = level)[drop = TRUE] grpForm <- getGroupsFormula(data) Call$object <- as.vector(eval(parse(text=paste(deparse(Call$object), deparse(grpForm[[2]]), sep = "|")))) } else { stop ("'data' must be a \"groupedData\" object if 'groups' argument is missing") } } else { if (missing(level)) level <- length(getGroupsFormula(object, asList = TRUE)) else if (length(level) > 1) { stop("multiple levels not allowed") } groups <- getGroups(data, form = grpForm, level = level)[drop = TRUE] object <- eval(parse(text=paste(deparse(getResponseFormula(object)[[2]]), c_deparse(getCovariateFormula(object)[[2]]), sep = "~"))) } val <- lapply(split(data, groups), function(dat, form, na.action) { try(lm(formula = form, data = dat, na.action = na.action), silent=TRUE) }, form = object, na.action = na.action) use <- sapply(val, function(x)!inherits(x, "try-error")) val[!use] <- list(NULL) if (sum(!use)) warning("An lm fit failed, probably because a factor only had one level") if (inherits(data, "groupedData")) { ## saving labels and units for plots attr(val, "units") <- attr(data, "units") attr(val, "labels") <- attr(data, "labels") } attr(val, "dims") <- list(N = nrow(data), M = length(val)) attr(val,"call") <- Call attr(val, "groupsForm") <- grpForm attr(val,"groups") <- ordered(groups, levels = names(val)) attr(val, "origOrder") <- match(unique(as.character(groups)), names(val)) attr(val, "level") <- level attr(val, "pool") <- pool class(val) <- "lmList" val } ###*# Methods for standard generics augPred.lmList <- function(object, primary = NULL, minimum = min(primary), maximum = max(primary), length.out = 51, ...) { data <- eval(attr(object, "call")[["data"]]) if (!inherits(data, "data.frame")) { stop(gettextf("'data' in %s call must evaluate to a data frame", sQuote(substitute(object))), domain = NA) } if(is.null(primary)) { if (!inherits(data, "groupedData")) { stop(gettextf("%s without \"primary\" can only be used with fits of \"groupedData\" objects", sys.call()[[1]]), domain = NA) } primary <- getCovariate(data) prName <- deparse(getCovariateFormula(data)[[2]]) } else{ primary <- asOneSidedFormula(primary)[[2]] prName <- deparse(primary) primary <- eval(primary, data) } newprimary <- seq(from = minimum, to = maximum, length.out = length.out) groups <- getGroups(object) grName <- deparse(getGroupsFormula(object)[[2]]) ugroups <- unique(groups) value <- data.frame(rep(newprimary, length(ugroups)), rep(ugroups, rep(length(newprimary), length(ugroups)))) names(value) <- c(prName, grName) ## recovering other variables in data that may be needed for predictions ## varying variables will be replaced by their means summData <- gsummary(data, groups = groups) if (any(toAdd <- is.na(match(names(summData), names(value))))) { summData <- summData[, toAdd, drop = FALSE] } value[, names(summData)] <- summData[value[, 2], ] pred <- c(predict(object, value, asList = FALSE)) newvals <- cbind(value[, 1:2], pred) names(newvals)[3] <- respName <- deparse(getResponseFormula(object)[[2]]) orig <- data.frame(primary, groups, getResponse(object)) names(orig) <- names(newvals) value <- rbind(orig, newvals) attributes(value[, 2]) <- attributes(groups) value[, ".type"] <- ordered(c(rep("original", nrow(data)), rep("predicted", nrow(newvals))), levels = c("predicted", "original")) labs <- list(x = prName, y = respName) unts <- list(x = "", y = "") if(inherits(data, "groupedData")) { labs[names(attr(data, "labels"))] <- attr(data, "labels") unts[names(attr(data, "units"))] <- attr(data, "units") attr(value, "units") <- attr(data, "units") } attr(value, "labels") <- labs attr(value, "units") <- unts attr(value, "formula") <- eval(parse(text = paste(respName, "~", prName, "|", grName))) class(value) <- c("augPred", class(value)) value } coef.lmList <- ## Extract the coefficients and form a data.frame if possible function(object, augFrame = FALSE, data = NULL, which = NULL, FUN = mean, omitGroupingFactor = TRUE, ...) { coefs <- lapply(object, coef) non.null <- !unlist(lapply(coefs, is.null)) ## size the data frame to cope with combined levels for factors ## and name the columns so can fill by name if (sum(non.null) > 0) { coefNames <- unique(as.vector(sapply(coefs[non.null], names))) co <- matrix(NA, ncol=length(coefNames), nrow=length(coefs), byrow=TRUE, dimnames=list(names(object), coefNames)) ## template <- coefs[non.null][[1]] ## if (is.numeric(template)) { ## co <- matrix(template, ## ncol = length(template), ## nrow = length(coefs), ## byrow = TRUE, ## dimnames = list(names(object), names(template))) for (i in names(object)) { co[i, names(coefs[[i]])] <- if (is.null(coefs[[i]])) { NA } else coefs[[i]] } coefs <- as.data.frame(co) effectNames <- names(coefs) if(augFrame) { if (is.null(data)) { data <- getData(object) } data <- as.data.frame(data) if (is.null(which)) { which <- 1:ncol(data) } data <- data[, which, drop = FALSE] ## eliminating columns with same names as effects data <- data[, is.na(match(names(data), effectNames)), drop = FALSE] data <- gsummary(data, FUN = FUN, groups = getGroups(object)) if (omitGroupingFactor) { data <- data[, is.na(match(names(data), names(getGroupsFormula(object, asList = TRUE)))), drop = FALSE] } if (length(data) > 0) { coefs <- cbind(coefs, data[row.names(coefs),,drop = FALSE]) } } attr(coefs, "level") <- attr(object, "level") attr(coefs, "label") <- "Coefficients" attr(coefs, "effectNames") <- effectNames attr(coefs, "standardized") <- FALSE attr(coefs, "grpNames") <- deparse(getGroupsFormula(object)[[2]]) class(coefs) <- c("coef.lmList", "ranef.lmList", class(coefs)) } ##} coefs } fitted.lmList <- function(object, subset = NULL, asList = FALSE, ...) { if(!is.null(subset)) { if(is.character(subset)) { if (any(is.na(match(subset, names(object))))) { stop("nonexistent groups requested in 'subset'") } } else { if (is.integer(subset)) { if (any(is.na(match(subset, 1:length(object))))) { stop("nonexistent groups requested in 'subset'") } } else { stop("'subset' can only be character or integer") } } oclass <- class(object) oatt <- attr(object, "call") object <- object[subset] attr(object, "call") <- oatt class(object) <- oclass } val <- lapply(object, fitted) if(!asList) { #convert to array ngrps <- table(getGroups(object))[names(object)] if(any(aux <- sapply(object, is.null))) { for(i in names(ngrps[aux])) { val[[i]] <- rep(NA, ngrps[i]) } } val <- val[attr(object, "origOrder")] # putting in original order namVal <- names(val) val <- unlist(val) names(val) <- rep(namVal, ngrps) } lab <- "Fitted values" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab val } fixef.lmList <- function(object, ...) { coeff <- coef(object) if(is.matrix(coeff) || is.data.frame(coeff)) { return(apply(coeff, 2, mean, na.rm = TRUE)) } NULL } formula.lmList <- function(x, ...) eval(attr(x, "call")[["object"]]) getData.lmList <- function(object) { mCall <- attr(object, "call") data <- eval(mCall$data) if (is.null(data)) return(data) naAct <- eval(mCall$na.action) if (!is.null(naAct)) { data <- naAct(data) } subset <- mCall$subset if (!is.null(subset)) { subset <- eval(asOneSidedFormula(subset)[[2]], data) data <- data[subset, ] } return(data) } getGroups.lmList <- function(object, form, level, data, sep) attr(object, "groups") getGroupsFormula.lmList <- function(object, asList = FALSE, sep) { val <- attr(object, "groupsForm") getGroupsFormula(eval(parse(text=paste("~1",c_deparse(val[[2]]),sep="|"))), asList = asList) } getResponse.lmList <- function(object, form) { fitted(object) + resid(object) } intervals.lmList <- function(object, level = 0.95, pool = attr(object, "pool"), ...) { smry <- summary(object, pool = pool) coeff <- coef(smry) out <- coeff[ , 1:3 , ] dn <- dimnames(out) dimnames(out) <- if(is.null(dn)) list(NULL, c("lower", "est.", "upper")) else { dn[[2]] <- c("lower", "est.", "upper") dn } mult <- sqrt(qf(level, 1, smry$df.residual)) out[ , "est.", ] <- coeff[ , "Estimate", ] out[ , "lower", ] <- out[ , "est.", ] - mult * coeff[ , "Std. Error", ] out[ , "upper", ] <- out[ , "est.", ] + mult * coeff[ , "Std. Error", ] attr(out, "groupsName") <- deparse(attr(object, "groupsForm")[[2]]) class(out) <- "intervals.lmList" out } logLik.lmList <- function(object, REML = FALSE, pool = attr(object, "pool"), ...) { if(any(unlist(lapply(object, is.null)))) { stop("log-likelihood not available with NULL fits") } if(pool) { aux <- apply(sapply(object, function(el) { res <- resid(el) p <- el$rank n <- length(res) if (is.null(w <- el$weights)) w <- rep(1, n) else { excl <- w == 0 if (any(excl)) { res <- res[!excl] n <- length(res) w <- w[!excl] } } c(n, sum(w * res^2), p, sum(log(w)), sum(log(abs(diag(el$qr$qr)[1:p])))) }), 1, sum) N <- aux[1] - REML * aux[3] val <- (aux[4] - N * (log(2 * pi) + 1 - log(N) + log(aux[2])))/2 - REML * aux[5] attr(val, "nall") <- aux[1] attr(val, "nobs") <- N attr(val, "df") <- aux[3] + 1 } else { aux <- lapply(object, logLik, REML) val <- sum(unlist(aux)) attr(val, "nobs") <- sum(sapply(aux, function(x) attr(x, "nobs"))) attr(val, "df") <- sum(sapply(aux, function(x) attr(x, "df"))) } class(val) <- "logLik" val } pairs.lmList <- function(x, form = ~ coef(.), label, id = NULL, idLabels = NULL, grid = FALSE, ...) { object <- x ## scatter plot matrix plots, generally based on coef or random.effects if (!inherits(form, "formula")) { stop("'form' must be a formula") } if (length(form) != 2) { stop("'form' must be a one-sided formula") } ## constructing data allV <- all.vars(asOneFormula(form, id, idLabels)) allV <- allV[is.na(match(allV,c("T","F","TRUE","FALSE")))] if (length(allV) > 0) { data <- getData(object) if (is.null(data)) { # try to construct data alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } else { if (any(naV <- is.na(match(allV, names(data))))) { stop(sprintf(ngettext(sum(naV), "%s not found in data", "%s not found in data"), allV[naV]), domain = NA) } } } else data <- NULL ## argument list dots <- list(...) if (length(dots) > 0) args <- dots else args <- list() ## covariate - must be present as a data.frame covF <- getCovariateFormula(form) .x <- eval(covF[[2]], list(. = object)) # only function of "." if (!inherits(.x, "data.frame")) { stop("covariate must be a data frame") } if (!is.null(effNams <- attr(.x, "effectNames"))) { .x <- .x[, effNams, drop = FALSE] } ## eliminating constant effects isFixed <- unlist(lapply(.x, function(el) length(unique(el)) == 1)) .x <- .x[, !isFixed, drop = FALSE] nc <- ncol(.x) if (nc == 1) { stop("cannot do pairs of just one variable") } if (!missing(label)) { names(.x) <- labels } if (nc == 2) { ## will use xyplot argForm <- .y ~ .x argData <- .x names(argData) <- c(".x", ".y") if (is.null(args$xlab)) { args$xlab <- names(.x)[1] } if (is.null(args$ylab)) { args$ylab <- names(.x)[2] } } else { # splom argForm <- ~ .x argData <- list(.x = .x) } auxData <- list() ## groups - need not be present grpsF <- getGroupsFormula(form) if (!is.null(grpsF)) { gr <- splitFormula(grpsF, sep = "*") for(i in 1:length(gr)) { auxData[[deparse(gr[[i]][[2]])]] <- eval(gr[[i]][[2]], data) } if (length(argForm) == 2) argForm <- eval(parse(text = paste("~ .x |", deparse(grpsF[[2]])))) else argForm <- eval(parse(text = paste(".y ~ .x |", deparse(grpsF[[2]])))) } ## id and idLabels - need not be present if (!is.null(id)) { # identify points in plot N <- attr(object, "dims")$N id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } aux <- as.matrix(na.omit(ranef(object))) auxV <- t(chol(var(aux))) aux <- as.logical(apply((solve(auxV, t(aux)))^2, 2, sum) > qchisq(1 - id, dim(aux)[2])) aux }, call = eval(asOneSidedFormula(id)[[2]], data), stop("'id' can only be a formula or numeric") ) if (length(id) == N) { ## id as a formula evaluated in data auxData[[".id"]] <- id } if (is.null(idLabels)) { idLabels <- row.names(.x) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != N) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } if (length(idLabels) == N) { ## idLabels as a formula evaluated in data auxData[[".Lid"]] <- idLabels } } if (length(auxData)) { # need collapsing auxData <- gsummary(data.frame(auxData), groups = getGroups(object)) auxData <- auxData[row.names(.x), , drop = FALSE] if (!is.null(auxData[[".g"]])) { argData[[".g"]] <- auxData[[".g"]] } if (!is.null(auxData[[".id"]])) { id <- auxData[[".id"]] } if (!is.null(auxData[[".Lid"]])) { idLabels <- auxData[[".Lid"]] } wchDat <- is.na(match(names(auxData), c(".id", ".idLabels"))) if (any(wchDat)) { argData <- cbind(argData, auxData[, wchDat, drop = FALSE]) } } if (is.null(id)) assign("id", FALSE) else assign("id", as.logical(as.character(id)) ) assign("idLabels", as.character(idLabels)) assign("grid", grid) ## adding to args list args <- c(list(argForm, data = argData), args) ## if (is.null(args$strip)) { ## args$strip <- function(...) strip.default(..., style = 1) ## } if (is.null(args$cex)) args$cex <- par("cex") if (is.null(args$adj)) args$adj <- par("adj") ## defining the type of plot if (length(argForm) == 3) { # xyplot plotFun <- "xyplot" args <- c(args, panel = list(function(x, y, subscripts, ...) { x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y) if (any(id) & any(ids <- id[subscripts])) { ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } })) } else { # splom plotFun <- "splom" args <- c(args, panel = list(function(x, y, subscripts, ...) { x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y) if (any(id) & any(ids <- id[subscripts])) { ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } })) } do.call(plotFun, args) } plot.intervals.lmList <- function(x, ...) { object <- x dims <- dim(object) dn <- dimnames(object) ## changed definition of what to ordered to preserve order of parameters tt <- data.frame(group = ordered(rep(dn[[1]], dims[2] * dims[3]), levels = dn[[1]]), intervals = as.vector(object), what = ordered(rep(dn[[3]], rep(dims[1] * dims[2], dims[3])), levels = dn[[3]])) strip <- list(...)[["strip"]] if ( is.null( strip ) ) { strip <- function(...) strip.default(..., style = 1) } xlab <- list(...)[["xlab"]] if ( is.null( xlab ) ) { xlab <- "" } ylab <- list(...)[["ylab"]] if ( is.null( ylab ) ) { ylab <- attr(object, "groupsName") } dotplot(group ~ intervals | what, data = tt, scales = list(x="free"), strip = strip, xlab = xlab, ylab = ylab, panel = function(x, y, pch = dot.symbol$pch, col = dot.symbol$col, cex = dot.symbol$cex, font = dot.symbol$font, ...) { x <- as.numeric(x) y <- as.numeric(y) ok <- !is.na(x) & !is.na(y) yy <- y[ok] xx <- x[ok] dot.symbol <- trellis.par.get("dot.symbol") dot.line <- trellis.par.get("dot.line") panel.abline(h = yy, lwd = dot.line$lwd, lty = dot.line$lty, col = dot.line$col) lpoints(xx, yy, pch = "|", col = col, cex = cex, font = font, ...) lower <- tapply(xx, yy, min) upper <- tapply(xx, yy, max) nams <- as.numeric(names(lower)) lsegments(lower, nams, upper, nams, col = 1, lty = 1, lwd = if (dot.line$lwd) { dot.line$lwd } else { 2 }) }, ...) } plot.ranef.lmList <- function(x, form = NULL, grid = TRUE, control, ...) { fArgs <- as.list(match.call())[-1] do.call("plot.ranef.lme", fArgs) } plot.lmList <- function(x, form = resid(., type = "pool") ~ fitted(.), abline, id = NULL, idLabels = NULL, grid, ...) ## Diagnostic plots based on residuals and/or fitted values { object <- x if (!inherits(form, "formula")) { stop("'form' must be a formula") } ## constructing data allV <- all.vars(asOneFormula(form, id, idLabels)) allV <- allV[is.na(match(allV,c("T","F","TRUE","FALSE")))] if (length(allV) > 0) { data <- getData(object) if (is.null(data)) { # try to construct data alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } else { if (any(naV <- is.na(match(allV, names(data))))) { stop(sprintf(ngettext(sum(naV), "%s not found in data", "%s not found in data"), allV[naV]), domain = NA) } } } else data <- NULL if (inherits(data, "groupedData")) { # save labels and units, if present ff <- formula(data) rF <- deparse(getResponseFormula(ff)[[2]]) cF <- c_deparse(getCovariateFormula(ff)[[2]]) lbs <- attr(data, "labels") unts <- attr(data, "units") if (!is.null(lbs$x)) cL <- paste(lbs$x, unts$x) else cF <- NULL if (!is.null(lbs$y)) rL <- paste(lbs$y, unts$y) else rF <- NULL } else { rF <- cF <- NULL } ## argument list dots <- list(...) if (length(dots) > 0) args <- dots else args <- list() ## appending object to data data <- as.list(c(as.list(data), . = list(object))) ## covariate - must always be present covF <- getCovariateFormula(form) .x <- eval(covF[[2]], data) if (!is.numeric(.x)) { stop("covariate must be numeric") } argForm <- ~ .x argData <- as.data.frame(.x) if (is.null(xlab <- attr(.x, "label"))) { xlab <- c_deparse(covF[[2]]) if (!is.null(cF) && (xlab == cF)) xlab <- cL else if (!is.null(rF) && (xlab == rF)) xlab <- rL } if (is.null(args$xlab)) args$xlab <- xlab ## response - need not be present respF <- getResponseFormula(form) if (!is.null(respF)) { .y <- eval(respF[[2]], data) if (is.null(ylab <- attr(.y, "label"))) { ylab <- deparse(respF[[2]]) if (!is.null(cF) && (ylab == cF)) ylab <- cL else if (!is.null(rF) && (ylab == rF)) ylab <- rL } argForm <- .y ~ .x argData[, ".y"] <- .y if (is.null(args$ylab)) args$ylab <- ylab } ## groups - need not be present grpsF <- getGroupsFormula(form) if (!is.null(grpsF)) { gr <- splitFormula(grpsF, sep = "*") for(i in 1:length(gr)) { argData[[deparse(gr[[i]][[2]])]] <- eval(gr[[i]][[2]], data) } if (length(argForm) == 2) argForm <- eval(parse(text = paste("~ .x |", deparse(grpsF[[2]])))) else argForm <- eval(parse(text = paste(".y ~ .x |", deparse(grpsF[[2]])))) } ## adding to args list args <- c(list(argForm, data = argData), args) ## if (is.null(args$strip)) { ## args$strip <- function(...) strip.default(..., style = 1) ## } if (is.null(args$cex)) args$cex <- par("cex") if (is.null(args$adj)) args$adj <- par("adj") if (!is.null(id)) { # identify points in plot id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } as.logical(abs(resid(object, type = "pooled")) > -qnorm(id / 2)) }, call = eval(asOneSidedFormula(id)[[2]], data), stop("'id' can only be a formula or numeric") ) if (is.null(idLabels)) { idLabels <- getGroups(object) if (length(idLabels) == 0) idLabels <- 1:object$dims$N idLabels <- as.character(idLabels) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != length(id)) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } } ## defining abline, if needed if (missing(abline)) { if (missing(form)) { # r ~ f abline <- c(0, 0) } else { abline <- NULL } } assign("id", id ) assign("idLabels", idLabels) assign("abl", abline) ## defining the type of plot if (length(argForm) == 3) { if (is.numeric(.y)) { # xyplot plotFun <- "xyplot" args <- c(args, panel = list(function(x, y, subscripts, ...) { x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y) if (any(ids <- id[subscripts])) { ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } if (!is.null(abl)) { if (length(abl) == 2) panel.abline(a = abl, ...) else panel.abline(h = abl, ...) } })) } else { # assume factor or character plotFun <- "bwplot" args <- c(args, panel = list(function(x, y, ...) { if (grid) panel.grid() panel.bwplot(x, y) if (!is.null(abl)) { panel.abline(v = abl[1], ...) } })) } } else { plotFun <- "histogram" args <- c(args, panel = list(function(x, y, ...) { if (grid) panel.grid() panel.histogram(x, y) if (!is.null(abl)) { panel.abline(v = abl[1], ...) } })) } ## defining grid if (missing(grid)) { if (plotFun == "xyplot") grid <- TRUE else grid <- FALSE } assign("grid", grid) do.call(plotFun, args) } predict.lmList <- function(object, newdata, subset = NULL, pool = attr(object, "pool"), asList = FALSE, se.fit = FALSE, ...) { if(missing(newdata)) { if (!se.fit) return(fitted(object, subset, asList)) myData <- getData(object) grps <- getGroups(object) myData <- split(myData, grps) newdata <- NULL sameData <- FALSE } else { newdata <- as.data.frame(newdata) sameData <- TRUE ## checking if same newdata for all groups formGrps <- getGroupsFormula(object) if(all(match(all.vars(formGrps), names(newdata), 0))) { ## newdata contains groups definition grps <- getGroups(newdata, getGroupsFormula(object, asList = TRUE), level = attr(object, "level")) grps <- grps[drop = TRUE] subset <- as.character(unique(grps)) if(any(is.na(match(subset, names(object))))) { stop("nonexistent group in 'newdata'") } myData <- split(newdata, grps) newdata <- NULL sameData <- FALSE } } if(!is.null(subset)) { if(any(is.na(match(subset, names(object))))) stop("nonexistent group requested in 'subset'") oclass <- class(object) ## fix for PR#13788 oatt <- attributes(object)[c("call", "groupsForm", "pool")] object <- object[subset] attributes(object) <- c(attributes(object), oatt) class(object) <- oclass if(is.null(newdata)) myData <- myData[subset] } nmGrps <- names(object) noNull <- !sapply(object, is.null) val <- vector("list", length(nmGrps)) names(val) <- nmGrps if(!sameData) { if(!se.fit) { for(i in nmGrps[noNull]) { val[[i]] <- predict(object[[i]], myData[[i]]) } } else { if(pool) { poolSD <- pooledSD(object) } for(i in nmGrps[noNull]) { aux <- predict(object[[i]], myData[[i]], se.fit = TRUE) if(pool) { val[[i]] <- data.frame(fit = aux$fit, se.fit = aux$se.fit*poolSD/aux$res) } else { val[[i]] <- data.frame(fit = aux$fit, se.fit = aux$se.fit) } } } } else { if(pool) { poolSD <- pooledSD(object) val[noNull] <- lapply(object[noNull], function(el, newdata, se.fit, poolSD) { aux <- predict(el, newdata, se.fit = se.fit) if(se.fit) { data.frame(fit = aux$fit, se.fit = aux$se.fit*poolSD/aux$res) } else { aux } }, newdata = newdata, se.fit = se.fit, poolSD = poolSD) } else { val[noNull] <- lapply(object[noNull], function(el, newdata, se.fit) { aux <- predict(el, newdata, se.fit = se.fit) if(se.fit) { data.frame(fit = aux$fit, se.fit = aux$se.fit) } else { aux } }, newdata = newdata, se.fit = se.fit) } } if(!asList) { #convert to array if(is.null(newdata)) { ngrps <- table(grps)[names(object)] } else { ngrps <- rep(dim(newdata)[1], length(object)) names(ngrps) <- names(object) } if(any(aux <- sapply(object, is.null))) { for(i in names(ngrps[aux])) { aux1 <- rep(NA, ngrps[i]) if(se.fit) { val[[i]] <- data.frame(fit = aux1, se.fit = aux1) } else { val[[i]] <- aux1 } } } if(se.fit) { val <- do.call("rbind", val) val[, as.character(getGroupsFormula(object)[[2]])] <- rep(names(ngrps), ngrps) val <- val[, c(3,1,2)] row.names(val) <- 1:nrow(val) } else { val <- unlist(val) names(val) <- rep(names(ngrps), ngrps) attr(val, "label") <- "Predicted values" if (!is.null(aux <- attr(object, "units")$y)) { attr(val, "label") <- paste(attr(val, "label"), aux) } } } val } print.intervals.lmList <- function(x, ...) { ox <- x x <- unclass(x) attr(x, "groupsName") <- NULL print(x, ...) invisible(ox) } print.lmList <- function(x, pool = attr(x, "pool"), ...) { mCall <- attr(x, "call") cat("Call:\n") form <- formula(x) cat(" Model:", deparse(getResponseFormula(form)[[2]]), "~", c_deparse(getCovariateFormula(form)[[2]]), "|", deparse(getGroupsFormula(x)[[2]]), "\n") if (!is.null(mCall$level)) { cat(" Level:", mCall$level, "\n") } cat(" Data:", deparse(mCall$data),"\n\n") cat("Coefficients:\n") invisible(print(coef(x))) if(pool) { cat("\n") poolSD <- pooledSD(x) dfRes <- attr(poolSD, "df") RSE <- c(poolSD) cat("Degrees of freedom: ", length(unlist(lapply(x, fitted))), " total; ", dfRes, " residual\n", sep = "") cat("Residual standard error:", format(RSE)) cat("\n") } invisible(x) } print.summary.lmList <- function(x, ...) { cat("Call:\n") form <- formula(x) cat(" Model:", deparse(getResponseFormula(form)[[2]]), "~", c_deparse(getCovariateFormula(form)[[2]]), "|", deparse(attr(x, "groupsForm")[[2]]), "\n") if (!is.null(x$call$level)) { cat(" Level:", x$call$level, "\n") } cat(" Data:", deparse(x$call$data),"\n\n") cat("Coefficients:\n") for(i in dimnames(coef(x))[[3]]) { cat(" ",i,"\n") print(coef(x)[,,i]) } if(x$pool) { cat("\n") cat("Residual standard error:", format(x$RSE), "on", x$df.residual, "degrees of freedom\n") } cat("\n") invisible(x) } qqnorm.lmList <- function(y, form = ~ resid(., type = "pooled"), abline = NULL, id = NULL, idLabels = NULL, grid = FALSE, resType = "pool", ...) ## normal probability plots for residuals and random effects { object <- y if (!inherits(form, "formula")) { stop("'form' must be a formula") } ## constructing data allV <- all.vars(asOneFormula(form, id, idLabels)) allV <- allV[is.na(match(allV,c("T","F","TRUE","FALSE")))] if (length(allV) > 0) { data <- getData(object) if (is.null(data)) { # try to construct data alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } else { if (any(naV <- is.na(match(allV, names(data))))) { stop(sprintf(ngettext(sum(naV), "%s not found in data", "%s not found in data"), allV[naV]), domain = NA) } } } else data <- NULL ## argument list dots <- list(...) if (length(dots) > 0) args <- dots else args <- list() ## appending object to data data <- as.list(c(as.list(data), . = list(object))) ## covariate - must always be present covF <- getCovariateFormula(form) .x <- eval(covF[[2]], data) labs <- attr(.x, "label") if (inherits(.x, "ranef.lmList")) { # random effects type <- "reff" } else { if (!is.null(labs) && ((labs == "Standardized residuals") || (substring(labs, 1, 9) == "Residuals"))) { type <- "res" # residuals } else { stop("only residuals and random effects allowed") } } if (is.null(args$xlab)) args$xlab <- labs if (is.null(args$ylab)) args$ylab <- "Quantiles of standard normal" if(type == "res") { # residuals fData <- qqnorm(.x, plot.it = FALSE) data[[".y"]] <- fData$x data[[".x"]] <- fData$y dform <- ".y ~ .x" if (!is.null(grp <- getGroupsFormula(form))) { dform <- paste(dform, deparse(grp[[2]]), sep = "|") } if (!is.null(id)) { # identify points in plot id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } as.logical(abs(resid(object, type=resType)) > -qnorm(id / 2)) }, call = eval(asOneSidedFormula(id)[[2]], data), stop("'id' can only be a formula or numeric") ) if (is.null(idLabels)) { idLabels <- getGroups(object) if (length(idLabels) == 0) idLabels <- 1:object$dims$N idLabels <- as.character(idLabels) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != length(id)) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } } } else { # random.effects level <- attr(.x, "level") std <- attr(.x, "standardized") if (!is.null(effNams <- attr(.x, "effectNames"))) { .x <- .x[, effNams, drop = FALSE] } nc <- ncol(.x) nr <- nrow(.x) fData <- lapply(as.data.frame(.x), qqnorm, plot.it = FALSE) fData <- data.frame(.x = unlist(lapply(fData, function(x) x[["y"]])), .y = unlist(lapply(fData, function(x) x[["x"]])), .g = ordered(rep(names(fData),rep(nr, nc)), levels = names(fData))) dform <- ".y ~ .x | .g" if (!is.null(grp <- getGroupsFormula(form))) { dform <- paste(dform, deparse(grp[[2]]), sep = "*") auxData <- data[is.na(match(names(data), "."))] } else { auxData <- list() } ## id and idLabels - need not be present if (!is.null(id)) { # identify points in plot N <- object$dims$N id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } aux <- ranef(object, standard = TRUE) as.logical(abs(c(unlist(aux))) > -qnorm(id / 2)) }, call = eval(asOneSidedFormula(id)[[2]], data), stop("'id' can only be a formula or numeric") ) if (length(id) == N) { ## id as a formula evaluated in data auxData[[".id"]] <- id } if (is.null(idLabels)) { idLabels <- rep(row.names(.x), nc) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != N) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } if (length(idLabels) == N) { ## idLabels as a formula evaluated in data auxData[[".Lid"]] <- idLabels } } if (length(auxData)) { # need collapsing auxData <- gsummary(data.frame(auxData), groups = getGroups(object, level = level)) auxData <- auxData[row.names(.x), , drop = FALSE] if (!is.null(auxData[[".id"]])) { id <- rep(auxData[[".id"]], nc) } if (!is.null(auxData[[".Lid"]])) { idLabels <- rep(auxData[[".Lid"]], nc) } data <- cbind(fData, do.call("rbind", rep(list(auxData), nc))) } else { data <- fData } } assign("id", if (is.null(id)) NULL else as.logical(as.character(id))) assign("idLabels", as.character(idLabels)) assign("grid", grid) assign("abl", abline) if (is.null(args$strip)) { args$strip <- function(...) strip.default(..., style = 1) } if (is.null(args$cex)) args$cex <- par("cex") if (is.null(args$adj)) args$adj <- par("adj") args <- c(list(eval(parse(text = dform)), data = substitute(data), panel = function(x, y, subscripts, ...){ x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y, ...) if (any(ids <- id[subscripts])) { ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } if (!is.null(abl)) panel.abline(abl, ...) }), args) if(type == "reff" && !std) { args[["scales"]] <- list(x = list(relation = "free")) } do.call("xyplot", args) } ranef.lmList <- ## Extracts the random effects from an lmList object. ## If aug.frame is true, the returned data frame is augmented with a ## values from the original data object, if available. The variables ## in the original data are collapsed over the cluster variable by the ## function fun. function(object, augFrame = FALSE, data = NULL, which = NULL, FUN = mean, standard = FALSE, omitGroupingFactor = TRUE, ...) { val <- coef(object, augFrame, data, which, FUN, omitGroupingFactor) effNames <- attr(val, "effectNames") effs <- val[, effNames, drop = FALSE] effs <- as.data.frame(lapply(effs, function(el) el - mean(el, na.rm = TRUE))) if(standard) { stdEff <- unlist(lapply(effs, function(el) sqrt(var(el[!is.na(el)])))) effs <- as.data.frame(as.matrix(effs) %*% diag(1/stdEff)) attr(val, "label") <- "Standardized random effects" } else { attr(val, "label") <- "Random effects" } val[, effNames] <- effs attr(val, "standardized") <- standard class(val) <- unique(c("ranef.lmList", class(val)[-1])) val } residuals.lmList <- function(object, type = c("response", "pearson", "pooled.pearson"), subset = NULL, asList = FALSE, ...) { type <- match.arg(type) if(type == "pooled.pearson") { poolSD <- pooledSD(object) } if(!is.null(subset)) { if(is.character(subset)) { if (any(is.na(match(subset, names(object))))) { stop("nonexistent groups requested in 'subset'") } } else { if (is.integer(subset)) { if (any(is.na(match(subset, 1:length(object))))) { stop("nonexistent groups requested in 'subset'") } } else { stop("'subset' can only be character or integer") } } oclass <- class(object) oatt <- attr(object, "call") object <- object[subset] attr(object, "call") <- oatt class(object) <- oclass } val <- switch(type, pooled.pearson = { lapply(object, function(el, pSD) { if(!is.null(el)) resid(el)/pSD else NULL }, pSD = poolSD) }, pearson = lapply(object, function(el) { if(!is.null(el)) { aux <- resid(el) aux/sqrt(sum(aux^2)/(length(aux) - length(coef(el)))) } else { NULL } }), response = lapply(object, function(el) { if(!is.null(el)) resid(el) else NULL }) ) if(!asList) { #convert to array ngrps <- table(getGroups(object))[names(object)] if(any(aux <- sapply(object, is.null))) { for(i in names(ngrps[aux])) { val[[i]] <- rep(NA, ngrps[i]) } } val <- val[attr(object, "origOrder")] # putting in original order namVal <- names(val) val <- unlist(val) names(val) <- rep(namVal, ngrps) } if (type == "response") { lab <- "Residuals" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } } else lab <- "Standardized residuals" attr(val, "label") <- lab val } summary.lmList <- function(object, pool = attr(object, "pool"), ...) { to.3d.array <- ## Convert the list to a 3d array watching for null elements function(lst, template) { if (!is.matrix(template)) { return(lst) } ## make empty array: dnames <- dimnames(template) if (length(dnames[[1]]) == length(dnames[[2]]) && all(dnames[[1]] == dnames[[2]])) { val <- array(NA, dim=c(length(coefNames), length(coefNames), length(lst)), dimnames=c(list(coefNames), list(coefNames), list(names(lst)))) for (ii in 1:length(lst)) if (length(lst[[ii]])) { use <- dimnames(lst[[ii]])[[1]] val[use, use, ii] <- lst[[ii]] } } else { val <- array(NA, dim=c(length(coefNames), dim(template)[2], length(lst)), dimnames=c(list(coefNames), list(dimnames(template)[[2]]), list(names(lst)))) for (ii in 1:length(lst)) if (length(lst[[ii]])) { use <- dimnames(lst[[ii]])[[1]] val[use, , ii] <- lst[[ii]] } } ## val <- aperm(array(unlist(lapply(lst, function(el, template) ## if(is.null(el)) { template } ## else { el }, template = template)), ## c(dim(template), length(lst)), ## c(dimnames(template), list(names(lst)))), ## c(3, 2, 1)) ## val[unlist(lapply(lst, is.null)), , ] <- NA val <- aperm(val, c(3, 2, 1)) val } to.2d.array <- ## Convert the list to a 2d array watching for null elements function(lst, template) { if(is.null(template)) return(lst) template <- as.vector(template) val <- t(array(unlist(lapply(lst, function(el, template) if(is.null(el)) { template } else { el }, template = template)), c(length(template), length(lst)), list(names(template), names(lst)))) val[unlist(lapply(lst, is.null)), ] <- NA val } ## Create a summary by applying summary to each component of the list sum.lst <- lapply(object, function(el) if(is.null(el)) {NULL} else {summary(el)}) nonNull <- !unlist(lapply(sum.lst, is.null)) if(!any(nonNull)) return(NULL) template <- sum.lst[[match(TRUE, nonNull)]] val <- list() for (i in names(template)) { val[[i]] <- lapply(sum.lst, "[[", i) class(val[[i]]) <- "listof" } ## get complete set of coefs coefNames <- unique(as.vector(sapply(sum.lst[nonNull], function(x)dimnames(x[['coefficients']])[[1]]))) ## re-arrange the matrices into 3d arrays for(i in c("parameters", "cov.unscaled", "correlation", "coefficients")) if(length(val[[i]])) val[[i]] <- to.3d.array(val[[i]], template[[i]]) ## re-arrange the vectors into 2d arrays for(i in c("df", "fstatistic")) val[[i]] <- to.2d.array(val[[i]], template[[i]]) ## re-arrange the scalars into vectors for(i in c("sigma", "r.squared")) { ## val[[i]] <- unlist(val[[i]]) - this deletes NULL components val[[i]] <- c(to.2d.array(val[[i]], template[[i]])) } ## select those attributes that do not vary with groups for(i in c("terms", "formula")) val[[i]] <- template[[i]] val[["call"]] <- attr(object, "call") if(inherits(object, "nlsList")) names(val[["call"]]["model"]) <- "object" val[["pool"]] <- pool if(pool) { poolSD <- pooledSD(object) dfRes <- attr(poolSD, "df") RSE <- c(poolSD) corRSE <- RSE/val$sigma pname <- if(inherits(object, "nlsList")) "parameters" else "coefficients" val[[pname]][,2,] <- val[[pname]][,2,] * corRSE val[[pname]][,3,] <- val[[pname]][,3,] / corRSE if(!inherits(object, "nlsList")) val[[pname]][,4,] <- 2*(1-pt(abs(val[[pname]][,3,]), dfRes)) val[["df.residual"]] <- dfRes val[["RSE"]] <- RSE } attr(val, "groupsForm") <- attr(object, "groupsForm") class(val) <- "summary.lmList" val } # based on R's update.default update.lmList <- function (object, formula., ..., evaluate = TRUE) { call <- attr(object, "call") if (is.null(call)) stop("need an object with call component") extras <- match.call(expand.dots = FALSE)$... if (!missing(formula.)) call$object <- update.formula(formula(object), formula.) if(length(extras) > 0) { existing <- !is.na(match(names(extras), names(call))) ## do these individually to allow NULL to remove entries. for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if(any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if(evaluate) eval(call, parent.frame()) else call } #update.lmList <- # function(object, formula, data, level, subset, na.action, pool, ...) #{ # thisCall <- as.list(match.call())[-(1:2)] # if (!missing(formula)) { # names(thisCall)[match(names(thisCall), "formula")] <- "object" # } # nextCall <- attr(object, "call") # nextCall[names(thisCall)] <- thisCall # if (!is.null(thisCall$object)) { # nextCall$object <- update(as.formula(nextCall$object), nextCall$object) # } # nextCall[[1]] <- as.name("lmList") # eval(nextCall, envir = parent.frame(1)) #} ### Local variables: ### mode: S ### End: nlme/R/gls.R0000644000176000001440000014271112231177503012355 0ustar ripleyusers### Fit a linear model with correlated errors and/or heteroscedasticity ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # gls <- ## fits linear model with serial correlation and variance functions, ## by maximum likelihood using a Newton-Raphson algorithm. function(model, data = sys.frame(sys.parent()), correlation = NULL, weights = NULL, subset, method = c("REML", "ML"), na.action = na.fail, control = list(), verbose = FALSE) { Call <- match.call() ## control parameters controlvals <- glsControl() if (!missing(control)) { if(!is.null(control$nlmStepMax) && control$nlmStepMax < 0L) { warning("negative control$nlmStepMax - using default value") control$nlmStepMax <- NULL } controlvals[names(control)] <- control } ## ## checking arguments ## if (!inherits(model, "formula") || length(model) != 3L) { stop("\nmodel must be a formula of the form \"resp ~ pred\"") } method <- match.arg(method) REML <- method == "REML" ## check if correlation is present and has groups if (!is.null(correlation)) { groups <- getGroupsFormula(correlation) } else groups <- NULL ## create a gls structure containing the plug-ins glsSt <- glsStruct(corStruct = correlation, varStruct = varFunc(weights)) ## we need to resolve '.' in the formula here model <- terms(model, data=data) ## extract a data frame with enough information to evaluate ## formula, groups, corStruct, and varStruct mfArgs <- list(formula = asOneFormula(formula(glsSt), model, groups), data = data, na.action = na.action) if (!missing(subset)) { mfArgs[["subset"]] <- asOneSidedFormula(Call[["subset"]])[[2L]] } mfArgs$drop.unused.levels <- TRUE dataMod <- do.call("model.frame", mfArgs) origOrder <- row.names(dataMod) # preserve the original order if (!is.null(groups)) { ## sort the model.frame by groups and get the matrices and parameters ## used in the estimation procedures ## always use innermost level of grouping groups <- eval(parse(text = paste("~1", deparse(groups[[2L]]), sep = "|"))) grps <- getGroups(dataMod, groups, level = length(getGroupsFormula(groups, asList = TRUE))) ## ordering data by groups ord <- order(grps) grps <- grps[ord] dataMod <- dataMod[ord, ,drop = FALSE] revOrder <- match(origOrder, row.names(dataMod)) # putting in orig. order } else grps <- NULL ## obtaining basic model matrices X <- model.frame(model, dataMod) ## keeping the contrasts for later use in predict contr <- lapply(X, function(el) if (inherits(el, "factor")) contrasts(el)) contr <- contr[!unlist(lapply(contr, is.null))] X <- model.matrix(model, X) if(ncol(X) == 0L) stop("no coefficients to fit") y <- eval(model[[2L]], dataMod) N <- nrow(X) p <- ncol(X) # number of coefficients parAssign <- attr(X, "assign") fTerms <- terms(as.formula(model), data=data) namTerms <- attr(fTerms, "term.labels") if (attr(fTerms, "intercept") > 0) { namTerms <- c("(Intercept)", namTerms) } namTerms <- factor(parAssign, labels = namTerms) parAssign <- split(order(parAssign), namTerms) ## creating the condensed linear model attr(glsSt, "conLin") <- list(Xy = array(c(X, y), c(N, ncol(X) + 1L), list(row.names(dataMod), c(colnames(X), deparse(model[[2]])))), dims = list(N = N, p = p, REML = as.integer(REML)), logLik = 0) ## initialization glsEstControl <- controlvals["singular.ok"] glsSt <- Initialize(glsSt, dataMod, glsEstControl) parMap <- attr(glsSt, "pmap") ## ## getting the fitted object, possibly iterating for variance functions ## numIter <- numIter0 <- 0L repeat { oldPars <- c(attr(glsSt, "glsFit")[["beta"]], coef(glsSt)) if (length(coef(glsSt))) { # needs ms() optRes <- if (controlvals$opt == "nlminb") { nlminb(c(coef(glsSt)), function(glsPars) -logLik(glsSt, glsPars), control = list(trace = controlvals$msVerbose, iter.max = controlvals$msMaxIter)) } else { optim(c(coef(glsSt)), function(glsPars) -logLik(glsSt, glsPars), method = controlvals$optimMethod, control = list(trace = controlvals$msVerbose, maxit = controlvals$msMaxIter, reltol = if(numIter == 0L) controlvals$msTol else 100*.Machine$double.eps)) } coef(glsSt) <- optRes$par } else { optRes <- list(convergence = 0) } attr(glsSt, "glsFit") <- glsEstimate(glsSt, control = glsEstControl) ## checking if any updating is needed if (!needUpdate(glsSt)) { if (optRes$convergence) stop(optRes$message) break } ## updating the fit information numIter <- numIter + 1L glsSt <- update(glsSt, dataMod) ## calculating the convergence criterion aConv <- c(attr(glsSt, "glsFit")[["beta"]], coef(glsSt)) conv <- abs((oldPars - aConv)/ifelse(aConv == 0, 1, aConv)) aConv <- c("beta" = max(conv[1:p])) conv <- conv[-(1:p)] for(i in names(glsSt)) { if (any(parMap[,i])) { aConv <- c(aConv, max(conv[parMap[,i]])) names(aConv)[length(aConv)] <- i } } if (verbose) { cat("\nIteration:",numIter) cat("\nObjective:", format(optRes$value), "\n") print(glsSt) cat("\nConvergence:\n") print(aConv) } if (max(aConv) <= controlvals$tolerance) { break } if (numIter > controlvals$maxIter) { stop("maximum number of iterations reached without convergence") } } ## wrapping up glsFit <- attr(glsSt, "glsFit") namBeta <- names(glsFit$beta) attr(parAssign, "varBetaFact") <- varBeta <- glsFit$sigma * glsFit$varBeta * sqrt((N - REML * p)/(N - p)) varBeta <- crossprod(varBeta) dimnames(varBeta) <- list(namBeta, namBeta) ## ## fitted.values and residuals (in original order) ## Fitted <- fitted(glsSt) ## putting groups back in original order, if present if (!is.null(grps)) { grps <- grps[revOrder] Fitted <- Fitted[revOrder] Resid <- y[revOrder] - Fitted attr(Resid, "std") <- glsFit$sigma/(varWeights(glsSt)[revOrder]) } else { Resid <- y - Fitted attr(Resid, "std") <- glsFit$sigma/(varWeights(glsSt)) } names(Resid) <- names(Fitted) <- origOrder ## getting the approximate var-cov of the parameters if (controlvals$apVar) { apVar <- glsApVar(glsSt, glsFit$sigma, .relStep = controlvals[[".relStep"]], minAbsPar = controlvals[["minAbsParApVar"]], natural = controlvals[["natural"]]) } else { apVar <- "Approximate variance-covariance matrix not available" } ## getting rid of condensed linear model and fit dims <- attr(glsSt, "conLin")[["dims"]] dims[["p"]] <- p attr(glsSt, "conLin") <- NULL attr(glsSt, "glsFit") <- NULL ## ## creating the gls object ## estOut <- list(modelStruct = glsSt, dims = dims, contrasts = contr, coefficients = glsFit[["beta"]], varBeta = varBeta, sigma = glsFit$sigma, apVar = apVar, logLik = glsFit$logLik, numIter = if (needUpdate(glsSt)) numIter else numIter0, groups = grps, call = Call, method = method, fitted = Fitted, residuals = Resid, parAssign = parAssign, na.action = attr(dataMod, "na.action")) if (inherits(data, "groupedData")) { ## saving labels and units for plots attr(estOut, "units") <- attr(data, "units") attr(estOut, "labels") <- attr(data, "labels") } attr(estOut, "namBetaFull") <- colnames(X) class(estOut) <- "gls" estOut } ### Auxiliary functions used internally in gls and its methods glsApVar <- function(glsSt, sigma, conLin = attr(glsSt, "conLin"), .relStep = .Machine$double.eps^(1/3), minAbsPar = 0, natural = TRUE) { ## calculate approximate variance-covariance matrix of all parameters ## except the coefficients fullGlsLogLik <- function(Pars, object, conLin, dims, N) { ## logLik as a function of sigma and coef(glsSt) npar <- length(Pars) lsigma <- Pars[npar] # within-group std. dev. Pars <- Pars[-npar] coef(object) <- Pars conLin <- recalc(object, conLin) val <- .C(gls_loglik, as.double(conLin$Xy), as.integer(unlist(dims)), logLik = double(1L), lRSS = double(1), NAOK = TRUE)[c("logLik", "lRSS")] aux <- 2 * (val[["lRSS"]] - lsigma) conLin[["logLik"]] + val[["logLik"]] + (N * aux - exp(aux))/2 } if (length(glsCoef <- coef(glsSt)) > 0L) { cSt <- glsSt[["corStruct"]] if (natural && !is.null(cSt) && inherits(cSt, "corSymm")) { cStNatPar <- coef(cSt, unconstrained = FALSE) class(cSt) <- c("corNatural", "corStruct") coef(cSt) <- log((1 + cStNatPar)/(1 - cStNatPar)) glsSt[["corStruct"]] <- cSt glsCoef <- coef(glsSt) } dims <- conLin$dims N <- dims$N - dims$REML * dims$p conLin[["logLik"]] <- 0 # making sure Pars <- c(glsCoef, lSigma = log(sigma)) val <- fdHess(Pars, fullGlsLogLik, glsSt, conLin, dims, N, .relStep = .relStep, minAbsPar = minAbsPar)[["Hessian"]] if (all(eigen(val)$values < 0)) { ## negative definite - OK val <- solve(-val) nP <- names(Pars) dimnames(val) <- list(nP, nP) attr(val, "Pars") <- Pars attr(val, "natural") <- natural val } else { ## problem - solution is not a maximum "Non-positive definite approximate variance-covariance" } } # else NULL } glsEstimate <- function(object, conLin = attr(object, "conLin"), control = list(singular.ok = FALSE)) { dd <- conLin$dims p <- dd$p oXy <- conLin$Xy conLin <- recalc(object, conLin) # updating for corStruct and varFunc val <- .C(gls_estimate, as.double(conLin$Xy), as.integer(unlist(dd)), beta = double(p), sigma = double(1L), logLik = double(1L), varBeta = double(p * p), rank = integer(1), pivot = as.integer(1:(p + 1L)), NAOK = TRUE)[c("beta","sigma","logLik","varBeta", "rank", "pivot")] rnk <- val[["rank"]] rnkm1 <- rnk - 1 if (!control$singular.ok && rnkm1 < p) { stop(gettextf("computed \"gls\" fit is singular, rank %s", rnk), domain = NA) } N <- dd$N - dd$REML * p namCoef <- colnames(oXy)[val[["pivot"]][1:rnkm1] + 1L] # coef names ll <- conLin$logLik + val[["logLik"]] varBeta <- t(array(val[["varBeta"]], c(rnkm1, rnkm1), list(namCoef, namCoef))) beta <- val[["beta"]][1:rnkm1] names(beta) <- namCoef fitVal <- oXy[, namCoef, drop = FALSE] %*% beta list(logLik = N * (log(N) - (1 + log(2 * pi)))/2 + ll, beta = beta, sigma = val[["sigma"]], varBeta = varBeta, fitted = c(fitVal), resid = c(oXy[, p + 1L] - fitVal)) } ### Methods for standard generics ACF.gls <- function(object, maxLag, resType = c("pearson", "response", "normalized"), form = ~1, na.action = na.fail, ...) { resType <- match.arg(resType) res <- resid(object, type = resType) wchRows <- NULL if (is.null(grps <- getGroups(object))) { ## check if formula defines groups if (!is.null(grpsF <- getGroupsFormula(form))) { if (is.null(data <- getData(object))) { ## will try to construct allV <- all.vars(grpsF) if (length(allV) > 0L) { alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } } grps <- model.frame(grpsF, data, na.action = na.action) wchRows <- !is.na(match(row.names(data), row.names(grps))) grps <- getGroups(grps, grpsF) } } if (!is.null(grps)) { if (!is.null(wchRows)) { res <- res[wchRows] } res <- split(res, grps) } else { res <- list(res) } if(missing(maxLag)) { maxLag <- min(c(maxL <- max(sapply(res, length)) - 1L, as.integer(10 * log10(maxL + 1)))) } val <- lapply(res, function(el, maxLag) { N <- maxLag + 1L tt <- double(N) nn <- integer(N) N <- min(c(N, n <- length(el))) nn[1:N] <- n + 1L - 1:N ## el <- el - mean(el) for(i in 1:N) { el1 <- el[1:(n-i+1L)] el2 <- el[i:n] tt[i] <- sum(el1 * el2) } array(c(tt,nn), c(length(tt), 2L)) }, maxLag = maxLag) val0 <- apply(sapply(val, function(x) x[,2L]), 1, sum) val1 <- apply(sapply(val, function(x) x[,1L]), 1, sum)/val0 val2 <- val1/val1[1L] z <- data.frame(lag = 0:maxLag, ACF = val2) attr(z, "n.used") <- val0 class(z) <- c("ACF", "data.frame") z } anova.gls <- function(object, ..., test = TRUE, type = c("sequential", "marginal"), adjustSigma = TRUE, Terms, L, verbose = FALSE) { Lmiss <- missing(L) ## returns the likelihood ratio statistics, the AIC, and the BIC dots <- list(...) if ((rt <- length(dots) + 1L) == 1L) { if (!inherits(object,"gls")) { stop("object must inherit from class \"gls\"") } if (inherits(object, "gnls") && missing(adjustSigma)) { ## REML correction already applied to gnls objects adjustSigma <- FALSE } dims <- object$dims N <- dims$N p <- dims$p REML <- dims$REML assign <- object$parAssign vBeta <- attr(assign, "varBetaFact") if (!REML && adjustSigma) ## using REML-like estimate of sigma under ML vBeta <- sqrt(N/(N - p)) * vBeta c0 <- solve(t(vBeta), coef(object)) nTerms <- length(assign) dDF <- N - p lab <- paste("Denom. DF:", dDF,"\n") if (missing(Terms) && Lmiss) { ## returns the F.table (Wald) for the fixed effects type <- match.arg(type) Fval <- Pval <- double(nTerms) nDF <- integer(nTerms) for(i in 1:nTerms) { nDF[i] <- length(assign[[i]]) if (type == "sequential") { # type I SS c0i <- c0[assign[[i]]] } else { c0i <- c(qr.qty(qr(vBeta[, assign[[i]], drop = FALSE]), c0))[1:nDF[i]] } Fval[i] <- sum(c0i^2)/nDF[i] Pval[i] <- 1 - pf(Fval[i], nDF[i], dDF) } ## ## fixed effects F-values, df, and p-values ## aod <- data.frame(nDF, Fval, Pval) dimnames(aod) <- list(names(assign),c("numDF", "F-value", "p-value")) } else { if (Lmiss) { # terms is given if (is.numeric(Terms) && all(Terms == as.integer(Terms))) { if (min(Terms) < 1 || max(Terms) > nTerms) { stop(gettextf("'Terms' must be between 1 and %d", nTerms), domain = NA) } } else { if (is.character(Terms)) { if (any(noMatch <- is.na(match(Terms, names(assign))))) { stop(sprintf(ngettext(sum(noMatch), "term %s not matched", "terms %s not matched"), paste(Terms[noMatch], collapse = ", ")), domain = NA) } } else { stop("terms can only be integers or characters") } } lab <- paste(lab, "F-test for:", paste(names(assign[Terms]),collapse=", "),"\n") L <- diag(p)[unlist(assign[Terms]),,drop=FALSE] } else { L <- as.matrix(L) if (ncol(L) == 1L) L <- t(L) # single linear combination nrowL <- nrow(L) ncolL <- ncol(L) if (ncol(L) > p) { stop(sprintf(ngettext(ncol(L), "'L' must have at most %d column", "'L' must have at most %d columns"), ncol(L)), domain = NA) } dmsL1 <- rownames(L) L0 <- array(0, c(nrowL, p), list(NULL, names(coef(object)))) if (is.null(dmsL2 <- colnames(L))) { ## assume same order as effects L0[, 1:ncolL] <- L } else { if (any(noMatch <- is.na(match(dmsL2, colnames(L0))))) { stop(sprintf(ngettext(sum(noMatch), "effect %s not matched", "effects %s not matched"), paste(dmsL2[noMatch],collapse=", ")), domain = NA) } L0[, dmsL2] <- L } L <- L0[noZeroRowL <- as.logical((L0 != 0) %*% rep(1, p)), , drop = FALSE] nrowL <- nrow(L) noZeroColL <- as.logical(c(rep(1,nrowL) %*% (L != 0))) if (is.null(dmsL1)) { dmsL1 <- 1:nrowL } else { dmsL1 <- dmsL1[noZeroRowL] } rownames(L) <- dmsL1 lab <- paste(lab, "F-test for linear combination(s)\n") } nDF <- sum(svd(L)$d > 0) c0 <- c(qr.qty(qr(vBeta %*% t(L)), c0))[1:nDF] Fval <- sum(c0^2)/nDF Pval <- 1 - pf(Fval, nDF, dDF) aod <- data.frame(nDF, Fval, Pval) names(aod) <- c("numDF", "F-value", "p-value") if (!Lmiss) { if (nrow(L) > 1) attr(aod, "L") <- L[, noZeroColL, drop = FALSE] else attr(aod, "L") <- L[, noZeroColL] } } attr(aod, "label") <- lab attr(aod,"rt") <- rt class(aod) <- c("anova.lme", "data.frame") aod } ## ## Otherwise construct the likelihood ratio and information table ## objects in ... may inherit from gls, lm, lmList, and lme (for now) ## else { Call <- match.call() Call[[1]] <- quote(nlme::anova.lme) eval.parent(Call) } } augPred.gls <- function(object, primary = NULL, minimum = min(primary), maximum = max(primary), length.out = 51L, ...) { data <- eval(object$call$data) if (!inherits(data, "data.frame")) { stop(gettextf("data in %s call must evaluate to a data frame", sQuote(substitute(object))), domain = NA) } if(is.null(primary)) { if (!inherits(data, "groupedData")) { stop(gettextf("%s without \"primary\" can only be used with fits of \"groupedData\" objects", sys.call()[[1L]]), domain = NA) } primary <- getCovariate(data) prName <- c_deparse(getCovariateFormula(data)[[2]]) } else{ primary <- asOneSidedFormula(primary)[[2]] prName <- c_deparse(primary) primary <- eval(primary, data) } newprimary <- seq(from = minimum, to = maximum, length.out = length.out) groups <- getGroups(object) grName <- ".groups" if (is.null(groups)) { # no groups used noGrp <- TRUE groups <- rep("1", length(primary)) value <- data.frame(newprimary, rep("1", length(newprimary))) } else { noGrp <- FALSE ugroups <- unique(groups) value <- data.frame(rep(newprimary, length(ugroups)), rep(ugroups, rep(length(newprimary), length(ugroups)))) } names(value) <- c(prName, grName) ## recovering other variables in data that may be needed for predictions ## varying variables will be replaced by their means summData <- gsummary(data, groups = groups) if (any(toAdd <- is.na(match(names(summData), names(value))))) { summData <- summData[, toAdd, drop = FALSE] } value[, names(summData)] <- summData[value[, 2L], ] pred <- predict(object, value) newvals <- cbind(value[, 1:2], pred) names(newvals)[3] <- respName <- deparse(getResponseFormula(object)[[2]]) orig <- data.frame(primary, groups, getResponse(object)) names(orig) <- names(newvals) value <- rbind(orig, newvals) attributes(value[, 2]) <- attributes(groups) value[, ".type"] <- ordered(c(rep("original", nrow(data)), rep("predicted", nrow(newvals))), levels = c("predicted", "original")) labs <- list(x = prName, y = respName) unts <- list(x = "", y = "") if(inherits(data, "groupedData")) { labs[names(attr(data, "labels"))] <- attr(data, "labels") unts[names(attr(data, "units"))] <- attr(data, "units") attr(value, "units") <- attr(data, "units") } attr(value, "labels") <- labs attr(value, "units") <- unts if (noGrp) { attr(value, "formula") <- eval(parse(text = paste(respName, prName, sep = "~"))) } else { attr(value, "formula") <- eval(parse(text = paste(respName, "~", prName, "|", grName))) } class(value) <- c("augPred", class(value)) value } coef.gls <- function(object, allCoef = FALSE, ...) { val <- object$coefficients if (allCoef) { namFull <- attr(object, "namBetaFull") if (length(val) != (lF <- length(namFull))) { aux <- rep(NA, lF) names(aux) <- namFull aux[names(val)] <- val val <- aux } } val } comparePred.gls <- function(object1, object2, primary = NULL, minimum = min(primary), maximum = max(primary), length.out = 51L, level = NULL, ...) { if (length(level) > 1L) { stop("only one level allowed for predictions") } args <- list(object = object1, primary = primary, level = level, length.out = length.out) if (!is.null(primary)) { ## need to do this before forcing the evaluations primary <- eval(asOneSidedFormula(primary)[[2]], eval(object1$call$data)) args[["minimum"]] <- minimum args[["maximum"]] <- maximum } val1 <- do.call("augPred", args) dm1 <- dim(val1) c1 <- deparse(substitute(object1)) levels(val1[,4])[1] <- c1 args[["object"]] <- object2 val2 <- do.call("augPred", args) dm2 <- dim(val2) c2 <- deparse(substitute(object2)) levels(val2[, 4L])[1] <- c2 val2 <- val2[val2[, 4L] != "original", , drop = FALSE] names(val2) <- names(val1) if (dm1[1L] == dm2[1L]) { lv1 <- sort(levels(val1[, 2L])) lv2 <- sort(levels(val2[, 2L])) if ((length(lv1) != length(lv2)) || any(lv1 != lv2)) { stop(gettextf("%s and %s must have the same group levels", c1, c2), domain = NA) } val <- rbind(val1[, -4L], val2[, -4L]) val[, ".type"] <- ordered(c(as.character(val1[,4L]), as.character(val2[,4L])), levels = c(c1, c2, "original")) attr(val, "formula") <- attr(val1, "formula") } else { # one may have just "fixed" if (dm1[1L] > dm2[1L]) { mult <- dm1[1L] %/% dm2[1L] if ((length(levels(val2[, 2])) != 1L) || (length(levels(val1[, 2])) != mult)) { stop("wrong group levels") } val <- data.frame(c(val1[,1L], rep(val2[,1L], mult)), rep(val1[,1L], 2L), c(val1[,3L], rep(val2[,3L], mult)), ordered(c(as.character(val1[,4L]), rep(as.character(val2[,4L]), mult)), levels = c(c1, c2, "original"))) attr(val, "formula") <- attr(val1, "formula") } else { mult <- dm2[1L] %/% dm1[1L] if ((length(levels(val1[, 2])) != 1L) || (length(levels(val2[, 2])) != mult)) { stop("wrong group levels") } val <- data.frame(c(rep(val1[,1L], mult), val2[,1L]), rep(val2[,1L], 2L), c(rep(val1[,3L], mult), val2[,3L]), ordered(c(rep(as.character(val1[,4L]), mult), as.character(val1[,4L])), levels = c(c1, c2, "original"))) attr(val, "formula") <- attr(val2, "formula") } } class(val) <- c("comparePred", "augPred", class(val)) attr(val, "labels") <- attr(val1, "labels") attr(val, "units") <- attr(val1, "units") val } fitted.gls <- function(object, ...) { val <- napredict(object$na.action, object$fitted) lab <- "Fitted values" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab val } formula.gls <- function(x, ...) eval(x$call$model) getGroups.gls <- function(object, form, level, data, sep) object$groups getGroupsFormula.gls <- function(object, asList = FALSE, sep) { if (!is.null(cSt <- object$modelStruct$corStruct)) { getGroupsFormula(cSt, asList) } else { NULL } } getResponse.gls <- function(object, form) { val <- resid(object) + fitted(object) if (is.null(lab <- attr(object, "labels")$y)) { lab <- deparse(getResponseFormula(object)[[2]]) } if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab val } intervals.gls <- function(object, level = 0.95, which = c("all", "var-cov", "coef"), ...) { which <- match.arg(which) val <- list() dims <- object$dims if (which != "var-cov") { # coefficients included len <- -qt((1-level)/2, dims$N - dims$p) * sqrt(diag(object$varBeta)) est <- coef(object) val[["coef"]] <- array(c(est - len, est, est + len), c(length(est), 3L), list(names(est), c("lower", "est.", "upper"))) attr(val[["coef"]], "label") <- "Coefficients:" } if (which != "coef") { # variance-covariance included if (is.null(aV <- object$apVar)) { # only sigma if (inherits(object, "gnls")) { #always REML-like sigma Nr <- dims$N - dims$p } else { Nr <- dims$N - dims$REML * dims$p } est <- object$sigma * sqrt(Nr) val[["sigma"]] <- structure(c(est/sqrt(qchisq((1+level)/2, Nr)), object$sigma, est/sqrt(qchisq((1-level)/2, Nr))), names = c("lower", "est.", "upper")) attr(val[["sigma"]], "label") <- "Residual standard error:" } else { if (is.character(aV)) { stop(gettextf("cannot get confidence intervals on var-cov components: %s", aV), domain = NA) } len <- -qnorm((1-level)/2) * sqrt(diag(aV)) est <- attr(aV, "Pars") nP <- length(est) glsSt <- object[["modelStruct"]] if (!all(whichKeep <- apply(attr(glsSt, "pmap"), 2, any))) { ## need to deleted components with fixed coefficients aux <- glsSt[whichKeep] class(aux) <- class(glsSt) attr(aux, "settings") <- attr(glsSt, "settings") attr(aux, "pmap") <- attr(glsSt, "pmap")[, whichKeep, drop = FALSE] glsSt <- aux } cSt <- glsSt[["corStruct"]] if (!is.null(cSt) && inherits(cSt, "corSymm") && attr(aV, "natural")) { ## converting to corNatural class(cSt) <- c("corNatural", "corStruct") glsSt[["corStruct"]] <- cSt } pmap <- attr(glsSt, "pmap") namG <- names(glsSt) auxVal <- vector("list", length(namG) + 1L) names(auxVal) <- c(namG, "sigma") aux <- array(c(est - len, est, est + len), c(nP, 3), list(NULL, c("lower", "est.", "upper"))) auxVal[["sigma"]] <- exp(aux[nP, ]) attr(auxVal[["sigma"]], "label") <- "Residual standard error:" aux <- aux[-nP,, drop = FALSE] rownames(aux) <- ## namP <- names(coef(glsSt, FALSE)) for(i in 1:3) { coef(glsSt) <- aux[,i] aux[,i] <- coef(glsSt, unconstrained = FALSE) } for(i in namG) { auxVal[[i]] <- aux[pmap[,i], , drop = FALSE] dimnames(auxVal[[i]])[[1]] <- substring(dimnames(auxVal[[i]])[[1]], nchar(i, "c") + 2) attr(auxVal[[i]], "label") <- switch(i, corStruct = "Correlation structure:", varStruct = "Variance function:", paste(i,":",sep="")) } val <- c(val, auxVal) } } attr(val, "level") <- level class(val) <- "intervals.gls" val } logLik.gls <- function(object, REML, ...) { p <- object$dims$p N <- object$dims$N Np <- N - p estM <- object$method if (missing(REML)) REML <- estM == "REML" val <- object[["logLik"]] if (REML && (estM == "ML")) { # have to correct logLik val <- val + (p * (log(2 * pi) + 1) + Np * log(1 - p/N) + sum(log(abs(svd(object$varBeta)$d)))) / 2 } if (!REML && (estM == "REML")) { # have to correct logLik val <- val - (p * (log(2*pi) + 1) + N * log(1 - p/N) + sum(log(abs(svd(object$varBeta)$d)))) / 2 } attr(val, "nall") <- N attr(val, "nobs") <- N - REML * p attr(val, "df") <- p + length(coef(object[["modelStruct"]])) + 1L class(val) <- "logLik" val } nobs.gls <- function(object, ...) object$dims$N plot.gls <- function(x, form = resid(., type = "pearson") ~ fitted(.), abline, id = NULL, idLabels = NULL, idResType = c("pearson", "normalized"), grid, ...) ## Diagnostic plots based on residuals and/or fitted values { do.call("plot.lme", as.list(match.call()[-1])) } predict.gls <- function(object, newdata, na.action = na.fail, ...) { ## ## method for predict() designed for objects inheriting from class gls ## if (missing(newdata)) { # will return fitted values return(fitted(object)) } form <- getCovariateFormula(object) mfArgs <- list(formula = form, data = newdata, na.action = na.action) mfArgs$drop.unused.levels <- TRUE dataMod <- do.call("model.frame", mfArgs) ## making sure factor levels are the same as in contrasts contr <- object$contrasts for(i in names(dataMod)) { if (inherits(dataMod[,i], "factor") && !is.null(contr[[i]])) { levs <- levels(dataMod[,i]) levsC <- dimnames(contr[[i]])[[1]] if (any(wch <- is.na(match(levs, levsC)))) { stop(sprintf(ngettext(sum(wch), "level %s not allowed for %s", "levels %s not allowed for %s"), paste(levs[wch], collapse = ",")), domain = NA) } attr(dataMod[,i], "contrasts") <- contr[[i]][levs, , drop = FALSE] # if (length(levs) < length(levsC)) { # if (inherits(dataMod[,i], "ordered")) { # dataMod[,i] <- ordered(as.character(dataMod[,i]), levels = levsC) # } else { # dataMod[,i] <- factor(as.character(dataMod[,i]), levels = levsC) # } # } } } N <- nrow(dataMod) if (length(all.vars(form)) > 0) { # X <- model.matrix(form, dataMod, contr) X <- model.matrix(form, dataMod) } else { X <- array(1, c(N, 1), list(row.names(dataMod), "(Intercept)")) } cf <- coef(object) val <- c(X[, names(cf), drop = FALSE] %*% cf) attr(val, "label") <- "Predicted values" if (!is.null(aux <- attr(object, "units")$y)) { attr(val, "label") <- paste(attr(val, "label"), aux) } val } print.intervals.gls <- function(x, ...) { cat(paste("Approximate ", attr(x, "level") * 100, "% confidence intervals\n", sep = "")) for(i in names(x)) { aux <- x[[i]] cat("\n ",attr(aux, "label"), "\n", sep = "") if (i == "sigma") print(c(aux), ...) else print(as.matrix(aux), ...) } invisible(x) } print.gls <- ## method for print() used for gls objects function(x, ...) { dd <- x$dims mCall <- x$call if (inherits(x, "gnls")) { cat("Generalized nonlinear least squares fit\n") } else { cat("Generalized least squares fit by ") cat(ifelse(x$method == "REML", "REML\n", "maximum likelihood\n")) } cat(" Model:", deparse(mCall$model), "\n") cat(" Data:", deparse( mCall$data ), "\n") if (!is.null(mCall$subset)) { cat(" Subset:", deparse(asOneSidedFormula(mCall$subset)[[2]]),"\n") } if (inherits(x, "gnls")) { cat(" Log-likelihood: ", format(x$logLik), "\n", sep = "") } else { cat(" Log-", ifelse(x$method == "REML", "restricted-", ""), "likelihood: ", format(x$logLik), "\n", sep = "") } cat("\nCoefficients:\n") print(coef(x)) cat("\n") if (length(x$modelStruct) > 0L) { print(summary(x$modelStruct)) } cat("Degrees of freedom:", dd[["N"]],"total;",dd[["N"]] - dd[["p"]], "residual\n") cat("Residual standard error:", format(x$sigma),"\n") invisible(x) } print.summary.gls <- function(x, verbose = FALSE, digits = .Options$digits, ...) { dd <- x$dims verbose <- verbose || attr(x, "verbose") mCall <- x$call if (inherits(x, "gnls")) { cat("Generalized nonlinear least squares fit\n") } else { cat("Generalized least squares fit by ") cat(ifelse(x$method == "REML", "REML\n", "maximum likelihood\n")) } cat(" Model:", deparse(mCall$model), "\n") cat(" Data:", deparse( mCall$data ), "\n") if (!is.null(mCall$subset)) { cat(" Subset:", deparse(asOneSidedFormula(mCall$subset)[[2]]),"\n") } print( data.frame(AIC=x$AIC,BIC=x$BIC,logLik=as.vector(x$logLik),row.names = " ")) if (verbose) { cat("Convergence at iteration:",x$numIter,"\n") } if (length(x$modelStruct)) { cat("\n") print(summary(x$modelStruct)) } cat("\nCoefficients:\n") xtTab <- as.data.frame(x$tTable) wchPval <- match("p-value", names(xtTab)) for(i in names(xtTab)[-wchPval]) { xtTab[, i] <- format(zapsmall(xtTab[, i])) } xtTab[,wchPval] <- format(round(xtTab[,wchPval], 4L)) if (any(wchLv <- (as.double(levels(xtTab[, wchPval])) == 0))) { levels(xtTab[, wchPval])[wchLv] <- "<.0001" } row.names(xtTab) <- dimnames(x$tTable)[[1]] print(xtTab) if (nrow(x$tTable) > 1L) { corr <- x$corBeta class(corr) <- "correlation" print(corr, title = "\n Correlation:", ...) } cat("\nStandardized residuals:\n") print(x$residuals) cat("\n") cat("Residual standard error:", format(x$sigma),"\n") cat("Degrees of freedom:", dd[["N"]],"total;",dd[["N"]] - dd[["p"]], "residual\n") invisible(x) } residuals.gls <- function(object, type = c("response", "pearson", "normalized"), ...) { type <- match.arg(type) val <- object$residuals if (type != "response") { val <- val/attr(val, "std") attr(val, "label") <- "Standardized residuals" if (type == "normalized") { if (!is.null(cSt <- object$modelStruct$corStruct)) { ## normalize according to inv-trans factor val <- recalc(cSt, list(Xy = as.matrix(val)))$Xy[, 1] attr(val, "label") <- "Normalized residuals" } } } else { lab <- "Residuals" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab } if (!is.null(object$na.action)) { res <- naresid(object$na.action, val) attr(res, "std") <- naresid(object$na.action, attr(val, "std")) attr(res, "label") <- attr(val, "label") res } else val } summary.gls <- function(object, verbose = FALSE, ...) { ## ## generates an object used in the print.summary method for lme ## ## variance-covariance estimates for coefficients ## stdBeta <- sqrt(diag(as.matrix(object$varBeta))) corBeta <- t(object$varBeta/stdBeta)/stdBeta ## ## coefficients, std. deviations and z-ratios ## beta <- coef(object) dims <- object$dims dimnames(corBeta) <- list(names(beta),names(beta)) object$corBeta <- corBeta tTable <- data.frame(beta, stdBeta, beta/stdBeta, beta) dimnames(tTable)<- list(names(beta),c("Value","Std.Error","t-value","p-value")) tTable[, "p-value"] <- 2 * pt(-abs(tTable[,"t-value"]), dims$N - dims$p) object$tTable <- as.matrix(tTable) ## ## residuals ## resd <- resid(object, type = "pearson") if (length(resd) > 5) { resd <- quantile(resd, na.rm = TRUE) names(resd) <- c("Min","Q1","Med","Q3","Max") } object$residuals <- resd ## ## generating the final object ## aux <- logLik(object) object$BIC <- BIC(aux) object$AIC <- AIC(aux) attr(object, "verbose") <- verbose class(object) <- c("summary.gls", class(object)) object } update.gls <- function (object, model., ..., evaluate = TRUE) { call <- object$call if (is.null(call)) stop("need an object with call component") extras <- match.call(expand.dots = FALSE)$... if (!missing(model.)) call$model <- update.formula(formula(object), model.) if(length(extras) > 0L) { ## the next two lines allow partial matching of argument names ## in the update. This is nonstandard but required for examples ## in chapter 5 of Pinheiro and Bates (2000). glsa <- names(as.list(args(gls))) names(extras) <- glsa[pmatch(names(extras), glsa[-length(glsa)])] existing <- !is.na(match(names(extras), names(call))) ## do these individually to allow NULL to remove entries. for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if(any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if(evaluate) eval(call, parent.frame()) else call } Variogram.gls <- function(object, distance, form = ~1, resType = c("pearson", "response", "normalized"), data, na.action = na.fail, maxDist, length.out = 50, collapse = c("quantiles", "fixed", "none"), nint = 20, breaks, robust = FALSE, metric = c("euclidean", "maximum", "manhattan"), ...) { resType <- match.arg(resType) ## checking if object has a corSpatial element csT <- object$modelStruct$corStruct wchRows <- NULL if (missing(distance)) { if (missing(form) && inherits(csT, "corSpatial")) { distance <- getCovariate(csT) grps <- getGroups(object) } else { metric <- match.arg(metric) if (missing(data)) { data <- getData(object) } if (is.null(data)) { # will try to construct allV <- all.vars(form) if (length(allV) > 0L) { alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } } grpsF <- getGroupsFormula(form) grps <- NULL if (is.null(grpsF) || is.null(grps <- getGroups(data, grpsF))) { ## try to get from object grps <- getGroups(object) } covForm <- getCovariateFormula(form) if (length(all.vars(covForm)) > 0L) { if (attr(terms(covForm), "intercept") == 1L) { covForm <- eval(parse(text = paste("~", deparse(covForm[[2]]),"-1",sep=""))) } covar <- model.frame(covForm, data, na.action = na.action) ## making sure grps is consistent wchRows <- !is.na(match(row.names(data), row.names(covar))) if (!is.null(grps)) { grps <- grps[wchRows, drop = TRUE] } covar <- as.data.frame(unclass(model.matrix(covForm, covar))) } else { if (is.null(grps)) { covar <- 1:nrow(data) } else { covar <- data.frame(dist = unlist(tapply(rep(1, nrow(data)), grps, cumsum))) } } if (is.null(grps)) { distance <- dist(as.matrix(covar), method = metric) } else { covar <- split(covar, grps) ## getting rid of 1-observation groups covar <- covar[sapply(covar, function(el) nrow(as.matrix(el))) > 1] distance <- lapply(covar, function(el, metric) dist(as.matrix(el), method=metric), metric = metric) } } } res <- resid(object, type = resType) if (!is.null(wchRows)) { res <- res[wchRows] } if (is.null(grps)) { val <- Variogram(res, distance) } else { res <- split(res, grps) res <- res[sapply(res, length) > 1L] # no 1-observation groups levGrps <- levels(grps) val <- structure(vector("list", length(levGrps)), names = levGrps) for(i in levGrps) { val[[i]] <- Variogram(res[[i]], distance[[i]]) } val <- do.call("rbind", val) } if (!missing(maxDist)) { val <- val[val$dist <= maxDist, ] } collapse <- match.arg(collapse) if (collapse != "none") { # will collapse values dst <- val$dist udist <- sort(unique(dst)) ludist <- length(udist) if (!missing(breaks)) { if (min(breaks) > udist[1L]) { breaks <- c(udist[1L], breaks) } if (max(breaks) < udist[2L]) { breaks <- c(breaks, udist[2L]) } if (!missing(nint) && nint != (length(breaks) - 1L)) { stop("'nint' is not consistent with 'breaks'") } nint <- length(breaks) - 1L } if (nint < ludist) { if (missing(breaks)) { if (collapse == "quantiles") { # break into equal groups breaks <- unique(quantile(dst, seq(0, 1, 1/nint))) } else { # fixed length intervals breaks <- seq(udist[1L], udist[length(udist)], length = nint + 1) } } cutDist <- cut(dst, breaks) } else { cutDist <- dst } val <- lapply(split(val, cutDist), function(el, robust) { nh <- nrow(el) vrg <- el$variog if (robust) { vrg <- ((mean(vrg^0.25))^4)/(0.457+0.494/nh) } else { vrg <- mean(vrg) } dst <- median(el$dist) data.frame(variog = vrg, dist = dst) }, robust = robust) val <- do.call("rbind", as.list(val)) val$n.pairs <- unclass(table(na.omit(cutDist))) } row.names(val) <- 1:nrow(val) if (inherits(csT, "corSpatial") && resType != "normalized") { ## will keep model variogram if (resType == "pearson") { sig2 <- 1 } else { sig2 <- object$sigma^2 } attr(val, "modelVariog") <- Variogram(csT, sig2 = sig2, length.out = length.out) } attr(val, "collapse") <- collapse != "none" class(val) <- c("Variogram", "data.frame") val } ###*### glsStruct - a model structure for gls fits glsStruct <- ## constructor for glsStruct objects function(corStruct = NULL, varStruct = NULL) { val <- list(corStruct = corStruct, varStruct = varStruct) val <- val[!sapply(val, is.null)] # removing NULL components class(val) <- c("glsStruct", "modelStruct") val } ##*## glsStruct methods for standard generics fitted.glsStruct <- function(object, glsFit = attr(object, "glsFit"), ...) { glsFit[["fitted"]] } Initialize.glsStruct <- function(object, data, control = list(singular.ok = FALSE), ...) { if (length(object)) { object[] <- lapply(object, Initialize, data) theta <- lapply(object, coef) len <- unlist(lapply(theta, length)) num <- seq_along(len) if (sum(len) > 0) { pmap <- outer(rep(num, len), num, "==") } else { pmap <- array(FALSE, c(1, length(len))) } dimnames(pmap) <- list(NULL, names(object)) attr(object, "pmap") <- pmap attr(object, "glsFit") <- glsEstimate(object, control = control) if (needUpdate(object)) { object <- update(object, data) } } object } logLik.glsStruct <- function(object, Pars, conLin = attr(object, "conLin"), ...) { coef(object) <- Pars # updating parameter values conLin <- recalc(object, conLin) # updating conLin val <- .C(gls_loglik, as.double(conLin[["Xy"]]), as.integer(unlist(conLin[["dims"]])), logLik = as.double(conLin[["logLik"]]), double(1L), NAOK = TRUE) val[["logLik"]] } residuals.glsStruct <- function(object, glsFit = attr(object, "glsFit"), ...) { glsFit[["resid"]] } varWeights.glsStruct <- function(object) { if (is.null(object$varStruct)) rep(1, attr(object, "conLin")$dims$N) else varWeights(object$varStruct) } ## Auxiliary control functions glsControl <- ## Control parameters for gls function(maxIter = 50L, msMaxIter = 200L, tolerance = 1e-6, msTol = 1e-7, msScale = lmeScale, msVerbose = FALSE, singular.ok = FALSE, returnObject = FALSE, apVar = TRUE, .relStep = (.Machine$double.eps)^(1/3), nlmStepMax = 100.0, opt = c("nlminb", "optim"), optimMethod = "BFGS", minAbsParApVar = 0.05, natural = TRUE) { list(maxIter = maxIter, msMaxIter = msMaxIter, tolerance = tolerance, msTol = msTol, msScale = msScale, msVerbose = msVerbose, singular.ok = singular.ok, returnObject = returnObject, apVar = apVar, minAbsParApVar = minAbsParApVar, .relStep = .relStep, nlmStepMax = nlmStepMax, opt = match.arg(opt), optimMethod = optimMethod, natural = natural) } nlme/R/lme.R0000644000176000001440000030712712223220012012332 0ustar ripleyusers### Fit a general linear mixed effects model ### ### Copyright 1997-2003 Jose C. Pinheiro, ### Douglas M. Bates # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # lme <- ## fits general linear mixed effects model by maximum likelihood, or ## residual maximum likelihood using Newton-Raphson algorithm. function(fixed, data = sys.frame(sys.parent()), random, correlation = NULL, weights = NULL, subset, method = c("REML", "ML"), na.action = na.fail, control = list(), contrasts = NULL, keep.data = TRUE) UseMethod("lme") lme.groupedData <- function(fixed, data = sys.frame(sys.parent()), random, correlation = NULL, weights = NULL, subset, method = c("REML", "ML"), na.action = na.fail, control = list(), contrasts = NULL, keep.data = TRUE) { args <- as.list(match.call())[-1L] names(args)[1L] <- "data" form <- getResponseFormula(fixed) form[[3]] <- getCovariateFormula(fixed)[[2L]] do.call("lme", c(list(fixed = form), args)) } lme.lmList <- function(fixed, data = sys.frame(sys.parent()), random, correlation = NULL, weights = NULL, subset, method = c("REML", "ML"), na.action = na.fail, control = list(), contrasts = NULL, keep.data = TRUE) { if (length(grpForm <- getGroupsFormula(fixed, asList = TRUE)) > 1) { stop("can only fit \"lmList\" objects with single grouping variable") } this.call <- as.list(match.call())[-1L] ## warn "data" is passed to this function if (!is.na(match("data", names(this.call)))) { warning("'lme.lmList' will redefine 'data'") } ## add object, data, and groups from the call that created object last.call <- as.list(attr(fixed, "call"))[-1L] whichLast <- match(c("object", "data", "na.action"), names(last.call)) whichLast <- whichLast[!is.na(whichLast)] last.call <- last.call[whichLast] names(last.call)[match(names(last.call), "object")] <- "fixed" this.call[names(last.call)] <- last.call this.call$fixed <- as.vector(eval(parse(text=paste(deparse(getResponseFormula(fixed)[[2L]]), c_deparse(getCovariateFormula(fixed)[[2L]]), sep="~")))) if (missing(random)) { random <- eval(as.call(this.call[["fixed"]][-2])) } random <- reStruct(random, data = NULL) mData <- this.call[["data"]] if (is.null(mData)) { # will try to construct allV <- all.vars(formula(random)) if (length(allV) > 0) { alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" mData <- eval(alist, sys.parent(1)) } } else { if (mode(mData) == "name" || mode(mData) == "call") { mData <- eval(mData) } } reSt <- reStruct(random, data = mData) # getting random effects names names(reSt) <- names(grpForm) if (length(reSt) > 1) { stop("can only fit \"lmList\" objects with single grouping variable") } rNames <- Names(reSt[[1L]]) if (all(match(rNames, names(cf <- na.omit(coef(fixed))), 0))) { if (isInitialized(reSt)) { warning("initial value for \"reStruct\" overwritten in 'lme.lmList'") } madRes <- mad(resid(fixed), na.rm = TRUE) madRan <- unlist(lapply(cf, mad, na.rm = TRUE)[rNames]) names(madRan) <- rNames matrix(reSt) <- diag((madRan/madRes)^2, ncol = length(rNames)) } this.call[["random"]] <- reSt val <- do.call("lme.formula", this.call) val$origCall <- match.call() val } lme.formula <- function(fixed, data = sys.frame(sys.parent()), random = pdSymm( eval( as.call( fixed[ -2 ] ) ) ), correlation = NULL, weights = NULL, subset, method = c("REML", "ML"), na.action = na.fail, control = list(), contrasts = NULL, keep.data = TRUE) { Call <- match.call() miss.data <- missing(data) || !is.data.frame(data) ## control parameters controlvals <- lmeControl() if (!missing(control)) { if(!is.null(control$nlmStepMax) && control$nlmStepMax < 0) { warning("negative control$nlmStepMax - using default value") control$nlmStepMax <- NULL } controlvals[names(control)] <- control } ## ## checking arguments ## if (!inherits(fixed, "formula") || length(fixed) != 3) { stop("\nfixed-effects model must be a formula of the form \"resp ~ pred\"") } method <- match.arg(method) REML <- method == "REML" reSt <- reStruct(random, REML = REML, data = NULL) groups <- getGroupsFormula(reSt) if (is.null(groups)) { if (inherits(data, "groupedData")) { groups <- getGroupsFormula(data) namGrp <- rev(names(getGroupsFormula(data, asList = TRUE))) Q <- length(namGrp) if (length(reSt) != Q) { # may need to repeat reSt if (length(reSt) != 1) { stop("incompatible lengths for 'random' and grouping factors") } randL <- vector("list", Q) names(randL) <- rev(namGrp) for(i in 1:Q) randL[[i]] <- random randL <- as.list(randL) reSt <- reStruct(randL, REML = REML, data = NULL) } else { names(reSt) <- namGrp } } else { ## will assume single group groups <- ~ 1 names(reSt) <- "1" } } ## check if corStruct is present and assign groups to its formula, ## if necessary if (!is.null(correlation)) { if(!is.null(corGrpsForm <- getGroupsFormula(correlation, asList = TRUE))) { corGrpsForm <- unlist(lapply(corGrpsForm, function(el) deparse(el[[2L]]))) corQ <- length(corGrpsForm) lmeGrpsForm <- unlist(lapply(splitFormula(groups), function(el) deparse(el[[2L]]))) lmeQ <- length(lmeGrpsForm) if (corQ <= lmeQ) { if (any(corGrpsForm != lmeGrpsForm[1:corQ])) { stop("incompatible formulas for groups in 'random' and 'correlation'") } if (corQ < lmeQ) { warning("cannot use smaller level of grouping for 'correlation' than for 'random'. Replacing the former with the latter.") attr(correlation, "formula") <- eval(parse(text = paste("~", c_deparse(getCovariateFormula(formula(correlation))[[2L]]), "|", deparse(groups[[2L]])))) } } else { if (any(lmeGrpsForm != corGrpsForm[1:lmeQ])) { stop("incompatible formulas for groups in 'random' and 'correlation'") } } } else { ## using the same grouping as in random attr(correlation, "formula") <- eval(parse(text = paste("~", c_deparse(getCovariateFormula(formula(correlation))[[2L]]), "|", deparse(groups[[2L]])))) corQ <- lmeQ <- 1 } } else { corQ <- lmeQ <- 1 } ## create an lme structure containing the random effects model and plug-ins lmeSt <- lmeStruct(reStruct = reSt, corStruct = correlation, varStruct = varFunc(weights)) ## extract a data frame with enough information to evaluate ## fixed, groups, reStruct, corStruct, and varStruct mfArgs <- list(formula = asOneFormula(formula(lmeSt), fixed, groups), data = data, na.action = na.action) if (!missing(subset)) { mfArgs[["subset"]] <- asOneSidedFormula(Call[["subset"]])[[2L]] } mfArgs$drop.unused.levels <- TRUE dataMix <- do.call("model.frame", mfArgs) origOrder <- row.names(dataMix) # preserve the original order for(i in names(contrasts)) # handle contrasts statement contrasts(dataMix[[i]]) = contrasts[[i]] ## sort the model.frame by groups and get the matrices and parameters ## used in the estimation procedures grps <- getGroups(dataMix, groups) ## ordering data by groups if (inherits(grps, "factor")) { # single level ord <- order(grps) #"order" treats a single named argument peculiarly grps <- data.frame(grps) row.names(grps) <- origOrder names(grps) <- as.character(deparse((groups[[2L]]))) } else { ord <- do.call("order", grps) ## making group levels unique for(i in 2:ncol(grps)) { grps[, i] <- as.factor(paste(as.character(grps[, i-1]), as.character(grps[,i]), sep = "/")) NULL } } if (corQ > lmeQ) { ## may have to reorder by the correlation groups ord <- do.call("order", getGroups(dataMix, getGroupsFormula(correlation))) } grps <- grps[ord, , drop = FALSE] dataMix <- dataMix[ord, ,drop = FALSE] revOrder <- match(origOrder, row.names(dataMix)) # putting in orig. order ## obtaining basic model matrices N <- nrow(grps) Z <- model.matrix(reSt, dataMix) ncols <- attr(Z, "ncols") Names(lmeSt$reStruct) <- attr(Z, "nams") ## keeping the contrasts for later use in predict contr <- attr(Z, "contr") X <- model.frame(fixed, dataMix) Terms <- attr(X, "terms") auxContr <- lapply(X, function(el) if (inherits(el, "factor") && length(levels(el)) > 1) contrasts(el)) contr <- c(contr, auxContr[is.na(match(names(auxContr), names(contr)))]) contr <- contr[!unlist(lapply(contr, is.null))] X <- model.matrix(fixed, data=X) y <- eval(fixed[[2L]], dataMix) ncols <- c(ncols, dim(X)[2L], 1) Q <- ncol(grps) ## creating the condensed linear model attr(lmeSt, "conLin") <- list(Xy = array(c(Z, X, y), c(N, sum(ncols)), list(row.names(dataMix), c(colnames(Z), colnames(X), deparse(fixed[[2L]])))), dims = MEdims(grps, ncols), logLik = 0) ## checking if enough observations per group to estimate ranef tmpDims <- attr(lmeSt, "conLin")$dims if (max(tmpDims$ZXlen[[1L]]) < tmpDims$qvec[1L]) { warning(gettextf("fewer observations than random effects in all level %s groups", Q), domain = NA) } ## degrees of freedom for testing fixed effects fixDF <- getFixDF(X, grps, attr(lmeSt, "conLin")$dims$ngrps, terms = Terms) ## initialization lmeSt <- Initialize(lmeSt, dataMix, grps, control = controlvals) parMap <- attr(lmeSt, "pmap") ## Checking possibility of single decomposition if (length(lmeSt) == 1) { # reStruct only, can do one decomposition ## need to save conLin for calculating fitted values and residuals oldConLin <- attr(lmeSt, "conLin") decomp <- TRUE attr(lmeSt, "conLin") <- MEdecomp(attr(lmeSt, "conLin")) } else decomp <- FALSE ## ## getting the linear mixed effects fit object, ## possibly iterating for variance functions ## numIter <- 0 repeat { oldPars <- coef(lmeSt) optRes <- if (controlvals$opt == "nlminb") { control <- list(iter.max = controlvals$msMaxIter, eval.max = controlvals$msMaxEval, trace = controlvals$msVerbose) keep <- c("abs.tol", "rel.tol", "x.tol", "xf.tol", "step.min", "step.max", "sing.tol", "scale.init", "diff.g") control <- c(control, controlvals[names(controlvals) %in% keep]) nlminb(c(coef(lmeSt)), function(lmePars) -logLik(lmeSt, lmePars), control = control) } else { reltol <- controlvals$reltol if(is.null(reltol)) reltol <- 100*.Machine$double.eps control <- list(trace = controlvals$msVerbose, maxit = controlvals$msMaxIter, reltol = if(numIter == 0) controlvals$msTol else reltol) keep <- c("fnscale", "parscale", "ndeps", "abstol", "alpha", "beta", "gamma", "REPORT", "type", "lmm", "factr", "pgtol", "temp", "tmax") control <- c(control, controlvals[names(controlvals) %in% keep]) optim(c(coef(lmeSt)), function(lmePars) -logLik(lmeSt, lmePars), control = control, method = controlvals$optimMethod) } numIter0 <- NULL coef(lmeSt) <- optRes$par attr(lmeSt, "lmeFit") <- MEestimate(lmeSt, grps) ## checking if any updating is needed if (!needUpdate(lmeSt)) { if (optRes$convergence) { msg <- paste(controlvals$opt, " problem, convergence error code = ", optRes$convergence, "\n message = ", optRes$message, sep='') if(!controlvals$returnObject) stop(msg, domain = NA) else warning(msg, domain = NA) } break } ## updating the fit information numIter <- numIter + 1L lmeSt <- update(lmeSt, dataMix) ## calculating the convergence criterion aConv <- coef(lmeSt) conv <- abs((oldPars - aConv)/ifelse(aConv == 0, 1, aConv)) aConv <- NULL for(i in names(lmeSt)) { if (any(parMap[,i])) { aConv <- c(aConv, max(conv[parMap[,i]])) names(aConv)[length(aConv)] <- i } } if (max(aConv) <= controlvals$tolerance) { break } if (numIter > controlvals$maxIter) { msg <- paste("maximum number of iterations", "(lmeControl(maxIter)) reached without convergence") if (controlvals$returnObject) { warning(msg, domain = NA) break } else stop(msg, domain = NA) } } ## end{repeat} ## wrapping up lmeFit <- attr(lmeSt, "lmeFit") names(lmeFit$beta) <- namBeta <- colnames(X) attr(fixDF, "varFixFact") <- varFix <- lmeFit$sigma * lmeFit$varFix varFix <- crossprod(varFix) dimnames(varFix) <- list(namBeta, namBeta) ## ## fitted.values and residuals (in original order) ## Fitted <- fitted(lmeSt, level = 0:Q, conLin = if (decomp) oldConLin else attr(lmeSt, "conLin"))[ revOrder, , drop = FALSE] Resid <- y[revOrder] - Fitted rownames(Resid) <- rownames(Fitted) <- origOrder attr(Resid, "std") <- lmeFit$sigma/(varWeights(lmeSt)[revOrder]) ## putting groups back in original order grps <- grps[revOrder, , drop = FALSE] ## making random effects estimates consistently ordered # for(i in names(lmeSt$reStruct)) { # lmeFit$b[[i]] <- lmeFit$b[[i]][unique(as.character(grps[, i])),, drop = F] # NULL # } ## inverting back reStruct lmeSt$reStruct <- solve(lmeSt$reStruct) ## saving part of dims dims <- attr(lmeSt, "conLin")$dims[c("N", "Q", "qvec", "ngrps", "ncol")] ## getting the approximate var-cov of the parameters if (controlvals$apVar) { apVar <- lmeApVar(lmeSt, lmeFit$sigma, .relStep = controlvals[[".relStep"]], minAbsPar = controlvals[["minAbsParApVar"]], natural = controlvals[["natural"]]) } else { apVar <- "Approximate variance-covariance matrix not available" } ## getting rid of condensed linear model and fit attr(lmeSt, "conLin") <- NULL attr(lmeSt, "lmeFit") <- NULL ## ## creating the lme object ## estOut <- list(modelStruct = lmeSt, dims = dims, contrasts = contr, coefficients = list( fixed = lmeFit$beta, random = lmeFit$b), varFix = varFix, sigma = lmeFit$sigma, apVar = apVar, logLik = lmeFit$logLik, numIter = if (needUpdate(lmeSt)) numIter else numIter0, groups = grps, call = Call, terms = Terms, method = method, fitted = Fitted, residuals = Resid, fixDF = fixDF, na.action = attr(dataMix, "na.action")) if (keep.data && !miss.data) estOut$data <- data if (inherits(data, "groupedData")) { ## saving labels and units for plots attr(estOut, "units") <- attr(data, "units") attr(estOut, "labels") <- attr(data, "labels") } class(estOut) <- "lme" estOut } ### Auxiliary functions used internally in lme and its methods getFixDF <- function(X, grps, ngrps, assign = attr(X, "assign"), terms) { ## calculates degrees of freedom for fixed effects Wald tests if (!is.list(assign)) { # in R namTerms <- attr(terms, "term.labels") if (attr(terms, "intercept") > 0) { namTerms <- c("(Intercept)", namTerms) } namTerms <- factor(assign, labels = namTerms) assign <- split(order(assign), namTerms) } ## function to check if a vector is (nearly) a multiple of (1,1,...,1) const <- function(x, tolerance = sqrt(.Machine$double.eps)) { if (length(x) < 1) return(NA) x <- as.numeric(x) if (x[1L] == 0.) return(all(abs(x) < tolerance)) all(abs((x/x[1L] - 1.)) < tolerance) } N <- nrow(X) p <- ncol(X) Q <- ncol(grps) Qp1 <- Q + 1L namX <- colnames(X) ngrps <- rev(ngrps)[-(1:2)] stratNam <- c(names(ngrps), "Residual") dfX <- dfTerms <- c(ngrps, N) - c(0, ngrps) names(dfX) <- names(dfTerms) <- stratNam valX <- double(p) names(valX) <- namX namTerms <- names(assign) valTerms <- double(length(assign)) names(valTerms) <- namTerms if (any(notIntX <- !apply(X, 2, const))) { ## percentage of groups for which columns of X are inner innP <- array(c(rep(1, p), .C(inner_perc_table, as.double(X), as.integer(unlist(grps)), as.integer(p), as.integer(Q), as.integer(N), val = double(p * Q))[["val"]]), c(p, Qp1), list(namX, stratNam)) ## strata in which columns of X are estimated ## ignoring fractional inner percentages for now stratX <- stratNam[apply(innP, 1, function(el, index) max(index[el > 0]), index = 1:Qp1)] ## strata in which terms are estimated notIntTerms <- unlist(lapply(assign, function(el, notIntX) { any(notIntX[el]) }, notIntX = notIntX)) stratTerms <- stratNam[unlist(lapply(assign, function(el, stratX, stratNam) { max(match(stratX[el], stratNam)) }, stratX = stratX, stratNam = stratNam))][notIntTerms] stratX <- stratX[notIntX] xDF <- table(stratX) dfX[names(xDF)] <- dfX[names(xDF)] - xDF if (!all(notIntX)) { # correcting df for intercept dfX[1L] <- dfX[1L] - 1L } else { dfX[-1L] <- dfX[-1L] + 1L } valX[notIntX] <- dfX[stratX] ## number of parameters in each term pTerms <- unlist(lapply(assign, length))[notIntTerms] tDF <- tapply(pTerms, stratTerms, sum) dfTerms[names(tDF)] <- dfTerms[names(tDF)] - tDF if (!all(notIntTerms)) { dfTerms[1L] <- dfTerms[1L] - 1L } else { dfTerms[-1L] <- dfTerms[-1L] + 1L } valTerms[notIntTerms] <- dfTerms[stratTerms] } else { notIntTerms <- unlist(lapply(assign, function(el, notIntX) { any(notIntX[el]) }, notIntX = notIntX)) } if (!all(notIntX)) { #intercept included valX[!notIntX] <- max(dfX) if (!all(notIntTerms)) { valTerms[!notIntTerms] <- max(dfTerms) } } val <- list(X = valX, terms = valTerms) attr(val, "assign") <- assign val } lmeApVar <- function(lmeSt, sigma, conLin = attr(lmeSt, "conLin"), .relStep = (.Machine$double.eps)^(1/3), minAbsPar = 0, natural = TRUE) { ## calculate approximate variance-covariance matrix of all parameters ## except the fixed effects. By default, uses natural parametrization for ## for pdSymm matrices fullLmeLogLik <- function(Pars, object, conLin, dims, N, settings) { ## logLik as a function of sigma and coef(lmeSt) npar <- length(Pars) sigma <- exp(Pars[npar]) # within-group std. dev. Pars <- Pars[-npar] coef(object) <- Pars if ((lO <- length(object)) > 1) { for(i in lO:2) { conLin <- recalc(object[[i]], conLin) NULL } } val <- .C(mixed_loglik, as.double(conLin$Xy), as.integer(unlist(dims)), as.double(sigma * unlist(pdFactor(solve(object$reStruct)))), as.integer(settings), logLik = double(1), lRSS = double(1))[c("logLik", "lRSS")] aux <- (exp(val[["lRSS"]])/sigma)^2 conLin[["logLik"]] + val[["logLik"]] + (N * log(aux) - aux)/2 } dims <- conLin$dims sett <- attr(lmeSt, "settings") N <- dims$N - sett[1L] * dims$ncol[dims$Q + 1L] sett[2:3] <- c(1, 0) # asDelta = TRUE and no grad/Hess conLin[["logLik"]] <- 0 # making sure sig2 <- sigma * sigma reSt <- lmeSt[["reStruct"]] for(i in seq_along(reSt)) { matrix(reSt[[i]]) <- as.double(sig2) * pdMatrix(reSt[[i]]) if (inherits(reSt[[i]], "pdSymm") && natural) { reSt[[i]] <- pdNatural(reSt[[i]]) } if (inherits(reSt[[i]], "pdBlocked") && natural) { for(j in seq_along(reSt[[i]])) { if (inherits(reSt[[i]][[j]], "pdSymm")) { reSt[[i]][[j]] <- pdNatural(reSt[[i]][[j]]) } } } } lmeSt[["reStruct"]] <- reSt cSt <- lmeSt[["corStruct"]] if (!is.null(cSt) && inherits(cSt, "corSymm") && natural) { cStNatPar <- coef(cSt, unconstrained = FALSE) class(cSt) <- c("corNatural", "corStruct") coef(cSt) <- log((cStNatPar + 1)/(1 - cStNatPar)) lmeSt[["corStruct"]] <- cSt } Pars <- c(coef(lmeSt), lSigma = log(sigma)) val <- fdHess(Pars, fullLmeLogLik, lmeSt, conLin, dims, N, sett, .relStep = .relStep, minAbsPar = minAbsPar)[["Hessian"]] if (all(eigen(val)$values < 0)) { ## negative definite - OK val <- solve(-val) nP <- names(Pars) dimnames(val) <- list(nP, nP) attr(val, "Pars") <- Pars attr(val, "natural") <- natural val } else { ## problem - solution is not a maximum "Non-positive definite approximate variance-covariance" } } MEdecomp <- function(conLin) ## decompose a condensed linear model. Returns another condensed ## linear model { dims <- conLin$dims if (dims[["StrRows"]] >= dims[["ZXrows"]]) { ## no pint in doing the decomposition return(conLin) } dc <- array(.C(mixed_decomp, as.double(conLin$Xy), as.integer(unlist(dims)))[[1L]], c(dims$StrRows, dims$ZXcols)) dims$ZXrows <- dims$StrRows dims$ZXoff <- dims$DecOff dims$ZXlen <- dims$DecLen conLin[c("Xy", "dims")] <- list(Xy = dc, dims = dims) conLin } MEEM <- function(object, conLin, niter = 0) ## perform niter iterations of the EM algorithm for conLin ## assumes that object is in precision form { if (niter > 0) { dd <- conLin$dims pdCl <- attr(object, "settings")[-(1:3)] pdCl[pdCl == -1] <- 0 precvec <- unlist(pdFactor(object)) zz <- .C(mixed_EM, as.double(conLin$Xy), as.integer(unlist(dd)), precvec = as.double(precvec), as.integer(niter), as.integer(pdCl), as.integer(attr(object, "settings")[1L]), double(1), double(length(precvec)), double(1))[["precvec"]] Prec <- vector("list", length(object)) names(Prec) <- names(object) for (i in seq_along(object)) { len <- dd$qvec[i]^2 matrix(object[[i]]) <- crossprod(matrix(zz[1:len + dd$DmOff[i]], ncol = dd$qvec[i])) } } object } MEestimate <- function(object, groups, conLin = attr(object, "conLin")) { dd <- conLin$dims nc <- dd$ncol REML <- attr(object$reStruct, "settings")[1L] Q <- dd$Q rConLin <- recalc(object, conLin) zz <- .C(mixed_estimate, as.double(rConLin$Xy), as.integer(unlist(dd)), as.double(unlist(pdFactor(object$reStruct))), as.integer(REML), double(1), estimates = double(dd$StrRows * dd$ZXcols), as.logical(FALSE))[["estimates"]] estimates <- array(zz, c(dd$StrRows, dd$ZXcols)) resp <- estimates[ , dd$ZXcols] reSt <- object$reStruct nam <- names(reSt) val <- vector(mode = "list", length = Q) names(val) <- nam start <- dd$StrRows * c(0, cumsum(nc)) for (i in seq_along(reSt)) { val[[i]] <- matrix(resp[as.vector(outer(1:(nc[i]), dd$SToff[[i]] - start[i], "+"))], ncol = nc[i], byrow = TRUE, dimnames = list(unique(as.character(groups[, nam[i]])), Names(reSt[[i]]))) NULL } p <- nc[Q + 1L] N <- dd$N - REML * p dimE <- dim(estimates) if(p) list(logLik = N * (log(N) - (1 + log(2 * pi)))/2 + rConLin$logLik, b = rev(val), beta = resp[dimE[1L] - (p:1)], sigma = abs(resp[dimE[1L]])/sqrt(N), varFix = t(solve(estimates[dimE[1L]-(p:1), dimE[2L]-(p:1), drop = FALSE]))) else list(logLik = N * (log(N) - (1 + log(2 * pi)))/2 + rConLin$logLik, b = rev(val), beta = double(), sigma = abs(resp[dimE[1L]])/sqrt(N), varFix = matrix(,p,p)) } MEdims <- function(groups, ncols) { ## define constants used in matrix decompositions and log-lik calculations ## first need some local functions lengths <- ## returns the group lengths from a vector of last rows in the group function(lstrow) diff(c(0, lstrow)) offsets <- ## converts total number of columns(N), columns per level(ncols), and ## a list of group lengths to offsets in C arrays function(N, ncols, lstrow, triangle = FALSE) { pop <- function(x) x[-length(x)] cstart <- c(0, cumsum(N * ncols)) for (i in seq_along(lstrow)) { lstrow[[i]] <- cstart[i] + if (triangle) { lstrow[[i]] - ncols[i] # storage offsets style } else { pop(c(0, lstrow[[i]])) # decomposition style } } lstrow } Q <- ncol(groups) # number of levels N <- nrow(groups) # number of observations ## 'isLast' indicates if the row is the last row in the group at that level. ## this version propagates changes from outer groups to inner groups # isLast <- (array(unlist(lapply(c(rev(as.list(groups)), # list(X = rep(0, N), y = rep(0, N))), # function(x) c(0 != diff(codes(x)), TRUE))), # c(N, Q+2), list(NULL, c(rev(names(groups)), "X", "y"))) # %*% (row(diag(Q+2)) >= col(diag(Q+2)))) != 0 ## this version does not propagate changes from outer to inner. isLast <- array(FALSE, dim(groups) + c(0, 2), list(NULL, c(rev(names(groups)), "X", "y"))) for(i in 1:Q) { isLast[, Q + 1L - i] <- c(0 != diff(as.integer(groups[[i]])), TRUE) } isLast[N, ] <- TRUE lastRow <- apply(isLast, 2, function(x) seq_along(x)[x]) if(!is.list(lastRow)) { nm <- names(lastRow) lastRow <- as.list(lastRow) names(lastRow) <- nm } isLast <- t(isLast) strSizes <- cumsum(ncols * isLast) * isLast # required storage sizes lastStr <- apply(t(strSizes), 2, function(x) x[x != 0]) if(!is.list(lastStr)) { nm <- names(lastStr) lastStr <- as.list(lastStr) names(lastStr) <- nm } strRows <- max(lastStr[[length(lastStr)]]) lastBlock <- vector("list", Q) names(lastBlock) <- rownames(strSizes)[1:Q] for(i in 1:Q) lastBlock[[i]] <- c(strSizes[i, -N], strRows) maxStr <- do.call("pmax", lastBlock) for(i in 1:Q) lastBlock[[i]] <- maxStr[as.logical(lastBlock[[i]])] lastBlock <- c(lastBlock, list(X = strRows, y = strRows)) list(N = N, # total number of rows in data ZXrows = N, # no. of rows in array ZXcols = sum(ncols), # no. of columns in array Q = Q, # no. of levels of random effects StrRows = strRows, # no. of rows required for storage qvec = ncols * c(rep(1, Q), 0, 0), # lengths of random effects # no. of groups at each level ngrps = c(unlist(lapply(lastRow, length), N, N)), # offsets into DmHalf array by level DmOff = (c(0, cumsum(ncols^2)))[1:(Q+2)], ncol = ncols, # no. of columns decomposed per level # no. of columns rotated per level nrot = (rev(c(0, cumsum(rev(ncols)))))[-1L], ZXoff = offsets(N, ncols, lastRow), # offsets into ZXy ZXlen = lapply(lastRow, lengths), # lengths of ZXy groups # storage array offsets SToff = offsets(strRows, ncols, lastStr, triangle = TRUE), # decomposition offsets DecOff = offsets(strRows, ncols, lastBlock), # decomposition lengths DecLen = lapply(lastBlock, lengths) ) } ### Methods for standard generics ACF.lme <- function(object, maxLag, resType = c("pearson", "response", "normalized"), ...) { resType <- match.arg(resType) res <- resid(object, type = resType, asList = TRUE) if(missing(maxLag)) { maxLag <- min(c(maxL <- max(sapply(res, length)) - 1, as.integer(10 * log10(maxL + 1)))) } val <- lapply(res, function(el, maxLag) { N <- maxLag + 1L tt <- double(N) nn <- integer(N) N <- min(c(N, n <- length(el))) nn[1:N] <- n + 1L - 1:N ## el <- el - mean(el) for(i in 1:N) { tt[i] <- sum(el[1:(n-i+1)] * el[i:n]) } array(c(tt,nn), c(length(tt), 2)) }, maxLag = maxLag) val0 <- apply(sapply(val, function(x) x[,2]), 1, sum) val1 <- apply(sapply(val, function(x) x[,1]), 1, sum)/val0 val2 <- val1/val1[1L] z <- data.frame(lag = 0:maxLag, ACF = val2) attr(z, "n.used") <- val0 class(z) <- c("ACF", "data.frame") z } anova.lme <- function(object, ..., test = TRUE, type = c("sequential", "marginal"), adjustSigma = TRUE, Terms, L, verbose = FALSE) { ## returns the likelihood ratio statistics, the AIC, and the BIC Lmiss <- missing(L) dots <- list(...) if ((rt <- (length(dots) + 1L)) == 1L) { ## just one object if (!inherits(object,"lme")) { stop("object must inherit from class \"lme\" ") } vFix <- attr(object$fixDF, "varFixFact") if (adjustSigma && object$method == "ML") ## using REML-like estimate of sigma under ML vFix <- sqrt(object$dims$N/(object$dims$N - ncol(vFix))) * vFix c0 <- solve(t(vFix), fixef(object)) assign <- attr(object$fixDF, "assign") nTerms <- length(assign) if (missing(Terms) && Lmiss) { ## returns the F.table (Wald) for the fixed effects type <- match.arg(type) Fval <- Pval <- double(nTerms) nDF <- integer(nTerms) dDF <- object$fixDF$terms for(i in 1:nTerms) { nDF[i] <- length(assign[[i]]) if (type == "sequential") { # type I SS c0i <- c0[assign[[i]]] } else { c0i <- c(qr.qty(qr(vFix[, assign[[i]], drop = FALSE]), c0))[1:nDF[i]] } Fval[i] <- sum(c0i^2)/nDF[i] Pval[i] <- 1 - pf(Fval[i], nDF[i], dDF[i]) } ## ## fixed effects F-values, df, and p-values ## aod <- data.frame(nDF, dDF, Fval, Pval) dimnames(aod) <- list(names(assign),c("numDF","denDF","F-value", "p-value")) attr(aod,"rt") <- rt } else { nX <- length(unlist(assign)) if (Lmiss) { # terms is given if (is.numeric(Terms) && all(Terms == as.integer(Terms))) { if (min(Terms) < 1 || max(Terms) > nTerms) { stop(gettextf("'Terms' must be between 1 and %d", nTerms), domain = NA) } } else { if (is.character(Terms)) { if (any(noMatch <- is.na(match(Terms, names(assign))))) { stop(sprintf(ngettext(sum(noMatch), "term %s not matched", "terms %s not matched"), paste(Terms[noMatch], collapse = ", ")), domain = NA) } } else { stop("terms can only be integers or characters") } } dDF <- unique(object$fixDF$terms[Terms]) if (length(dDF) > 1) { stop("terms must all have the same denominator DF") } lab <- paste("F-test for:",paste(names(assign[Terms]),collapse=", "),"\n") L <- diag(nX)[unlist(assign[Terms]),,drop=FALSE] } else { L <- as.matrix(L) if (ncol(L) == 1) L <- t(L) # single linear combination nrowL <- nrow(L) ncolL <- ncol(L) if (ncol(L) > nX) { stop(sprintf(ngettext(nX, "'L' must have at most %d column", "'L' must have at most %d columns"), nX), domain = NA) } dmsL1 <- rownames(L) L0 <- array(0, c(nrowL, nX), list(NULL, names(object$fixDF$X))) if (is.null(dmsL2 <- colnames(L))) { ## assume same order as effects L0[, 1:ncolL] <- L } else { if (any(noMatch <- is.na(match(dmsL2, colnames(L0))))) { stop(sprintf(ngettext(sum(noMatch), "effect %s not matched", "effects %s not matched"), paste(dmsL2[noMatch],collapse=", ")), domain = NA) } L0[, dmsL2] <- L } L <- L0[noZeroRowL <- as.logical((L0 != 0) %*% rep(1, nX)), , drop = FALSE] nrowL <- nrow(L) if (is.null(dmsL1)) { dmsL1 <- 1:nrowL } else { dmsL1 <- dmsL1[noZeroRowL] } rownames(L) <- dmsL1 dDF <- unique(object$fixDF$X[noZeroColL <- as.logical(c(rep(1,nrowL) %*% (L != 0)))]) if (length(dDF) > 1) { stop("L may only involve fixed effects with the same denominator DF") } lab <- "F-test for linear combination(s)\n" } nDF <- sum(svd(L)$d > 0) c0 <- c(qr.qty(qr(vFix %*% t(L)), c0))[1:nDF] Fval <- sum(c0^2)/nDF Pval <- 1 - pf(Fval, nDF, dDF) aod <- data.frame(nDF, dDF, Fval, Pval) names(aod) <- c("numDF", "denDF", "F-value", "p-value") attr(aod, "rt") <- rt attr(aod, "label") <- lab if (!Lmiss) { if (nrow(L) > 1) attr(aod, "L") <- L[, noZeroColL, drop = FALSE] else attr(aod, "L") <- L[, noZeroColL] } } } ## ## Otherwise construct the likelihood ratio and information table ## objects in ... may inherit from gls, gnls, lm, lmList, lme, ## nlme, nlsList, and nls ## else { ancall <- sys.call() ancall$verbose <- ancall$test <- NULL object <- list(object, ...) termsClass <- unlist(lapply(object, data.class)) if(!all(match(termsClass, c("gls", "gnls", "lm", "lmList", "lme","nlme","nlsList","nls"), 0))) { stop("objects must inherit from classes \"gls\", \"gnls\",\"lm\",\"lmList\", \"lme\",\"nlme\",\"nlsList\", or \"nls\"") } resp <- unlist(lapply(object, function(el) deparse(getResponseFormula(el)[[2L]]))) ## checking if responses are the same subs <- as.logical(match(resp, resp[1L], FALSE)) if (!all(subs)) warning("some fitted objects deleted because response differs from the first model") if (sum(subs) == 1) stop("first model has a different response from the rest") object <- object[subs] rt <- length(object) termsModel <- lapply(object, function(el) formula(el)[-2]) estMeth <- unlist(lapply(object, function(el) { val <- el[["method"]] if (is.null(val)) val <- NA val })) ## checking consistency of estimation methods if(length(uEst <- unique(estMeth[!is.na(estMeth)])) > 1) { stop("all fitted objects must have the same estimation method") } estMeth[is.na(estMeth)] <- uEst ## checking if all models have same fixed effects when estMeth = "REML" REML <- uEst == "REML" if(REML) { aux <- unlist(lapply(termsModel, function(el) { aux <- terms(el) val <- paste(sort(attr(aux, "term.labels")), collapse = "&") if (attr(aux, "intercept") == 1) { val <- paste(val, "(Intercept)", sep = "&") } val })) if(length(unique(aux)) > 1) { warning("fitted objects with different fixed effects.", " ", "REML comparisons are not meaningful.") } } termsCall <- lapply(object, function(el) { if (is.null(val <- el$call)) { if (is.null(val <- attr(el, "call"))) { stop("objects must have a \"call\" component or attribute") } } val }) termsCall <- unlist(lapply(termsCall, function(el) paste(deparse(el), collapse =""))) aux <- lapply(object, logLik, REML) if (length(unique(unlist(lapply(aux, function(el) attr(el, "nall")))))>1){ stop("all fitted objects must use the same number of observations") } dfModel <- unlist(lapply(aux, function(el) attr(el, "df"))) logLik <- unlist(lapply(aux, function(el) c(el))) AIC <- unlist(lapply(aux, AIC)) BIC <- unlist(lapply(aux, BIC)) aod <- data.frame(call = termsCall, Model = (1:rt), df = dfModel, AIC = AIC, BIC = BIC, logLik = logLik, check.names = FALSE) if (test) { ddf <- diff(dfModel) if (sum(abs(ddf)) > 0) { effects <- rep("", rt) for(i in 2:rt) { if (ddf[i-1] != 0) { effects[i] <- paste(i - 1, i, sep = " vs ") } } pval <- rep(NA, rt - 1) ldf <- as.logical(ddf) lratio <- 2 * abs(diff(logLik)) lratio[!ldf] <- NA pval[ldf] <- 1 - pchisq(lratio[ldf],abs(ddf[ldf])) aod <- data.frame(aod, Test = effects, "L.Ratio" = c(NA, lratio), "p-value" = c(NA, pval), check.names = FALSE) } } row.names(aod) <- unlist(lapply(as.list(ancall[-1L]), deparse)) attr(aod, "rt") <- rt attr(aod, "verbose") <- verbose } class(aod) <- c("anova.lme", "data.frame") aod } augPred.lme <- function(object, primary = NULL, minimum = min(primary), maximum = max(primary), length.out = 51, level = Q, ...) { data <- eval(object$call$data) if (!inherits(data, "data.frame")) { stop(gettextf("data in %s call must evaluate to a data frame", sQuote(substitute(object))), domain = NA) } if(is.null(primary)) { if (!inherits(data, "groupedData")) { stop(gettextf("%s without \"primary\" can only be used with fits of \"groupedData\" objects", sys.call()[[1L]]), domain = NA) } primary <- getCovariate(data) prName <- deparse(getCovariateFormula(data)[[2L]]) } else{ primary <- asOneSidedFormula(primary)[[2L]] prName <- deparse(primary) primary <- eval(primary, data) } newprimary <- seq(from = minimum, to = maximum, length.out = length.out) Q <- object$dims$Q # number of levels if (is.null(level)) level <- Q nL <- length(level) # number of requested levels maxLev <- max(c(level, 1)) groups <- getGroups(object, level = maxLev) if (!is.ordered(groups)) { groups <- ordered(groups, levels = unique(as.character(groups))) } grName <- ".groups" ugroups <- unique(groups) value <- data.frame(rep(rep(newprimary, length(ugroups)), nL), rep(rep(ugroups, rep(length(newprimary), length(ugroups))), nL)) names(value) <- c(prName, grName) ## recovering other variables in data that may be needed for predictions ## varying variables will be replaced by their means summData <- gsummary(data, groups = groups) if (any(toAdd <- is.na(match(names(summData), names(value))))) { summData <- summData[, toAdd, drop = FALSE] } value[, names(summData)] <- summData[value[, 2], ] pred <- predict(object, value[1:(nrow(value)/nL), , drop = FALSE], level = level) if (nL > 1) { # multiple levels pred <- pred[, ncol(pred) - (nL - 1):0] # eliminating groups predNames <- rep(names(pred), rep(nrow(pred), nL)) pred <- c(unlist(pred)) } else { predNames <- rep("predicted", nrow(value)) } newvals <- cbind(value[, 1:2], pred) names(newvals)[3] <- respName <- deparse(getResponseFormula(object)[[2L]]) orig <- data.frame(primary, groups, getResponse(object)) names(orig) <- names(newvals) value <- rbind(orig, newvals) attributes(value[, 2]) <- attributes(groups) value[, ".type"] <- ordered(c(rep("original", nrow(data)), predNames), levels = c(unique(predNames), "original")) labs <- list(x = prName, y = respName) unts <- list(x = "", y = "") if(inherits(data, "groupedData")) { labs[names(attr(data, "labels"))] <- attr(data, "labels") unts[names(attr(data, "units"))] <- attr(data, "units") attr(value, "units") <- attr(data, "units") } attr(value, "labels") <- labs attr(value, "units") <- unts attr(value, "formula") <- eval(parse(text = paste(respName, "~", prName, "|", grName))) class(value) <- c("augPred", class(value)) value } coef.lme <- function(object, augFrame = FALSE, level = Q, data, which = 1:ncol(data), FUN = mean, omitGroupingFactor = TRUE, subset = NULL, ...) { Q <- object$dims$Q if (length(level) > 1) { stop("only single level allowed") } fixed <- fixef(object) p <- length(fixed) value <- ranef(object, level = 1:level) grps <- object[["groups"]] if (Q > 1) { grpNames <- t(array(rep(rev(names(grps)), Q), c(Q, Q))) grpNames[lower.tri(grpNames)] <- "" grpNames <- rev(apply(grpNames, 1, function(x) paste(x[x != ""], collapse = " %in% ")))[level] } else { grpNames <- names(grps) } grps <- grps[, 1:level, drop = FALSE] grps <- gsummary(grps, groups = grps[, level]) if (level == 1) value <- list(value) effNams <- unlist(lapply(value, names)) grps <- grps[row.names(value[[level]]), , drop = FALSE] M <- nrow(grps) effNams <- unique(c(names(fixed), effNams)) effs <- array(0, c(M, length(effNams)), list(row.names(grps), effNams)) effs[, names(fixed)] <- array(rep(fixed, rep(M, p)), c(M, p)) for (i in 1:level) { nami <- names(value[[i]]) effs[, nami] <- as.matrix(effs[, nami] + value[[i]][as.character(grps[, i]), ]) } if (augFrame) { # can only do that for last level if (missing(data)) { data <- getData(object) } data <- as.data.frame(data) data <- data[, which, drop = FALSE] value <- ranef(object, TRUE, level, data, FUN = FUN, omitGroupingFactor = omitGroupingFactor, subset = subset) whichKeep <- is.na(match(names(value), effNams)) if (any(whichKeep)) { effs <- cbind(effs, value[, whichKeep, drop = FALSE]) } } effs <- as.data.frame(effs) attr(effs, "level") <- level attr(effs, "label") <- "Coefficients" attr(effs, "effectNames") <- effNams attr(effs, "standardized") <- FALSE attr(effs, "grpNames") <- grpNames class(effs) <- unique(c("coef.lme", "ranef.lme", class(effs))) effs } fitted.lme <- function(object, level = Q, asList = FALSE, ...) { Q <- object$dims$Q val <- object[["fitted"]] if (is.character(level)) { # levels must be given consistently nlevel <- match(level, names(val)) if (any(aux <- is.na(nlevel))) { stop(sprintf(ngettext(sum(aux), "nonexistent level %s", "nonexistent levels %s"), level[aux]), domain = NA) } level <- nlevel } else { # assuming integers level <- 1 + level } val2 <- napredict(object$na.action, val[, level]) if (length(level) == 1) { grp.nm <- row.names(object[["groups"]]) grps <- as.character(object[["groups"]][, max(c(1, level - 1))]) if (asList) { val <- as.list(split(val, ordered(grps, levels = unique(grps)))) } else { grp.nm <- row.names(object[["groups"]]) val <- val2 names(val) <- grps[match(names(val), grp.nm)] } lab <- "Fitted values" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab val } else val2 } formula.lme <- function(x, ...) eval(x$call$fixed) fixef.lme <- function(object, ...) object$coefficients$fixed getGroups.lme <- function(object, form, level = Q, data, sep) { Q <- object$dims$Q val <- object[["groups"]][, level] if (length(level) == 1) { # single group attr(val, "label") <- names(object[["groups"]])[level] } val } getGroupsFormula.lme <- function(object, asList = FALSE, sep) { getGroupsFormula(object$modelStruct$reStruct, asList) } getResponse.lme <- function(object, form) { val <- resid(object) + fitted(object) if (is.null(lab <- attr(object, "labels")$y)) { lab <- deparse(getResponseFormula(object)[[2L]]) } if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab val } intervals.lme <- function(object, level = 0.95, which = c("all", "var-cov", "fixed"), ...) { which <- match.arg(which) val <- list() if (which != "var-cov") { # fixed effects included est <- fixef(object) len <- -qt((1-level)/2, object$fixDF$X) * sqrt(diag(object$varFix)) vfix <- array(c(est - len, est, est + len), c(length(est), 3), list(names(est), c("lower", "est.", "upper"))) attr(vfix, "label") <- "Fixed effects:" val <- list(fixed = vfix) } if (which != "fixed") { # variance-covariance included if (is.character(aV <- object$apVar)) { stop(gettextf("cannot get confidence intervals on var-cov components: %s", aV), domain = NA) } est <- attr(aV, "Pars") nP <- length(est) len <- -qnorm((1-level)/2) * sqrt(diag(aV)) origInt <- # intervals in unconstrained parameters array(c(est - len, est, est + len), c(nP, 3), list(names(est), c("lower", "est.", "upper"))) lmeSt <- object$modelStruct if (!all(whichKeep <- apply(attr(lmeSt, "pmap"), 2, any))) { ## need to deleted components with fixed coefficients aux <- lmeSt[whichKeep] class(aux) <- class(lmeSt) attr(aux, "settings") <- attr(lmeSt, "settings") attr(aux, "pmap") <- attr(lmeSt, "pmap")[, whichKeep, drop = FALSE] lmeSt <- aux } cSt <- lmeSt[["corStruct"]] if (!is.null(cSt) && inherits(cSt, "corSymm") && attr(aV, "natural")) { ## converting to corNatural class(cSt) <- c("corNatural", "corStruct") lmeSt[["corStruct"]] <- cSt } pmap <- attr(lmeSt, "pmap") namL <- names(lmeSt) natInt <- vector("list", length(namL) + 1L) # list of intervals in natural pars names(natInt) <- c(namL, "sigma") natInt <- as.list(natInt) ## intervals for sigma are stored separately and dropped from origInt vsig <- exp(origInt[nP,]) attr(vsig, "label") <- "Within-group standard error:" natInt[["sigma"]] <- vsig origInt <- origInt[-nP,, drop = FALSE] if (attr(aV, "natural")) { # convert any pdSymm's to pdNatural's for(i in seq_along(lmeSt$reStruct)) { if (inherits(lmeSt$reStruct[[i]], "pdSymm")) { lmeSt$reStruct[[i]] <- pdNatural(lmeSt$reStruct[[i]]) } else { if (inherits(lmeSt$reStruct[[i]], "pdBlocked")) { for(j in seq_along(lmeSt$reStruct[[i]])) { if (inherits(lmeSt$reStruct[[i]][[j]], "pdSymm")) { lmeSt$reStruct[[i]][[j]] <- pdNatural(lmeSt$reStruct[[i]][[j]]) } } } } } } rownames(origInt) <- # re-express names if necessary ## namP <- names(coef(lmeSt, unconstrained = FALSE)) for(i in 1:3) { # re-express intervals in constrained pars coef(lmeSt) <- origInt[,i] origInt[,i] <- coef(lmeSt, unconstrained = FALSE) } for(i in namL) { natInt[[i]] <- origInt[ pmap[ , i ], , drop = FALSE ] switch(i, reStruct = { plen <- attr( lmeSt$reStruct, "plen" ) natInt[[i]] <- natInt[[i]] <- rev(as.matrix( split( as.data.frame( natInt[[i]] ), rep( seq_along(plen), plen )))) names(natInt[[i]]) <- rev(names(plen)) for (j in names(plen)) { dimnames(natInt[[i]][[j]])[[1L]] <- names( coef( lmeSt[[i]][[j]], unconstrained = FALSE ) ) } }, corStruct =, varStruct = { dimnames(natInt[[i]])[[1L]] <- names(coef(lmeSt[[i]], unconstrained = FALSE)) } ) attr(natInt[[i]], "label") <- switch(i, reStruct = "Random Effects:", corStruct = "Correlation structure:", varStruct = "Variance function:", paste(i,":",sep="")) } val <- c(val, natInt) } attr(val, "level") <- level class(val) <- "intervals.lme" val } logLik.lme <- function(object, REML, ...) { p <- object$dims$ncol[object$dims$Q + 1L] N <- object$dims$N ## Np <- N - p estM <- object$method if (missing(REML)) REML <- estM == "REML" val <- object[["logLik"]] if (REML && (estM == "ML")) { # have to correct logLik val <- val + (p * (log(2 * pi) + 1L) + (N - p) * log(1 - p/N) + sum(log(abs(svd(object$varFix)$d)))) / 2 } if (!REML && (estM == "REML")) { # have to correct logLik val <- val - (p * (log(2*pi) + 1L) + N * log(1 - p/N) + sum(log(abs(svd(object$varFix)$d)))) / 2 } attr(val, "nall") <- N attr(val, "nobs") <- N - REML * p attr(val, "df") <- p + length(coef(object[["modelStruct"]])) + 1L class(val) <- "logLik" val } nobs.lme <- function(object, ...) object$dims$N pairs.lme <- function(x, form = ~coef(.), label, id = NULL, idLabels = NULL, grid = FALSE, ...) { object <- x ## scatter plot matrix plots, generally based on coef or ranef if (!inherits(form, "formula")) { stop("'form' must be a formula") } if (length(form) != 2) { stop("'form' must be a one-sided formula") } ## constructing data allV <- all.vars(asOneFormula(form, id, idLabels)) allV <- allV[is.na(match(allV,c("T","F","TRUE","FALSE")))] if (length(allV) > 0) { data <- getData(object) if (is.null(data)) { # try to construct data alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } else { if (any(naV <- is.na(match(allV, names(data))))) { stop(sprintf(ngettext(sum(naV), "%s not found in data", "%s not found in data"), allV[naV]), domain = NA) } } } else data <- NULL ## argument list dots <- list(...) if (length(dots) > 0) args <- dots else args <- list() ## covariate - must be present as a data.frame covF <- getCovariateFormula(form) .x <- eval(covF[[2L]], list(. = object)) # only function of "." if (!inherits(.x, "data.frame")) { stop("covariate must be a data frame") } level <- attr(.x, "level") if (!is.null(effNams <- attr(.x, "effectNames"))) { .x <- .x[, effNams, drop = FALSE] } ## eliminating constant effects isFixed <- unlist(lapply(.x, function(el) length(unique(el)) == 1)) .x <- .x[, !isFixed, drop = FALSE] nc <- ncol(.x) if (nc == 1) { stop("cannot do pairs of just one variable") } if (!missing(label)) { names(.x) <- label } if (nc == 2) { ## will use xyplot argForm <- .y ~ .x argData <- .x names(argData) <- c(".x", ".y") if (is.null(args$xlab)) { args$xlab <- names(.x)[1L] } if (is.null(args$ylab)) { args$ylab <- names(.x)[2L] } } else { # splom argForm <- ~ .x argData <- list(.x = .x) } auxData <- list() ## groups - need not be present grpsF <- getGroupsFormula(form) if (!is.null(grpsF)) { gr <- splitFormula(grpsF, sep = "*") for(i in 1:length(gr)) { auxGr <- all.vars(gr[[i]]) for(j in auxGr) { auxData[[j]] <- eval(as.name(j), data) } } if (length(argForm) == 2) argForm <- eval(parse(text = paste("~ .x |", deparse(grpsF[[2L]])))) else argForm <- eval(parse(text = paste(".y ~ .x |", deparse(grpsF[[2L]])))) } ## id and idLabels - need not be present if (!is.null(id)) { # identify points in plot N <- object$dims$N id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } if (is.null(level)) { stop("covariate must have a level attribute when groups are present") } aux <- t(as.matrix(ranef(object, level = level))) aux <- as.logical(apply( (solve(t(pdMatrix(object$modelStruct$reStruct, factor = TRUE)[[level]]), aux)/object$sigma)^2, 2, sum) > qchisq(1 - id, dim(aux)[1L])) aux }, call = eval(asOneSidedFormula(id)[[2L]], data), stop("'id' can only be a formula or numeric") ) if (length(id) == N) { ## id as a formula evaluated in data if (is.null(level)) { stop("covariate must have a level attribute when 'id' is a formula") } auxData[[".id"]] <- id } if (is.null(idLabels)) { idLabels <- row.names(.x) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2L]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != N) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } if (length(idLabels) == N) { ## idLabels as a formula evaluated in data if (is.null(level)) { stop("covariate must have a level attribute when 'idLabels' is a formula") } auxData[[".Lid"]] <- idLabels } } if (length(auxData)) { # need collapsing auxData <- gsummary(as.data.frame(auxData), groups = getGroups(object, level = level)) auxData <- auxData[row.names(.x), , drop = FALSE] if (!is.null(auxData[[".id"]])) { id <- auxData[[".id"]] } if (!is.null(auxData[[".Lid"]])) { idLabels <- auxData[[".Lid"]] } wchDat <- is.na(match(names(auxData), c(".id", ".idLabels"))) if (any(wchDat)) { argData <- c(argData, as.list(auxData[, wchDat, drop = FALSE])) } } if (!is.null(id)) assign("id", as.logical(as.character(id)))# , where = 1) assign("idLabels", as.character(idLabels))#, where = 1) #assign("grid", grid, where = 1) ## adding to args list args <- c(list(argForm, data = argData), args) if (is.null(args$strip)) { args$strip <- function(...) strip.default(..., style = 1) } if (is.null(args$cex)) args$cex <- par("cex") if (is.null(args$adj)) args$adj <- par("adj") ## defining the type of plot if (length(argForm) == 3) { # xyplot plotFun <- "xyplot" if (is.null(args$panel)) { args <- c(args, panel = list(function(x, y, subscripts, ...) { x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y, ...) if (any(ids <- id[subscripts])){ ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } })) } } else { # splom plotFun <- "splom" if (is.null(args$panel)) { args <- c(args, panel = list(function(x, y, subscripts, ...) { x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y, ...) if (any(ids <- id[subscripts])){ ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } })) } } do.call(plotFun, as.list(args)) } plot.ranef.lme <- function(x, form = NULL, omitFixed = TRUE, level = Q, grid = TRUE, control, ...) { object <- x plotControl <- function(drawLine = TRUE, span.loess = 2/3, degree.loess = 1, cex.axis = 0.8, srt.axis = 0, mgp.axis = c(2, 0.5, 0)) { list(drawLine = drawLine, span.loess = span.loess, degree.loess = degree.loess, cex.axis = cex.axis, srt.axis = srt.axis, mgp.axis = mgp.axis) } pControl <- plotControl() if (!missing(control)) { pControl[names(control)] <- control } if (!inherits(object, "data.frame")) { ## must be a list of data frames Q <- length(object) if (length(level) > 1) { stop("only single level allowed") } oAttr <- attributes(object)[c("label", "standardized", "namsEff")] object <- object[[level]] oAttr$namsEff <- oAttr$namsEff[level] attributes(object)[c("label", "standardized", "namsEff")] <- oAttr } if (omitFixed) { # eliminating constant effects isFixed <- unlist(lapply(object, function(el) length(unique(el)) == 1)) if (any(isFixed)) { oattr <- attributes(object) oattr <- oattr[names(oattr) != "names"] object <- object[, !isFixed, drop = FALSE] oattr$effectNames <- oattr$effectNames[!is.na(match(oattr$effectNames, names(object)))] attributes(object)[names(oattr)] <- oattr } } eNames <- attr(object, "effectNames") if (is.null(form) || (inherits(form, "formula") && length(form) == 2)) { eLen <- length(eNames) argData <- data.frame(.pars = as.vector(unlist(object[, eNames])), .enames = ordered(rep(eNames, rep(nrow(object), eLen)), level = eNames), check.names = FALSE) for(i in names(object)[is.na(match(names(object), eNames))]) { argData[[i]] <- rep(object[[i]], eLen) } argForm <- .groups ~ .pars | .enames argData[[".groups"]] <- rep(row.names(object), eLen) if (inherits(form, "formula")) { onames <- all.vars(form) if (any(whichNA <- is.na(match(onames, names(argData))))) { stop(sprintf(ngettext(sum(whichNA), "%s not available for plotting", "%s not available for plotting"), onames[whichNA], collapse = ", "), domain = NA) } argData[[".groups"]] <- as.character(argData[[as.character(onames[1L])]]) if (length(onames) > 1) { for(i in onames[-1L]) { argData[[".groups"]] <- paste(as.character(argData[[".groups"]]), as.character(argData[[i]])) } } } argData[[".groups"]] <- ordered(argData[[".groups"]], levels = unique(argData[[".groups"]])) args <- list(argForm, data = argData, ...) if (is.null(args$xlab)) { args$xlab <- attr(object, "label") } if (is.null(args$ylab)) { if (is.null(form)) { args$ylab <- attr(object, "grpNames") } else { args$ylab <- deparse(form[[2L]]) } } if (is.null(args$scales)) { if (!is.null(attr(object, "standardized")) && !attr(object, "standardized")) { args$scales <- list(x = list(relation = "free")) } } if (is.null(args$strip)) { args$strip <- function(...) strip.default(..., style = 1) } do.call("dotplot", as.list(args)) } else { if (!inherits(form, "formula")) { stop("'form' must be a formula when not NULL") } reName <- form[[2L]] if (length(reName) != 1 && substring(deparse(reName), nchar(deparse(reName), "c") - 10) != "(Intercept)") { stop("only single effects allowed in left side of 'form'") } reName <- deparse(reName) if (is.na(match(reName, eNames))) { stop(gettextf("%s is not a valid effect name", sQuote(reName)), domain = NA) } vNames <- all.vars(form[[3]]) # variable names if (any(!is.na(match(vNames, eNames)))) { stop("no effects allowed in right side of formula") } if (any(whichNA <- is.na(match(vNames, names(object))))) { stop(sprintf(ngettext(sum(whichNA), "%s not available for plotting", "%s not available for plotting"), onames[whichNA], collapse = ", "), domain = NA) } nV <- length(vNames) # number of variables nG <- nrow(object) # number of groups reVal <- numeric(0) vNam <- character(0) vVal <- numeric(0) vType <- character(nV) names(vType) <- vNames vLevs <- vector("list", nV) names(vLevs) <- vNames aux <- object[, reName] for(i in 1:nV) { obj <- object[, vNames[i]] if (inherits(obj, "factor") || is.character(obj)) { obj <- as.factor(obj) vLevs[[i]] <- levels(obj) vType[i] <- "factor" reVal <- c(reVal, c(NA, NA, aux)) vVal <- c(vVal, c(0.5, length(levels(obj)) + 0.5, as.integer(obj))) vNam <- c(vNam, rep(vNames[i], nG + 2)) } else { # numeric vType[i] <- "numeric" reVal <- c(reVal, aux) vVal <- c(vVal, obj) vNam <- c(vNam, rep(vNames[i], nG)) } } argData <- data.frame(y = reVal, x = vVal, g = ordered(vNam, levels = vNames)) assign(".vNam", vNam)#, where = 1) assign(".vType", vType)#, where = 1) assign(".vLevs", vLevs)#, where = 1) assign(".grid", grid)#, where = 1) assign(".drawLine", pControl$drawLine)#, where = 1) assign(".span", pControl$span.loess)#, where = 1) assign(".degree", pControl$degree.loess)#, where = 1) #assign("panel.bwplot2", panel.bwplot2, where = 1) assign(".cex", pControl$cex.axis)#, where = 1) assign(".srt", pControl$srt.axis)#, where = 1) assign(".mgp", pControl$mgp.axis)#, where = 1) dots <- list(...) ylab <- dots$ylab if (is.null(ylab)) { ylab <- reName } strip <- dots$strip if (is.null(strip)) { strip <- strip.default } ## this is a hack to make this work, it's probably possible to ## implement the whole thing much more succintly -- ds ## The idea here is that the limits component of scales$x is going ## to be a list -- and character vectors have special meaning as ## limits, controlling both limits and the tick mark ## positions/labels condvar <- eval(expression(g), argData) xscales.lim <- as.list(levels(condvar)) subsc <- seq_along(condvar) for (i in seq_along(xscales.lim)) { subscripts <- subsc[condvar == xscales.lim[[i]]] vN <- .vNam[subscripts][1L] if (.vType[vN] == "numeric") { xscales.lim[[i]] <- range(argData$x[subscripts]) } else xscales.lim[[i]] <- .vLevs[vN][[1L]] } xyplot(y ~ x | g, data = argData, subscripts = TRUE, scales = list(x = list(relation = "free", limits = xscales.lim)), panel = function(x, y, subscripts, ...) { vN <- .vNam[subscripts][1L] if (.grid) panel.grid() if (.vType[vN] == "numeric") { panel.xyplot(x, y, ...) if (.drawLine) { panel.loess(x, y, span = .span, degree = .degree) } } else { panel.bwplot(x, y, horizontal = FALSE) if (.drawLine) { plot.line <- trellis.par.get("plot.line") panel.linejoin(x, y, fun = median, horizontal = FALSE, col.line = plot.line$col, lwd = plot.line$lwd, lty = plot.line$lty) } } }, xlab = "", ylab = ylab, strip = strip, ...) } } predict.lme <- function(object, newdata, level = Q, asList = FALSE, na.action = na.fail, ...) { ## ## method for predict() designed for objects inheriting from class lme ## Q <- object$dims$Q if (missing(newdata)) { # will return fitted values val <- fitted(object, level, asList) if (length(level) == 1) return(val) return(data.frame(object[["groups"]][,level[level != 0], drop = FALSE], predict = val)) } maxQ <- max(level) # maximum level for predictions mCall <- object$call fixed <- eval(eval(mCall$fixed)[-2]) Terms <- object$terms newdata <- as.data.frame(newdata) if (maxQ > 0) { # predictions with random effects reSt <- object$modelStruct$reStruct[Q - (maxQ - 1):0] lmeSt <- lmeStruct(reStruct = reSt) groups <- getGroupsFormula(reSt) if (any(is.na(match(all.vars(groups), names(newdata))))) { ## groups cannot be evaluated in newdata stop("cannot evaluate groups for desired levels on 'newdata'") } } else { reSt <- NULL } mfArgs <- list(formula = asOneFormula(formula(reSt), fixed), data = newdata, na.action = na.action, drop.unused.levels = TRUE) dataMix <- do.call("model.frame", mfArgs) origOrder <- row.names(dataMix) # preserve the original order whichRows <- match(origOrder, row.names(newdata)) if (maxQ > 0) { ## sort the model.frame by groups and get the matrices and parameters ## used in the estimation procedures grps <- getGroups(newdata, eval(parse(text = paste("~1", deparse(groups[[2L]]), sep = "|")))) ## ordering data by groups if (inherits(grps, "factor")) { # single level grps <- grps[whichRows] oGrps <- data.frame(grps) ## checking if there are missing groups if (any(naGrps <- is.na(grps))) { grps[naGrps] <- levels(grps)[1L] # input with existing level } ord <- order(grps) #"order" treats a single named argument peculiarly grps <- data.frame(grps) row.names(grps) <- origOrder names(grps) <- names(oGrps) <- as.character(deparse((groups[[2L]]))) } else { grps <- oGrps <- do.call("data.frame", lapply(grps[whichRows, ], function(x) x[drop = TRUE])) ## checking for missing groups if (any(naGrps <- is.na(grps))) { ## need to input missing groups for(i in names(grps)) { grps[naGrps[, i], i] <- levels(grps[,i])[1L] } naGrps <- t(apply(naGrps, 1, cumsum)) # propagating NAs } ord <- do.call("order", grps) ## making group levels unique grps[, 1] <- grps[, 1][drop = TRUE] for(i in 2:ncol(grps)) { grps[, i] <- as.factor(paste(as.character(grps[, i-1]), as.character(grps[,i]), sep = "/")) NULL } } naGrps <- cbind(FALSE, naGrps)[ord, , drop = FALSE] grps <- grps[ord, , drop = FALSE] dataMix <- dataMix[ord, ,drop = FALSE] } ## making sure factor levels are the same as in contrasts contr <- object$contrasts for(i in names(dataMix)) { if (inherits(dataMix[,i], "factor") && !is.null(contr[[i]])) { levs <- levels(dataMix[,i]) levsC <- dimnames(contr[[i]])[[1L]] if (any(wch <- is.na(match(levs, levsC)))) { stop(sprintf(ngettext(sum(wch), "level %s not allowed for %s", "levels %s not allowed for %s"), paste(levs[wch], collapse = ",")), domain = NA) } # if (length(levs) < length(levsC)) { # if (inherits(dataMix[,i], "ordered")) { # dataMix[,i] <- ordered(as.character(dataMix[,i]), levels = levsC) # } else { # dataMix[,i] <- factor(as.character(dataMix[,i]), levels = levsC) # } # } attr(dataMix[,i], "contrasts") <- contr[[i]][levs, , drop = FALSE] } } if (maxQ > 0) { revOrder <- match(origOrder, row.names(dataMix)) # putting in orig. order Z <- model.matrix(reSt, dataMix) ncols <- attr(Z, "ncols") Names(lmeSt$reStruct) <- attr(Z, "nams") } N <- nrow(dataMix) X <- if (length(all.vars(fixed)) > 0) { model.matrix(fixed, model.frame(delete.response(Terms), dataMix)) } else if(attr(terms(fixed), "intercept")) { array(1, c(N, 1), list(row.names(dataMix), "(Intercept)")) } else { array(, c(N, 0)) } if (maxQ == 0) { ## only population predictions val <- if(ncol(X)) c(X %*% fixef(object)) else rep(0, nrow(X)) attr(val, "label") <- "Predicted values" return(val) } ncols <- c(ncols, dim(X)[2L], 1) ## creating the condensed linear model attr(lmeSt, "conLin") <- list(Xy = array(c(Z, X, double(N)), c(N, sum(ncols)), list(row.names(dataMix), c(colnames(Z), colnames(X), "resp"))), dims = MEdims(grps, ncols)) ## Getting the appropriate BLUPs of the random effects re <- object$coefficients$random[1:maxQ] for(i in names(re)) { ugrps <- unique(as.character(grps[, i])) val <- array(NA, c(length(ugrps), ncol(re[[i]])), list(ugrps, dimnames(re[[i]])[[2L]])) mGrps <- match(ugrps, dimnames(re[[i]])[[1L]]) mGrps <- mGrps[!is.na(mGrps)] re[[i]] <- re[[i]][mGrps, , drop = FALSE] val[dimnames(re[[i]])[[1L]], ] <- re[[i]] re[[i]] <- val } attr(lmeSt, "lmeFit") <- list(beta = fixef(object), b = re) val <- fitted(lmeSt, level = 0:maxQ) val[as.logical(naGrps)] <- NA # setting missing groups to NA ## putting back in original order and extracting levels val <- val[revOrder, level + 1L] # predictions if (maxQ > 1) { # making groups unique for(i in 2:maxQ) { oGrps[, i] <- as.factor(paste(as.character(oGrps[,i-1]), as.character(oGrps[,i]), sep = "/")) } } if (length(level) == 1) { grps <- as.character(oGrps[, level]) if (asList) { val <- split(val, ordered(grps, levels = unique(grps))) } else { names(val) <- grps } attr(val, "label") <- "Predicted values" if (!is.null(aux <- attr(object, "units")$y)) attr(val, "label") <- paste(attr(val, "label"), aux) val } else { data.frame(oGrps, predict = data.frame(val)) } } print.anova.lme <- function(x, verbose = attr(x, "verbose"), ...) { ox <- x if ((rt <- attr(x,"rt")) == 1) { if (!is.null(lab <- attr(x, "label"))) { cat(lab) if (!is.null(L <- attr(x, "L"))) { print(zapsmall(L)) } } pval <- format(round(x[, "p-value"],4)) pval[as.double(pval) == 0] <- "<.0001" x[, "F-value"] <- format(zapsmall(x[, "F-value"])) x[, "p-value"] <- pval print(as.data.frame(x)) } else { if (verbose) { cat("Call:\n") objNams <- row.names(x) for(i in 1:rt) { cat(" ",objNams[i],":\n", sep ="") cat(" ",as.character(x[i,"call"]),"\n") } cat("\n") } x <- as.data.frame(x[,-1]) for(i in names(x)) { xx <- x[[i]] if (i == "p-value") { xx <- round(xx, 4) xna <- is.na(xx) xx[!xna] <- format(xx[!xna]) xx[as.double(xx) == 0] <- "<.0001" xx[xna] <- "" } else { if (match(i, c("AIC", "BIC", "logLik", "L.Ratio"), 0)) { xna <- is.na(xx) xx <- zapsmall(xx) xx[xna] <- 0 xx <- format(xx) xx[xna] <- "" } } x[[i]] <- xx } print(as.data.frame(x)) } invisible(ox) } print.intervals.lme <- function(x, ...) { cat(paste("Approximate ", attr(x, "level") * 100, "% confidence intervals\n", sep = "")) for(i in names(x)) { aux <- x[[i]] cat("\n ",attr(aux, "label"), "\n", sep = "") if (i == "reStruct") { for(j in names(aux)) { cat(" Level:", j, "\n") print(as.matrix(aux[[j]]), ...) } } else { if (i == "sigma") print(c(aux), ...) else print(as.matrix(aux), ...) } } invisible(x) } print.lme <- function(x, ...) { dd <- x$dims if (inherits(x, "nlme")) { # nlme object cat( "Nonlinear mixed-effects model fit by " ) cat( ifelse( x$method == "REML", "REML\n", "maximum likelihood\n") ) cat(" Model:", deparse(x$call$model),"\n") } else { # lme objects cat( "Linear mixed-effects model fit by " ) cat( ifelse( x$method == "REML", "REML\n", "maximum likelihood\n") ) } cat(" Data:", deparse( x$call$data ), "\n") if (!is.null(x$call$subset)) { cat(" Subset:", deparse(asOneSidedFormula(x$call$subset)[[2L]]),"\n") } cat(" Log-", ifelse(x$method == "REML", "restricted-", ""), "likelihood: ", format(x$logLik), "\n", sep = "") fixF <- x$call$fixed if (inherits(fixF, "formula") || is.call(fixF) || is.name(fixF)) { cat(" Fixed:", deparse(x$call$fixed), "\n") } else { cat(" Fixed:", deparse(lapply(fixF, function(el) as.name(deparse(el)))), "\n") } print(fixef(x)) cat("\n") print(summary(x$modelStruct), sigma = x$sigma) cat("Number of Observations:", dd[["N"]]) cat("\nNumber of Groups: ") Ngrps <- dd$ngrps[1:dd$Q] if ((lNgrps <- length(Ngrps)) == 1) { # single nesting cat(Ngrps,"\n") } else { # multiple nesting sNgrps <- 1:lNgrps aux <- rep(names(Ngrps), sNgrps) aux <- split(aux, array(rep(sNgrps, lNgrps), c(lNgrps, lNgrps))[!lower.tri(diag(lNgrps))]) names(Ngrps) <- unlist(lapply(aux, paste, collapse = " %in% ")) cat("\n") print(rev(Ngrps)) } invisible(x) } print.ranef.lme <- function(x, ...) { if (!inherits(x[[1L]], "data.frame")) { print.data.frame(x, ...) } else { # list for(i in seq_along(x)) { cat("Level:", attr(x, "grpNames")[i],"\n") print.data.frame(x[[i]]) if (i < length(x)) cat("\n") } } invisible(x) } print.summary.lme <- function(x, verbose = FALSE, ...) { dd <- x$dims verbose <- verbose || attr(x, "verbose") if (inherits(x, "nlme")) { # nlme object cat( "Nonlinear mixed-effects model fit by " ) cat( ifelse( x$method == "REML", "REML\n", "maximum likelihood\n") ) cat(" Model:", deparse(x$call$model),"\n") } else { # lme objects cat( "Linear mixed-effects model fit by " ) cat( ifelse( x$method == "REML", "REML\n", "maximum likelihood\n") ) } method <- x$method cat(" Data:", deparse( x$call$data ), "\n") if (!is.null(x$call$subset)) { cat(" Subset:", deparse(asOneSidedFormula(x$call$subset)[[2L]]),"\n") } print( data.frame( AIC = x$AIC, BIC = x$BIC, logLik = c(x$logLik), row.names = " ") ) if (verbose) { cat("Convergence at iteration:",x$numIter,"\n") } cat("\n") print(summary(x$modelStruct), sigma = x$sigma, reEstimates = x$coef$random, verbose = verbose) cat("Fixed effects: ") fixF <- x$call$fixed if (inherits(fixF, "formula") || is.call(fixF)) { cat(deparse(x$call$fixed), "\n") } else { cat(deparse(lapply(fixF, function(el) as.name(deparse(el)))), "\n") } ## fixed effects t-table and correlations xtTab <- as.data.frame(x$tTable) wchPval <- match("p-value", names(xtTab)) for(i in names(xtTab)[-wchPval]) { xtTab[, i] <- format(zapsmall(xtTab[, i])) } xtTab[,wchPval] <- format(round(xtTab[,wchPval], 4)) if (any(wchLv <- (as.double(levels(xtTab[, wchPval])) == 0))) { levels(xtTab[, wchPval])[wchLv] <- "<.0001" } row.names(xtTab) <- dimnames(x$tTable)[[1L]] print(xtTab) if (nrow(x$tTable) > 1) { corr <- x$corFixed class(corr) <- "correlation" print(corr, title = " Correlation:", ...) } cat("\nStandardized Within-Group Residuals:\n") print(x$residuals) cat("\nNumber of Observations:",x$dims[["N"]]) cat("\nNumber of Groups: ") Ngrps <- dd$ngrps[1:dd$Q] if ((lNgrps <- length(Ngrps)) == 1) { # single nesting cat(Ngrps,"\n") } else { # multiple nesting sNgrps <- 1:lNgrps aux <- rep(names(Ngrps), sNgrps) aux <- split(aux, array(rep(sNgrps, lNgrps), c(lNgrps, lNgrps))[!lower.tri(diag(lNgrps))]) names(Ngrps) <- unlist(lapply(aux, paste, collapse = " %in% ")) cat("\n") print(rev(Ngrps)) } invisible(x) } qqnorm.lme <- function(y, form = ~ resid(., type = "p"), abline = NULL, id = NULL, idLabels = NULL, grid = FALSE, ...) ## normal probability plots for residuals and random effects { object <- y if (!inherits(form, "formula")) { stop("'form' must be a formula") } ## constructing data allV <- all.vars(asOneFormula(form, id, idLabels)) allV <- allV[is.na(match(allV,c("T","F","TRUE","FALSE")))] if (length(allV) > 0) { data <- getData(object) if (is.null(data)) { # try to construct data alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } else { if (any(naV <- is.na(match(allV, names(data))))) { stop(sprintf(ngettext(sum(naV), "%s not found in data", "%s not found in data"), allV[naV]), domain = NA) } } } else data <- NULL ## argument list dots <- list(...) if (length(dots) > 0) args <- dots else args <- list() ## appending object to data data <- as.list(c(as.list(data), . = list(object))) ## covariate - must always be present covF <- getCovariateFormula(form) .x <- eval(covF[[2L]], data) labs <- attr(.x, "label") if (inherits(.x, "ranef.lme")) { # random effects type <- "reff" } else { if (!is.null(labs) && ((labs == "Standardized residuals") || (labs == "Normalized residuals") || (substring(labs, 1, 9) == "Residuals"))) { type <- "res" # residuals } else { stop("only residuals and random effects allowed") } } if (is.null(args$xlab)) args$xlab <- labs if (is.null(args$ylab)) args$ylab <- "Quantiles of standard normal" if(type == "res") { # residuals fData <- qqnorm(.x, plot.it = FALSE) data[[".y"]] <- fData$x data[[".x"]] <- fData$y dform <- ".y ~ .x" if (!is.null(grp <- getGroupsFormula(form))) { dform <- paste(dform, deparse(grp[[2L]]), sep = "|") } if (!is.null(id)) { # identify points in plot id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'Id' must be between 0 and 1") } if (labs == "Normalized residuals") { as.logical(abs(resid(object, type="normalized")) > -qnorm(id / 2)) } else { as.logical(abs(resid(object, type="pearson")) > -qnorm(id / 2)) } }, call = eval(asOneSidedFormula(id)[[2L]], data), stop("'id' can only be a formula or numeric") ) if (is.null(idLabels)) { idLabels <- getGroups(object) if (length(idLabels) == 0) idLabels <- 1:object$dims$N idLabels <- as.character(idLabels) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2L]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != length(id)) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } } } else { # random.effects level <- attr(.x, "level") std <- attr(.x, "standardized") if (!is.null(effNams <- attr(.x, "effectNames"))) { .x <- .x[, effNams, drop = FALSE] } nc <- ncol(.x) nr <- nrow(.x) fData <- lapply(as.data.frame(.x), qqnorm, plot.it = FALSE) fData <- data.frame(.x = unlist(lapply(fData, function(x) x[["y"]])), .y = unlist(lapply(fData, function(x) x[["x"]])), .g = ordered(rep(names(fData),rep(nr, nc)), levels = names(fData)), check.names = FALSE) dform <- ".y ~ .x | .g" if (!is.null(grp <- getGroupsFormula(form))) { dform <- paste(dform, deparse(grp[[2L]]), sep = "*") auxData <- data[is.na(match(names(data), "."))] } else { auxData <- list() } ## id and idLabels - need not be present if (!is.null(id)) { # identify points in plot N <- object$dims$N id <- switch(mode(id), numeric = { if ((id <= 0) || (id >= 1)) { stop("'id' must be between 0 and 1") } aux <- ranef(object, level = level, standard = TRUE) as.logical(abs(c(unlist(aux))) > -qnorm(id / 2)) }, call = eval(asOneSidedFormula(id)[[2L]], data), stop("'id' can only be a formula or numeric") ) if (length(id) == N) { ## id as a formula evaluated in data auxData[[".id"]] <- id } if (is.null(idLabels)) { idLabels <- rep(row.names(.x), nc) } else { if (mode(idLabels) == "call") { idLabels <- as.character(eval(asOneSidedFormula(idLabels)[[2L]], data)) } else if (is.vector(idLabels)) { if (length(idLabels <- unlist(idLabels)) != N) { stop("'idLabels' of incorrect length") } idLabels <- as.character(idLabels) } else { stop("'idLabels' can only be a formula or a vector") } } if (length(idLabels) == N) { ## idLabels as a formula evaluated in data auxData[[".Lid"]] <- idLabels } } if (length(auxData)) { # need collapsing auxData <- gsummary(as.data.frame(auxData), groups = getGroups(object, level = level)) auxData <- auxData[row.names(.x), , drop = FALSE] if (!is.null(auxData[[".id"]])) { id <- rep(auxData[[".id"]], nc) } if (!is.null(auxData[[".Lid"]])) { idLabels <- rep(auxData[[".Lid"]], nc) } data <- cbind(fData, do.call("rbind", rep(list(auxData), nc))) } else { data <- fData } } assign("id", if (is.null(id)) NULL else as.logical(as.character(id)))#, # where = 1) assign("idLabels", as.character(idLabels))#, where = 1) #assign("grid", grid, where = 1) assign("abl", abline)#, where = 1) if (is.null(args$strip)) { args$strip <- function(...) strip.default(..., style = 1) } if (is.null(args$cex)) args$cex <- par("cex") if (is.null(args$adj)) args$adj <- par("adj") args <- c(list(eval(parse(text = dform)), data = substitute(data)), args) if (is.null(args$panel)) { args <- c(list(panel = function(x, y, subscripts, ...){ x <- as.numeric(x) y <- as.numeric(y) dots <- list(...) if (grid) panel.grid() panel.xyplot(x, y, ...) if (any(ids <- id[subscripts])){ ltext(x[ids], y[ids], idLabels[subscripts][ids], cex = dots$cex, adj = dots$adj) } if (!is.null(abl)) { if (length(abl) == 2) panel.abline(a = abl, ...) else panel.abline(h = abl, ...) } }), args) } if(type == "reff" && !std) { args[["scales"]] <- list(x = list(relation = "free")) } do.call("xyplot", as.list(args)) } ranef.lme <- ## Extracts the random effects from an lme object. ## If aug.frame is true, the returned data frame is augmented with a ## values from the original data object, if available. The variables ## in the original data are collapsed over the cluster variable by the ## function fun. function(object, augFrame = FALSE, level = 1:Q, data, which = 1:ncol(data), FUN = mean, standard = FALSE , omitGroupingFactor = TRUE, subset = NULL, ...) { Q <- object$dims$Q effects <- object$coefficients$random if (Q > 1) { grpNames <- t(array(rep(rev(names(effects)), Q), c(Q, Q))) grpNames[lower.tri(grpNames)] <- "" grpNames <- rev(apply(grpNames, 1, function(x) paste(x[x != ""], collapse = " %in% "))) } else { grpNames <- names(effects) } effects <- effects[level] grpNames <- grpNames[level] if (standard) { for (i in names(effects)) { effects[[i]] <- t(t(effects[[i]]) / (object$sigma * sqrt(diag(as.matrix(object$modelStruct$reStruct[[i]]))))) } } effects <- lapply(effects, as.data.frame) if (augFrame) { if (length(level) > 1) { stop("augmentation of random effects only available for single level") } effects <- effects[[1L]] effectNames <- names(effects) if (missing(data)) { data <- getData(object) } data <- as.data.frame(data) if (is.null(subset)) { # nlme case subset <- eval(object$call[["naPattern"]]) } else { subset <- asOneSidedFormula(as.list(match.call())[["subset"]]) } if (!is.null(subset)) { subset <- eval(subset[[2L]], data) data <- data[subset, ,drop=FALSE] } data <- data[, which, drop = FALSE] ## eliminating columns with same names as effects data <- data[, is.na(match(names(data), effectNames)), drop = FALSE] grps <- as.character(object[["groups"]][, level]) data <- gsummary(data, FUN = FUN, groups = grps) if (omitGroupingFactor) { data <- data[, is.na(match(names(data), names(object$modelStruct$reStruct))), drop = FALSE] } if (length(data) > 0) { effects <- cbind(effects, data[row.names(effects),, drop = FALSE]) } attr(effects, "effectNames") <- effectNames } else { effects <- lapply(effects, function(el) { attr(el, "effectNames") <- names(el) el }) if (length(level) == 1) effects <- effects[[1L]] } attr(effects, "label") <- if (standard) { "Standardized random effects" } else { "Random effects" } attr(effects, "level") <- max(level) attr(effects, "standardized") <- standard attr(effects, "grpNames") <- grpNames class(effects) <- c("ranef.lme", class(effects)) effects } residuals.lme <- function(object, level = Q, type = c("response", "pearson", "normalized"), asList = FALSE, ...) { type <- match.arg(type) Q <- object$dims$Q val <- object[["residuals"]] if (is.character(level)) { # levels must be given consistently nlevel <- match(level, names(val)) if (any(aux <- is.na(nlevel))) { stop(sprintf(ngettext(sum(aux), "nonexistent level %s", "nonexistent levels %s"), level[aux]), domain = NA) } level <- nlevel } else { # assuming integers level <- 1 + level } if (type != "response") { # standardize ## have to standardize properly for when corStruct neq NULL val <- val[, level]/attr(val, "std") } else { val <- val[, level] } if (type == "normalized") { if (!is.null(cSt <- object$modelStruct$corStruct)) { ## normalize according to inv-trans factor val <- recalc(cSt, list(Xy = as.matrix(val)))$Xy[, 1:length(level)] } else { # will just standardized type <- "pearson" } } if (length(level) == 1) { grps <- as.character(object[["groups"]][, max(c(1, level - 1))]) if (asList) { val <- as.list(split(val, ordered(grps, levels = unique(grps)))) } else { grp.nm <- row.names(object[["groups"]]) val <-naresid(object$na.action, val) names(val) <- grps[match(names(val), grp.nm)] } attr(val, "label") <- switch(type, response = { lab <- "Residuals" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } lab }, pearson = "Standardized residuals", normalized = "Normalized residuals" ) val } else naresid(object$na.action, val) } summary.lme <- function(object, adjustSigma = TRUE, verbose = FALSE, ...) { ## variance-covariance estimates for fixed effects fixed <- fixef(object) stdFixed <- sqrt(diag(as.matrix(object$varFix))) object$corFixed <- array(t(object$varFix/stdFixed)/stdFixed, dim(object$varFix), list(names(fixed),names(fixed))) if (adjustSigma && object$method == "ML") stdFixed <- stdFixed * sqrt(object$dims$N/(object$dims$N - length(stdFixed))) ## fixed effects coefficients, std. deviations and t-ratios ## tTable <- data.frame(fixed, stdFixed, object$fixDF[["X"]], fixed/stdFixed, fixed) dimnames(tTable)<- list(names(fixed),c("Value", "Std.Error", "DF", "t-value", "p-value")) tTable[, "p-value"] <- 2 * pt(-abs(tTable[,"t-value"]), tTable[,"DF"]) object$tTable <- as.matrix(tTable) ## ## residuals ## resd <- resid(object, type = "pearson") if (length(resd) > 5) { resd <- quantile(resd, na.rm = TRUE) # might have NAs from na.exclude names(resd) <- c("Min","Q1","Med","Q3","Max") } object$residuals <- resd ## ## generating the final object ## aux <- logLik(object) object$BIC <- BIC(aux) object$AIC <- AIC(aux) attr(object, "oClass") <- class(object) attr(object, "verbose") <- verbose class(object) <- c("summary.lme", class(object)) object } # based on R's update.default update.lme <- function (object, fixed., ..., evaluate = TRUE) { call <- object$call if (is.null(call)) stop("need an object with call component") extras <- match.call(expand.dots = FALSE)$... if (!missing(fixed.)) call$fixed <- update.formula(formula(object), fixed.) if(length(extras) > 0) { existing <- !is.na(match(names(extras), names(call))) ## do these individually to allow NULL to remove entries. for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if(any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if(evaluate) eval(call, parent.frame()) else call } #update.lme <- # function(object, fixed, data, random, correlation, weights, subset, # method, na.action, control, contrasts, ...) #{ # thisCall <- as.list(match.call())[-(1:2)] # if (is.null(nextCall <- object$origCall) || # !is.null(thisCall$fixed) || # is.null(thisCall$random)) { # nextCall <- object$call # } # nextCall <- as.list(nextCall)[-1L] # if (is.null(thisCall$random) && is.null(thisCall$subset)) { # ## no changes in ranef model and no subsetting # thisCall$random <- object$modelStruct$reStruct # } # if (is.na(match("correlation", names(thisCall))) && # !is.null(thCor <- object$modelStruct$corStruct)) { # thisCall$correlation <- thCor # } # if (is.na(match("weights", names(thisCall))) && # !is.null(thWgt <- object$modelStruct$varStruct)) { # thisCall$weights <- thWgt # } # argNams <- unique( c(names(nextCall), names(thisCall)) ) # args <- vector("list", length(argNams)) # names(args) <- argNams # args[ names(nextCall) ] <- nextCall # nextCall <- args # if (!is.null(thisCall$fixed)) { # thisCall$fixed <- update(as.formula(nextCall$fixed), fixed) # } # nextCall[names(thisCall)] <- thisCall # do.call("lme", nextCall) #} Variogram.lme <- function(object, distance, form = ~1, resType = c("pearson", "response", "normalized"), data, na.action = na.fail, maxDist, length.out = 50, collapse = c("quantiles", "fixed", "none"), nint = 20, breaks, robust = FALSE, metric = c("euclidean", "maximum", "manhattan"), ...) { resType <- match.arg(resType) Q <- object$dims$Q grps <- getGroups(object, level = Q) ## checking if object has a corSpatial element csT <- object$modelStruct$corStruct wchRows <- NULL if (missing(distance)) { if (missing(form) && inherits(csT, "corSpatial")) { distance <- getCovariate(csT) } else { metric <- match.arg(metric) if (missing(data)) { data <- getData(object) } if (is.null(data)) { # will try to construct allV <- all.vars(form) if (length(allV) > 0) { alist <- lapply(as.list(allV), as.name) names(alist) <- allV alist <- c(as.list(as.name("data.frame")), alist) mode(alist) <- "call" data <- eval(alist, sys.parent(1)) } } covForm <- getCovariateFormula(form) if (length(all.vars(covForm)) > 0) { if (attr(terms(covForm), "intercept") == 1) { covForm <- eval(parse(text = paste("~", c_deparse(covForm[[2L]]),"-1",sep=""))) } covar <- model.frame(covForm, data, na.action = na.action) ## making sure grps is consistent wchRows <- !is.na(match(row.names(data), row.names(covar))) grps <- grps[wchRows, drop = TRUE] covar <- as.data.frame(unclass(model.matrix(covForm, covar))) } else { covar <- data.frame(dist = unlist(tapply(rep(1, nrow(data)), grps, cumsum))) } covar <- split(covar, grps) ## getting rid of 1-observation groups covar <- covar[sapply(covar, function(el) nrow(as.matrix(el))) > 1] distance <- lapply(covar, function(el, metric) dist(as.matrix(el), metric), metric = metric) } } res <- resid(object, type = resType) if (!is.null(wchRows)) { res <- res[wchRows] } res <- split(res, grps) res <- res[sapply(res, length) > 1] # no 1-observation groups levGrps <- levels(grps) val <- vector("list", length(levGrps)) names(val) <- levGrps for(i in levGrps) { val[[i]] <- Variogram(res[[i]], distance[[i]]) } val <- do.call("rbind", val) if (!missing(maxDist)) { val <- val[val$dist <= maxDist, ] } collapse <- match.arg(collapse) if (collapse != "none") { # will collapse values dst <- val$dist udist <- sort(unique(dst)) ludist <- length(udist) if (!missing(breaks)) { if (min(breaks) > udist[1L]) { breaks <- c(udist[1L], breaks) } if (max(breaks) < udist[2L]) { breaks <- c(breaks, udist[2L]) } if (!missing(nint) && nint != (length(breaks) - 1L)) { stop("'nint' is not consistent with 'breaks'") } nint <- length(breaks) - 1 } if (nint < ludist) { if (missing(breaks)) { if (collapse == "quantiles") { # break into equal groups breaks <- unique(quantile(dst, seq(0, 1, 1/nint))) } else { # fixed length intervals breaks <- seq(udist[1L], udist[length(udist)], length = nint + 1L) } } cutDist <- cut(dst, breaks) } else { cutDist <- dst } val <- lapply(split(val, cutDist), function(el, robust) { nh <- nrow(el) vrg <- el$variog if (robust) { vrg <- ((mean(vrg^0.25))^4)/(0.457+0.494/nh) } else { vrg <- mean(vrg) } dst <- median(el$dist) data.frame(variog = vrg, dist = dst) }, robust = robust) val <- do.call("rbind", val) val$n.pairs <- as.vector(table(na.omit(cutDist))) val <- na.omit(val) # getting rid of NAs } row.names(val) <- 1:nrow(val) if (inherits(csT, "corSpatial") && resType != "normalized") { ## will keep model variogram if (resType == "pearson") { sig2 <- 1 } else { sig2 <- object$sigma^2 } attr(val, "modelVariog") <- Variogram(csT, sig2 = sig2, length.out = length.out) } attr(val, "collapse") <- collapse != "none" class(val) <- c("Variogram", "data.frame") val } ###*### lmeStruct - a model structure for lme fits lmeStruct <- ## constructor for lmeStruct objects function(reStruct, corStruct = NULL, varStruct = NULL) { val <- list(reStruct = reStruct, corStruct = corStruct, varStruct = varStruct) val <- val[!sapply(val, is.null)] # removing NULL components attr(val, "settings") <- attr(val$reStruct, "settings") class(val) <- c("lmeStruct", "modelStruct") val } ##*## lmeStruct methods for standard generics fitted.lmeStruct <- function(object, level = Q, conLin = attr(object, "conLin"), lmeFit = attr(object, "lmeFit"), ...) { if (is.null(conLin)) { stop("no condensed linear model") } if (is.null(lmeFit)) { stop("no fitted \"lme\" object") } dd <- conLin$dims Q <- dd$Q Qp1 <- Q + 1L nc <- dd$ncol fit <- array(0, c(dd$N, Qp1), list(dimnames(conLin$Xy)[[1L]], c("fixed", rev(names(object$reStruct))))) ZXstart <- rev(cumsum(c(1, nc[1:Q]))) ZXend <- rev(cumsum(nc[1:Qp1])) ZXlen <- dd$ZXlen[Q:1] ZXngrps <- dd$ngrps[Q:1] ZXb <- lmeFit$b nc <- nc[Q:1] if(ZXstart[1L] <= ZXend[1L]) fit[, "fixed"] <- # population fitted values conLin$Xy[, ZXstart[1L]:ZXend[1L], drop = FALSE] %*% lmeFit$beta for(i in 1:Q) { j <- i + 1L fit[, j] <- fit[, i] + (conLin$Xy[, ZXstart[j]:ZXend[j], drop = FALSE] * ZXb[[i]][rep(1:ZXngrps[i], ZXlen[[i]]),,drop = FALSE]) %*% rep(1, nc[i]) } ## this is documented to return a vector for one level, matrix for more. ## So it should be a matrix if there is only one row, but not if ## there is only one columns. if(length(level) > 1) fit[, level + 1L, drop = FALSE] else fit[, level+1] } Initialize.lmeStruct <- function(object, data, groups, conLin = attr(object, "conLin"), control= list(niterEM = 20, gradHess = TRUE), ...) { object[] <- lapply(object, Initialize, data, conLin, control) theta <- lapply(object, coef) len <- unlist(lapply(theta, length)) num <- seq_along(len) if (sum(len) > 0) { pmap <- outer(rep(num, len), num, "==") } else { pmap <- array(FALSE, c(1, length(len))) } dimnames(pmap) <- list(NULL, names(object)) attr(object, "pmap") <- pmap if (length(object) == 1 && # only reStruct all(attr(object, "settings")[-(1:3)] >= 0) && # known pdMat class control[["gradHess"]]) { ## can use numerical derivatives attr(object, "settings")[2:3] <- c(0, 1) class(object) <- c("lmeStructInt", class(object)) } if (needUpdate(object)) { attr(object, "lmeFit") <- MEestimate(object, groups) update(object, data) } else { object } } logLik.lmeStruct <- function(object, Pars, conLin = attr(object, "conLin"), ...) { coef(object) <- Pars # updating parameter values recalc(object, conLin)[["logLik"]] # updating conLin } logLik.lmeStructInt <- function(object, Pars, conLin = attr(object, "conLin"), ...) { ## logLik for objects with reStruct parameters only, with ## internally defined class q <- length(Pars) aux <- .C(mixed_loglik, as.double(conLin[["Xy"]]), as.integer(unlist(conLin$dims)), as.double(Pars), as.integer(attr(object, "settings")), val = double(1 + q * (q + 1)), double(1))[["val"]] val <- aux[1L] attr(val, "gradient") <- -aux[1 + (1:q)] attr(val, "hessian") <- -array(aux[-(1:(q+1))], c(q, q)) val } residuals.lmeStruct <- function(object, level = Q, conLin = attr(object, "conLin"), lmeFit = attr(object, "lmeFit"), ...) { Q <- conLin$dims$Q conLin$Xy[, conLin$dims$ZXcols] - fitted(object, level, conLin, lmeFit) } varWeights.lmeStruct <- function(object) { if (is.null(object$varStruct)) rep(1, attr(object, "conLin")$dims$N) else varWeights(object$varStruct) } ## Auxiliary control functions lmeScale <- function(start) # # function used to set the scale inside ms(), for lme() and nlme() # calls # { scale <- abs(start) nonzero <- scale > 0 if (any(nonzero)) { scale[nonzero] <- 1/scale[nonzero] scale[!nonzero] <- median(scale[nonzero]) } else { scale <- rep(1, length(scale)) } scale } lmeControl <- ## Control parameters for lme function(maxIter = 50, msMaxIter = 50, tolerance = 1e-6, niterEM = 25, msMaxEval = 200, msTol = 1e-7, msScale = lmeScale, msVerbose = FALSE, returnObject = FALSE, gradHess = TRUE, apVar = TRUE, .relStep = (.Machine$double.eps)^(1/3), minAbsParApVar = 0.05, nlmStepMax = 100.0, opt = c("nlminb", "optim"), optimMethod = "BFGS", natural = TRUE, ...) { list(maxIter = maxIter, msMaxIter = msMaxIter, tolerance = tolerance, niterEM = niterEM, msMaxEval = msMaxEval, msTol = msTol, msScale = msScale, msVerbose = msVerbose, returnObject = returnObject, gradHess = gradHess , apVar = apVar, .relStep = .relStep, nlmStepMax = nlmStepMax, opt = match.arg(opt), optimMethod = optimMethod, minAbsParApVar = minAbsParApVar, natural = natural, ...) } ## Local Variables: ## mode:S ## End: nlme/MD50000644000176000001440000005326412242160076011557 0ustar ripleyusers560cc3b99db97937e741133403816597 *ChangeLog a4eba0b2776c5f90bc837dc79402cebe *DESCRIPTION eb723b61539feef013de476e68b5c50a *GPL-2 c843826752e9f806f255d79801354abb *INDEX 63161a0a16a64cefc52314184570dcb4 *LICENCE.note 96e47eb33fc5982fbdb6a8163060ffb9 *NAMESPACE a69f227702dfa422d55d1f5f4556617b *R/VarCorr.R bd767290af84265d2180b2949be4e03c *R/VarCov.R 21f2feadc144029ef5491ea00e807f33 *R/corStruct.R 1f54c3e4351f21edf20617d5151cb9f5 *R/gls.R ca5726a6b9b7c8e7e4d16393cb8f7445 *R/gnls.R 7410876e14a525c89a79066824cea443 *R/groupedData.R 54234381731c2c3b6c54dbd02d6ab5b6 *R/lmList.R c7a1a185193e2be8e3be9e1285907e7a *R/lme.R af2f788abe03df9e2b27cbc91466b62c *R/modelStruct.R f92c96df8a87efea3aa0fe6625e0731a *R/newFunc.R 736dc3a6d393afbd18cc2b0703397ef5 *R/newGenerics.R eee478e649a127a38eaa92161c909cd5 *R/newMethods.R 95742bf508cc166c206b7f5147bc687b *R/nlme.R 9cbca165f38f8ed2dc244ef3fe04ff90 *R/nlsList.R 243f1e4285fc0832d03d0441ea8594e3 *R/pdMat.R b6e1428bc8d4062a23f2ac3085e07f3c *R/reStruct.R 2287c5aa80666539448bcaba9943c9ce *R/simulate.R cd79f3b23d4ac9b11d88c2b30018c632 *R/varFunc.R e5ba9f9eeae4088ed0151f1aeaf2862c *R/zzMethods.R e78cc482427ac872ed51f0c323b39f4b *README 8f2e4f663d2e4beb1143c28187c6653d *data/Alfalfa.rda 28e82e652a218134a9b880143f611516 *data/Assay.rda 041ca0f6b3ae898f7b0f7a62f16be9fd *data/BodyWeight.rda e92d38a9471ce6c044e6240497f213ce *data/Cefamandole.rda f3373d21b878a23bd0dbc9168368f6b0 *data/Dialyzer.rda 794cf9a27cadeb20605d166f757690da *data/Earthquake.rda 2bf54c335449d0cf84c87060817cd847 *data/Fatigue.rda 7a8885321ff744a538c777ab0c94fb88 *data/Gasoline.rda def2d556e4069732fc40b00f68488e75 *data/Glucose.rda b7c6a520042b9f417dd32c28739efe48 *data/Glucose2.rda 5bd218c31b1d2193bbfac2b94ee2e8f7 *data/Gun.rda b731176d404f75c1fe5ce37256df991f *data/IGF.rda 344d130fa8a987fa9dfeacb24c82f71f *data/Machines.rda e3d267b1b5e08ed808e1a5d9ddd5c6f3 *data/MathAchSchool.rda 18e9bfa7ba5bffdf0a2479b509949e42 *data/MathAchieve.rda 7f706f8027d407bcb73ef80442991d2c *data/Meat.rda 63b7630ae74fc63f0fb8beaa2fce0288 *data/Milk.rda 3a8ca6e7119ae0dd9c5840983a887306 *data/Muscle.rda 0d45165957569d326f34bc534d86e6fb *data/Nitrendipene.rda ed0808793f33df992bad0e3e646a3f25 *data/Oats.rda dfb988e33aac10f31d1045ebad9f59a7 *data/Orthodont.rda f138781c3e385131a7fb7d0ff718db15 *data/Ovary.rda 0d3221d4f65a37d5640d421e10bfeb1d *data/Oxboys.rda c6f5ef1b5d08f6621389253b526ab55c *data/Oxide.rda 9825eb1a55abd5454491207473b9932f *data/PBG.rda 85a8adb5e346e9d5dd4de41bd3e1535d *data/Phenobarb.rda 6cbdca31dab4c9aa5484ddf655c4fc83 *data/Pixel.rda 6cf94b35a677633a46c95d7191f64257 *data/Quinidine.rda 1af00982c07d785d78ee22ba2116ab98 *data/Rail.rda 28bd57dbb65abbc95f96440de6f746bb *data/RatPupWeight.rda 26b1019622e790dfacd78cb03f2fd9b0 *data/Relaxin.rda b58834d8ae881827a034615eedb6c69e *data/Remifentanil.rda c9d999719eb82ea836bb47b863fd6561 *data/Soybean.rda 93632e910d32f7d5a7534daf5d48eec2 *data/Spruce.rda 5e3ddf3dd71e9705b58044f8d97d94ef *data/Tetracycline1.rda 21982bd9f94e50afa7cc36fba49ca453 *data/Tetracycline2.rda 217764f4133061d311ce3852c95cbd8e *data/Wafer.rda 9999ac0304adfef7ace4b6d39b12fb79 *data/Wheat.rda e174f8f71cab6ed341577ff31036cf7b *data/Wheat2.rda 6526b92c436e1496d2753917e21354d9 *data/bdf.rda b1bd9c2311906426ed6c2e7c71b0cae6 *data/ergoStool.rda baa725853611bb054c131fbee8254167 *inst/CITATION 64501fa44a098a7b4c9148de789bacf4 *inst/mlbook/README fd6efb34026508f27de122da7d5e712f *inst/mlbook/ch04.R 9404575eddb8ed2cbb53d645df35210a *inst/mlbook/ch05.R becfdbea2714ced372b9625e8c88bc66 *inst/po/de/LC_MESSAGES/R-nlme.mo 529636eeecab28748e6ad8db1fa19f75 *inst/po/de/LC_MESSAGES/nlme.mo 3226df0fdc6184378d1dfa70b8666518 *inst/po/en@quot/LC_MESSAGES/R-nlme.mo 5637e26961e617ce74bbb7c96d74acfa *inst/po/en@quot/LC_MESSAGES/nlme.mo 7dad9d1e8f8c4ba1958e39bb0b894ba6 *inst/po/fr/LC_MESSAGES/R-nlme.mo 1061d15bd342e8b89d3bb393b286f220 *inst/po/fr/LC_MESSAGES/nlme.mo c75204b499b67381847725f0c980bcc5 *inst/po/ko/LC_MESSAGES/R-nlme.mo 5c47f68f2b858fa34c531374d993c128 *inst/po/ko/LC_MESSAGES/nlme.mo 310d8cf84517db35ac12c77ca95ca04b *inst/po/pl/LC_MESSAGES/R-nlme.mo 76022c9f2e17d1ebec53e8af0a0be33f *inst/po/pl/LC_MESSAGES/nlme.mo 45914f9655035754879c5f326004acec *inst/scripts/ch01.R d2b5dbef6268f200ed990b4613f0c608 *inst/scripts/ch02.R 1dcfa6be4f624e68514c38b741a99c9f *inst/scripts/ch03.R f9fa4fb74a66c591804c70336f48e955 *inst/scripts/ch04.R 6761513cb5b021d713a226c62c93ee7e *inst/scripts/ch05.R f751e8e4e3957e67cbaefad1f3c945fe *inst/scripts/ch06.R 6c2251c4cb75df75f5efeaa9fe04574e *inst/scripts/ch08.R aa549206ac4749200a23760b13d742c8 *inst/scripts/sims.rda 16768d535d6820115742dcdf76fb1220 *man/ACF.Rd 6e762e25a29d49c66cb9f86386d3b7c8 *man/ACF.gls.Rd 018003b645a6a5b3e23cf6a2f408db58 *man/ACF.lme.Rd 57595346850b70559bd5f5a00af2f3d1 *man/Alfalfa.Rd 1bb3b6a1b472e0ba2c26720a3045601a *man/Assay.Rd 8f75d99043adb16c01650f2840be13c1 *man/BodyWeight.Rd cefccd213c87d53359b03a2bf7bea088 *man/Cefamandole.Rd 65af0f9acd4abef86d2cc0e18eb296f6 *man/Coef.Rd 767924880a39f5f42e17d5ab419d9d85 *man/Covariate.Rd 951b571773a1a0893ab8a45aa3c1ae73 *man/Covariate.varFunc.Rd a5e5047ed3e37c8114000349a0f4d402 *man/Dialyzer.Rd f7ef6f8718e6ca97d76c748b013c4c47 *man/Dim.Rd 7836c68f3dc446bddb4f2b7aa138872b *man/Dim.corSpatial.Rd 3edd657be50778bc21b97dbadae5eaa0 *man/Dim.corStruct.Rd f50e4d8be6375408fafa6900f475de7c *man/Dim.pdMat.Rd 72833569dbae9d92e7279d3bbc75cfdd *man/Earthquake.Rd 9c53be2ff65213c90256f7779d51fa55 *man/Extract.pdMat.Rd f08b06991edf2d9d088c0d0e74f3c12b *man/Fatigue.Rd d15d0820b97a1d3747d3d810edc4499b *man/Gasoline.Rd bc795b9a76a4d9f551b2232bec78f407 *man/Glucose.Rd 63a86784e7b69c12a783f11a494a7543 *man/Glucose2.Rd cd7c839372f3ce09142c32d26dbb7378 *man/Gun.Rd 546284bab7b2c8451b6a45aaed224025 *man/IGF.Rd 8e6233660791f22bde909abc8c6adb85 *man/Initialize.Rd 406454f5d85d2d658a4ac4cb6822ff05 *man/Initialize.corStruct.Rd e27e73db4fd3b6818e2a48ef04582e45 *man/Initialize.glsStruct.Rd bd7073bcbe4875e08704cd79bc2b6be7 *man/Initialize.lmeStruct.Rd bdee483d50bf6e5ab30526af62e42516 *man/Initialize.reStruct.Rd 6fcdb2fc0d882a285d12ec209675f4fb *man/Initialize.varFunc.Rd f1ed61540b8f100beb20b7b546c35033 *man/LDEsysMat.Rd 3cb4792ead6504d766d2715f90c472ee *man/Machines.Rd e4025869be76a7a91f5ee6009c0a191d *man/MathAchSchool.Rd c2975c5117961c5844804db3043dc911 *man/MathAchieve.Rd c21669c90235351dd53857856b9849bb *man/Matrix.Rd ea4a2ca62a97ce73c0097d0b6085ad68 *man/Matrix.pdMat.Rd ce9280e1b047c882d6ff47d21f778535 *man/Matrix.reStruct.Rd bef94237086085fa8b74ffced33357e8 *man/Meat.Rd 20f4197fb4b7d4a1c8aae881130ee350 *man/Milk.Rd db929172c8ac73f4f3374e1bfa7939fa *man/Muscle.Rd 30ea5662dbcd86bf8f6724cb6efcd313 *man/Names.Rd 8eb7a6cf9302bbcbaec81cfddda978a6 *man/Names.formula.Rd a70a87adca3942d9debcc3324ccee584 *man/Names.pdBlocked.Rd 0b55d575aa734b38fe35acb3ecc46d59 *man/Names.pdMat.Rd 2a525ef4329e34792448108773a58c95 *man/Names.reStruct.Rd efd66bcf15f4e05fca9394e98b8b22f5 *man/Nitrendipene.Rd ec3c2af6fc7d7e9906a5c0d88691d9e0 *man/Oats.Rd b6ff3a9f4f7c9364dd5427ed44e78850 *man/Orthodont.Rd 596839fecefde28fd31df15bc2443111 *man/Ovary.Rd 14d46f9380f9bf16bcd3da2ed1414618 *man/Oxboys.Rd 4830173e57672328a5d0c60b5b4b2ef0 *man/Oxide.Rd d62d8d5c2c0643b47ade54dc0c12d036 *man/PBG.Rd e28be754a322c6c1fc993a93ad921e99 *man/Phenobarb.Rd 8412274b3c55c6f85eb07a696173a62a *man/Pixel.Rd 75ae1d74f665bdd9b2a46025947cb604 *man/Quinidine.Rd 989b9a8b115d3f44e60c0e0d7bce44d3 *man/Rail.Rd 24e778152c340144b44e5f07cae17ba1 *man/RatPupWeight.Rd 1ad997fd585e41017b58c925d417880d *man/Relaxin.Rd d844f58fda4c3ccaf533a92c88821e06 *man/Remifentanil.Rd bf2c7d731d4422ee67bf86e134ce8ab2 *man/Soybean.Rd 3dc4e57e32facf457b1608fe6a615d7c *man/Spruce.Rd 9daa6d475775413dd4ea64c99cfe17d1 *man/Tetracycline1.Rd e5180117cd260b6b0f55334d1fbfed27 *man/Tetracycline2.Rd 5a1e8a96bfb71cd859c74481951da867 *man/VarCorr.Rd a300486a27b1002fdce1a9694b5dd09a *man/Variogram.Rd 29751263c30392b4e2beb5369bc55165 *man/Variogram.corExp.Rd 0835aada9e25aff1495636cf044a641e *man/Variogram.corGaus.Rd d2a1838f7649189356c1699974a0a064 *man/Variogram.corLin.Rd 0ab3b3222151278bf8b2c5d8d0580517 *man/Variogram.corRatio.Rd 4870feebe7b61f4a5d3bbddb0d6786ee *man/Variogram.corSpatial.Rd 46a38f7ec456eb0160d745b44e8e219f *man/Variogram.corSpher.Rd 22a44e972522cd5258917bc11119f7d1 *man/Variogram.default.Rd 372e3832052c4b681243e1f85a8cf6a6 *man/Variogram.gls.Rd 660159573e2d3e1ec8a2cbcaf7d92d49 *man/Variogram.lme.Rd f0037b641609bbeb2e1cd6ee9ac35468 *man/Wafer.Rd 68ac1efa524cb04bf1b5d3aedf83096c *man/Wheat.Rd 6f1948aad833c32faecbc33dbe5797d9 *man/Wheat2.Rd be24f3ff3dd6be6e8a540aec4c11c353 *man/allCoef.Rd 68e691cc064c25bcd929a3f0cac6e6ab *man/anova.gls.Rd 31c6528eac1cf39f3cb0436599228226 *man/anova.lme.Rd 898315fc8ee0502e8c2f19700868a941 *man/as.matrix.corStruct.Rd 222b482c4d6d320c4ff69edddb1c7a4d *man/as.matrix.pdMat.Rd e6a8d1d9d5080d284a853b032c354d7e *man/as.matrix.reStruct.Rd b015ee9aaf0f2b1b7ace91f735793f05 *man/asOneFormula.Rd e9bdab76d54c944a5aaa097f445491f0 *man/asTable.Rd 7025b427cda87d435e2b3b5ddda93b8b *man/augPred.Rd 4d05a8e7243f763e96c185a727d7ad12 *man/balancedGrouped.Rd 8e9d4bb2a19ec0db46b02afece78bf25 *man/bdf.Rd 0756d50620eee16952d7f7363f44986e *man/coef.corStruct.Rd d650aace7475c64096f490cdff42f9d7 *man/coef.gnls.Rd ad26050059ff7432708d14c90a5d3a11 *man/coef.lmList.Rd 2cf5a03f045515cc92dae3ecebaf2c9a *man/coef.lme.Rd a718222d2e3c6ee50b3622380f74cd40 *man/coef.modelStruct.Rd e5223021d4ef963c2e0e0bd8b2b56ebb *man/coef.pdMat.Rd 91c195e9bde7d811621ece32da2258d2 *man/coef.reStruct.Rd aceb407ac91f2d97c9dc9b274b636506 *man/coef.varFunc.Rd bf2d3cfeba6f7b2dbbb38da5dee13bff *man/collapse.Rd ec094086453f639ea164835f33d1236b *man/collapse.groupedData.Rd 546e95b5ad7a30fda3bf364e55a5d6d9 *man/compareFits.Rd 6ac3888e9938d2e2bfdb0cb0729783ce *man/comparePred.Rd 943e7d48ad8dfb6b65a006523ffc3d62 *man/corAR1.Rd fbab72fda7d2f6891eea06a679ce6251 *man/corARMA.Rd 3f85c73a45692372ec4ba7916d2e5a0d *man/corCAR1.Rd 724f50c66ea7a7cc213e0393f69517b5 *man/corClasses.Rd 7b8413fc94c6fc41bb481ff0c1bbbbb8 *man/corCompSymm.Rd 0a3760bb126319c8226e16b009176148 *man/corExp.Rd 236a68a050c7d6d1bfbbe09b14454973 *man/corFactor.Rd efca5eb37b3b604dcdd820904332300b *man/corFactor.corStruct.Rd dc8b5bf3670668171ff4e49c4d8c9030 *man/corGaus.Rd 820976dd9400db2c92be65b2a7ae235e *man/corLin.Rd dc6bfd8289f83c6fbe61a499bc237e72 *man/corMatrix.Rd 2e6d320c728220cb98a8325a678aac7d *man/corMatrix.corStruct.Rd fbc3933ddfd96f130d5a385d4ca21b53 *man/corMatrix.pdMat.Rd db07e76194a00cf63b58d2e0aca8b4b3 *man/corMatrix.reStruct.Rd aba6924356ba79ac88c7500baf8939ba *man/corNatural.Rd 17f1dedd9c18629e489cec264f970d34 *man/corRatio.Rd d06030a80389318a197a400d95c84bac *man/corSpatial.Rd edf4f1aafae697c815c742262d539f6f *man/corSpher.Rd 2f9a8eff49e2548469744b1d6e8fde90 *man/corSymm.Rd f348ba7472c8fb3cd380fe2cbc8fa1a5 *man/ergoStool.Rd 46d3b8ab8be17986ca1f5b59605d62fe *man/fdHess.Rd 994834a9db29d4b84be42ee55d0a4d74 *man/fitted.glsStruct.Rd 73f329bdd6e26ec82028104be3cde970 *man/fitted.gnlsStruct.Rd 8a9a06c1084d5cffd9ff10735252ecca *man/fitted.lmList.Rd 55dec363e1a39915184fea67b745cddc *man/fitted.lme.Rd f1d54fd06f9de3382de88bad5d47b10e *man/fitted.lmeStruct.Rd a4b79221d0b90322544a15d84aefb75f *man/fitted.nlmeStruct.Rd 94f7039ec932dcd036e8b6924354d0cf *man/fixed.effects.Rd 3e9ef2ee368779aa90a35136c674b3b8 *man/fixef.lmList.Rd 0974baa3e8400d76bf7974e37b86a468 *man/formula.pdBlocked.Rd eed5eb9e329e535f354053b649e207fc *man/formula.pdMat.Rd 2ab672b508e55ae44c9804866b847693 *man/formula.reStruct.Rd 99b53109238f2bba2365191a68a0a251 *man/gapply.Rd 3b068e87cbbfd17bc1fa56cd11690655 *man/getCovariate.Rd cdf24b9b17c9a4057970ee1d9d4177a3 *man/getCovariate.corStruct.Rd d6c724bdb3eacb6c69918bc22d4e2f53 *man/getCovariate.data.frame.Rd 16df689674c1a6cc5319319f921fde1d *man/getCovariate.varFunc.Rd 15905e7cf3055484b47074b989f4cdfd *man/getCovariateFormula.Rd 56ff35f77389d33e7dfabdf2fedcbb89 *man/getData.Rd 52ab521c89457facdcd1f4a9c5b4fbdf *man/getData.gls.Rd eb7a4684eec0276b70799634c73244b5 *man/getData.lmList.Rd 023488fea394ab866533696a4044fbce *man/getData.lme.Rd 552cd8e49db6fb3ac3b23c6bd2992110 *man/getGroups.Rd b0b5a891e5c29d60d19e3086ffdc848e *man/getGroups.corStruct.Rd d20850fd0b7480e603e3e77dcf62e49a *man/getGroups.data.frame.Rd 8335ab3aeec4334ec484d9430be62880 *man/getGroups.gls.Rd f0b677e111638c8d4ccd1ba758457428 *man/getGroups.lmList.Rd 6763cd670d69b0e34d00d96f9a73f0c4 *man/getGroups.lme.Rd fd60d299d1edf68fdbd0f899f3b1b0c6 *man/getGroups.varFunc.Rd 51173e8db654743b984c8103af884881 *man/getGroupsFormula.Rd 84c5ef05614935f913194ef5ac00c207 *man/getResponse.Rd 8fa7e2679c0096450808e7c1c605a037 *man/getResponseFormula.Rd e3616435bf781053aa48d2be2215848e *man/getVarCov.Rd 779f3dafb2559309735105ff42bb20f2 *man/gls-internal.Rd 6f56c20d173a1f99128799c5eda51873 *man/gls.Rd 8c61290791b722fec9e202cabc3c994a *man/glsControl.Rd 9be5f59bf435cb1195eca8ae070e55ab *man/glsObject.Rd c1de1feec9dc68a271924825dbe6f120 *man/glsStruct.Rd 0e264078561e6340f091b3c85d6b8c76 *man/gnls.Rd ed7cf01c9874a1d47e4b522be98f7557 *man/gnlsControl.Rd 2c371a6a5d6d9c8d6fbd7182808f8f36 *man/gnlsObject.Rd 37dab43440c017afb0748d7c8cbb13a6 *man/gnlsStruct.Rd e0d9740f9b24411c1ad37218f3af21ac *man/groupedData.Rd 5bc6d697f93fc948f018d522bb3242aa *man/gsummary.Rd 532206cd06c3bb54b4dd6cfb560c3cb9 *man/intervals.Rd b504c0caec70350f786789738c0aa067 *man/intervals.gls.Rd 525f0e4787f40aa64ccf637f82edd732 *man/intervals.lmList.Rd 1283b2baf4233b5738cbd0875fc6f3cb *man/intervals.lme.Rd a3a54a6f6ea3258ed61dbcb9caabb538 *man/isBalanced.Rd b399ad8ac30ebae148c2750863b9577b *man/isInitialized.Rd 93f3e2df8047b9e76b7e04c375125f2d *man/lmList.Rd dbadc79303ce96bec1bd37565822834d *man/lmList.groupedData.Rd 5fba3ba19aa70e6b143eaad233e5c1b7 *man/lme.Rd 3c9fa6a9877052e389ffda741e2ba4d2 *man/lme.groupedData.Rd 72faf3c9623f1ea10d1aaf08036a2cc9 *man/lme.lmList.Rd 1b7bfa438192ac4335f103208d54da3a *man/lmeControl.Rd 691798241719c30cbde940fbece103c2 *man/lmeObject.Rd d3e104a2dc597c6b427f16b1c7878906 *man/lmeScale.Rd 13dc0abcf5cefea56089b4e02e627b4d *man/lmeStruct.Rd 0a183f1abced3b6e2e27fac21706dfff *man/logDet.Rd ead2832df5ec5e188e6b4ca16f4428a2 *man/logDet.corStruct.Rd 1aabffa0c11b521d5030dffd4ff13d8c *man/logDet.pdMat.Rd dd735008904c20627fafef5b7c6f03b6 *man/logDet.reStruct.Rd 1592be45d8ea775516fed6cfb45b3153 *man/logLik.corStruct.Rd fb931127a66a884ece9340b1ec229c40 *man/logLik.glsStruct.Rd eb27e04e3e0bc7f14bf1a55d987c5ed3 *man/logLik.gnls.Rd 899beba3839e32c4471ef5049cc9834a *man/logLik.gnlsStruct.Rd db65ecf96fe3e65efc9becacb342629a *man/logLik.lmList.Rd a4972d609644acfcf8001d8b92bab966 *man/logLik.lme.Rd 5d3d7473099fd000decbb974dcb8bca4 *man/logLik.lmeStruct.Rd 3230bcef111d815fc75bcd2b3205e0b1 *man/logLik.reStruct.Rd f3b113b8aedae437708a7fcd167d3d73 *man/logLik.varFunc.Rd 4751793249ec770d44339a9561866ab6 *man/model.matrix.reStruct.Rd 60a29b3fd8b1e118e73473e1db207c42 *man/needUpdate.Rd 3e05ee655b352dbb2f67cdc09fa80ed3 *man/needUpdate.modelStruct.Rd 076f54ae79a2d6d5ec1a65858f44329e *man/nlme.Rd 63489a1c7a0630b41241c2ea6fdfe2f6 *man/nlme.nlsList.Rd 2ce0ac39a08378109b6e239c757206b1 *man/nlmeControl.Rd eddc36826c15c57ed048edd3fb4b06ea *man/nlmeObject.Rd dd1fd42b2801e78eb9ba1fa11326ebe5 *man/nlmeStruct.Rd f04f9c699dfc858085a737a59c7d2cec *man/nlsList.Rd ece1e422ccf33a38819a5144ca075452 *man/nlsList.selfStart.Rd 02e9a8801b6d78431b4a31bcbd093b72 *man/pairs.compareFits.Rd fc390d85754a2c0ad426b61d0c7b49bf *man/pairs.lmList.Rd f878d85022ff5b5a199dedb4185239b4 *man/pairs.lme.Rd a2f66466b56f892f9585627f17ff229e *man/pdBlocked.Rd f3eec1388b8f9b20f38bfba98f5fab35 *man/pdClasses.Rd 95ccd57919b210b67eb49d111c80b702 *man/pdCompSymm.Rd 4e7b194bc65fbb63bf97429560ec849b *man/pdConstruct.Rd 343c300545edb4cb6b02bfa8032bc00b *man/pdConstruct.pdBlocked.Rd 16467eb2592cd9c3f427d055846f2b13 *man/pdDiag.Rd f9f9c13acf74dfea291e23c7c63c9983 *man/pdFactor.Rd 7dae36911817b4ce144eee042f50eb27 *man/pdFactor.reStruct.Rd 7799a8aafc9e4d25878beec1d08c9a50 *man/pdIdent.Rd 918b65e2f5406c87e735fdb46c38aae6 *man/pdLogChol.Rd a5d8a5b1c90dec35c67ecc5a1906e3f7 *man/pdMat.Rd e6bd54c4f5a59912f5aa8957fe2c831d *man/pdMatrix.Rd b84f89573def38056f3010d3d1a87dcf *man/pdMatrix.reStruct.Rd 5f06972eb22dfccd71057d67654f4eed *man/pdNatural.Rd 4a2e34fa8aed0c6d04be6269d15b24a8 *man/pdSymm.Rd 93a351b884476ef521c536902dda5947 *man/phenoModel.Rd fd88eb1e4fba6ffc184edbfe22420429 *man/plot.ACF.Rd 843a344393023289e6ba3d1c8329d633 *man/plot.Variogram.Rd 9cd50f9940c69b776bdc7ddfd84f2d92 *man/plot.augPred.Rd b261ca60e205000b64e34a87828a99a1 *man/plot.compareFits.Rd a89ab48cbf0c9c0822c3d386b3d7fd0b *man/plot.gls.Rd b309b8360f5226953c25ff0c9697594c *man/plot.intervals.lmList.Rd fc1d4dbb94d6b7227274f9a933a1a00c *man/plot.lmList.Rd e151f47f4eb2ac3af6fc8c020d21872a *man/plot.lme.Rd d025250c6943c2893e8898b5e85a8acb *man/plot.nffGroupedData.Rd 4c8238af9e34bd3257e9b0e70615dc40 *man/plot.nfnGroupedData.Rd 3a9c7c37b33b52f13d85724811daeb55 *man/plot.nmGroupedData.Rd 0a9a01574661c2d55d6933b616eb499f *man/plot.ranef.lmList.Rd 67875ea67c91759bc7203a79f378f374 *man/plot.ranef.lme.Rd 5be17470ec36c0536de12f30eb3fcc01 *man/pooledSD.Rd 6d2e3289690dc40de6ca67a2a5169e27 *man/predict.gls.Rd 8e02e0690941f9618bcfd6987a7cd14e *man/predict.gnls.Rd b8bf3369965838b2dde2f82e6d8b9ba8 *man/predict.lmList.Rd 0e53b2eea74322f3631cee42a5735198 *man/predict.lme.Rd 2ab4171f0850123cc5b125974dcf461d *man/predict.nlme.Rd a24baf9d274faf0ee6a0b812bf0c67c3 *man/print.summary.pdMat.Rd 02e3f9d9a12c6c9d56ff14a247451f90 *man/print.varFunc.Rd 972006af5df348873567b608f8d77689 *man/qqnorm.gls.Rd 8c4c24333d3f805a47d4c152753010a7 *man/qqnorm.lme.Rd 2964cb136bfd01e04e013c4fa93ef6cd *man/quinModel.Rd 04f98816fa09bf9b31c2e616fe258f12 *man/random.effects.Rd a29f4b3be852c55acdfc15b09c3ffca4 *man/ranef.lmList.Rd 3c1cfac382e04a0147e047c27ac32696 *man/ranef.lme.Rd ed75dae79409e98c064649641f82d875 *man/reStruct.Rd 30311327dee2255284dcaf920e7ec687 *man/recalc.Rd 4681091f21d53d0fba1afe8e620ad2c3 *man/recalc.corStruct.Rd c2bee8f3f6936f91cf4c9e14ff584f55 *man/recalc.modelStruct.Rd 4fa814469f33501c7c03deded49bbf53 *man/recalc.reStruct.Rd 317a99b8dd4d9d3f8bfc99fcb8986070 *man/recalc.varFunc.Rd f31a50fe948fbbf6f5ef16a49b498232 *man/residuals.gls.Rd 00520c2db40f534412eba33b691f6571 *man/residuals.glsStruct.Rd 60647b5fef599cc688ac18b1a10abbbf *man/residuals.gnlsStruct.Rd bddd6554150a0fb58d9a3f6292e6e161 *man/residuals.lmList.Rd b87b469b48e1d1e3f61d2facbd0b973d *man/residuals.lme.Rd 8ad0761e59075ef2a0349114d848637c *man/residuals.lmeStruct.Rd deb3a9c9c02c7828e4d02f9ae970fca5 *man/residuals.nlmeStruct.Rd 898b84e56d802c42668266e1852fbbb9 *man/simulate.lme.Rd 9d3eb773650975aa8a91058bb091ac67 *man/solve.pdMat.Rd 23fc485c76bac59b5697957ba1c46b1f *man/solve.reStruct.Rd 2d335ff87e586bddd602dec64bedf103 *man/splitFormula.Rd 30b751285525b491459043db8949309e *man/summary.corStruct.Rd 81dd8da1cced5851c4ba180ccd4dfb24 *man/summary.gls.Rd 6780ee835f6865026f484dfe3880de0b *man/summary.lmList.Rd 81b936cfafcc846c53e87b2d02958206 *man/summary.lme.Rd 6c686321938f6e4808b6efd371af7829 *man/summary.modelStruct.Rd 77742610400af09eb172489893c8003d *man/summary.nlsList.Rd f36698a423ebeefc8ab08a40c82488e4 *man/summary.pdMat.Rd dc38904f1e4952f38d9181c01be8e607 *man/summary.varFunc.Rd 500c2e217a6f3ea216fa90ad7fde69a0 *man/update.modelStruct.Rd fe93e070119eaec29a86dde2df59ae71 *man/update.varFunc.Rd 0b08d4906ec59a4d007980b4a02a3bfb *man/varClasses.Rd 90931caface7ab83c19fba204c7ac818 *man/varComb.Rd 9bab47d7d6c2b84ef6794ea19134a86f *man/varConstPower.Rd cf8f1ea7b02994d05cafdeac8afb78f0 *man/varExp.Rd 375a932377dee2e8f5e1227097368f5b *man/varFixed.Rd c0a263b2c59738dab3b4c196c8d797a6 *man/varFunc.Rd 13741091d4011b2d7be72cacfd6737ce *man/varIdent.Rd f75556c06a03f93a42697a1d2b6edbdb *man/varPower.Rd 7c37faad620348de3bef118def08ea00 *man/varWeights.Rd 974ac1176d9397c4cec9a625b4b9cd73 *man/varWeights.glsStruct.Rd ec5bee030bd1d4425fa01febc9d91ccd *man/varWeights.lmeStruct.Rd 4dd03874f5aa91fcf544f97e261bb5ce *po/R-de.po b87ff907d2aee88590ec73b481243b52 *po/R-fr.po 101ebfb9f3f297c59fd34de554f4728a *po/R-ko.po 5e0f8d842c3ee3a88c2076d79d94606d *po/R-nlme.pot ea06b8694fb55d199aad091a416d31bf *po/R-pl.po 1a8d69bbdf5f7003143705a48b049a76 *po/de.po 80d8fec72bfebdd9dfebaa45809204f1 *po/fr.po aa93c07501513bc72646169e77c848ed *po/ko.po 469d755504713a58ad338c16eb35abde *po/nlme.pot cfb699e409633a678152a58557a502d7 *po/pl.po 4a6ee9d66b62b2838b5d54e20f04f8b0 *src/Makevars 06be2fd684b194df86f49b209f022aae *src/base.h 50706c74629dbfa8b03d472135e7165f *src/chol.f 3fc9cee1510054dd47f479951194f20e *src/corStruct.c e5f7bf303ebf764ce4849fa43c1edc25 *src/gnls.c 69693222d1b281ab4052d9d447c59575 *src/init.c 29cf2449d5e5ff508961a842e58cb7ab *src/matrix.c 380441bd224444dcf39c2e94fb9a30a7 *src/matrix.h 7a6192c2bfb2136b8570f9ef0d48b091 *src/nlOptimizer.c 90646b880de3b9aeb2039fe48d951da5 *src/nlOptimizer.h ae25098b458851cdf85513f286db4b42 *src/nlme.c b491e370149a97a8c370a1bf866c7858 *src/nlmefit.c 1a88ff31ecad828b4c1a4970f676443d *src/nlmefit.h bcf08b36ea2299a2885f889add1a1975 *src/nls.c 91b211d43f073f66ecb649245d6572f5 *src/pdMat.c 89cd0aa4ea1ce163afe466c9590957b1 *src/pdMat.h c5807f583fefd6de83bc1fb315bd73ed *src/rs.f 19af4748ea1e08ef3bd3d632f69f774e *tests/anova.gls.R 71e0f19e94843d44f0c9e4f8067de9f7 *tests/augPred_lab.R cdced2c0665ee6e3f80188b92267e8c8 *tests/augPredmissing.R d5944b785f51638ca1351697139f0fc7 *tests/coef.R 50fb7170d4685b1ceddced58287d8dbc *tests/contrMat.R e3cda69b561ca20c658895ee7bb072c4 *tests/data.frame.R 02dd74b311ac0997ad1c50f25aeec001 *tests/deparse.R 2d06207872197b9abd28f869ff06f086 *tests/getData.R 9b8d3de1328a6d383e4a43214adb02e6 *tests/gls.R 4378c87c973e3e4d865be4cbf3df3610 *tests/lmList.R 522de7c58b1d4d04b93da9d3ef7f946c *tests/lme.R 7e4cd57564c62031123371161603f745 *tests/lme.Rout.save ba6ad2dd1562d026011514685d2e956a *tests/missing.R 1983a6d52eb7902cfbea83533d183535 *tests/missing.Rout.save 0ca37108e84a74a69ba857bc4242e87d *tests/nlme.R 760290619205d10b5b5638ce05338707 *tests/nlme.Rout.save 6b1cf6f76e7458b92475567d191d7fd4 *tests/predict.lme.R a6257e1699574133d825e01022db7fd6 *tests/ss2.rda b68921d41351b26943dae30831080324 *tests/update.R 6490b5d436a62045efbcf622dfea7361 *tests/updateLme.R 8bb1eb5670f185f8aaaa51b542866ee5 *tests/varIdent.R nlme/README0000644000176000001440000000161411534450127012121 0ustar ripleyusersCopyright (C) 1999-2001 Jose C. Pinheiro and Douglas M. Bates This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this file. A copy of the GNU General Public License is available at http://www.r-project.org/Licenses/ ------------------- This package contains the nlme (nonlinear mixed effects) package version 3.1 for R. Authors: Jose Pinheiro Douglas Bates Saikat DebRoy nlme/DESCRIPTION0000644000176000001440000000233612242160076012747 0ustar ripleyusersPackage: nlme Version: 3.1-113 Date: 2013-11-17 Priority: recommended Title: Linear and Nonlinear Mixed Effects Models Authors@R: c(person("José", "Pinheiro", role = "aut", comment = "S version"), person("Douglas", "Bates", role = "aut", comment = "up to 2007"), person("Saikat", "DebRoy", role = "ctb", comment = "up to 2002"), person("Deepayan", "Sarkar", role = "ctb", comment = "up to 2005"), person("EISPACK authors", role = "ctb", comment = "src/rs.f"), person("R-core", email = "R-core@R-project.org", role = c("aut", "cre"))) Description: Fit and compare Gaussian linear and nonlinear mixed-effects models. Depends: graphics, stats, R (>= 3.0.0) Imports: lattice Suggests: Hmisc, MASS LazyData: yes ByteCompile: yes Encoding: UTF-8 License: GPL (>= 2) BugReports: http://bugs.r-project.org Packaged: 2013-11-17 14:22:45 UTC; ripley Author: José Pinheiro [aut] (S version), Douglas Bates [aut] (up to 2007), Saikat DebRoy [ctb] (up to 2002), Deepayan Sarkar [ctb] (up to 2005), EISPACK authors [ctb] (src/rs.f), R-core [aut, cre] Maintainer: R-core NeedsCompilation: yes Repository: CRAN Date/Publication: 2013-11-17 16:26:54 nlme/ChangeLog0000644000176000001440000007377712242150435013032 0ustar ripleyusers2013-11-17 Brian Ripley * DESCRIPTION: version is 3.1-113 * src/{matrix,nlOptimizer}.h: typos in guard names (clang 3.4) 2013-10-21 Martin Maechler * R/gls.R, man/gls-internal.Rd: remove redundant parentheses. 2013-10-03 Brian Ripley * man/{gls,lme}.Rd: add links, warn on no-covariate formulae. 2013-09-30, 2013-10-02 Brian Ripley * DESCRIPTION: version is 3.1-112 * R/gls.R, man/glsControl.Rd, man/Initialize.glsStruct.Rd. Remove 'qrTol', which was unused and set to the non-existent .Machine$single.eps, that is to NULL. * NAMESPACE, man/gls-internal.Rd: export glsApVar and glsEstimate for use in package rms. * R/gls.R, lme.R: more use of integer constants. * man/*.Rd: classes in quotes, more links, remove CVS lines. * R/lme.R, R/newFunc.R, tests/predict.lme.R: fix asOneFormula and predict.lme for y ~ 0. (see https://stat.ethz.ch/pipermail/r-devel/2013-September/067600.html) * R/lme.R: Several of the return components were incorrect for a model of the form fixed = resp ~ 0. 2013-08-17 Brian Ripley * add start on ko translations. 2013-08-15 Brian Ripley * DESCRIPTION: version is 3.1-111 * R/lmList.R: Adjust to cope with failed fits and fits with fewer coefficients returned by lm(). (Contributed by Ruth Ripley.) 2013-07-02 Brian Ripley * DESCRIPTION: version is 3.1-110, * R/{gls,gnls,lme}.R: Replace as.name() calls by quote(stats::nls) etc. * inst/LICENCE: remove. 2013-03-21 Brian Ripley * inst/CITATION: modernize. 2013-03-11 Brian Ripley * LICENCE: remove (it was not a licence file). 2013-01-26 Brian Ripley * DESCRIPTION: version is 3.1-109, depends on R (>= 3.0.0). 2013-01-26 Brian Ripley * DESCRIPTION: version is 3.1-108, depends on R (< 3.0.0) and has chol.f and rs.f in .Rbuildignore. 2013-01-23 Brian Ripley * man/[n]lme.Rd: add a note about the need to scale the response. * man/lmeControl.Rd: correct description of 'msTol' argument. * man/[n]lmeControl.Rd: correct description of 'opt' argument (it is a character string). * man/*.Rd: s/Jose/José/ * R/[n]lme.R, man/[n]lmeControl.Rd: allow '...' for further control arguments to be based though to nlminb() and optim(). 2013-01-13 Brian Ripley * DESCRIPTION: add accent on JCP's first name (and declare UTF-8 encoding). Add EISPACK authors. * src/rs.f: minimal version of eigen.f containing just RS and ancillaries (replacing eigen.f). 2013-01-12 Brian Ripley * DESCRIPTION: version is 3.1-107 * src/{chol,eigen}.f: port files from R (where they are deprecated/defunct). 2012-12-06 Kurt Hornik * DESCRIPTION: version is 3.1-106, add roles to Authors@R. 2012-11-28 Brian Ripley * NAMESPACE: import selectively from lattice and stats. 2012-09-24 Brian Ripley * DESCRIPTION: version is 3.1-105 * R: improve messages for translation. 2012-09-01 Brian Ripley * po: add Polish translations. 2012-08-30 Brian Ripley * src/init.c: force use of registered symbols in R >= 2.16.0 2012-05-23 Brian Ripley * DESCRIPTION: version is 3.1-104 * src/gnls.c, src/nlme.c, src/nlmefit.[ch]: type mismatches shown by clang's -Wconversion 2012-04-25 Brian Ripley * src/nlmefit.c: type mismatch shown by clang's -Wconversion 2012-03-29 Brian Ripley * src/nlOptimizer.c: increase PROTECTion (reported by Andrew Runnalls). 2012-02-15 Brian Ripley * inst/CITATION: protect against TRE bug in UTF-8 locales. 2012-01-14 Brian Ripley * DESCRIPTION: version is 3.1-103 2011-12-25 Brian Ripley * DESCRIPTION: needs Suggests: MASS for data(package=) 2011-07-19 Brian Ripley * DESCRIPTION: version is 3.1-102 * R/newMethods.R: getData.nls (aka getData.lme) used the na.action of the call on the whole data and not on the model frame: should have used the na.action component of the result. * tests/{lme.R,lme.Rout.save,ss2.rda}: test for above. * man/simulate.lme: document as method. 2011-07-11 Brian Ripley * COPYING: rename to GPL-2 * LICENCE, inst/LICENCE: adjust wording accordingly 2011-05-30 Brian Ripley * R/newFunc.R: name arguments to lapply() when ... is present. 2011-05-06 Brian Ripley * DESCRIPTION: version is 3.1-101 2011-04-23 Martin Maechler 2011-04-14 Martin Maechler * man/augPred.Rd, R/groupedData.R, R/gls.R, R/lme.R, R/simulate.R Changes he failed to document. 2011-03-26 Brian Ripley * src/{nlmefit,pdMat}.c: remove unused variables detected by -Wunused-but-set-variable 2011-03-11 Brian Ripley * Release 3.1-100 for R 2.13.0 * NAMESPACE: no longer re-export BIC * man/BIC.Rd: removed. 2011-02-23 Brian Ripley * DESCRIPTION: version is 3.1-100, require R >= 2.13 * man/BIC.Rd: make a stub referring to stats::BIC() * Everywhere: remove obsolete email addresses of former authors 2011-02-23 Brian Ripley * DESCRIPTION: version is 3.1-99 (unreleased, used for R-devel), remove email addresses of former authors (and JCP has moved). * R/{new,zz}Methods.R: Put all BIC() methods in one place, as the default method. * man/BIC.Rd: remove aliases to methods (not all of which actually existed) * man/BIC.logLik.Rd: merge into BIC.Rd * tests/lme.Rout.save: update for R 2.13.0. * NAMESPACE, R/newMethods.R: prepare for migration of BIC() to stats. * R/{gls,gnls,lme}.R, NAMESPACE: add nobs() methods. 2011-02-10 Brian Ripley * DESCRIPTION (Version, Date): 3.1-98 2011-02-04 Brian Ripley * data/{MathAchieve,bdf}.rda: resave with xz compression. * DESCRIPTION: depend on R (>= 2.10). 2010-10-01 Brian Ripley * DESCRIPTION (Version, Date): 3.1-97 2010-09-22 Brian Ripley * man/residuals.gls.Rd: incorrect default, see https://stat.ethz.ch/pipermail/r-devel/2010-September/058487.html 2009-12-22 Brian Ripley * man/ACF.gls.Rd: has \seealso to itself: seems ACF.lme was meant. 2009-12-18 Brian Ripley * DESCRIPTION: add BugReports field. 2009-10-12,16 Brian Ripley * DESCRIPTION (Version, Date): 3.1-96 * po/R-de.po, po/de.po: update 2009-09-16 Martin Maechler * DESCRIPTION (Version, Date): 3.1-95 * R/nlme.R (nonlinModel): use unname() instead of clearNames() 2009-09-02 Brian Ripley * DESCRIPTION (Version, Date): 3.1-94 * man/*.Rd: remove unnecessarily anchored links, including several incorrect ones. 2009-08-16 Brian Ripley * DESCRIPTION (Version, Date): 3.1-93 * R/lmList.R, tests/lmList.R: bug fix for predict.lmList (PR#13788) * R/gls.R, tests/anova.gls.R: bug fix for anova.gls (PR#13567) 2009-05-30 Brian Ripley * R/gnls.R, R/corStruct.Rd: minor message wording changes from Debian 'bug' report. * R/R-de.po: add [ Missing entries for 3.1-9[12] which were concerned with German translations. ] 2009-01-16 Brian Ripley * man/*.Rd: expand tabs 2008-12-30 Brian Ripley * man/summary.pdMat.Rd: avoid embedded newlines in \code strings. 2008-12-27 Brian Ripley * DESCRIPTION (Version, Date): 3.1-90 * R/gls.R: call dist correctly (PR#13418) 2008-12-19 Brian Ripley * man/*.Rd: clean up some reference formats and misuse of $...$. 2008-12-11 Brian Ripley * man/*.Rd: spelling * src/nlOptimizer.c: missing PROTECT 2008-06-07 Brian Ripley * DESCRIPTION (Version, Date): 3.1-89 * R/lme.R: fitted.lme() always dropped, when it should drop for one column but not for one row. * tests/lme.R, lme.Rout.save: add regression test for single-row predictions. 2008-04-10 Brian Ripley * R/zzMethods.R: add .onUnload() to unload the DLL. 2008-03-30 Brian Ripley * DESCRIPTION (Version, Date): 3.1-88 2008-02-19 Brian Ripley * man/logLik.lme.Rd, man/logLik.gnls.Rd: correct description of 'REML' argument. 2008-02-19 Brian Ripley * inst/CITATION: add file (essentially what citation() would produce, without the warning). 2008-02-18 Brian Ripley * DESCRIPTION (Version, Date): 3.1-87 * R/gnls.R, tests/gls.R: fix for PR#10364, missing row names on predict.gnls. 2008-02-11 Duncan Murdoch * R/*.R: Return invisible(x) from numerous print methods. 2007-12-30 Douglas Bates * [r4884] man/plot.nffGroupedData.Rd: Correct malformed link reported by Yihui Xie . Remove reference to nonexistent URL. * [r4885] Initialize.reStruct.Rd, collapse.groupedData.Rd, fitted.lmeStruct.Rd, lme.Rd, lme.groupedData.Rd, lme.lmList.Rd, logLik.reStruct.Rd, nlme.nlsList.Rd, plot.nfnGroupedData.Rd, plot.nmGroupedData.Rd, recalc.reStruct.Rd, residuals.lme.Rd, residuals.lmeStruct.Rd: Remove reference to nonexistent URL 2007-10-04 Kurt Hornik * DESCRIPTION (Version, Date): 3.1-86 2007-10-04 Brian Ripley * R/corStruct.R: check for uninitialized corARMA structures. 2007-09-17 Brian Ripley * DESCRIPTION (Version, Date): 3.1-85 Also, use approved form of GPL (>=2). * R/varFunc.R: fix for PR#9831. * tests/coef.R: test for the above. * tests/lme.Rout.save: update format for R >= 2.6.0. * man/corRatio.Rd: wrong formula, reported to R-devel by Ben Bolker on 2007-09-03. 2007-07-26 Brian Ripley * DESCRIPTION (Version, Date): 3.1-84 * LICENCE, inst/LICENCE: clarify this is licensed under GPL >= 2. * README, R/*.R, src/*.[ch]: Update source for GPL. * man/*.Rd: add header with licence conditions 2007-07-02 Brian Ripley * R/varFunc.R: varIdent did not look at its 'fixed' arg, PR#9765 * tests/varIndent.R: test for the above. 2007-06-13 Brian Ripley * R/VarCov.R: correct getVarCov.gls, PR#9752 2007-06-13 Brian Ripley * DESCRIPTION (Version, Date): 3.1-83 Also, update authors and email addresses where known. * R/lme.R: called quantile on potentially missing values. * tests/missing.{R,Rout.save}: test summary methods 2007-06-12 Brian Ripley * DESCRIPTION (Version, Date): 3.1-82 Also, R >= 2.4.0 because of seq_along. * tests/lme.Rout.save: back to 2.5.1 layout. 2007-05-29 Brian Ripley * R/{gls,lme,pdMat}.R: qualify uses of nchar() by 'type'. * R/lme.R: layout of over-long error message. * tests/lme.Rout.save: update for above and for 2.6.0 layout. * R/{gls,gnls,lme,nlme}.R: copy row names to fitted values and residuals. * R/{gls,gnls,lme}.R: support naresid and napredict. * man/{residuals,fitted}.lme.Rd: document this. * tests/missing.{R,Rout.save}: tests of missing-value support. 2007-05-20,24 Brian Ripley * R/*.R: partial matching issues, switch to seq_along. 2007-05-15 Brian Ripley * DESCRIPTION (Version, Date): 3.1-81 * NAMESPACE, R/zzMethods.R: migrate vcov methods from stats to here. 2007-05-04 Brian Ripley * man/{Extracr.pdMat,getdata.*,summary.varFunc}.Rd: remove surplus }. 2007-03-30 Brian Ripley * DESCRIPTION (Version, Date): 3.1-80 * R/nlme.R (contrMat): Allow for expressions in 'fixed'. * tests/contrMat.R: regression test for above. * R/gls.R: bug fix for the case of y ~ 0. * tests/gls.R: regression test for above. * R/{lme,lmList,newMethods}.R: patch for lattice 0.15-x. 2007-01-30 Brian Ripley * DESCRIPTION (Title): Capitalize for consistency. 2006-12-29 Brian Ripley * DESCRIPTION (Version, Date): 3.1-79 * R/corStruct.R, R/pdMat.R, R/reStruct.R, man/corStruct.Rd, man/pdMat.Rd, man/reStruct.Rd: add '...' argument to as.matrix() methods. (Needed for 2.5.0, but works in earier versions.) 2006-12-10 Douglas Bates * DESCRIPTION (Version, Date): 3.1-78 2006-12-06 Douglas Bates * R/nlme.R (contrMat): Ensure that the contrasts component is a list of matrices by expanding function names if necessary. 2006-11-29 Douglas Bates * DESCRIPTION: Prepare for new version. * R/newMethods.R (getData.nls): getData.nls for R's nls objects * inst/scripts/ch*.R: update Pinheiro and Bates (2000) scripts 2006-11-29 Brian Ripley * R/reStruct.R: fix PR#9262, multiple-line deparse. * R/gls.R, groupedData.R, lme.R, lmList.R, newMethods,R, nlme.R: more deparse width issues. 2006-09-28 Douglas Bates * R/nlme.R (getParsNlme): backed out change that caused failure reported by Christian Ritz. 2006-09-18 Douglas Bates * R/VarCorr.R (VarCorr): Clean up problems in this file and several others detected by codetools. 2006-09-11 Douglas Bates * R/nlme.R (getParsNlme): '[[' not '[' in case start$fixed is a list * R/gls.R,gnls.R,newMethods.R,nlme.R,pdMat,Rsimulate.R: fix problems exposed by codetools. 2006-07-31 Douglas Bates * man/ranef.lme.Rd: Modified the description of the `standard' argument to more clearly describe its effect. 2006-07-24 Douglas Bates * R/lme.R: Patch by Andrew Robinson and Berwin Turlach to set maximum number of function calls in nlminb. 2006-07-03 Douglas Bates * DESCRIPTION: Version is 3.1-75 * man/{many files}: Documentation changes contributed by Spencer Graves . Most of the changes add Pinheiro and Bates (2000) as a reference or add additional \seealso{} entries. Some examples from Pinheiro and Bates (2000) have also been added. * R/nlme.R: reformat the code, typo. 2006-07-03 Martin Maechler * R/lme.R (lme.formula): when control()$returnObject is TRUE, only warn instead of stop() in the case of non-convergence. * tests/lme.R: test the above * tests/lme.Rout.save: 2006-06-02 Brian Ripley * DESCRIPTION: Version is 3.1-74 2006-05-31 Brian Ripley * R/lme.R: Keep terms and optional model frame in lme.formula. Use terms for prediction (get safe prediction that way). Add keep.data argument to lme and methods. * man/lme*.Rd: update for keep.data argument. * R/newMethods.R: make use of saved data in getData methods. * tests/getData.R, tests/predict.lme.R: new tests. 2006-05-24 Brian Ripley * R/gls.R, man/comparePred.Rd: 'minimum' and 'maximum' were evaluated on a formula in the comparePred methods. Instead, evaluate 'primary' in the 'data' used to fit object1, and document what is done. (Reported by Mark Difford.) 2006-05-22 Brian Ripley * DESCRIPTION: Version is 3.1-73 2006-05-21 Brian Ripley * LICENCE, inst/LICENCE: add and install a licence file. 2006-05-18 Brian Ripley * R/groupedData.R: adjust method of as.data.frame. * R/newFunc.R: fix bug in gsummary with objects that have classes, e.g. Hmisc labels. (Reported by Mark Difford, in a private followup to https://stat.ethz.ch/pipermail/r-help/2006-May/094549.html.) * tests/augPred_lab.R: tests for the above fix. 2006-05-12 Brian Ripley * R/gls.R, R/gnls.R, R/nlme.R: missing data=data in terms calls, needed to resolve '.' on rhs of formulae. * DESCRIPTION: Version is 3.1-72 2006-03-29 Brian Ripley * R/newMethods.R: as.list() did not work on symbols in R. 2006-03-14 Brian Ripley * R/lme.R, man/Variogram.Rd: make example work (na.omit in the wrong place). 2006-03-10 Brian Ripley * DESCRIPTION: Version is 3.1-71 2006-02-17 Brian Ripley * R/nlsList.R: need to allow for multi-line deparse. * tests/deparse.R: add regression test 2006-01-05 Brian Ripley * DESCRIPTION: Version is 3.1-70 * src/init.c, src/Makevars: make use of gcc4 visibility where supported * inst/mlbook/ch0[45].R: remove unnecessary use of data() * inst/scripts/ch0[58].R: all allowed versions of R have nlminb * R/gls.R: element 'optimMethod' in the return value for glsControl was unnamed. * R/{gls,ngls,lme,nlme}.R, man/{gls,ngls,lme,nlme}Control.Rd: let the user (rather than the version of R) choose the optimizer to be used. 2006-01-05 Brian Ripley * src/init.c: missing registration for ARMA_constCoef * inst/scripts/ch02.R: correct argument names in simulate.lme call 2005-12-31 Brian Ripley * DESCRIPTION: Version is 3.1-69, require 2.3.0. * NAMESPACE: use registration. * R/*.R: use registered symbols. 2005-12-31 Brian Ripley * DESCRIPTION: Version is 3.1-68. * src/init.c: new file to register symbols * R/corStruct.R: corrected one use of PACKAGE="base" * R/lmList.R: remove attempted use of 'frame = 1' 2005-12-09 Deepayan Sarkar * R/newMethods.R, R/groupedData.R: fix for problem described in https://stat.ethz.ch/pipermail/r-help/2005-December/082890.html (superpose.line/symbol components were being truncated to length of an arbitrary component). 2005-12-09 Brian Ripley * DESCRIPTION: Version is 3.1-67. * R/gls.R: Replace do.call by eval.parent on massaged call. * po/fr.R, po/R-fr.R, inst/po: add French translation by Philippe Grosjean and automated en@quot translation. 2005-08-25 Douglas Bates * R/gls.R: Added option "optimMethod" to gls, gnls, and lme. 2005-08-24 Douglas Bates * R/lme.R (print.intervals.lme): Replace calls to print.matrix by print(as.matrix()). 2005-07-25 Douglas Bates * inst/scripts/ch08.R: Cleaned up examples in ch04, ch06, ch08. * src/matrix.h: Include R_Ext/Linpack.h in addition to R_Ext/Applic.h 2005-07-19 Douglas Bates * R/gnls.R: Added definition of convIter when using nlminb or when using optim. Reindented this and other R source files. 2005-07-12 Douglas Bates * inst/scripts/ch01.R: Clean up and check these scripts * src/nlmefit.c (gls_loglik): re-write contributed by ?? (I accidently deleted the email message). * R/lme.R (lme.formula): Use nlminb if available. 2005-06-08 Douglas Bates * R/lme.R (predict.lme): Fixed bug when using a name for a formula in original fit. (Reported by Arne.Mueller@sanofi-aventis.com) 2005-05-20 Douglas Bates * man/contr.SAS.Rd: Removed 2005-04-04 Douglas Bates * R/newFunc.R: Removed contr.SAS definition as it has been revised and moved into the stats package for R-2.1.0 2005-03-02 Douglas Bates * src/nlmefit.c (gls_loglik): Replaced rnkm1 by p. * po/,inst/po/: Added localization support. 2004-11-04 Douglas Bates * src/nlmefit.c (dimFree): Fix memory leak reported by Brian Ripley. 2004-11-03 Douglas Bates * man/varWeights.Rd: Remove all calls to data() * man/corExp.Rd: Remove all references to the mva package 2004-08-10 Douglas Bates * man/pairs.compareFits.Rd: fix syntax errors (new check available in R CMD check) 2004-01-14 Douglas Bates * man/getCovariate.varFunc.Rd: Syntax correction from Kurt. 2003-12-16 Douglas Bates * install.R: Create stored image 2003-08-29 Douglas Bates * tests/lme.Rout.save (Coefficients): Now consistent with i386-linux result. * src/base.h: Replace R_ext/Mathlib.h by Rmath.h 2003-08-09 Douglas Bates * man/Covariate.varFunc.Rd, man/Matrix.pdMat.Rd, man/Matrix.reStruct.Rd, man/Names.pdMat.Rd, man/Names.reStruct.Rd, man/coef.corStruct.Rd, man/coef.modelStruct.Rd, man/coef.pdMat.Rd, man/coef.reStruct.Rd, man/coef.varFunc.Rd, man/getData.lmList.Rd, man/gnls.Rd: Use \method for replacement method documentation as per Rd changes * R/lme.R: Changed check for intercept-like column in getFixDF (PR#2418) 2003-06-12 Douglas Bates * DESCRIPTION: New release * man/ranef.lmList.Rd, man/nlme.Rd: Overdocumented arguments 2003-06-10 Douglas Bates * man/MathAchSchool.Rd, man/MathAchieve.Rd, ChangeLog, DESCRIPTION, R/groupedData.R, inst/scripts/ch03.R, inst/scripts/ch04.R: Release 3.1-42 * inst/scripts/ch01.R: Protecting power in formula 2003-06-10 Douglas Bates * R/groupedData.R: Fixed bug in groupedData constructor when outer is not missing. 2003-05-16 Douglas Bates * src/nlmefit.c (internal_EM): Fix by Peter Dalgaard for compound symmetry EM calculations (PR#2985) 2003-05-05 Douglas Bates * R/lmList.R (update.lmList): Changed this and several other update methods. * R/groupedData.R: Use eval instead of do.call (Dieter Menne) 2003-04-17 Douglas Bates * NAMESPACE: contributed by Brian Ripley * man/print.corStruct.Rd: Removed this and many other redundant documentation files for S3 methods. * R/ Remove redundant GPL notices. 2003-03-25 Douglas Bates * R/nlme.R (nonlinModel): Moved definition from AAA.R to here * man/summary.nlsList.Rd: Remove references to summary.nls * R/newMethods.R: Remove vestigial definitions of AIC.lm * R/zzMethods.R: Remove references to AIC.lm 2003-02-08 Douglas Bates * R/lme.R (lme.formula): Removed hessian=TRUE in calls to optim as suggested by Brian Ripley. 2003-01-30 Douglas Bates * R/lme.R: Incorporate change from Brian Ripley in response to Dieter Menne * man/lme.lmList.Rd, man/lme.groupedData.Rd, man/lme.Rd: Documentation of the contrasts argument added (Greg Warnes). 2003-01-30 Douglas Bates * R/lme.R (lme.formula): Incorporate Greg Warnes' changes for the contrasts argument. * R/nlsList.R: Correct check for is.null(class(FUN)) 2002-12-27 Douglas Bates * R/newFunc.R (gsummary): Fix comparison in check for varying columns (PR#1775 - bug report with fix provided by Dieter Menne. 2002-12-11 Douglas Bates * R/lme.R (print.lme): Removed one more as.vector() * R/varFunc.R (print.summary.varFixed): changed instances of deparse(as.vector(x)) to deparse(x) here and in many other places. 2002-09-10 Saikat DebRoy * nlsList.R (nlsList.formula): Use "try" instead of "restart". 2002-08-09 Douglas Bates * R/groupedData.R: Fixed creation of grouped data from a formula only * R/newGenerics.R: Renamed the initialize generic and all methods and calls to Initialize so as not to conflict with the methods package. 2002-07-23 Douglas Bates * R/lme.R (update.lme): Fix formula handling in update methods (Brian Ripley). 2002-04-20 Douglas Bates * R/nlme.R: Bug fix by SDR - convergence criterion was being calculated incorrectly. 2002-04-04 Douglas Bates * man/getVarCov.Rd: Added an example of the type="marginal" Corrected misplaced brace. * R/VarCov.R (getVarCov.lme): Added the getVarCov functions contributed by Mary Lindstrom 2002-03-27 Douglas Bates * R/lme.R (anova.lme): Change strvar != "NA" to !is.na(strvar) 2002-03-05 Douglas Bates * man/ACF.gls.Rd: Changed Jose's email address on this and all the other man pages. * R/varFunc.R: Incorporate fix from Thomas Lumley and from Setzer Woodrow for the logic where ifelse(length(el) == 1, is used instead of if(length(el) == 1) * R/pdMat.R: Change all vestigial instances of T and F to TRUE and FALSE. 2001-12-18 Douglas Bates * R/corStruct.R: Finally resolved the print.summary.corSymm controversy so it prints and it prints the correct value. 2001-12-10 Douglas Bates * R/lme.R: unclassed the logLik component of an lme summary before trying to put it into a data frame for printing. 2001-12-01 Douglas Bates * R/zzMethods.R: Removed the .Alias calls. 2001-10-30 Douglas Bates * man/pairs.lme.Rd: Modified many documentation files to pass the codoc checks. 2001-10-23 Douglas Bates * man/ACF.lme.Rd: Modified many, many method definitions and documentation files to get them to pass the R-1.4.0 (in development) package checking process. 2001-10-08 Douglas Bates * R/lmList.R: Fixed definition of logLik.lmList to work with R (but it is still rather ugly). * R/varFunc.R: Changed definition of logLik.varComb to return a logLik object. 2001-10-05 Douglas Bates * R/lmList.R: Fixed selection of id[subscripts] in the panel function of pairs.lmList (and several other functions) so it does not produce a warning from evaluating is.na(NULL). 2001-09-17 Douglas Bates * R/nlme.R: Incorporated a change from Setzer.Woodrow@epamail.epa.gov for using nested grouping factors in nlme. 2001-06-20 Douglas Bates * R/varFunc.R: Changes in calling sequences and in documentation so the package passes codoc() checks. These affect many files in both the R and the man directory. No changes of substance. 2001-05-29 Martin Maechler * R/zzMethods.R: Use .Alias() * R/newGenerics.R: Generic AIC() * R/newMethods.R: logLik.lm() moved to "base R" * man/AIC.Rd, * man/AIC.logLik.Rd: AIC.logLik() and AIC.lm() as well * man/logLik.lm.Rd: 2001-03-28 Douglas Bates * R/simulate.R: Modified simulate.lme for default pdMat class of pdLogChol. 2001-02-24 Douglas Bates * R/newFunc.R: Removed the old fake xyplot function. The new work by Murrell and Sarkar will make this superfluous. * man/MEestimate.Rd: Added manual pages for MEEM, MEdecomp, MEestimate. * R/newMethods.R: Revised assignments in plotting methods to be compatible with the Murrell/Sarkar preliminary trellis package. * src/nlmefit.c (internal_decomp): Corrected an error reported by Kathryn Chaloner where Srows >= ZXrows. 2001-01-10 Douglas Bates * DESCRIPTION (Maintainer): Added Maintainer entry to DESCRIPTION. 2000-12-09 Douglas Bates * R/lme.R: (Variogram.lme) Coerced n.pairs to numeric and corrected calls to dist. 2000-12-08 Douglas Bates * R/lme.R: Changed all calls to dist in lme.R, gls.R and corStruct.R to use the argument "method" rather than "metric". * R/pdMat.R: Replaced calls to .Fortran("dbksl", ...) with calls to the R function solve() for R-1.2.0 where the S_compat.c file has been removed. * inst/scripts/ch01.R: Added the chapter scripts from "Mixed-Effects Models in S and S-PLUS" to the inst directory. * man/formula.nlme.Rd: Modified the examples in this and many other .Rd files to use the Loblolly data and the SSasymp self-starting function. There were many occasions where the Soybean data was being fit to a default formulation of an nlme model just to get things like a formula. This fit of the Soybean data is difficult and time consuming and not very illuminating. 2000-11-30 Douglas Bates * src/matrix.c: Removed dependency on S_compat.h by replacing calls to dqrdca with the equivalent call to dqrdc2. 2000-07-24 Saikat DebRoy * Changed various uses of do.call to eval. The reason for doing this is to allow calls to the function calling eval from within another function. It's the old scoping problem again. 2000-07-07 Saikat DebRoy * src/nlme.c, src/nlmefit.c: Added mixed_grad in calls to optif9. * src/nlmefit.c : Added handling of pdLogChol objects (pdClass = 4) in various functions. * src/nlmefit.c (mixed_grad): New function giving analytic gradient for mixed-effects log-likelihood. * R/nlme.R (nlme.formula): Added updating of the pdFactor in the PNLS step. * R/reStruct.R: Made pdLogChol the default representation for reStruct objects. * src/pdMat.c (logChol_pd): new function. * R/pdMat.R: Added back the pdLogChol class and associated methods. 2000-07-03 Douglas Bates * man/corFactor.corStruct.Rd: Added an alias for corFactor.corNatural * src/nlmefit.c (internal_loglik): Changed the return value on error from R_NegInf to -DOUBLE_XMAX so the optif[09] optimizers will work properly. * src/corStruct.c (corStruct_factList): Provided a correct call to the R version of F77_CALL(chol) here and everywhere else in this source file. * R/zzz.R: Removed the deprecated call to provide 2000-03-17 Douglas Bates * added many data sets * incorporated patches from Brian Ripley to use optim for the optimization rather than nlm * src/nlmefit.c (internal_loglik): Returned R_NegInf instead of generating a error on a singular precision matrix. * DESCRIPTION (Depends): Changed Depends to R version 1.0.1 because of problem with assigning components of lists. 1999-12-23 Douglas Bates * TITLE: Changed the title to nlme nlme/man/0000755000176000001440000000000012231177503012011 5ustar ripleyusersnlme/man/getGroups.gls.Rd0000644000176000001440000000344212222512062015037 0ustar ripleyusers% File nlme/man/getGroups.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getGroups.gls} \title{Extract gls Object Groups} \usage{ \method{getGroups}{gls}(object, form, level, data, sep) } \alias{getGroups.gls} \arguments{ \item{object}{an object inheriting from class \code{gls}, representing a generalized least squares fitted linear model.} \item{form}{an optional formula with a conditioning expression on its right hand side (i.e. an expression involving the \code{|} operator). Defaults to \code{formula(object)}. Not used.} \item{level}{a positive integer vector with the level(s) of grouping to be used when multiple nested levels of grouping are present. This argument is optional for most methods of this generic function and defaults to all levels of nesting. Not used.} \item{data}{a data frame in which to interpret the variables named in \code{form}. Optional for most methods. Not used.} \item{sep}{character, the separator to use between group levels when multiple levels are collapsed. The default is \code{'/'}. Not used.} } \description{ If present, the grouping factor associated to the correlation structure for the linear model represented by \code{object} is extracted. } \value{ if the linear model represented by \code{object} incorporates a correlation structure and the corresponding \code{corStruct} object has a grouping factor, a vector with the group values is returned; else, \code{NULL} is returned. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}, \code{\link{corClasses}}} \examples{ fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) getGroups(fm1) } \keyword{models} nlme/man/plot.gls.Rd0000644000176000001440000001127312222512062014037 0ustar ripleyusers% File nlme/man/plot.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.gls} \title{Plot a gls Object} \usage{ \method{plot}{gls}(x, form, abline, id, idLabels, idResType, grid, \dots) } \alias{plot.gls} \arguments{ \item{x}{an object inheriting from class \code{"\link{gls}"}, representing a generalized least squares fitted linear model.} \item{form}{an optional formula specifying the desired type of plot. Any variable present in the original data frame used to obtain \code{x} can be referenced. In addition, \code{x} itself can be referenced in the formula using the symbol \code{"."}. Conditional expressions on the right of a \code{|} operator can be used to define separate panels in a Trellis display. Default is \code{resid(., type = "p") ~ fitted(.) }, corresponding to a plot of the standardized residuals versus fitted values, both evaluated at the innermost level of nesting.} \item{abline}{an optional numeric value, or numeric vector of length two. If given as a single value, a horizontal line will be added to the plot at that coordinate; else, if given as a vector, its values are used as the intercept and slope for a line added to the plot. If missing, no lines are added to the plot.} \item{id}{an optional numeric value, or one-sided formula. If given as a value, it is used as a significance level for a two-sided outlier test for the standardized residuals. Observations with absolute standardized residuals greater than the \eqn{1 - value/2} quantile of the standard normal distribution are identified in the plot using \code{idLabels}. If given as a one-sided formula, its right hand side must evaluate to a logical, integer, or character vector which is used to identify observations in the plot. If missing, no observations are identified.} \item{idLabels}{an optional vector, or one-sided formula. If given as a vector, it is converted to character mode and used to label the observations identified according to \code{id}. If given as a one-sided formula, its right hand side must evaluate to a vector which is converted to character mode and used to label the identified observations. Default is the innermost grouping factor.} \item{idResType}{an optional character string specifying the type of residuals to be used in identifying outliers, when \code{id} is a numeric value. If \code{"pearson"}, the standardized residuals (raw residuals divided by the corresponding standard errors) are used; else, if \code{"normalized"}, the normalized residuals (standardized residuals pre-multiplied by the inverse square-root factor of the estimated error correlation matrix) are used. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"pearson"}.} \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default depends on the type of Trellis plot used: if \code{xyplot} defaults to \code{TRUE}, else defaults to \code{FALSE}.} \item{\dots}{optional arguments passed to the Trellis plot function.} } \description{ Diagnostic plots for the linear model fit are obtained. The \code{form} argument gives considerable flexibility in the type of plot specification. A conditioning expression (on the right side of a \code{|} operator) always implies that different panels are used for each level of the conditioning factor, according to a Trellis display. If \code{form} is a one-sided formula, histograms of the variable on the right hand side of the formula, before a \code{|} operator, are displayed (the Trellis function \code{histogram} is used). If \code{form} is two-sided and both its left and right hand side variables are numeric, scatter plots are displayed (the Trellis function \code{xyplot} is used). Finally, if \code{form} is two-sided and its left had side variable is a factor, box-plots of the right hand side variable by the levels of the left hand side variable are displayed (the Trellis function \code{bwplot} is used). } \value{ a diagnostic Trellis plot. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}, \code{\link{xyplot}}, \code{\link{bwplot}}, \code{\link{histogram}} } \examples{ fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) # standardized residuals versus fitted values by Mare plot(fm1, resid(., type = "p") ~ fitted(.) | Mare, abline = 0) # box-plots of residuals by Mare plot(fm1, Mare ~ resid(.)) # observed versus fitted values by Mare plot(fm1, follicles ~ fitted(.) | Mare, abline = c(0,1)) } \keyword{models} nlme/man/summary.pdMat.Rd0000644000176000001440000000403712222512062015036 0ustar ripleyusers% File nlme/man/summary.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{summary.pdMat} \title{Summarize a pdMat Object} \usage{ \method{summary}{pdMat}(object, structName, noCorrelation, \dots) } \alias{summary.pdMat} \alias{summary.pdBlocked} \alias{summary.pdCompSymm} \alias{summary.pdDiag} \alias{summary.pdIdent} \alias{summary.pdNatural} \alias{summary.pdSymm} \alias{summary.pdLogChol} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive definite matrix.} \item{structName}{an optional character string with a description of the \code{pdMat} class. Default depends on the method function: \code{"Blocked"} for \code{pdBlocked}, \code{"Compound Symmetry"} for \code{pdCompSymm}, \code{"Diagonal"} for \code{pdDiag}, \code{"Multiple of an Identity"} for \code{pdIdent}, \code{"General Positive-Definite, Natural Parametrization"} for \code{pdNatural}, \code{"General Positive-Definite"} for \code{pdSymm}, and \code{data.class(object)} for \code{pdMat}.} \item{noCorrelation}{an optional logical value indicating whether correlations are to be printed in \code{print.summary.pdMat}. Default depends on the method function: \code{FALSE} for \code{pdDiag} and \code{pdIdent}, and \code{TRUE} for all other classes.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ Attributes \code{structName} and \code{noCorrelation}, with the values of the corresponding arguments to the method function, are appended to \code{object} and its class is changed to \code{summary.pdMat}. } \value{ an object similar to \code{object}, with additional attributes \code{structName} and \code{noCorrelation}, inheriting from class \code{summary.pdMat}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{print.summary.pdMat}}, \code{\link{pdMat}}} \examples{ summary(pdSymm(diag(4))) } \keyword{models} nlme/man/getGroupsFormula.Rd0000644000176000001440000000344012222512062015577 0ustar ripleyusers% File nlme/man/getGroupsFormula.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getGroupsFormula} \title{Extract Grouping Formula} \usage{ getGroupsFormula(object, asList, sep) } \alias{getGroupsFormula} \alias{getGroupsFormula.default} \alias{getGroupsFormula.gls} \alias{getGroupsFormula.lmList} \alias{getGroupsFormula.lme} \alias{getGroupsFormula.reStruct} \arguments{ \item{object}{any object from which a formula can be extracted.} \item{asList}{an optional logical value. If \code{TRUE} the returned value with be a list of formulas; else, if \code{FALSE} the returned value will be a one-sided formula. Defaults to \code{FALSE}.} \item{sep}{character, the separator to use between group levels when multiple levels are collapsed. The default is \code{'/'}.} } \description{ The conditioning expression associated with \code{formula(object)} (i.e. the expression after the \code{|} operator) is returned either as a named list of one-sided formulas, or a single one-sided formula, depending on the value of \code{asList}. The components of the returned list are ordered from outermost to innermost level and are named after the grouping factor expression. } \value{ a one-sided formula, or a list of one-sided formulas, with the grouping structure associated with \code{formula(object)}. If no conditioning expression is present in \code{formula(object)} a \code{NULL} value is returned. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{getGroupsFormula.gls}}, \code{\link{getGroupsFormula.lmList}}, \code{\link{getGroupsFormula.lme}}, \code{\link{getGroupsFormula.reStruct}}, \code{\link{getGroups}} } \examples{ getGroupsFormula(y ~ x | g1/g2) } \keyword{models} nlme/man/pdIdent.Rd0000644000176000001440000000630212222512062013661 0ustar ripleyusers% File nlme/man/pdIdent.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdIdent} \title{Multiple of the Identity Positive-Definite Matrix} \usage{ pdIdent(value, form, nam, data) } \alias{pdIdent} \arguments{ \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric value. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} } \description{ This function is a constructor for the \code{pdIdent} class, representing a multiple of the identity positive-definite matrix. The matrix associated with \code{object} is represented by 1 unrestricted parameter, given by the logarithm of the square-root of the diagonal value. When \code{value} is \code{numeric(0)}, an uninitialized \code{pdMat} object, a one-sided formula, or a vector of character strings, \code{object} is returned as an uninitialized \code{pdIdent} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is an initialized \code{pdMat} object, \code{object} will be constructed from \code{as.matrix(value)}. Finally, if \code{value} is a numeric value, it is assumed to represent the unrestricted coefficient of the underlying positive-definite matrix. } \value{ a \code{pdIdent} object representing a multiple of the identity positive-definite matrix, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{pdClasses}}, \code{\link{matrix<-.pdMat}}} \examples{ pd1 <- pdIdent(4 * diag(3), nam = c("A","B","C")) pd1 } \keyword{models} nlme/man/summary.gls.Rd0000644000176000001440000000424612222512062014560 0ustar ripleyusers% File nlme/man/summary.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{summary.gls} \title{Summarize a gls Object} \usage{ \method{summary}{gls}(object, verbose, \dots) } \alias{summary.gls} \arguments{ \item{object}{an object inheriting from class \code{"\link{gls}"}, representing a generalized least squares fitted linear model.} \item{verbose}{an optional logical value used to control the amount of output when the object is printed. Defaults to \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ Additional information about the linear model fit represented by \code{object} is extracted and included as components of \code{object}. } \value{ an object inheriting from class \code{summary.gls} with all components included in \code{object} (see \code{\link{glsObject}} for a full description of the components) plus the following components: \item{corBeta}{approximate correlation matrix for the coefficients estimates} \item{tTable}{a data frame with columns \code{Value}, \code{Std. Error}, \code{t-value}, and \code{p-value} representing respectively the coefficients estimates, their approximate standard errors, the ratios between the estimates and their standard errors, and the associated p-value under a \eqn{t} approximation. Rows correspond to the different coefficients.} \item{residuals}{if more than five observations are used in the \code{gls} fit, a vector with the minimum, first quartile, median, third quartile, and maximum of the residuals distribution; else the residuals.} \item{AIC}{the Akaike Information Criterion corresponding to \code{object}.} \item{BIC}{the Bayesian Information Criterion corresponding to \code{object}.} } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{AIC}}, \code{\link{BIC}}, \code{\link{gls}}, \code{\link{summary}} } \examples{ fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) summary(fm1) } \keyword{models} nlme/man/corMatrix.reStruct.Rd0000644000176000001440000000220712222512062016054 0ustar ripleyusers% File nlme/man/corMatrix.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corMatrix.reStruct} \title{Extract Correlation Matrix from Components of an reStruct Object} \usage{ \method{corMatrix}{reStruct}(object, \dots) } \alias{corMatrix.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the correlation matrices corresponding to the \code{pdMat} elements of \code{object}. } \value{ a list with components given by the correlation matrices corresponding to the elements of \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.reStruct}}, \code{\link{corMatrix}}, \code{\link{reStruct}}, \code{\link{pdMat}}} \examples{ rs1 <- reStruct(pdSymm(diag(3), ~age+Sex, data = Orthodont)) corMatrix(rs1) } \keyword{models} nlme/man/Coef.Rd0000644000176000001440000000216012222512062013144 0ustar ripleyusers% File nlme/man/Coef.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Coef} \title{Assign Values to Coefficients} \usage{ coef(object, \dots) <- value } \alias{coef<-} \alias{coefficients<-} \arguments{ \item{object}{any object representing a fitted model, or, by default, any object with a \code{coef} component.} \item{\dots}{some methods for this generic function may require additional arguments.} \item{value}{a value to be assigned to the coefficients associated with \code{object}.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include all \code{"\link{pdMat}"}, \code{"\link{corStruct}"} and \code{"\link{varFunc}"} classes, \code{"\link{reStruct}"}, and \code{"modelStruct"}. } \value{ will depend on the method function; see the appropriate documentation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{coef}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/Tetracycline1.Rd0000644000176000001440000000164012222471724015012 0ustar ripleyusers% File nlme/man/Tetracycline1.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Tetracycline1} \alias{Tetracycline1} \title{Pharmacokinetics of tetracycline} \description{ The \code{Tetracycline1} data frame has 40 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{conc}{ a numeric vector } \item{Time}{ a numeric vector } \item{Subject}{ an ordered factor with levels \code{5} < \code{3} < \code{2} < \code{4} < \code{1} } \item{Formulation}{ a factor with levels \code{tetrachel} \code{tetracyn} } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/getData.lmList.Rd0000644000176000001440000000203312222512062015103 0ustar ripleyusers% File nlme/man/getData.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getData.lmList} \title{Extract lmList Object Data} \usage{ \method{getData}{lmList}(object) } \alias{getData.lmList} \arguments{ \item{object}{an object inheriting from class \code{lmList}, representing a list of \code{lm} objects with a common model. } } \description{ If present in the calling sequence used to produce \code{object}, the data frame used to fit the model is obtained. } \value{ if a \code{data} argument is present in the calling sequence that produced \code{object}, the corresponding data frame (with \code{na.action} and \code{subset} applied to it, if also present in the call that produced \code{object}) is returned; else, \code{NULL} is returned. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{getData}} } \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) getData(fm1) } \keyword{models} nlme/man/Dim.corStruct.Rd0000644000176000001440000000274112222512062014775 0ustar ripleyusers% File nlme/man/Dim.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Dim.corStruct} \title{Dimensions of a corStruct Object} \usage{ \method{Dim}{corStruct}(object, groups, \dots) } \alias{Dim.corStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{corStruct}"}, representing a correlation structure.} \item{groups}{an optional factor defining the grouping of the observations; observations within a group are correlated and observations in different groups are uncorrelated.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ if \code{groups} is missing, it returns the \code{Dim} attribute of \code{object}; otherwise, calculates the dimensions associated with the grouping factor. } \value{ a list with components: \item{N}{length of \code{groups}} \item{M}{number of groups} \item{maxLen}{maximum number of observations in a group} \item{sumLenSq}{sum of the squares of the number of observations per group} \item{len}{an integer vector with the number of observations per group} \item{start}{an integer vector with the starting position for the observations in each group, beginning from zero} } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{Dim}}, \code{\link{Dim.corSpatial}}} \examples{ Dim(corAR1(), getGroups(Orthodont)) } \keyword{models} nlme/man/varExp.Rd0000644000176000001440000000703112222512062013537 0ustar ripleyusers% File nlme/man/varExp.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varExp} \title{Exponential Variance Function} \usage{ varExp(value, form, fixed) } \alias{varExp} \arguments{ \item{value}{an optional numeric vector, or list of numeric values, with the variance function coefficients. \code{Value} must have length one, unless a grouping factor is specified in \code{form}. If \code{value} has length greater than one, it must have names which identify its elements to the levels of the grouping factor defined in \code{form}. If a grouping factor is present in \code{form} and \code{value} has length one, its value will be assigned to all grouping levels. Default is \code{numeric(0)}, which results in a vector of zeros of appropriate length being assigned to the coefficients when \code{object} is initialized (corresponding to constant variance equal to one).} \item{form}{an optional one-sided formula of the form \code{~ v}, or \code{~ v | g}, specifying a variance covariate \code{v} and, optionally, a grouping factor \code{g} for the coefficients. The variance covariate must evaluate to a numeric vector and may involve expressions using \code{"."}, representing a fitted model object from which fitted values (\code{fitted(.)}) and residuals (\code{resid(.)}) can be extracted (this allows the variance covariate to be updated during the optimization of an object function). When a grouping factor is present in \code{form}, a different coefficient value is used for each of its levels. Several grouping variables may be simultaneously specified, separated by the \code{*} operator, like in \code{~ v | g1 * g2 * g3}. In this case, the levels of each grouping variable are pasted together and the resulting factor is used to group the observations. Defaults to \code{~ fitted(.)} representing a variance covariate given by the fitted values of a fitted model object and no grouping factor. } \item{fixed}{an optional numeric vector, or list of numeric values, specifying the values at which some or all of the coefficients in the variance function should be fixed. If a grouping factor is specified in \code{form}, \code{fixed} must have names identifying which coefficients are to be fixed. Coefficients included in \code{fixed} are not allowed to vary during the optimization of an objective function. Defaults to \code{NULL}, corresponding to no fixed coefficients.} } \description{ This function is a constructor for the \code{varExp} class, representing an exponential variance function structure. Letting \eqn{v} denote the variance covariate and \eqn{\sigma^2(v)}{s2(v)} denote the variance function evaluated at \eqn{v}, the exponential variance function is defined as \eqn{\sigma^2(v) = \exp(2\theta v)}{s2(v) = exp(2* t * v)}, where \eqn{\theta}{t} is the variance function coefficient. When a grouping factor is present, a different \eqn{\theta}{t} is used for each factor level. } \value{ a \code{varExp} object representing an exponential variance function structure, also inheriting from class \code{varFunc}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{varClasses}}, \code{\link{varWeights.varFunc}}, \code{\link{coef.varExp}}} \examples{ vf1 <- varExp(0.2, form = ~age|Sex) } \keyword{models} nlme/man/gnls.Rd0000644000176000001440000001431012222512062013233 0ustar ripleyusers% File nlme/man/gnls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{gnls} \title{Fit Nonlinear Model Using Generalized Least Squares} \usage{ gnls(model, data, params, start, correlation, weights, subset, na.action, naPattern, control, verbose) %\method{update}{gnls}(object, model, data, params, start, correlation, % weights, subset, na.action, naPattern, control, verbose, \dots) } \alias{gnls} %\alias{update.gnls} \arguments{ \item{model}{a two-sided formula object describing the model, with the response on the left of a \code{~} operator and a nonlinear expression involving parameters and covariates on the right. If \code{data} is given, all names used in the formula should be defined as parameters or variables in the data frame.} \item{data}{an optional data frame containing the variables named in \code{model}, \code{correlation}, \code{weights}, \code{subset}, and \code{naPattern}. By default the variables are taken from the environment from which \code{gnls} is called.} \item{params}{an optional two-sided linear formula of the form \code{p1+...+pn~x1+...+xm}, or list of two-sided formulas of the form \code{p1~x1+...+xm}, with possibly different models for each parameter. The \code{p1,\dots,pn} represent parameters included on the right hand side of \code{model} and \code{x1+...+xm} define a linear model for the parameters (when the left hand side of the formula contains several parameters, they are all assumed to follow the same linear model described by the right hand side expression). A \code{1} on the right hand side of the formula(s) indicates a single fixed effects for the corresponding parameter(s). By default, the parameters are obtained from the names of \code{start}.} \item{start}{an optional named list, or numeric vector, with the initial values for the parameters in \code{model}. It can be omitted when a \code{selfStarting} function is used in \code{model}, in which case the starting estimates will be obtained from a single call to the \code{nls} function.} \item{correlation}{an optional \code{corStruct} object describing the within-group correlation structure. See the documentation of \code{corClasses} for a description of the available \code{corStruct} classes. If a grouping variable is to be used, it must be specified in the \code{form} argument to the \code{corStruct} constructor. Defaults to \code{NULL}, corresponding to uncorrelated errors.} \item{weights}{an optional \code{varFunc} object or one-sided formula describing the within-group heteroscedasticity structure. If given as a formula, it is used as the argument to \code{varFixed}, corresponding to fixed variance weights. See the documentation on \code{varClasses} for a description of the available \code{varFunc} classes. Defaults to \code{NULL}, corresponding to homoscedastic errors.} \item{subset}{an optional expression indicating which subset of the rows of \code{data} should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{gnls} to print an error message and terminate if there are any incomplete observations.} \item{naPattern}{an expression or formula object, specifying which returned values are to be regarded as missing.} \item{control}{a list of control values for the estimation algorithm to replace the default values returned by the function \code{gnlsControl}. Defaults to an empty list.} \item{verbose}{an optional logical value. If \code{TRUE} information on the evolution of the iterative algorithm is printed. Default is \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This function fits a nonlinear model using generalized least squares. The errors are allowed to be correlated and/or have unequal variances. } \value{ an object of class \code{gnls}, also inheriting from class \code{gls}, representing the nonlinear model fit. Generic functions such as \code{print}, \code{plot} and \code{summary} have methods to show the results of the fit. See \code{gnlsObject} for the components of the fit. The functions \code{resid}, \code{coef}, and \code{fitted} can be used to extract some of its components. } \references{ The different correlation structures available for the \code{correlation} argument are described in Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994), Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996), and Venables, W.N. and Ripley, B.D. (2002). The use of variance functions for linear and nonlinear models is presented in detail in Carrol, R.J. and Rupert, D. (1988) and Davidian, M. and Giltinan, D.M. (1995). Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Carrol, R.J. and Rupert, D. (1988) "Transformation and Weighting in Regression", Chapman and Hall. Davidian, M. and Giltinan, D.M. (1995) "Nonlinear Mixed Effects Models for Repeated Measurement Data", Chapman and Hall. Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996) "SAS Systems for Mixed Models", SAS Institute. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{gnlsControl}}, \code{\link{gnlsObject}}, \code{\link{gnlsStruct}}, \code{\link{predict.gnls}}, \code{\link{varClasses}}, \code{\link{varFunc}} } \examples{ # variance increases with a power of the absolute fitted values fm1 <- gnls(weight ~ SSlogis(Time, Asym, xmid, scal), Soybean, weights = varPower()) summary(fm1) } \keyword{models} nlme/man/VarCorr.Rd0000644000176000001440000000376212222512062013657 0ustar ripleyusers% File nlme/man/VarCorr.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{VarCorr} \title{Extract variance and correlation components} \usage{ VarCorr(x, sigma, rdig) } \alias{VarCorr} \alias{VarCorr.lme} \alias{VarCorr.pdMat} \alias{VarCorr.pdBlocked} \alias{summary.VarCorr.lme} \alias{print.VarCorr.lme} \arguments{ \item{x}{a fitted model object, usually an object inheriting from class \code{"\link{lme}"}. } \item{sigma}{an optional numeric value used as a multiplier for the standard deviations. Default is \code{1}. } \item{rdig}{an optional integer value specifying the number of digits used to represent correlation estimates. Default is \code{3}. } } \description{ This function calculates the estimated variances, standard deviations, and correlations between the random-effects terms in a linear mixed-effects model, of class \code{"\link{lme}"}, or a nonlinear mixed-effects model, of class \code{"\link{nlme}"}. The within-group error variance and standard deviation are also calculated. } \value{ a matrix with the estimated variances, standard deviations, and correlations for the random effects. The first two columns, named \code{Variance} and \code{StdDev}, give, respectively, the variance and the standard deviations. If there are correlation components in the random effects model, the third column, named \code{Corr}, and the remaining unnamed columns give the estimated correlations among random effects within the same level of grouping. The within-group error variance and standard deviation are included as the last row in the matrix. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 100, 461. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{nlme}}} \examples{ fm1 <- lme(distance ~ age, data = Orthodont, random = ~age) VarCorr(fm1) } \keyword{models} nlme/man/pdMat.Rd0000644000176000001440000000605212222512062013341 0ustar ripleyusers% File nlme/man/pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdMat} \title{Positive-Definite Matrix} \usage{ pdMat(value, form, nam, data, pdClass) } \alias{pdMat} \alias{plot.pdMat} \arguments{ \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric vector. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} \item{pdClass}{an optional character string naming the \code{pdMat} class to be assigned to the returned object. This argument will only be used when \code{value} is not a \code{pdMat} object. Defaults to \code{"pdSymm"}.} } \description{ This function gives an alternative way of constructing an object inheriting from the \code{pdMat} class named in \code{pdClass}, or from \code{data.class(object)} if \code{object} inherits from \code{pdMat}, and is mostly used internally in other functions. See the documentation on the principal constructor function, generally with the same name as the \code{pdMat} class of object. } \value{ a \code{pdMat} object representing a positive-definite matrix, inheriting from the class named in \code{pdClass}, or from \code{class(object)}, if \code{object} inherits from \code{pdMat}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{pdClasses}}, \code{\link{pdCompSymm}}, \code{\link{pdDiag}}, \code{\link{pdIdent}}, \code{\link{pdNatural}}, \code{\link{pdSymm}}, \code{\link{reStruct}}, \code{\link{solve.pdMat}}, \code{\link{summary.pdMat}} } \examples{ pd1 <- pdMat(diag(1:4), pdClass = "pdDiag") pd1 } \keyword{models} nlme/man/getData.lme.Rd0000644000176000001440000000252712222471724014435 0ustar ripleyusers% File nlme/man/getData.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getData.lme} \title{Extract lme Object Data} \usage{ \method{getData}{lme}(object) } \alias{getData.lme} \alias{getData.nlme} \alias{getData.nls} \arguments{ \item{object}{an object inheriting from class \code{lme}, representing a linear mixed-effects fitted model.} } \description{ If present in the calling sequence used to produce \code{object}, the data frame used to fit the model is obtained. } \value{ if a \code{data} argument is present in the calling sequence that produced \code{object}, the corresponding data frame (with \code{na.action} and \code{subset} applied to it, if also present in the call that produced \code{object}) is returned; else, \code{NULL} is returned. Note that as from version 3.1-102, this only omits rows omitted in the fit if \code{na.action = na.omit}, and does not omit at all if \code{na.action = na.exclude}. That is generally what is wanted for plotting, the main use of this function. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{getData}} } \examples{ fm1 <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), data = Ovary, random = ~ sin(2*pi*Time)) getData(fm1) } \keyword{models} nlme/man/pdConstruct.Rd0000644000176000001440000000541212222512062014603 0ustar ripleyusers% File nlme/man/pdConstruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdConstruct} \title{Construct pdMat Objects} \usage{ pdConstruct(object, value, form, nam, data, \dots) } \alias{pdConstruct} \alias{pdConstruct.pdCompSymm} \alias{pdConstruct.pdDiag} \alias{pdConstruct.pdIdent} \alias{pdConstruct.pdMat} \alias{pdConstruct.pdNatural} \alias{pdConstruct.pdSymm} \alias{pdConstruct.pdLogChol} \arguments{ \item{object}{an object inheriting from class \code{pdMat}, representing a positive definite matrix.} \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric vector. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} \item{\dots}{optional arguments for some methods.} } \description{ This function is an alternative constructor for the \code{pdMat} class associated with \code{object} and is mostly used internally in other functions. See the documentation on the principal constructor function, generally with the same name as the \code{pdMat} class of object. } \value{ a \code{pdMat} object representing a positive-definite matrix, inheriting from the same classes as \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{pdCompSymm}}, \code{\link{pdDiag}}, \code{\link{pdIdent}}, \code{\link{pdNatural}}, \code{\link{pdSymm}}} \examples{ pd1 <- pdSymm() pdConstruct(pd1, diag(1:4)) } \keyword{models} nlme/man/as.matrix.pdMat.Rd0000644000176000001440000000166712222512062015255 0ustar ripleyusers% File nlme/man/as.matrix.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{as.matrix.pdMat} \title{Matrix of a pdMat Object} \usage{ \method{as.matrix}{pdMat}(x, \dots) } \alias{as.matrix.pdMat} \arguments{ \item{x}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive-definite matrix.} \item{\dots}{further arguments passed from other methods.} } \description{ This method function extracts the positive-definite matrix represented by \code{x}. } \value{ a matrix corresponding to the positive-definite matrix represented by \code{x}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{pdMat}}, \code{\link{corMatrix}}} \examples{ as.matrix(pdSymm(diag(4))) } \keyword{models} nlme/man/Names.Rd0000644000176000001440000000245212222512062013337 0ustar ripleyusers% File nlme/man/Names.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Names} \title{Names Associated with an Object} \usage{ Names(object, \dots) Names(object, \dots) <- value } \alias{Names} \alias{Names<-} \arguments{ \item{object}{any object for which names can be extracted and/or assigned.} \item{\dots}{some methods for this generic function require additional arguments.} \item{value}{names to be assigned to \code{object}.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{formula}, \code{modelStruct}, \code{pdBlocked}, \code{pdMat}, and \code{reStruct}. } \value{ will depend on the method function used; see the appropriate documentation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \section{SIDE EFFECTS}{ On the left side of an assignment, sets the names associated with \code{object} to \code{value}, which must have an appropriate length. } \note{ If \code{names} were generic, there would be no need for this generic function. } \seealso{\code{\link{Names.formula}}, \code{\link{Names.pdMat}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/ACF.gls.Rd0000644000176000001440000000664312222512062013457 0ustar ripleyusers% File nlme/man/ACF.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{ACF.gls} \title{Autocorrelation Function for gls Residuals} \usage{ \method{ACF}{gls}(object, maxLag, resType, form, na.action, \dots) } \alias{ACF.gls} \arguments{ \item{object}{an object inheriting from class \code{"\link{gls}"}, representing a generalized least squares fitted model.} \item{maxLag}{an optional integer giving the maximum lag for which the autocorrelation should be calculated. Defaults to maximum lag in the residuals.} \item{resType}{an optional character string specifying the type of residuals to be used. If \code{"response"}, the "raw" residuals (observed - fitted) are used; else, if \code{"pearson"}, the standardized residuals (raw residuals divided by the corresponding standard errors) are used; else, if \code{"normalized"}, the normalized residuals (standardized residuals pre-multiplied by the inverse square-root factor of the estimated error correlation matrix) are used. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"pearson"}.} \item{form}{an optional one sided formula of the form \code{~ t}, or \code{~ t | g}, specifying a time covariate \code{t} and, optionally, a grouping factor \code{g}. The time covariate must be integer valued. When a grouping factor is present in \code{form}, the autocorrelations are calculated using residual pairs within the same group. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{ACF.gls} to print an error message and terminate if there are any incomplete observations.} \item{\dots}{some methods for this generic require additional arguments.} } \description{ This method function calculates the empirical autocorrelation function for the residuals from a \code{gls} fit. If a grouping variable is specified in \code{form}, the autocorrelation values are calculated using pairs of residuals within the same group; otherwise all possible residual pairs are used. The autocorrelation function is useful for investigating serial correlation models for equally spaced data. } \value{ a data frame with columns \code{lag} and \code{ACF} representing, respectively, the lag between residuals within a pair and the corresponding empirical autocorrelation. The returned value inherits from class \code{ACF}. } \references{ Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{ACF.lme}}, \code{\link{plot.ACF}}} \examples{ fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary) ACF(fm1, form = ~ 1 | Mare) # Pinheiro and Bates, p. 255-257 fm1Dial.gls <- gls(rate ~ (pressure+I(pressure^2)+I(pressure^3)+I(pressure^4))*QB, Dialyzer) fm2Dial.gls <- update(fm1Dial.gls, weights = varPower(form = ~ pressure)) ACF(fm2Dial.gls, form = ~ 1 | Subject) } \keyword{models} nlme/man/coef.reStruct.Rd0000644000176000001440000000336312222512062015024 0ustar ripleyusers% File nlme/man/coef.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.reStruct} \title{reStruct Object Coefficients} \usage{ \method{coef}{reStruct}(object, unconstrained, \dots) \method{coef}{reStruct}(object, \dots) <- value } \alias{coef.reStruct} \alias{coef<-.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{unconstrained}{a logical value. If \code{TRUE} the coefficients are returned in unconstrained form (the same used in the optimization algorithm). If \code{FALSE} the coefficients are returned in "natural", possibly constrained, form. Defaults to \code{TRUE}.} \item{value}{a vector with the replacement values for the coefficients associated with \code{object}. It must be a vector with the same length of \code{coef(object)} and must be given in unconstrained form.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the coefficients associated with the positive-definite matrix represented by \code{object}. } \value{ a vector with the coefficients corresponding to \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \section{SIDE EFFECTS}{ On the left side of an assignment, sets the values of the coefficients of \code{object} to \code{value}. } \seealso{\code{\link{coef.pdMat}}, \code{\link{reStruct}}, \code{\link{pdMat}}} \examples{ rs1 <- reStruct(list(A = pdSymm(diag(1:3), form = ~Score), B = pdDiag(2 * diag(4), form = ~Educ))) coef(rs1) } \keyword{models} nlme/man/coef.pdMat.Rd0000644000176000001440000000353612222512062014260 0ustar ripleyusers% File nlme/man/coef.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.pdMat} \title{pdMat Object Coefficients} \usage{ \method{coef}{pdMat}(object, unconstrained, \dots) \method{coef}{pdMat}(object, \dots) <- value } \alias{coef.pdMat} \alias{coef.pdBlocked} \alias{coef.pdCompSymm} \alias{coef.pdDiag} \alias{coef.pdIdent} \alias{coef.pdNatural} \alias{coef.pdSymm} \alias{coef<-.pdMat} \alias{coef<-.pdBlocked} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive-definite matrix.} \item{unconstrained}{a logical value. If \code{TRUE} the coefficients are returned in unconstrained form (the same used in the optimization algorithm). If \code{FALSE} the upper triangular elements of the positive-definite matrix represented by \code{object} are returned. Defaults to \code{TRUE}.} \item{value}{a vector with the replacement values for the coefficients associated with \code{object}. It must be a vector with the same length of \code{coef{object}} and must be given in unconstrained form.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the coefficients associated with the positive-definite matrix represented by \code{object}. } \value{ a vector with the coefficients corresponding to \code{object}. } \references{ Pinheiro, J.C. and Bates., D.M. (1996) "Unconstrained Parametrizations for Variance-Covariance Matrices", Statistics and Computing, 6, 289-296. } \author{José Pinheiro and Douglas Bates } \section{SIDE EFFECTS}{ On the left side of an assignment, sets the values of the coefficients of \code{object} to \code{value}. } \seealso{\code{\link{pdMat}}} \examples{ coef(pdSymm(diag(3))) } \keyword{models} nlme/man/collapse.groupedData.Rd0000644000176000001440000001146012222512062016333 0ustar ripleyusers% File nlme/man/collapse.groupedData.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{collapse.groupedData} \title{Collapse a groupedData Object} \usage{ \method{collapse}{groupedData}(object, collapseLevel, displayLevel, outer, inner, preserve, FUN, subset, \dots) } \alias{collapse.groupedData} \arguments{ \item{object}{an object inheriting from class \code{groupedData}, generally with multiple grouping factors. } \item{collapseLevel}{an optional positive integer or character string indicating the grouping level to use when collapsing the data. Level values increase from outermost to innermost grouping. Default is the highest or innermost level of grouping. } \item{displayLevel}{an optional positive integer or character string indicating the grouping level to use as the grouping factor for the collapsed data. Default is \code{collapseLevel}. } \item{outer}{an optional logical value or one-sided formula, indicating covariates that are outer to the \code{displayLevel} grouping factor. If equal to \code{TRUE}, the \code{displayLevel} element \code{attr(object, "outer")} is used to indicate the outer covariates. An outer covariate is invariant within the sets of rows defined by the grouping factor. Ordering of the groups is done in such a way as to preserve adjacency of groups with the same value of the outer variables. Defaults to \code{NULL}, meaning that no outer covariates are to be used. } \item{inner}{an optional logical value or one-sided formula, indicating a covariate that is inner to the \code{displayLevel} grouping factor. If equal to \code{TRUE}, \code{attr(object, "outer")} is used to indicate the inner covariate. An inner covariate can change within the sets of rows defined by the grouping factor. Defaults to \code{NULL}, meaning that no inner covariate is present. } \item{preserve}{an optional one-sided formula indicating a covariate whose levels should be preserved when collapsing the data according to the \code{collapseLevel} grouping factor. The collapsing factor is obtained by pasting together the levels of the \code{collapseLevel} grouping factor and the values of the covariate to be preserved. Default is \code{NULL}, meaning that no covariates need to be preserved. } \item{FUN}{an optional summary function or a list of summary functions to be used for collapsing the data. The function or functions are applied only to variables in \code{object} that vary within the groups defined by \code{collapseLevel}. Invariant variables are always summarized by group using the unique value that they assume within that group. If \code{FUN} is a single function it will be applied to each non-invariant variable by group to produce the summary for that variable. If \code{FUN} is a list of functions, the names in the list should designate classes of variables in the data such as \code{ordered}, \code{factor}, or \code{numeric}. The indicated function will be applied to any non-invariant variables of that class. The default functions to be used are \code{mean} for numeric factors, and \code{Mode} for both \code{factor} and \code{ordered}. The \code{Mode} function, defined internally in \code{gsummary}, returns the modal or most popular value of the variable. It is different from the \code{mode} function that returns the S-language mode of the variable.} \item{subset}{an optional named list. Names can be either positive integers representing grouping levels, or names of grouping factors. Each element in the list is a vector indicating the levels of the corresponding grouping factor to be preserved in the collapsed data. Default is \code{NULL}, meaning that all levels are used. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ If \code{object} has a single grouping factor, it is returned unchanged. Else, it is summarized by the values of the \code{displayLevel} grouping factor (or the combination of its values and the values of the covariate indicated in \code{preserve}, if any is present). The collapsed data is used to produce a new \code{groupedData} object, with grouping factor given by the \code{displayLevel} factor. } \value{ a \code{groupedData} object with a single grouping factor given by the \code{displayLevel} grouping factor, resulting from collapsing \code{object} over the levels of the \code{collapseLevel} grouping factor. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{groupedData}}, \code{\link{plot.nmGroupedData}} } \examples{ # collapsing by Dog collapse(Pixel, collapse = 1) # same as collapse(Pixel, collapse = "Dog") } \keyword{models} nlme/man/residuals.lmList.Rd0000644000176000001440000000421212222512062015526 0ustar ripleyusers% File nlme/man/residuals.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{residuals.lmList} \title{Extract lmList Residuals} \usage{ \method{residuals}{lmList}(object, type, subset, asList, \dots) } \alias{residuals.lmList} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} objects with a common model. } \item{subset}{an optional character or integer vector naming the \code{lm} components of \code{object} from which the residuals are to be extracted. Default is \code{NULL}, in which case all components are used. } \item{type}{an optional character string specifying the type of residuals to be extracted. Options include \code{"response"} for the "raw" residuals (observed - fitted), \code{"pearson"} for the standardized residuals (raw residuals divided by the estimated residual standard error) using different standard errors for each \code{lm} fit, and \code{"pooled.pearson"} for the standardized residuals using a pooled estimate of the residual standard error. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"response"}. } \item{asList}{an optional logical value. If \code{TRUE}, the returned object is a list with the residuals split by groups; else the returned value is a vector. Defaults to \code{FALSE}. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The residuals are extracted from each \code{lm} component of \code{object} and arranged into a list with as many components as \code{object}, or combined into a single vector. } \value{ a list with components given by the residuals of each \code{lm} component of \code{object}, or a vector with the residuals for all \code{lm} components of \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{fitted.lmList}}} \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) residuals(fm1) } \keyword{models} nlme/man/recalc.varFunc.Rd0000644000176000001440000000310612222512062015125 0ustar ripleyusers% File nlme/man/recalc.varFunc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{recalc.varFunc} \title{Recalculate for varFunc Object} \usage{ \method{recalc}{varFunc}(object, conLin, \dots) } \alias{recalc.varFunc} \alias{recalc.varIdent} \arguments{ \item{object}{an object inheriting from class \code{"\link{varFunc}"}, representing a variance function structure.} \item{conLin}{a condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying model.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function pre-multiples the \code{"Xy"} component of \code{conLin} by a diagonal matrix with diagonal elements given by the weights corresponding to the variance structure represented by \code{object}e and adds the log-likelihood contribution of \code{object}, given by \code{logLik(object)}, to the \code{"logLik"} component of \code{conLin}. } \value{ the recalculated condensed linear model object. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{This method function is only used inside model fitting functions, such as \code{lme} and \code{gls}, that allow heteroscedastic error terms.} \seealso{ \code{\link{recalc}}, \code{\link{varWeights}}, \code{\link{logLik.varFunc}}} \keyword{models} nlme/man/Initialize.Rd0000644000176000001440000000263512222512062014400 0ustar ripleyusers% File nlme/man/Initialize.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Initialize} \title{Initialize Object} \usage{ Initialize(object, data, \dots) } \alias{Initialize} \arguments{ \item{object}{any object requiring initialization, e.g. "plug-in" structures such as \code{corStruct} and \code{varFunc} objects. } \item{data}{a data frame to be used in the initialization procedure.} \item{\dots}{some methods for this generic function require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{corStruct}, \code{lmeStruct}, \code{reStruct}, and \code{varFunc}. } \value{ an initialized object with the same class as \code{object}. Changes introduced by the initialization procedure will depend on the method function used; see the appropriate documentation. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{Initialize.corStruct}}, \code{\link{Initialize.lmeStruct}}, \code{\link{Initialize.glsStruct}}, \code{\link{Initialize.varFunc}}, \code{\link{isInitialized}} } \examples{ ## see the method function documentation } \keyword{models} nlme/man/pdMatrix.Rd0000644000176000001440000000335312222512062014065 0ustar ripleyusers% File nlme/man/pdMatrix.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdMatrix} \title{Extract Matrix or Square-Root Factor from a pdMat Object} \usage{ pdMatrix(object, factor) } \alias{pdMatrix} \alias{pdMatrix.pdBlocked} \alias{pdMatrix.pdCompSymm} \alias{pdMatrix.pdDiag} \alias{pdMatrix.pdIdent} \alias{pdMatrix.pdMat} \alias{pdMatrix.pdSymm} \alias{pdMatrix.pdNatural} \arguments{ \item{object}{an object inheriting from class \code{pdMat}, representing a positive definite matrix.} \item{factor}{an optional logical value. If \code{TRUE}, a square-root factor of the positive-definite matrix represented by \code{object} is returned; else, if \code{FALSE}, the positive-definite matrix is returned. Defaults to \code{FALSE}.} } \description{ The positive-definite matrix represented by \code{object}, or a square-root factor of it is obtained. Letting \eqn{\Sigma}{S} denote a positive-definite matrix, a square-root factor of \eqn{\Sigma}{S} is any square matrix \eqn{L}{L} such that \eqn{\Sigma = L'L}{S = L'L}. This function extracts \eqn{S} or \eqn{L}. } \value{ if \code{fact} is \code{FALSE} the positive-definite matrix represented by \code{object} is returned; else a square-root of the positive-definite matrix is returned. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. p. 162. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{pdClasses}}, \code{\link{pdFactor}}, \code{\link{pdMat}}, \code{\link{pdMatrix.reStruct}}, \code{\link{corMatrix}} } \examples{ pd1 <- pdSymm(diag(1:4)) pdMatrix(pd1) } \keyword{models} nlme/man/corSpher.Rd0000644000176000001440000001065112222512062014061 0ustar ripleyusers% File nlme/man/corSpher.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corSpher} \title{Spherical Correlation Structure} \usage{ corSpher(value, form, nugget, metric, fixed) } \alias{corSpher} \arguments{ \item{value}{an optional vector with the parameter values in constrained form. If \code{nugget} is \code{FALSE}, \code{value} can have only one element, corresponding to the "range" of the spherical correlation structure, which must be greater than zero. If \code{nugget} is \code{TRUE}, meaning that a nugget effect is present, \code{value} can contain one or two elements, the first being the "range" and the second the "nugget effect" (one minus the correlation between two observations taken arbitrarily close together); the first must be greater than zero and the second must be between zero and one. Defaults to \code{numeric(0)}, which results in a range of 90\% of the minimum distance and a nugget effect of 0.1 being assigned to the parameters when \code{object} is initialized.} \item{form}{a one sided formula of the form \code{~ S1+...+Sp}, or \code{~ S1+...+Sp | g}, specifying spatial covariates \code{S1} through \code{Sp} and, optionally, a grouping factor \code{g}. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{nugget}{an optional logical value indicating whether a nugget effect is present. Defaults to \code{FALSE}.} \item{metric}{an optional character string specifying the distance metric to be used. The currently available options are \code{"euclidean"} for the root sum-of-squares of distances; \code{"maximum"} for the maximum difference; and \code{"manhattan"} for the sum of the absolute differences. Partial matching of arguments is used, so only the first three characters need to be provided. Defaults to \code{"euclidean"}.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{corSpher} class, representing a spherical spatial correlation structure. Letting \eqn{d} denote the range and \eqn{n} denote the nugget effect, the correlation between two observations a distance \eqn{r < d} apart is \eqn{1-1.5(r/d)+0.5(r/d)^3} when no nugget effect is present and \eqn{(1-n) (1-1.5(r/d)+0.5(r/d)^3)}{(1-n)*(1-1.5(r/d)+0.5(r/d)^3)} when a nugget effect is assumed. If \eqn{r \geq d}{r >= d} the correlation is zero. Objects created using this constructor must later be initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{corSpher}, also inheriting from class \code{corSpatial}, representing a spherical spatial correlation structure. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. Littel, Milliken, Stroup, and Wolfinger (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}}, \code{\link{dist}} } \examples{ sp1 <- corSpher(form = ~ x + y) # example lme(..., corSpher ...) # Pinheiro and Bates, pp. 222-249 fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) # p. 223 fm2BW.lme <- update(fm1BW.lme, weights = varPower()) # p 246 fm3BW.lme <- update(fm2BW.lme, correlation = corExp(form = ~ Time)) # p. 249 fm6BW.lme <- update(fm3BW.lme, correlation = corSpher(form = ~ Time)) # example gls(..., corSpher ...) # Pinheiro and Bates, pp. 261, 263 fm1Wheat2 <- gls(yield ~ variety - 1, Wheat2) # p. 262 fm2Wheat2 <- update(fm1Wheat2, corr = corSpher(c(28, 0.2), form = ~ latitude + longitude, nugget = TRUE)) } \keyword{models} nlme/man/Glucose2.Rd0000644000176000001440000000265112222471724013771 0ustar ripleyusers% File nlme/man/Glucose2.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Glucose2} \alias{Glucose2} \title{Glucose Levels Following Alcohol Ingestion} \description{ The \code{Glucose2} data frame has 196 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Subject}{ a factor with levels \code{1} to \code{7} identifying the subject whose glucose level is measured. } \item{Date}{ a factor with levels \code{1} \code{2} indicating the occasion in which the experiment was conducted. } \item{Time}{ a numeric vector giving the time since alcohol ingestion (in min/10). } \item{glucose}{ a numeric vector giving the blood glucose level (in mg/dl). } } } \details{ Hand and Crowder (Table A.14, pp. 180-181, 1996) describe data on the blood glucose levels measured at 14 time points over 5 hours for 7 volunteers who took alcohol at time 0. The same experiment was repeated on a second date with the same subjects but with a dietary additive used for all subjects. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.10) Hand, D. and Crowder, M. (1996), \emph{Practical Longitudinal Data Analysis}, Chapman and Hall, London. } %\examples{} \keyword{datasets} nlme/man/Dim.corSpatial.Rd0000644000176000001440000000327212222512062015106 0ustar ripleyusers% File nlme/man/Dim.corSpatial.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Dim.corSpatial} \title{Dimensions of a corSpatial Object} \usage{ \method{Dim}{corSpatial}(object, groups, \dots) } \alias{Dim.corSpatial} \arguments{ \item{object}{an object inheriting from class \code{"\link{corSpatial}"}, representing a spatial correlation structure.} \item{groups}{an optional factor defining the grouping of the observations; observations within a group are correlated and observations in different groups are uncorrelated.} \item{\dots}{further arguments to be passed to or from methods.} } \description{ if \code{groups} is missing, it returns the \code{Dim} attribute of \code{object}; otherwise, calculates the dimensions associated with the grouping factor. } \value{ a list with components: \item{N}{length of \code{groups}} \item{M}{number of groups} \item{spClass}{an integer representing the spatial correlation class; 0 = user defined class, 1 = \code{corSpher}, 2 = \code{corExp}, 3 = \code{corGaus}, 4 = \code{corLin}} \item{sumLenSq}{sum of the squares of the number of observations per group} \item{len}{an integer vector with the number of observations per group} \item{start}{an integer vector with the starting position for the distance vectors in each group, beginning from zero} } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{Dim}}, \code{\link{Dim.corStruct}} } \examples{ Dim(corGaus(), getGroups(Orthodont)) cs1ARMA <- corARMA(0.4, form = ~ 1 | Subject, q = 1) cs1ARMA <- Initialize(cs1ARMA, data = Orthodont) Dim(cs1ARMA) } \keyword{models} nlme/man/Variogram.corRatio.Rd0000644000176000001440000000375612222512062016014 0ustar ripleyusers% File nlme/man/Variogram.corRatio.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Variogram.corRatio} \title{Calculate Semi-variogram for a corRatio Object} \usage{ \method{Variogram}{corRatio}(object, distance, sig2, length.out, \dots) } \alias{Variogram.corRatio} \arguments{ \item{object}{an object inheriting from class \code{"\link{corRatio}"}, representing an Rational Quadratic spatial correlation structure.} \item{distance}{an optional numeric vector with the distances at which the semi-variogram is to be calculated. Defaults to \code{NULL}, in which case a sequence of length \code{length.out} between the minimum and maximum values of \code{getCovariate(object)} is used.} \item{sig2}{an optional numeric value representing the process variance. Defaults to \code{1}.} \item{length.out}{an optional integer specifying the length of the sequence of distances to be used for calculating the semi-variogram, when \code{distance = NULL}. Defaults to \code{50}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function calculates the semi-variogram values corresponding to the Rational Quadratic correlation model, using the estimated coefficients corresponding to \code{object}, at the distances defined by \code{distance}. } \value{ a data frame with columns \code{variog} and \code{dist} representing, respectively, the semi-variogram values and the corresponding distances. The returned value inherits from class \code{Variogram}. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corRatio}}, \code{\link{plot.Variogram}} \code{\link{Variogram}} } \examples{ cs1 <- corRatio(7, form = ~ Time | Rat) cs1 <- Initialize(cs1, BodyWeight) Variogram(cs1)[1:10,] } \keyword{models} nlme/man/plot.ranef.lmList.Rd0000644000176000001440000000775412222512062015621 0ustar ripleyusers% File nlme/man/plot.ranef.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.ranef.lmList} \title{Plot a ranef.lmList Object} \usage{ \method{plot}{ranef.lmList}(x, form, grid, control, \dots) } \alias{plot.ranef.lmList} \arguments{ \item{x}{an object inheriting from class \code{"\link{ranef.lmList}"}, representing the estimated coefficients or estimated random effects for the \code{lmList} object from which it was produced. } \item{form}{an optional formula specifying the desired type of plot. If given as a one-sided formula, a \code{dotplot} of the estimated random effects (coefficients) grouped according to all combinations of the levels of the factors named in \code{form} is returned. Single factors (\code{~g}) or crossed factors (\code{~g1*g2}) are allowed. If given as a two-sided formula, the left hand side must be a single random effects (coefficient) and the right hand side is formed by covariates in \code{x} separated by \code{+}. A Trellis display of the random effect (coefficient) versus the named covariates is returned in this case. Default is \code{NULL}, in which case the row names of the random effects (coefficients) are used.} \item{grid}{an optional logical value indicating whether a grid should be added to plot. Only applies to plots associated with two-sided formulas in \code{form}. Default is \code{FALSE}.} \item{control}{an optional list with control values for the plot, when \code{form} is given as a two-sided formula. The control values are referenced by name in the \code{control} list and only the ones to be modified from the default need to be specified. Available values include: \code{drawLine}, a logical value indicating whether a \code{loess} smoother should be added to the scatter plots and a line connecting the medians should be added to the boxplots (default is \code{TRUE}); \code{span.loess}, used as the \code{span} argument in the call to \code{panel.loess} (default is \code{2/3}); \code{degree.loess}, used as the \code{degree} argument in the call to \code{panel.loess} (default is \code{1}); \code{cex.axis}, the character expansion factor for the x-axis (default is \code{0.8}); \code{srt.axis}, the rotation factor for the x-axis (default is \code{0}); and \code{mgp.axis}, the margin parameters for the x-axis (default is \code{c(2, 0.5, 0)}).} \item{\dots}{optional arguments passed to the Trellis \code{dotplot} function. } } \description{ If \code{form} is missing, or is given as a one-sided formula, a Trellis dot-plot of the random effects is generated, with a different panel for each random effect (coefficient). Rows in the dot-plot are determined by the \code{form} argument (if not missing) or by the row names of the random effects (coefficients). If a single factor is specified in \code{form}, its levels determine the dot-plot rows (with possibly multiple dots per row); otherwise, if \code{form} specifies a crossing of factors, the dot-plot rows are determined by all combinations of the levels of the individual factors in the formula. The Trellis function \code{dotplot} is used in this method function. If \code{form} is a two-sided formula, a Trellis display is generated, with a different panel for each variable listed in the right hand side of \code{form}. Scatter plots are generated for numeric variables and boxplots are generated for categorical (\code{factor} or \code{ordered}) variables. } \value{ a Trellis plot of the estimated random-effects (coefficients) versus covariates, or groups. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{lmList}}, \code{\link{dotplot}} } \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) plot(ranef(fm1)) fm1RE <- ranef(fm1, aug = TRUE) plot(fm1RE, form = ~ Sex) \dontrun{plot(fm1RE, form = age ~ Sex)} } \keyword{models} nlme/man/getCovariate.corStruct.Rd0000644000176000001440000000305512222512062016700 0ustar ripleyusers% File nlme/man/getCovariate.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getCovariate.corStruct} \title{Extract corStruct Object Covariate} \usage{ \method{getCovariate}{corStruct}(object, form, data) } \alias{getCovariate.corStruct} \alias{getCovariate.corSpatial} \arguments{ \item{object}{an object inheriting from class \code{corStruct} representing a correlation structure.} \item{form}{this argument is included to make the method function compatible with the generic. It will be assigned the value of \code{formula(object)} and should not be modified.} \item{data}{an optional data frame in which to evaluate the variables defined in \code{form}, in case \code{object} is not initialized and the covariate needs to be evaluated.} } \description{ This method function extracts the covariate(s) associated with \code{object}. } \value{ when the correlation structure does not include a grouping factor, the returned value will be a vector or a matrix with the covariate(s) associated with \code{object}. If a grouping factor is present, the returned value will be a list of vectors or matrices with the covariate(s) corresponding to each grouping level. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getCovariate}}} \examples{ cs1 <- corAR1(form = ~ 1 | Subject) getCovariate(cs1, data = Orthodont) } \keyword{models} nlme/man/LDEsysMat.Rd0000644000176000001440000000322112222471724014105 0ustar ripleyusers% File nlme/man/LDEsysMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{LDEsysMat} \alias{LDEsysMat} \title{Generate system matrix for LDEs} \description{ Generate the system matrix for the linear differential equations determined by a compartment model. } \usage{ LDEsysMat(pars, incidence) } \arguments{ \item{pars}{a numeric vector of parameter values.} \item{incidence}{an integer matrix with columns named \code{From}, \code{To}, and \code{Par}. Values in the \code{Par} column must be in the range 1 to \code{length(pars)}. Values in the \code{From} column must be between 1 and the number of compartments. Values in the \code{To} column must be between 0 and the number of compartments.} } \details{ A compartment model describes material transfer between \code{k} in a system of \code{k} compartments to a linear system of differential equations. Given a description of the system and a vector of parameter values this function returns the system matrix. This function is intended for use in a general system for solving compartment models, as described in Bates and Watts (1988). } \value{ A \code{k} by \code{k} numeric matrix. } \references{ Bates, D. M. and Watts, D. G. (1988), \emph{Nonlinear Regression Analysis and Its Applications}, Wiley, New York. } \author{Douglas Bates \email{bates@stat.wisc.edu}} \examples{ # incidence matrix for a two compartment open system incidence <- matrix(c(1,1,2,2,2,1,3,2,0), ncol = 3, byrow = TRUE, dimnames = list(NULL, c("Par", "From", "To"))) incidence LDEsysMat(c(1.2, 0.3, 0.4), incidence) } \keyword{models} nlme/man/update.modelStruct.Rd0000644000176000001440000000237312222512062016064 0ustar ripleyusers% File nlme/man/update.modelStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{update.modelStruct} \title{Update a modelStruct Object} \usage{ \method{update}{modelStruct}(object, data, \dots) } \alias{update.modelStruct} \alias{update.corStruct} \alias{update.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"modelStruct"}, representing a list of model components, such as \code{corStruct} and \code{varFunc} objects.} \item{data}{a data frame in which to evaluate the variables needed for updating the elements of \code{object}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function updates each element of \code{object}, allowing the access to \code{data}. } \value{ an object similar to \code{object} (same class, length, and names), but with updated elements. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{reStruct}} } \note{This method function is primarily used within model fitting functions, such as \code{lme} and \code{gls}, that allow model components such as variance functions.} \keyword{models} nlme/man/coef.varFunc.Rd0000644000176000001440000000414112222512062014610 0ustar ripleyusers% File nlme/man/coef.varFunc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.varFunc} \title{varFunc Object Coefficients} \usage{ \method{coef}{varFunc}(object, unconstrained, allCoef, \dots) \method{coef}{varIdent}(object, \dots) <- value } \alias{coef.varFunc} \alias{coef.varComb} \alias{coef.varConstPower} \alias{coef.varExp} \alias{coef.varFixed} \alias{coef.varIdent} \alias{coef.varPower} \alias{coef<-.varComb} \alias{coef<-.varConstPower} \alias{coef<-.varExp} \alias{coef<-.varFixed} \alias{coef<-.varIdent} \alias{coef<-.varPower} \arguments{ \item{object}{an object inheriting from class \code{"\link{varFunc}"} representing a variance function structure.} \item{unconstrained}{a logical value. If \code{TRUE} the coefficients are returned in unconstrained form (the same used in the optimization algorithm). If \code{FALSE} the coefficients are returned in "natural", generally constrained form. Defaults to \code{TRUE}.} \item{allCoef}{a logical value. If \code{FALSE} only the coefficients which may vary during the optimization are returned. If \code{TRUE} all coefficients are returned. Defaults to \code{FALSE}.} \item{value}{a vector with the replacement values for the coefficients associated with \code{object}. It must be have the same length of \code{coef{object}} and must be given in unconstrained form. \code{Object} must be initialized before new values can be assigned to its coefficients.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the coefficients associated with the variance function structure represented by \code{object}. } \value{ a vector with the coefficients corresponding to \code{object}. } \author{José Pinheiro and Douglas Bates } \section{SIDE EFFECTS}{ On the left side of an assignment, sets the values of the coefficients of \code{object} to \code{value}. } \seealso{\code{\link{varFunc}}} \examples{ vf1 <- varPower(1) coef(vf1) %\dontrun{ coef(vf1) <- 2 %} } \keyword{models} nlme/man/pdDiag.Rd0000644000176000001440000000640012222512062013461 0ustar ripleyusers% File nlme/man/pdDiag.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdDiag} \title{Diagonal Positive-Definite Matrix} \usage{ pdDiag(value, form, nam, data) } \alias{pdDiag} \arguments{ \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric vector of length equal to the dimension of the underlying positive-definite matrix. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} } \description{ This function is a constructor for the \code{pdDiag} class, representing a diagonal positive-definite matrix. If the matrix associated with \code{object} is of dimension \eqn{n}, it is represented by \eqn{n} unrestricted parameters, given by the logarithm of the square-root of the diagonal values. When \code{value} is \code{numeric(0)}, an uninitialized \code{pdMat} object, a one-sided formula, or a vector of character strings, \code{object} is returned as an uninitialized \code{pdDiag} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is an initialized \code{pdMat} object, \code{object} will be constructed from \code{as.matrix(value)}. Finally, if \code{value} is a numeric vector, it is assumed to represent the unrestricted coefficients of the underlying positive-definite matrix. } \value{ a \code{pdDiag} object representing a diagonal positive-definite matrix, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{pdClasses}}, \code{\link{matrix<-.pdMat}}} \examples{ pd1 <- pdDiag(diag(1:3), nam = c("A","B","C")) pd1 } \keyword{models} nlme/man/corCAR1.Rd0000644000176000001440000000502612222512062013466 0ustar ripleyusers% File nlme/man/corCAR1.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corCAR1} \title{Continuous AR(1) Correlation Structure} \usage{ corCAR1(value, form, fixed) } \alias{corCAR1} \arguments{ \item{value}{the correlation between two observations one unit of time apart. Must be between 0 and 1. Defaults to 0.2.} \item{form}{a one sided formula of the form \code{~ t}, or \code{~ t | g}, specifying a time covariate \code{t} and, optionally, a grouping factor \code{g}. Covariates for this correlation structure need not be integer valued. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{corCAR1} class, representing an autocorrelation structure of order 1, with a continuous time covariate. Objects created using this constructor must be later initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{corCAR1}, representing an autocorrelation structure of order 1, with a continuous time covariate. } \references{ Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Jones, R.H. (1993) "Longitudinal Data with Serial Correlation: A State-space Approach", Chapman and Hall. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 236, 243. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}} } \examples{ ## covariate is Time and grouping factor is Mare cs1 <- corCAR1(0.2, form = ~ Time | Mare) # Pinheiro and Bates, pp. 240, 243 fm1Ovar.lme <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), data = Ovary, random = pdDiag(~sin(2*pi*Time))) fm4Ovar.lme <- update(fm1Ovar.lme, correlation = corCAR1(form = ~Time)) } \keyword{models} nlme/man/logDet.corStruct.Rd0000644000176000001440000000306412222512062015501 0ustar ripleyusers% File nlme/man/logDet.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logDet.corStruct} \title{Extract corStruct Log-Determinant} \usage{ \method{logDet}{corStruct}(object, covariate, \dots) } \alias{logDet.corStruct} \alias{logDet.corIdent} \arguments{ \item{object}{an object inheriting from class \code{"\link{corStruct}"}, representing a correlation structure.} \item{covariate}{an optional covariate vector (matrix), or list of covariate vectors (matrices), at which values the correlation matrix, or list of correlation matrices, are to be evaluated. Defaults to \code{getCovariate(object)}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the logarithm of the determinant of a square-root factor of the correlation matrix associated with \code{object}, or the sum of the log-determinants of square-root factors of the list of correlation matrices associated with \code{object}. } \value{ the log-determinant of a square-root factor of the correlation matrix associated with \code{object}, or the sum of the log-determinants of square-root factors of the list of correlation matrices associated with \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{logLik.corStruct}}, \code{\link{corMatrix.corStruct}}, \code{\link{logDet}} } \examples{ cs1 <- corAR1(0.3) logDet(cs1, covariate = 1:4) } \keyword{models} nlme/man/summary.lme.Rd0000644000176000001440000000535512222471724014563 0ustar ripleyusers% File nlme/man/summary.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{summary.lme} \title{Summarize an lme Object} \usage{ \method{summary}{lme}(object, adjustSigma, verbose, \dots) } \alias{summary.lme} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{adjustSigma}{an optional logical value. If \code{TRUE} and the estimation method used to obtain \code{object} was maximum likelihood, the residual standard error is multiplied by \eqn{\sqrt{n_{obs}/(n_{obs} - n_{par})}}{sqrt(nobs/(nobs - npar))}, converting it to a REML-like estimate. This argument is only used when a single fitted object is passed to the function. Default is \code{TRUE}.} \item{verbose}{an optional logical value used to control the amount of output in the \code{print.summary.lme} method. Defaults to \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ Additional information about the linear mixed-effects fit represented by \code{object} is extracted and included as components of \code{object}. The returned object is suitable for printing with the \code{print.summary.lme} method. } \value{ an object inheriting from class \code{summary.lme} with all components included in \code{object} (see \code{\link{lmeObject}} for a full description of the components) plus the following components: \item{corFixed}{approximate correlation matrix for the fixed effects estimates } \item{tTable}{a data frame with columns \code{Value}, \code{Std. Error}, \code{DF}, \code{t-value}, and \code{p-value} representing respectively the fixed effects estimates, their approximate standard errors, the denominator degrees of freedom, the ratios between the estimates and their standard errors, and the associated p-value from a t distribution. Rows correspond to the different fixed effects.} \item{residuals}{if more than five observations are used in the \code{lme} fit, a vector with the minimum, first quartile, median, third quartile, and maximum of the innermost grouping level residuals distribution; else the innermost grouping level residuals.} \item{AIC}{the Akaike Information Criterion corresponding to \code{object}.} \item{BIC}{the Bayesian Information Criterion corresponding to \code{object}.} } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{AIC}}, \code{\link{BIC}}, \code{\link{lme}}, \code{print.summary.lme}} \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) summary(fm1) } \keyword{models} nlme/man/logLik.reStruct.Rd0000644000176000001440000000323312222512062015325 0ustar ripleyusers% File nlme/man/logLik.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logLik.reStruct} \title{Calculate reStruct Log-Likelihood} \usage{ \method{logLik}{reStruct}(object, conLin, \dots) } \alias{logLik.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{conLin}{a condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying model.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ Calculates the log-likelihood, or restricted log-likelihood, of the Gaussian linear mixed-effects model represented by \code{object} and \code{conLin} (assuming spherical within-group covariance structure), evaluated at \code{coef(object)}. The \code{settings} attribute of \code{object} determines whether the log-likelihood, or the restricted log-likelihood, is to be calculated. The computational methods are described in Bates and Pinheiro (1998). } \value{ the log-likelihood, or restricted log-likelihood, of linear mixed-effects model represented by \code{object} and \code{conLin}, evaluated at \code{coef{object}}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{reStruct}}, \code{\link{pdMat}}, \code{\link{logLik.lme}} } \keyword{models} nlme/man/plot.nffGroupedData.Rd0000644000176000001440000000777712222512062016161 0ustar ripleyusers% File nlme/man/plot.nffGroupedData.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.nffGroupedData} \title{Plot an nffGroupedData Object} \usage{ \method{plot}{nffGroupedData}(x, outer, inner, innerGroups, xlab, ylab, strip, panel, key, grid, \dots) } \alias{plot.nffGroupedData} \arguments{ \item{x}{an object inheriting from class \code{nffGroupedData}, representing a \code{groupedData} object with a factor primary covariate and a single grouping level. } \item{outer}{an optional logical value or one-sided formula, indicating covariates that are outer to the grouping factor, which are used to determine the panels of the Trellis plot. If equal to \code{TRUE}, \code{attr(object, "outer")} is used to indicate the outer covariates. An outer covariate is invariant within the sets of rows defined by the grouping factor. Ordering of the groups is done in such a way as to preserve adjacency of groups with the same value of the outer variables. Defaults to \code{NULL}, meaning that no outer covariates are to be used. } \item{inner}{an optional logical value or one-sided formula, indicating a covariate that is inner to the grouping factor, which is used to associate points within each panel of the Trellis plot. If equal to \code{TRUE}, \code{attr(object, "inner")} is used to indicate the inner covariate. An inner covariate can change within the sets of rows defined by the grouping factor. Defaults to \code{NULL}, meaning that no inner covariate is present. } \item{innerGroups}{an optional one-sided formula specifying a factor to be used for grouping the levels of the \code{inner} covariate. Different colors, or symbols, are used for each level of the \code{innerGroups} factor. Default is \code{NULL}, meaning that no \code{innerGroups} covariate is present. } \item{xlab}{an optional character string with the label for the horizontal axis. Default is the \code{y} elements of \code{attr(object, "labels")} and \code{attr(object, "units")} pasted together. } \item{ylab}{an optional character string with the label for the vertical axis. Default is the grouping factor name. } \item{strip}{an optional function passed as the \code{strip} argument to the \code{dotplot} function. Default is \code{strip.default(..., style = 1)} (see \code{trellis.args}). } \item{panel}{an optional function used to generate the individual panels in the Trellis display, passed as the \code{panel} argument to the \code{dotplot} function. } \item{key}{an optional logical function or function. If \code{TRUE} and either \code{inner} or \code{innerGroups} are non-\code{NULL}, a legend for the different \code{inner} (\code{innerGroups}) levels is included at the top of the plot. If given as a function, it is passed as the \code{key} argument to the \code{dotplot} function. Default is \code{TRUE} is either \code{inner} or \code{innerGroups} are non-\code{NULL} and \code{FALSE} otherwise. } \item{grid}{this argument is included for consistency with the \code{plot.nfnGroupedData} method calling sequence. It is ignored in this method function.} \item{\dots}{optional arguments passed to the \code{dotplot} function.} } \description{ A Trellis dot-plot of the response by group is generated. If outer variables are specified, the combination of their levels are used to determine the panels of the Trellis display. The Trellis function \code{dotplot} is used. } \value{ a Trellis dot-plot of the response by group. } \references{ Bates, D.M. and Pinheiro, J.C. (1997), "Software Design for Longitudinal Data", in "Modelling Longitudinal and Spatially Correlated Data: Methods, Applications and Future Directions", T.G. Gregoire (ed.), Springer-Verlag, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{groupedData}}, \code{\link{dotplot}}} \examples{ plot(Machines) plot(Machines, inner = TRUE) } \keyword{models} nlme/man/lmList.Rd0000644000176000001440000000727112222512062013544 0ustar ripleyusers% File nlme/man/lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{lmList} \title{List of lm Objects with a Common Model} \usage{ lmList(object, data, level, subset, na.action, pool) \method{update}{lmList}(object, formula., \dots, evaluate = TRUE) \method{print}{lmList}(x, pool, \dots) } \alias{lmList} \alias{lmList.formula} \alias{print.lmList} \alias{update.lmList} \arguments{ \item{object}{For \code{lmList}, either a linear formula object of the form \code{y ~ x1+...+xn | g} or a \code{groupedData} object. In the formula object, \code{y} represents the response, \code{x1,...,xn} the covariates, and \code{g} the grouping factor specifying the partitioning of the data according to which different \code{lm} fits should be performed. The grouping factor \code{g} may be omitted from the formula, in which case the grouping structure will be obtained from \code{data}, which must inherit from class \code{groupedData}. The method function \code{lmList.groupedData} is documented separately. For the method \code{update.lmList}, \code{object} is an object inheriting from class \code{lmList}. } \item{formula}{(used in \code{update.lmList} only) a two-sided linear formula with the common model for the individuals \code{lm} fits. } \item{formula.}{Changes to the formula -- see \code{update.formula} for details.} \item{data}{ a data frame in which to interpret the variables named in \code{object}. } \item{level}{ an optional integer specifying the level of grouping to be used when multiple nested levels of grouping are present. } \item{subset}{an optional expression indicating which subset of the rows of \code{data} should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{lmList} to print an error message and terminate if there are any incomplete observations. } \item{pool}{ an optional logical value indicating whether a pooled estimate of the residual standard error should be used in calculations of standard deviations or standard errors for summaries. } \item{x}{an object inheriting from class \code{lmList} to be printed.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} \item{evaluate}{If \code{TRUE} evaluate the new call else return the call.} } \description{ \code{Data} is partitioned according to the levels of the grouping factor \code{g} and individual \code{lm} fits are obtained for each \code{data} partition, using the model defined in \code{object}. } \value{ a list of \code{lm} objects with as many components as the number of groups defined by the grouping factor. Generic functions such as \code{coef}, \code{fixed.effects}, \code{lme}, \code{pairs}, \code{plot}, \code{predict}, \code{random.effects}, \code{summary}, and \code{update} have methods that can be applied to an \code{lmList} object. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \seealso{ \code{\link{lm}}, \code{\link{lme.lmList}}, \code{\link{plot.lmList}}, \code{\link{pooledSD}}, \code{\link{predict.lmList}}, \code{\link{residuals.lmList}}, \code{\link{summary.lmList}} } \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) summary(fm1) } \keyword{models} nlme/man/Meat.Rd0000644000176000001440000000337412222471724013177 0ustar ripleyusers% File nlme/man/Meat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Meat} \alias{Meat} \title{Tenderness of meat} \description{ The \code{Meat} data frame has 30 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Storage}{ an ordered factor specifying the storage treatment - 1 (0 days), 2 (1 day), 3 (2 days), 4 (4 days), 5 (9 days), and 6 (18 days) } \item{score}{ a numeric vector giving the tenderness score of beef roast. } \item{Block}{ an ordered factor identifying the muscle from which the roast was extracted with levels \code{II} < \code{V} < \code{I} < \code{III} < \code{IV} } \item{Pair}{ an ordered factor giving the unique identifier for each pair of beef roasts with levels \code{II-1} < \dots{} < \code{IV-1} } } } \details{ Cochran and Cox (section 11.51, 1957) describe data from an experiment conducted at Iowa State College (Paul, 1943) to compare the effects of length of cold storage on the tenderness of beef roasts. Six storage periods ranging from 0 to 18 days were used. Thirty roasts were scored by four judges on a scale from 0 to 10, with the score increasing with tenderness. The response was the sum of all four scores. Left and right roasts from the same animal were grouped into pairs, which were further grouped into five blocks, according to the muscle from which they were extracted. Different storage periods were applied to each roast within a pair according to a balanced incomplete block design.} \source{ Cochran, W. G. and Cox, G. M. (1957), \emph{Experimental Designs}, Wiley, New York. } %\examples{} \keyword{datasets} nlme/man/pdCompSymm.Rd0000644000176000001440000000637712222512062014376 0ustar ripleyusers% File nlme/man/pdCompSymm.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdCompSymm} \title{Positive-Definite Matrix with Compound Symmetry Structure} \usage{ pdCompSymm(value, form, nam, data) } \alias{pdCompSymm} \arguments{ \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric vector of length 2. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} } \description{ This function is a constructor for the \code{pdCompSymm} class, representing a positive-definite matrix with compound symmetry structure (constant diagonal and constant off-diagonal elements). The underlying matrix is represented by 2 unrestricted parameters. When \code{value} is \code{numeric(0)}, an unitialized \code{pdMat} object, a one-sided formula, or a vector of character strings, \code{object} is returned as an uninitialized \code{pdCompSymm} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is an initialized \code{pdMat} object, \code{object} will be constructed from \code{as.matrix(value)}. Finally, if \code{value} is a numeric vector of length 2, it is assumed to represent the unrestricted coefficients of the underlying positive-definite matrix. } \value{ a \code{pdCompSymm} object representing a positive-definite matrix with compound symmetry structure, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. p. 161. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{matrix<-.pdMat}}, \code{\link{pdClasses}} } \examples{ pd1 <- pdCompSymm(diag(3) + 1, nam = c("A","B","C")) pd1 } \keyword{models} nlme/man/Variogram.corSpatial.Rd0000644000176000001440000000455512222512062016331 0ustar ripleyusers% File nlme/man/Variogram.corSpatial.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Variogram.corSpatial} \title{Calculate Semi-variogram for a corSpatial Object} \usage{ \method{Variogram}{corSpatial}(object, distance, sig2, length.out, FUN, \dots) } \alias{Variogram.corSpatial} \arguments{ \item{object}{an object inheriting from class \code{"\link{corSpatial}"}, representing spatial correlation structure.} \item{distance}{an optional numeric vector with the distances at which the semi-variogram is to be calculated. Defaults to \code{NULL}, in which case a sequence of length \code{length.out} between the minimum and maximum values of \code{getCovariate(object)} is used.} \item{sig2}{an optional numeric value representing the process variance. Defaults to \code{1}.} \item{length.out}{an optional integer specifying the length of the sequence of distances to be used for calculating the semi-variogram, when \code{distance = NULL}. Defaults to \code{50}.} \item{FUN}{a function of two arguments, the distance and the range corresponding to \code{object}, specifying the semi-variogram model.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function calculates the semi-variogram values corresponding to the model defined in \code{FUN}, using the estimated coefficients corresponding to \code{object}, at the distances defined by \code{distance}. } \value{ a data frame with columns \code{variog} and \code{dist} representing, respectively, the semi-variogram values and the corresponding distances. The returned value inherits from class \code{Variogram}. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corSpatial}}, \code{\link{Variogram}}, \code{\link{Variogram.default}}, \code{\link{Variogram.corExp}}, \code{\link{Variogram.corGaus}}, \code{\link{Variogram.corLin}}, \code{\link{Variogram.corRatio}}, \code{\link{Variogram.corSpher}}, \code{\link{plot.Variogram}} } \examples{ cs1 <- corExp(3, form = ~ Time | Rat) cs1 <- Initialize(cs1, BodyWeight) Variogram(cs1, FUN = function(x, y) (1 - exp(-x/y)))[1:10,] } \keyword{models} nlme/man/ergoStool.Rd0000644000176000001440000000262712222471724014266 0ustar ripleyusers% File nlme/man/ergoStool.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{ergoStool} \alias{ergoStool} \title{Ergometrics experiment with stool types} \description{ The \code{ergoStool} data frame has 36 rows and 3 columns. } \format{ This data frame contains the following columns: \describe{ \item{effort}{ a numeric vector giving the effort (Borg scale) required to arise from a stool. } \item{Type}{ a factor with levels \code{T1}, \code{T2}, \code{T3}, and \code{T4} giving the stool type. } \item{Subject}{ an ordered factor giving a unique identifier for the subject in the experiment. } } } \details{ Devore (2000) cites data from an article in \emph{Ergometrics} (1993, pp. 519-535) on ``The Effects of a Pneumatic Stool and a One-Legged Stool on Lower Limb Joint Load and Muscular Activity.'' } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.9) Devore, J. L. (2000), \emph{Probability and Statistics for Engineering and the Sciences (5th ed)}, Duxbury, Boston, MA. } \examples{ fm1 <- lme(effort ~ Type, data = ergoStool, random = ~ 1 | Subject) anova( fm1 ) } \keyword{datasets} nlme/man/Relaxin.Rd0000644000176000001440000000144012222471724013703 0ustar ripleyusers% File nlme/man/Relaxin.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Relaxin} \alias{Relaxin} \title{Assay for Relaxin} \description{ The \code{Relaxin} data frame has 198 rows and 3 columns. } \format{ This data frame contains the following columns: \describe{ \item{Run}{ an ordered factor with levels \code{5} < \code{8} < \code{9} < \code{3} < \code{4} < \code{2} < \code{7} < \code{1} < \code{6} } \item{conc}{ a numeric vector } \item{cAMP}{ a numeric vector } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/recalc.modelStruct.Rd0000644000176000001440000000312212222512062016024 0ustar ripleyusers% File nlme/man/recalc.modelStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{recalc.modelStruct} %\title{Recalculate Condensed Linear Model for a \code{modelStruct} Object} \title{Recalculate for a modelStruct Object} \usage{ \method{recalc}{modelStruct}(object, conLin, \dots) } \alias{recalc.modelStruct} \arguments{ \item{object}{an object inheriting from class \code{"modelStruct"}, representing a list of model components, such as \code{corStruct} and \code{varFunc} objects.} \item{conLin}{an optional condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying model. Defaults to \code{attr(object, "conLin")}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function recalculates the condensed linear model object using each element of \code{object} sequentially from last to first. } \value{ the recalculated condensed linear model object. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{This method function is generally only used inside model fitting functions, such as \code{lme} and \code{gls}, that allow model components, such as correlated error terms and variance functions. } \seealso{\code{\link{recalc.corStruct}}, \code{\link{recalc.reStruct}}, \code{\link{recalc.varFunc}}} \keyword{models} nlme/man/summary.modelStruct.Rd0000644000176000001440000000233712222512062016277 0ustar ripleyusers% File nlme/man/summary.modelStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{summary.modelStruct} \alias{summary.modelStruct} \alias{summary.reStruct} \title{Summarize a modelStruct Object} \usage{ \method{summary}{modelStruct}(object, \dots) } \arguments{ \item{object}{an object inheriting from class \code{"modelStruct"}, representing a list of model components, such as \code{reStruct}, \code{corStruct} and \code{varFunc} objects. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function applies \code{summary} to each element of \code{object}. } \value{ a list with elements given by the summarized components of \code{object}. The returned value is of class \code{summary.modelStruct}, also inheriting from the same classes as \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{reStruct}}, \code{\link{summary}} } %\seealso{\code{\link{print.summary.modelStruct}}} \examples{ lms1 <- lmeStruct(reStruct = reStruct(pdDiag(diag(2), ~age)), corStruct = corAR1(0.3)) summary(lms1) } \keyword{models} nlme/man/asOneFormula.Rd0000644000176000001440000000207612222512062014671 0ustar ripleyusers% File nlme/man/asOneFormula.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{asOneFormula} \title{Combine Formulas of a Set of Objects} \usage{ asOneFormula(\dots, omit) } \alias{asOneFormula} \arguments{ \item{\dots}{objects, or lists of objects, from which a formula can be extracted.} \item{omit}{an optional character vector with the names of variables to be omitted from the returned formula. Defaults to c(".", "pi").} } \description{ The names of all variables used in the formulas extracted from the objects defined in \code{\dots} are converted into a single linear formula, with the variables names separated by \code{+}. } \value{ a one-sided linear formula with all variables named in the formulas extracted from the objects in \code{\dots}, except the ones listed in \code{omit}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{formula}}, \code{\link{all.vars}}} \examples{ asOneFormula(y ~ x + z | g, list(~ w, ~ t * sin(2 * pi))) } \keyword{models} nlme/man/coef.lmList.Rd0000644000176000001440000000743112222512062014455 0ustar ripleyusers% File nlme/man/coef.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.lmList} \title{Extract lmList Coefficients} \usage{ \method{coef}{lmList}(object, augFrame, data, which, FUN, omitGroupingFactor, \dots) } \alias{coef.lmList} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} objects with a common model. } \item{augFrame}{an optional logical value. If \code{TRUE}, the returned data frame is augmented with variables defined in the data frame used to produce \code{object}; else, if \code{FALSE}, only the coefficients are returned. Defaults to \code{FALSE}. } \item{data}{an optional data frame with the variables to be used for augmenting the returned data frame when \code{augFrame = TRUE}. Defaults to the data frame used to fit \code{object}.} \item{which}{an optional positive integer or character vector specifying which columns of the data frame used to produce \code{object} should be used in the augmentation of the returned data frame. Defaults to all variables in the data. } \item{FUN}{an optional summary function or a list of summary functions to be applied to group-varying variables, when collapsing the data by groups. Group-invariant variables are always summarized by the unique value that they assume within that group. If \code{FUN} is a single function it will be applied to each non-invariant variable by group to produce the summary for that variable. If \code{FUN} is a list of functions, the names in the list should designate classes of variables in the frame such as \code{ordered}, \code{factor}, or \code{numeric}. The indicated function will be applied to any group-varying variables of that class. The default functions to be used are \code{mean} for numeric factors, and \code{Mode} for both \code{factor} and \code{ordered}. The \code{Mode} function, defined internally in \code{gsummary}, returns the modal or most popular value of the variable. It is different from the \code{mode} function that returns the S-language mode of the variable. } \item{omitGroupingFactor}{an optional logical value. When \code{TRUE} the grouping factor itself will be omitted from the group-wise summary of \code{data} but the levels of the grouping factor will continue to be used as the row names for the returned data frame. Defaults to \code{FALSE}. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The coefficients of each \code{lm} object in the \code{object} list are extracted and organized into a data frame, with rows corresponding to the \code{lm} components and columns corresponding to the coefficients. Optionally, the returned data frame may be augmented with covariates summarized over the groups associated with the \code{lm} components. } \value{ a data frame inheriting from class \code{"coef.lmList"} with the estimated coefficients for each \code{"lm"} component of \code{object} and, optionally, other covariates summarized over the groups corresponding to the \code{"lm"} components. The returned object also inherits from classes \code{"ranef.lmList"} and \code{"data.frame"}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York, esp. pp. 457-458. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{fixed.effects.lmList}}, \code{\link{ranef.lmList}}, \code{\link{plot.ranef.lmList}}, \code{\link{gsummary}}} \examples{ fm1 <- lmList(distance ~ age|Subject, data = Orthodont) coef(fm1) coef(fm1, augFrame = TRUE) } \keyword{models} nlme/man/compareFits.Rd0000644000176000001440000000322312222512062014545 0ustar ripleyusers% File nlme/man/compareFits.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{compareFits} \title{Compare Fitted Objects} \usage{ compareFits(object1, object2, which) } \alias{compareFits} \alias{print.compareFits} \arguments{ \item{object1,object2}{data frames, or matrices, with the same row names, but possibly different column names. These will usually correspond to coefficients from fitted objects with a grouping structure (e.g. \code{lme} and \code{lmList} objects).} \item{which}{an optional integer or character vector indicating which columns in \code{object1} and \code{object2} are to be used in the returned object. Defaults to all columns.} } \description{ The columns in \code{object1} and \code{object2} are put together in matrices which allow direct comparison of the individual elements for each object. Missing columns in either object are replaced by \code{NA}s. } \value{ a three-dimensional array, with the third dimension given by the number of unique column names in either \code{object1} or \code{object2}. To each column name there corresponds a matrix with as many rows as the rows in \code{object1} and two columns, corresponding to \code{object1} and \code{object2}. The returned object inherits from class \code{compareFits}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{plot.compareFits}}, \code{\link{pairs.compareFits}}, \code{\link{comparePred}}, \code{\link{coef}}, \code{\link{random.effects}} } \examples{ fm1 <- lmList(Orthodont) fm2 <- lme(fm1) compareFits(coef(fm1), coef(fm2)) } \keyword{models} nlme/man/Matrix.reStruct.Rd0000644000176000001440000000246112222512062015352 0ustar ripleyusers% File nlme/man/Matrix.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Matrix.reStruct} \title{Assign reStruct Matrices} \usage{ \method{matrix}{reStruct}(object) <- value } \alias{matrix<-.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{value}{a matrix, or list of matrices, with the new values to be assigned to the matrices associated with the \code{pdMat} components of \code{object}.} } \description{ The individual matrices in \code{value} are assigned to each \code{pdMat} component of \code{object}, in the order they are listed. The new matrices must have the same dimensions as the matrices they are meant to replace. } \value{ an \code{reStruct} object similar to \code{object}, but with the coefficients of the individual \code{pdMat} components modified to produce the matrices listed in \code{value}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{reStruct}}, \code{\link{pdMat}}, \code{"\link{matrix<-}"} } \examples{ rs1 <- reStruct(list(Dog = ~day, Side = ~1), data = Pixel) matrix(rs1) <- list(diag(2), 3) } \keyword{models} nlme/man/plot.compareFits.Rd0000644000176000001440000000351212222512062015523 0ustar ripleyusers% File nlme/man/plot.compareFits.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.compareFits} \title{Plot a compareFits Object} \usage{ \method{plot}{compareFits}(x, subset, key, mark, \dots) } \alias{plot.compareFits} \arguments{ \item{x}{an object of class \code{"\link{compareFits}"}.} \item{subset}{an optional logical or integer vector specifying which rows of \code{x} should be used in the plots. If missing, all rows are used.} \item{key}{an optional logical value, or list. If \code{TRUE}, a legend is included at the top of the plot indicating which symbols (colors) correspond to which objects being compared. If \code{FALSE}, no legend is included. If given as a list, \code{key} is passed down as an argument to the \code{trellis} function generating the plots (\code{dotplot}). Defaults to \code{TRUE}.} \item{mark}{an optional numeric vector, of length equal to the number of coefficients being compared, indicating where vertical lines should be drawn in the plots. If missing, no lines are drawn.} \item{\dots}{optional arguments passed down to the \code{trellis} function generating the plots.} } \description{ A Trellis \code{dotplot} of the values being compared, with different rows per group, is generated, with a different panel for each coefficient. Different symbols (colors) are used for each object being compared. } \value{ A Trellis \code{dotplot} of the values being compared, with rows determined by the groups and panels by the coefficients. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{compareFits}}, \code{\link{pairs.compareFits}}, \code{\link{dotplot}} } \examples{ \dontrun{ fm1 <- lmList(Orthodont) fm2 <- lme(Orthodont) plot(compareFits(coef(fm1), coef(fm2))) } } \keyword{models} nlme/man/lmeScale.Rd0000644000176000001440000000175412222471724014036 0ustar ripleyusers% File nlme/man/lmeScale.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{lmeScale} \title{Scale for lme Optimization} \usage{ lmeScale(start) } \alias{lmeScale} \arguments{ \item{start}{the starting values for the coefficients to be estimated.} } \description{ This function calculates the scales to be used for each coefficient estimated through an \code{nlm} optimization in the \code{lme} function. If all initial values are zero, the scale is set to one for all coefficients; else, the scale for a coefficient with non-zero initial value is equal to the inverse of its initial value and the scale for the coefficients with initial value equal to zero is set to the median of the non-zero initial value coefficients. } \value{ a vector with the scales to be used in \code{nlm} for estimating the coefficients. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{nlm}}} \keyword{models} nlme/man/Variogram.corExp.Rd0000644000176000001440000000377512222512062015473 0ustar ripleyusers% File nlme/man/Variogram.corExp.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Variogram.corExp} \title{Calculate Semi-variogram for a corExp Object} \usage{ \method{Variogram}{corExp}(object, distance, sig2, length.out, \dots) } \alias{Variogram.corExp} \arguments{ \item{object}{an object inheriting from class \code{"\link{corExp}"}, representing an exponential spatial correlation structure.} \item{distance}{an optional numeric vector with the distances at which the semi-variogram is to be calculated. Defaults to \code{NULL}, in which case a sequence of length \code{length.out} between the minimum and maximum values of \code{getCovariate(object)} is used.} \item{sig2}{an optional numeric value representing the process variance. Defaults to \code{1}.} \item{length.out}{an optional integer specifying the length of the sequence of distances to be used for calculating the semi-variogram, when \code{distance = NULL}. Defaults to \code{50}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function calculates the semi-variogram values corresponding to the Exponential correlation model, using the estimated coefficients corresponding to \code{object}, at the distances defined by \code{distance}. } \value{ a data frame with columns \code{variog} and \code{dist} representing, respectively, the semi-variogram values and the corresponding distances. The returned value inherits from class \code{Variogram}. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corExp}}, \code{\link{plot.Variogram}}, \code{\link{Variogram}} } \examples{ stopifnot(require("stats", quietly = TRUE)) cs1 <- corExp(3, form = ~ Time | Rat) cs1 <- Initialize(cs1, BodyWeight) Variogram(cs1)[1:10,] } \keyword{models} nlme/man/varComb.Rd0000644000176000001440000000212612222512062013663 0ustar ripleyusers% File nlme/man/varComb.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varComb} \title{Combination of Variance Functions} \usage{ varComb(\dots) } \alias{varComb} \arguments{ \item{\dots}{objects inheriting from class \code{varFunc} representing variance function structures.} } \description{ This function is a constructor for the \code{varComb} class, representing a combination of variance functions. The corresponding variance function is equal to the product of the variance functions of the \code{varFunc} objects listed in \code{\dots}. } \value{ a \code{varComb} object representing a combination of variance functions, also inheriting from class \code{varFunc}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{varClasses}}, \code{\link{varWeights.varComb}}, \code{\link{coef.varComb}}} \examples{ vf1 <- varComb(varIdent(form = ~1|Sex), varPower()) } \keyword{models} nlme/man/lmList.groupedData.Rd0000644000176000001440000000472412222512062016002 0ustar ripleyusers% File nlme/man/lmList.groupedData.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{lmList.groupedData} \title{lmList Fit from a groupedData Object} \usage{ \method{lmList}{groupedData}(object, data, level, subset, na.action, pool) } \alias{lmList.groupedData} \arguments{ \item{object}{a data frame inheriting from class \code{"\link{groupedData}"}.} \item{data}{this argument is included for consistency with the generic function. It is ignored in this method function.} \item{level}{ an optional integer specifying the level of grouping to be used when multiple nested levels of grouping are present. } \item{subset}{an optional expression indicating which subset of the rows of \code{data} should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{lmList} to print an error message and terminate if there are any incomplete observations. } \item{pool}{ an optional logical value that is preserved as an attribute of the returned value. This will be used as the default for \code{pool} in calculations of standard deviations or standard errors for summaries. } } \description{ The response variable and primary covariate in \code{formula(object)} are used to construct the linear model formula. This formula and the \code{groupedData} object are passed as the \code{object} and \code{data} arguments to \code{lmList.formula}, together with any other additional arguments in the function call. See the documentation on \code{lmList.formula} for a description of that function. } \value{ a list of \code{lm} objects with as many components as the number of groups defined by the grouping factor. Generic functions such as \code{coef}, \code{fixed.effects}, \code{lme}, \code{pairs}, \code{plot}, \code{predict}, \code{random.effects}, \code{summary}, and \code{update} have methods that can be applied to an \code{lmList} object. } \seealso{ \code{\link{groupedData}}, \code{\link{lm}}, \code{\link{lme.lmList}}, \code{\link{lmList}}, \code{\link{lmList.formula}} } \examples{ fm1 <- lmList(Orthodont) summary(fm1) } \keyword{models} nlme/man/corMatrix.pdMat.Rd0000644000176000001440000000212412222512062015304 0ustar ripleyusers% File nlme/man/corMatrix.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corMatrix.pdMat} \title{Extract Correlation Matrix from a pdMat Object} \usage{ \method{corMatrix}{pdMat}(object, \dots) } \alias{corMatrix.pdBlocked} \alias{corMatrix.pdCompSymm} \alias{corMatrix.pdDiag} \alias{corMatrix.pdIdent} \alias{corMatrix.pdMat} \alias{corMatrix.pdSymm} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive definite matrix.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The correlation matrix corresponding to the positive-definite matrix represented by \code{object} is obtained. } \value{ the correlation matrix corresponding to the positive-definite matrix represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{pdMatrix}}} \examples{ pd1 <- pdSymm(diag(1:4)) corMatrix(pd1) } \keyword{models} nlme/man/pdSymm.Rd0000644000176000001440000000662412222512062013552 0ustar ripleyusers% File nlme/man/pdSymm.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdSymm} \title{General Positive-Definite Matrix} \usage{ pdSymm(value, form, nam, data) } \alias{pdSymm} \arguments{ \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric vector. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} } \description{ This function is a constructor for the \code{pdSymm} class, representing a general positive-definite matrix. If the matrix associated with \code{object} is of dimension \eqn{n}, it is represented by \eqn{n(n+1)/2}{n*(n+1)/2} unrestricted parameters, using the matrix-logarithm parametrization described in Pinheiro and Bates (1996). When \code{value} is \code{numeric(0)}, an uninitialized \code{pdMat} object, a one-sided formula, or a vector of character strings, \code{object} is returned as an uninitialized \code{pdSymm} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is an initialized \code{pdMat} object, \code{object} will be constructed from \code{as.matrix(value)}. Finally, if \code{value} is a numeric vector, it is assumed to represent the unrestricted coefficients of the matrix-logarithm parametrization of the underlying positive-definite matrix. } \value{ a \code{pdSymm} object representing a general positive-definite matrix, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C. and Bates., D.M. (1996) "Unconstrained Parametrizations for Variance-Covariance Matrices", Statistics and Computing, 6, 289-296. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{pdClasses}}, \code{\link{matrix<-.pdMat}}} \examples{ pd1 <- pdSymm(diag(1:3), nam = c("A","B","C")) pd1 } \keyword{models} nlme/man/lme.lmList.Rd0000644000176000001440000001307212222512062014314 0ustar ripleyusers% File nlme/man/lme.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{lme.lmList} \title{LME fit from lmList Object} \usage{ \method{lme}{lmList}(fixed, data, random, correlation, weights, subset, method, na.action, control, contrasts, keep.data) } \alias{lme.lmList} \arguments{ \item{fixed}{an object inheriting from class \code{"\link{lmList}."}, representing a list of \code{lm} fits with a common model.} \item{data}{this argument is included for consistency with the generic function. It is ignored in this method function.} \item{random}{an optional one-sided linear formula with no conditioning expression, or a \code{pdMat} object with a \code{formula} attribute. Multiple levels of grouping are not allowed with this method function. Defaults to a formula consisting of the right hand side of \code{formula(fixed)}.} \item{correlation}{an optional \code{corStruct} object describing the within-group correlation structure. See the documentation of \code{corClasses} for a description of the available \code{corStruct} classes. Defaults to \code{NULL}, corresponding to no within-group correlations.} \item{weights}{an optional \code{varFunc} object or one-sided formula describing the within-group heteroscedasticity structure. If given as a formula, it is used as the argument to \code{varFixed}, corresponding to fixed variance weights. See the documentation on \code{varClasses} for a description of the available \code{varFunc} classes. Defaults to \code{NULL}, corresponding to homoscedastic within-group errors.} \item{subset}{an optional expression indicating the subset of the rows of \code{data} that should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{method}{a character string. If \code{"REML"} the model is fit by maximizing the restricted log-likelihood. If \code{"ML"} the log-likelihood is maximized. Defaults to \code{"REML"}.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{lme} to print an error message and terminate if there are any incomplete observations.} \item{control}{a list of control values for the estimation algorithm to replace the default values returned by the function \code{lmeControl}. Defaults to an empty list.} \item{contrasts}{an optional list. See the \code{contrasts.arg} of \code{model.matrix.default}.} \item{keep.data}{logical: should the \code{data} argument (if supplied and a data frame) be saved as part of the model object?} } \description{ If the random effects names defined in \code{random} are a subset of the \code{lmList} object coefficient names, initial estimates for the covariance matrix of the random effects are obtained (overwriting any values given in \code{random}). \code{formula(fixed)} and the \code{data} argument in the calling sequence used to obtain \code{fixed} are passed as the \code{fixed} and \code{data} arguments to \code{lme.formula}, together with any other additional arguments in the function call. See the documentation on \code{lme.formula} for a description of that function. } \value{ an object of class \code{lme} representing the linear mixed-effects model fit. Generic functions such as \code{print}, \code{plot} and \code{summary} have methods to show the results of the fit. See \code{lmeObject} for the components of the fit. The functions \code{resid}, \code{coef}, \code{fitted}, \code{fixed.effects}, and \code{random.effects} can be used to extract some of its components. } \references{ The computational methods follow the general framework of Lindstrom and Bates (1988). The model formulation is described in Laird and Ware (1982). The variance-covariance parametrizations are described in Pinheiro and Bates (1996). The different correlation structures available for the \code{correlation} argument are described in Box, Jenkins and Reinse (1994), Littel \emph{et al} (1996), and Venables and Ripley, (2002). The use of variance functions for linear and nonlinear mixed effects models is presented in detail in Davidian and Giltinan (1995). Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden--Day. Davidian, M. and Giltinan, D.M. (1995) "Nonlinear Mixed Effects Models for Repeated Measurement Data", Chapman and Hall. Laird, N.M. and Ware, J.H. (1982) "Random-Effects Models for Longitudinal Data", Biometrics, 38, 963--974. Lindstrom, M.J. and Bates, D.M. (1988) "Newton-Raphson and EM Algorithms for Linear Mixed-Effects Models for Repeated-Measures Data", Journal of the American Statistical Association, 83, 1014--1022. Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C. and Bates., D.M. (1996) "Unconstrained Parametrizations for Variance-Covariance Matrices", Statistics and Computing, 6, 289--296. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. } \author{ José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu} } \seealso{\code{\link{lme}}, \code{\link{lmList}}, \code{\link{lmeObject}} } \examples{ fm1 <- lmList(Orthodont) fm2 <- lme(fm1) summary(fm1) summary(fm2) } \keyword{models} nlme/man/predict.lme.Rd0000644000176000001440000000606612222471724014520 0ustar ripleyusers% File nlme/man/predict.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{predict.lme} \title{Predictions from an lme Object} \usage{ \method{predict}{lme}(object, newdata, level, asList, na.action, \dots) } \alias{predict.lme} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{newdata}{an optional data frame to be used for obtaining the predictions. All variables used in the fixed and random effects models, as well as the grouping factors, must be present in the data frame. If missing, the fitted values are returned.} \item{level}{an optional integer vector giving the level(s) of grouping to be used in obtaining the predictions. Level values increase from outermost to innermost grouping, with level zero corresponding to the population predictions. Defaults to the highest or innermost level of grouping.} \item{asList}{an optional logical value. If \code{TRUE} and a single value is given in \code{level}, the returned object is a list with the predictions split by groups; else the returned value is either a vector or a data frame, according to the length of \code{level}. } \item{na.action}{a function that indicates what should happen when \code{newdata} contains \code{NA}s. The default action (\code{na.fail}) causes the function to print an error message and terminate if there are any incomplete observations.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The predictions at level \eqn{i} are obtained by adding together the population predictions (based only on the fixed effects estimates) and the estimated contributions of the random effects to the predictions at grouping levels less or equal to \eqn{i}. The resulting values estimate the best linear unbiased predictions (BLUPs) at level \eqn{i}. If group values not included in the original grouping factors are present in \code{newdata}, the corresponding predictions will be set to \code{NA} for levels greater or equal to the level at which the unknown groups occur. } \value{ if a single level of grouping is specified in \code{level}, the returned value is either a list with the predictions split by groups (\code{asList = TRUE}) or a vector with the predictions (\code{asList = FALSE}); else, when multiple grouping levels are specified in \code{level}, the returned object is a data frame with columns given by the predictions at different levels and the grouping factors. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{fitted.lme}}} \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) newOrth <- data.frame(Sex = c("Male","Male","Female","Female","Male","Male"), age = c(15, 20, 10, 12, 2, 4), Subject = c("M01","M01","F30","F30","M04","M04")) predict(fm1, newOrth, level = 0:1) } \keyword{models} nlme/man/gls-internal.Rd0000644000176000001440000000210412231177503014674 0ustar ripleyusers% File nlme/man/gls-internal.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{gls-internal} \title{Auxiliary functions used by gls} \alias{glsApVar} \alias{glsEstimate} \description{ These are functions used by \code{gls} to call its compiled C code. They are exported to allow experimentation with modified versions. } \usage{ glsApVar(glsSt, sigma, conLin = attr(glsSt, "conLin"), .relStep = .Machine$double.eps^(1/3), minAbsPar = 0, natural = TRUE) glsEstimate(object, conLin = attr(object, "conLin"), control = list(singular.ok = FALSE)) } \arguments{ \item{glsSt, object}{An object inheriting from class \code{"\link{glsStruct}"}.} \item{sigma}{the estimated residual standard error: see \code{\link{glsObject}}.} \item{conLin}{A \sQuote{condensed linear model}: see \code{\link{logLik.glsStruct}}.} \item{.relStep, minAbsPar, natural}{Control values: see \code{\link{glsControl}}.} \item{control}{The relevant part of a \code{\link{glsControl}} return value.} } \keyword{internal} nlme/man/varConstPower.Rd0000644000176000001440000000756512222512062015122 0ustar ripleyusers% File nlme/man/varConstPower.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varConstPower} \title{Constant Plus Power Variance Function} \usage{ varConstPower(const, power, form, fixed) } \alias{varConstPower} \arguments{ \item{const, power}{optional numeric vectors, or lists of numeric values, with, respectively, the coefficients for the constant and the power terms. Both arguments must have length one, unless a grouping factor is specified in \code{form}. If either argument has length greater than one, it must have names which identify its elements to the levels of the grouping factor defined in \code{form}. If a grouping factor is present in \code{form} and the argument has length one, its value will be assigned to all grouping levels. Only positive values are allowed for \code{const}. Default is \code{numeric(0)}, which results in a vector of zeros of appropriate length being assigned to the coefficients when \code{object} is initialized (corresponding to constant variance equal to one).} \item{form}{an optional one-sided formula of the form \code{~ v}, or \code{~ v | g}, specifying a variance covariate \code{v} and, optionally, a grouping factor \code{g} for the coefficients. The variance covariate must evaluate to a numeric vector and may involve expressions using \code{"."}, representing a fitted model object from which fitted values (\code{fitted(.)}) and residuals (\code{resid(.)}) can be extracted (this allows the variance covariate to be updated during the optimization of an object function). When a grouping factor is present in \code{form}, a different coefficient value is used for each of its levels. Several grouping variables may be simultaneously specified, separated by the \code{*} operator, as in \code{~ v | g1 * g2 * g3}. In this case, the levels of each grouping variable are pasted together and the resulting factor is used to group the observations. Defaults to \code{~ fitted(.)} representing a variance covariate given by the fitted values of a fitted model object and no grouping factor. } \item{fixed}{an optional list with components \code{const} and/or \code{power}, consisting of numeric vectors, or lists of numeric values, specifying the values at which some or all of the coefficients in the variance function should be fixed. If a grouping factor is specified in \code{form}, the components of \code{fixed} must have names identifying which coefficients are to be fixed. Coefficients included in \code{fixed} are not allowed to vary during the optimization of an objective function. Defaults to \code{NULL}, corresponding to no fixed coefficients.} } \description{ This function is a constructor for the \code{varConstPower} class, representing a constant plus power variance function structure. Letting \eqn{v} denote the variance covariate and \eqn{\sigma^2(v)}{s2(v)} denote the variance function evaluated at \eqn{v}, the constant plus power variance function is defined as \eqn{\sigma^2(v) = (\theta_1 + |v|^\theta_2)^2}{s2(v) = (t1 + |v|^t2)^2}, where \eqn{\theta_1,\theta_2}{t1, t2} are the variance function coefficients. When a grouping factor is present, different \eqn{\theta_1,\theta_2}{t1, t2} are used for each factor level. } \value{ a \code{varConstPower} object representing a constant plus power variance function structure, also inheriting from class \code{varFunc}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{varClasses}}, \code{\link{varWeights.varFunc}}, \code{\link{coef.varConstPower}}} \examples{ vf1 <- varConstPower(1.2, 0.2, form = ~age|Sex) } \keyword{models} nlme/man/residuals.glsStruct.Rd0000644000176000001440000000263312222512062016261 0ustar ripleyusers% File nlme/man/residuals.glsStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{residuals.glsStruct} \title{Calculate glsStruct Residuals} \usage{ \method{residuals}{glsStruct}(object, glsFit, \dots) } \alias{residuals.glsStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{glsStruct}"}, representing a list of linear model components, such as \code{corStruct} and \code{"\link{varFunc}"} objects.} \item{glsFit}{an optional list with components \code{logLik} (log-likelihood), \code{beta} (coefficients), \code{sigma} (standard deviation for error term), \code{varBeta} (coefficients' covariance matrix), \code{fitted} (fitted values), and \code{residuals} (residuals). Defaults to \code{attr(object, "glsFit")}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The residuals for the linear model represented by \code{object} are extracted. } \value{ a vector with the residuals for the linear model represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This method function is primarily used inside \code{gls} and \code{residuals.gls}. } \seealso{\code{\link{gls}}, \code{\link{glsStruct}}, \code{\link{residuals.gls}}, \code{\link{fitted.glsStruct}} } \keyword{models} nlme/man/qqnorm.lme.Rd0000644000176000001440000000750512222512062014371 0ustar ripleyusers% File nlme/man/qqnorm.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{qqnorm.lme} \title{Normal Plot of Residuals or Random Effects from an lme Object} \usage{ \method{qqnorm}{lme}(y, form, abline, id, idLabels, grid, \dots) } \alias{qqnorm.lm} \alias{qqnorm.lme} \alias{qqnorm.lmList} \alias{qqnorm.nls} \arguments{ \item{y}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model or from class \code{"\link{lmList}"}, representing a list of \code{lm} objects, or from class \code{"lm"}, representing a fitted linear model, or from class \code{"nls"}, representing a nonlinear least squares fitted model.} \item{form}{an optional one-sided formula specifying the desired type of plot. Any variable present in the original data frame used to obtain \code{y} can be referenced. In addition, \code{y} itself can be referenced in the formula using the symbol \code{"."}. Conditional expressions on the right of a \code{|} operator can be used to define separate panels in a Trellis display. The expression on the right hand side of \code{form} and to the left of a \code{|} operator must evaluate to a residuals vector, or a random effects matrix. Default is \code{~ resid(., type = "p")}, corresponding to a normal plot of the standardized residuals evaluated at the innermost level of nesting.} \item{abline}{an optional numeric value, or numeric vector of length two. If given as a single value, a horizontal line will be added to the plot at that coordinate; else, if given as a vector, its values are used as the intercept and slope for a line added to the plot. If missing, no lines are added to the plot.} \item{id}{an optional numeric value, or one-sided formula. If given as a value, it is used as a significance level for a two-sided outlier test for the standardized residuals (random effects). Observations with absolute standardized residuals (random effects) greater than the \eqn{1 - value/2} quantile of the standard normal distribution are identified in the plot using \code{idLabels}. If given as a one-sided formula, its right hand side must evaluate to a logical, integer, or character vector which is used to identify observations in the plot. If missing, no observations are identified.} \item{idLabels}{an optional vector, or one-sided formula. If given as a vector, it is converted to character and used to label the observations identified according to \code{id}. If given as a one-sided formula, its right hand side must evaluate to a vector which is converted to character and used to label the identified observations. Default is the innermost grouping factor.} \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default is \code{FALSE}.} \item{\dots}{optional arguments passed to the Trellis plot function.} } \description{ Diagnostic plots for assessing the normality of residuals and random effects in the linear mixed-effects fit are obtained. The \code{form} argument gives considerable flexibility in the type of plot specification. A conditioning expression (on the right side of a \code{|} operator) always implies that different panels are used for each level of the conditioning factor, according to a Trellis display. } \value{ a diagnostic Trellis plot for assessing normality of residuals or random effects. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{plot.lme}}} \examples{ \dontrun{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) # normal plot of standardized residuals by gender qqnorm(fm1, ~ resid(., type = "p") | Sex, abline = c(0, 1)) # normal plots of random effects qqnorm(fm1, ~ranef(.)) } } \keyword{models} nlme/man/formula.reStruct.Rd0000644000176000001440000000204412222512062015550 0ustar ripleyusers% File nlme/man/formula.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{formula.reStruct} \title{Extract reStruct Object Formula} \usage{ \method{formula}{reStruct}(x, asList, \dots) } \alias{formula.reStruct} \arguments{ \item{x}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{asList}{logical. Should the asList argument be applied to each of the components?} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts a formula from each of the components of \code{x}, returning a list of formulas. } \value{ a list with the formulas of each component of \code{x}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{formula}}} \examples{ rs1 <- reStruct(list(A = pdDiag(diag(2), ~age), B = ~1)) formula(rs1) } \keyword{models} nlme/man/residuals.gls.Rd0000644000176000001440000000327312222512062015055 0ustar ripleyusers% File nlme/man/residuals.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{residuals.gls} \title{Extract gls Residuals} \usage{ \method{residuals}{gls}(object, type, \dots) } \alias{residuals.gls} \alias{residuals.gnls} \arguments{ \item{object}{an object inheriting from class \code{"\link{gls}"}, representing a generalized least squares fitted linear model, or from class \code{gnls}, representing a generalized nonlinear least squares fitted linear model.} \item{type}{an optional character string specifying the type of residuals to be used. If \code{"response"}, the "raw" residuals (observed - fitted) are used; else, if \code{"pearson"}, the standardized residuals (raw residuals divided by the corresponding standard errors) are used; else, if \code{"normalized"}, the normalized residuals (standardized residuals pre-multiplied by the inverse square-root factor of the estimated error correlation matrix) are used. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"response"}.} \item{\dots}{some methods for this generic function require additional arguments. None are used in this method.} } \description{ The residuals for the linear model represented by \code{object} are extracted. } \value{ a vector with the residuals for the linear model represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}} \examples{ fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) residuals(fm1) } \keyword{models} nlme/man/lmeControl.Rd0000644000176000001440000001050612222471724014422 0ustar ripleyusers% File nlme/man/lmeControl.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{lmeControl} \title{Control Values for lme Fit} \usage{ lmeControl(maxIter, msMaxIter, tolerance, niterEM, msMaxEval, msTol, msScale, msVerbose, returnObject, gradHess, apVar, .relStep, minAbsParApVar, nlmStepMax, opt = c("nlminb", "optim"), optimMethod, natural, \dots) } \alias{lmeControl} \arguments{ \item{maxIter}{maximum number of iterations for the \code{lme} optimization algorithm. Default is 50.} \item{msMaxIter}{maximum number of iterations for the \code{nlm} optimization step inside the \code{lme} optimization. Default is 50.} \item{tolerance}{tolerance for the convergence criterion in the \code{lme} algorithm. Default is 1e-6.} \item{niterEM}{number of iterations for the EM algorithm used to refine the initial estimates of the random effects variance-covariance coefficients. Default is 25.} \item{msMaxEval}{maximum number of evaluations of the objective function permitted for nlminb. Default is 200. } \item{msTol}{tolerance for the convergence criterion the first iteration. Default is 1e-7. } \item{msScale}{scale function passed as the \code{scale} argument to the \code{nlm} function (see documentation on that function). Default is \code{lmeScale}.} \item{msVerbose}{a logical value passed as the \code{trace} argument to \code{nlm} (see documentation on that function). Default is \code{FALSE}.} \item{returnObject}{a logical value indicating whether the fitted object should be returned when the maximum number of iterations is reached without convergence of the algorithm. Default is \code{FALSE}.} \item{gradHess}{a logical value indicating whether numerical gradient vectors and Hessian matrices of the log-likelihood function should be used in the \code{nlm} optimization. This option is only available when the correlation structure (\code{corStruct}) and the variance function structure (\code{varFunc}) have no "varying" parameters and the \code{pdMat} classes used in the random effects structure are \code{pdSymm} (general positive-definite), \code{pdDiag} (diagonal), \code{pdIdent} (multiple of the identity), or \code{pdCompSymm} (compound symmetry). Default is \code{TRUE}.} \item{apVar}{a logical value indicating whether the approximate covariance matrix of the variance-covariance parameters should be calculated. Default is \code{TRUE}.} \item{.relStep}{relative step for numerical derivatives calculations. Default is \code{.Machine$double.eps^(1/3)}.} \item{nlmStepMax}{stepmax value to be passed to nlm. See \code{\link{nlm}} for details. Default is 100.0} \item{opt}{the optimizer to be used, either \code{"\link{nlminb}"} (the default) or \code{"\link{optim}"}.} \item{optimMethod}{character - the optimization method to be used with the \code{\link{optim}} optimizer. The default is \code{"BFGS"}. An alternative is \code{"L-BFGS-B"}.} \item{minAbsParApVar}{numeric value - minimum absolute parameter value in the approximate variance calculation. The default is \code{0.05}.} \item{natural}{a logical value indicating whether the \code{pdNatural} parametrization should be used for general positive-definite matrices (\code{pdSymm}) in \code{reStruct}, when the approximate covariance matrix of the estimators is calculated. Default is \code{TRUE}.} \item{\dots}{Further named control arguments to be passed to \code{\link{nlminb}} (those from \code{abs.tol} down) or \code{\link{optim}} (those except \code{trace} and \code{maxit}; \code{reltol}: is used only from the second iteration).} } \description{ The values supplied in the function call replace the defaults and a list with all possible arguments is returned. The returned list is used as the \code{control} argument to the \code{lme} function. } \value{ a list with components for each of the possible arguments. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{nlm}}, \code{\link{optim}}, \code{\link{lmeScale}}} \examples{ # decrease the maximum number iterations in the ms call and # request that information on the evolution of the ms iterations be printed lmeControl(msMaxIter = 20, msVerbose = TRUE) } \keyword{models} nlme/man/BodyWeight.Rd0000644000176000001440000000363112222471724014352 0ustar ripleyusers% File nlme/man/BodyWeight.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{BodyWeight} \alias{BodyWeight} \title{Rat weight over time for different diets} \description{ The \code{BodyWeight} data frame has 176 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{weight}{ a numeric vector giving the body weight of the rat (grams). } \item{Time}{ a numeric vector giving the time at which the measurement is made (days). } \item{Rat}{ an ordered factor with levels \code{2} < \code{3} < \code{4} < \code{1} < \code{8} < \code{5} < \code{6} < \code{7} < \code{11} < \code{9} < \code{10} < \code{12} < \code{13} < \code{15} < \code{14} < \code{16} identifying the rat whose weight is measured. } \item{Diet}{ a factor with levels \code{1} to \code{3} indicating the diet that the rat receives. } } } \details{ Hand and Crowder (1996) describe data on the body weights of rats measured over 64 days. These data also appear in Table 2.4 of Crowder and Hand (1990). The body weights of the rats (in grams) are measured on day 1 and every seven days thereafter until day 64, with an extra measurement on day 44. The experiment started several weeks before ``day 1.'' There are three groups of rats, each on a different diet. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.3) Crowder, M. and Hand, D. (1990), \emph{Analysis of Repeated Measures}, Chapman and Hall, London. Hand, D. and Crowder, M. (1996), \emph{Practical Longitudinal Data Analysis}, Chapman and Hall, London. } %\examples{} \keyword{datasets} nlme/man/coef.gnls.Rd0000644000176000001440000000170312222512062014150 0ustar ripleyusers% File nlme/man/coef.gnls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.gnls} \title{Extract gnls Coefficients} \usage{ \method{coef}{gnls}(object, \dots) } \alias{coef.gnls} \arguments{ \item{object}{an object inheriting from class \code{"\link{gnls}"}, representing a generalized nonlinear least squares fitted model.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The estimated coefficients for the nonlinear model represented by \code{object} are extracted. } \value{ a vector with the estimated coefficients for the nonlinear model represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gnls}}} \examples{ fm1 <- gnls(weight ~ SSlogis(Time, Asym, xmid, scal), Soybean, weights = varPower()) coef(fm1) } \keyword{models} nlme/man/Machines.Rd0000644000176000001440000000246712222471724014042 0ustar ripleyusers% File nlme/man/Machines.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Machines} \alias{Machines} \title{Productivity Scores for Machines and Workers} \description{ The \code{Machines} data frame has 54 rows and 3 columns. } \format{ This data frame contains the following columns: \describe{ \item{Worker}{ an ordered factor giving the unique identifier for the worker. } \item{Machine}{ a factor with levels \code{A}, \code{B}, and \code{C} identifying the machine brand. } \item{score}{ a productivity score. } } } \details{ Data on an experiment to compare three brands of machines used in an industrial process are presented in Milliken and Johnson (p. 285, 1992). Six workers were chosen randomly among the employees of a factory to operate each machine three times. The response is an overall productivity score taking into account the number and quality of components produced.} \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.14) Milliken, G. A. and Johnson, D. E. (1992), \emph{Analysis of Messy Data, Volume I: Designed Experiments}, Chapman and Hall, London. } %\examples{} \keyword{datasets} nlme/man/Names.reStruct.Rd0000644000176000001440000000306112222512062015146 0ustar ripleyusers% File nlme/man/Names.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Names.reStruct} \title{Names of an reStruct Object} \usage{ \method{Names}{reStruct}(object, \dots) \method{Names}{reStruct}(object, \dots) <- value } \alias{Names.reStruct} \alias{Names<-.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{value}{a list of character vectors with the replacement values for the names of the individual \code{pdMat} objects that form \code{object}. It must have the same length as \code{object}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the column names of each of the positive-definite matrices represented the \code{pdMat} elements of \code{object}. } \value{ a list containing the column names of each of the positive-definite matrices represented by the \code{pdMat} elements of \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \section{SIDE EFFECTS}{ On the left side of an assignment, sets the \code{Names} of the \code{pdMat} elements of \code{object} to the corresponding element of \code{value}. } \seealso{\code{\link{reStruct}}, \code{\link{pdMat}}, \code{\link{Names.pdMat}} } \examples{ rs1 <- reStruct(list(Dog = ~day, Side = ~1), data = Pixel) Names(rs1) } \keyword{models} nlme/man/plot.Variogram.Rd0000644000176000001440000000506412222512062015202 0ustar ripleyusers% File nlme/man/plot.Variogram.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.Variogram} \title{Plot a Variogram Object} \usage{ \method{plot}{Variogram}(x, smooth, showModel, sigma, span, xlab, ylab, type, ylim, grid, \dots) } \alias{plot.Variogram} \arguments{ \item{x}{an object inheriting from class \code{"\link{Variogram}"}, consisting of a data frame with two columns named \code{variog} and \code{dist}, representing the semi-variogram values and the corresponding distances. } \item{smooth}{an optional logical value controlling whether a \code{loess} smoother should be added to the plot. Defaults to \code{TRUE}, when \code{showModel} is \code{FALSE}. } \item{showModel}{an optional logical value controlling whether the semi-variogram corresponding to an \code{"modelVariog"} attribute of \code{x}, if any is present, should be added to the plot. Defaults to \code{TRUE}, when the \code{"modelVariog"} attribute is present. } \item{sigma}{an optional numeric value used as the height of a horizontal line displayed in the plot. Can be used to represent the process standard deviation. Default is \code{NULL}, implying that no horizontal line is drawn. } \item{span}{an optional numeric value with the smoothing parameter for the \code{loess} fit. Default is 0.6. } \item{xlab,ylab}{optional character strings with the x- and y-axis labels. Default respectively to \code{"Distance"} and \code{"SemiVariogram"}. } \item{type}{an optional character indicating the type of plot. Defaults to \code{"p"}. } \item{ylim}{an optional numeric vector with the limits for the y-axis. Defaults to \code{c(0, max(x$variog))}. } \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default is \code{FALSE}.} \item{\dots}{optional arguments passed to the Trellis \code{xyplot} function.} } \description{ an \code{xyplot} of the semi-variogram versus the distances is produced. If \code{smooth = TRUE}, a \code{loess} smoother is added to the plot. If \code{showModel = TRUE} and \code{x} includes an \code{"modelVariog"} attribute, the corresponding semi-variogram is added to the plot. } \value{ an \code{xyplot} Trellis plot. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{Variogram}}, \code{\link{xyplot}}, \code{\link{loess}}} \examples{ fm1 <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary) plot(Variogram(fm1, form = ~ Time | Mare, maxDist = 0.7)) } \keyword{models} nlme/man/Dialyzer.Rd0000644000176000001440000000422412222471724014067 0ustar ripleyusers% File nlme/man/Dialyzer.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Dialyzer} \alias{Dialyzer} \title{High-Flux Hemodialyzer} \description{ The \code{Dialyzer} data frame has 140 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{Subject}{ an ordered factor with levels \code{10} < \code{8} < \code{2} < \code{6} < \code{3} < \code{5} < \code{9} < \code{7} < \code{1} < \code{4} < \code{17} < \code{20} < \code{11} < \code{12} < \code{16} < \code{13} < \code{14} < \code{18} < \code{15} < \code{19} giving the unique identifier for each subject } \item{QB}{ a factor with levels \code{200} and \code{300} giving the bovine blood flow rate (dL/min). } \item{pressure}{ a numeric vector giving the transmembrane pressure (dmHg). } \item{rate}{ the hemodialyzer ultrafiltration rate (mL/hr). } \item{index}{ index of observation within subject---1 through 7. } } } \details{ Vonesh and Carter (1992) describe data measured on high-flux hemodialyzers to assess their \emph{in vivo} ultrafiltration characteristics. The ultrafiltration rates (in mL/hr) of 20 high-flux dialyzers were measured at seven different transmembrane pressures (in dmHg). The \emph{in vitro} evaluation of the dialyzers used bovine blood at flow rates of either 200~dl/min or 300~dl/min. The data, are also analyzed in Littell, Milliken, Stroup, and Wolfinger (1996). } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.6) Vonesh, E. F. and Carter, R. L. (1992), Mixed-effects nonlinear regression for unbalanced repeated measures, \emph{Biometrics}, \bold{48}, 1-18. Littell, R. C., Milliken, G. A., Stroup, W. W. and Wolfinger, R. D. (1996), \emph{SAS System for Mixed Models}, SAS Institute, Cary, NC. } %\examples{} \keyword{datasets} nlme/man/fitted.lmeStruct.Rd0000644000176000001440000000471312222512062015536 0ustar ripleyusers% File nlme/man/fitted.lmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{fitted.lmeStruct} \title{Calculate lmeStruct Fitted Values} \usage{ \method{fitted}{lmeStruct}(object, level, conLin, lmeFit, \dots) } \alias{fitted.lmeStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmeStruct}"}, representing a list of linear mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects.} \item{level}{an optional integer vector giving the level(s) of grouping to be used in extracting the fitted values from \code{object}. Level values increase from outermost to innermost grouping, with level zero corresponding to the population fitted values. Defaults to the highest or innermost level of grouping.} \item{conLin}{an optional condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying lme model. Defaults to \code{attr(object, "conLin")}.} \item{lmeFit}{an optional list with components \code{beta} and \code{b} containing respectively the fixed effects estimates and the random effects estimates to be used to calculate the fitted values. Defaults to \code{attr(object, "lmeFit")}.} \item{\dots}{some methods for this generic accept other optional arguments.} } \description{ The fitted values at level \eqn{i} are obtained by adding together the population fitted values (based only on the fixed effects estimates) and the estimated contributions of the random effects to the fitted values at grouping levels less or equal to \eqn{i}. The resulting values estimate the best linear unbiased predictions (BLUPs) at level \eqn{i}. } \value{ if a single level of grouping is specified in \code{level}, the returned value is a vector with the fitted values at the desired level; else, when multiple grouping levels are specified in \code{level}, the returned object is a matrix with columns given by the fitted values at different levels. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This method function is generally only used inside \code{lme} and \code{fitted.lme}. } \seealso{\code{\link{lme}}, \code{\link{fitted.lme}}, \code{\link{residuals.lmeStruct}} } \keyword{models} nlme/man/gnlsStruct.Rd0000644000176000001440000000236612222512062014450 0ustar ripleyusers% File nlme/man/gnlsStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{gnlsStruct} \title{Generalized Nonlinear Least Squares Structure} \usage{ gnlsStruct(corStruct, varStruct) } \alias{gnlsStruct} \alias{Initialize.gnlsStruct} \arguments{ \item{corStruct}{an optional \code{corStruct} object, representing a correlation structure. Default is \code{NULL}.} \item{varStruct}{an optional \code{varFunc} object, representing a variance function structure. Default is \code{NULL}.} } \description{ A generalized nonlinear least squares structure is a list of model components representing different sets of parameters in the nonlinear model. A \code{gnlsStruct} may contain \code{corStruct} and \code{varFunc} objects. \code{NULL} arguments are not included in the \code{gnlsStruct} list. } \value{ a list of model variance-covariance components determining the parameters to be estimated for the associated nonlinear model. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gnls}}, \code{\link{corClasses}}, \code{\link{residuals.gnlsStruct}} \code{\link{varFunc}} } \examples{ gnls1 <- gnlsStruct(corAR1(), varPower()) } \keyword{models} nlme/man/getGroups.Rd0000644000176000001440000000337112222512062014254 0ustar ripleyusers% File nlme/man/getGroups.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getGroups} \title{Extract Grouping Factors from an Object} \usage{ getGroups(object, form, level, data, sep) } \alias{getGroups} \arguments{ \item{object}{any object} \item{form}{an optional formula with a conditioning expression on its right hand side (i.e. an expression involving the \code{|} operator). Defaults to \code{formula(object)}.} \item{level}{a positive integer vector with the level(s) of grouping to be used when multiple nested levels of grouping are present. This argument is optional for most methods of this generic function and defaults to all levels of nesting.} \item{data}{a data frame in which to interpret the variables named in \code{form}. Optional for most methods.} \item{sep}{character, the separator to use between group levels when multiple levels are collapsed. The default is \code{'/'}.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include \code{corStruct}, \code{data.frame}, \code{gls}, \code{lme}, \code{lmList}, and \code{varFunc}. } \value{ will depend on the method function used; see the appropriate documentation. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 100, 461. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getGroupsFormula}}, \code{\link{getGroups.data.frame}}, \code{\link{getGroups.gls}}, \code{\link{getGroups.lmList}}, \code{\link{getGroups.lme}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/Initialize.glsStruct.Rd0000644000176000001440000000254412222512062016370 0ustar ripleyusers% File nlme/man/Initialize.glsStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Initialize.glsStruct} \title{Initialize a glsStruct Object} \usage{ \method{Initialize}{glsStruct}(object, data, control, \dots) } \alias{Initialize.glsStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{glsStruct}"}, representing a list of linear model components, such as \code{corStruct} and \code{varFunc} objects.} \item{data}{a data frame in which to evaluate the variables defined in \code{formula(object)}.} \item{control}{an optional list with control parameters for the initialization and optimization algorithms used in \code{gls}. Defaults to \code{list(singular.ok = FALSE)}, implying that linear dependencies are not allowed in the model.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The individual linear model components of the \code{glsStruct} list are initialized. } \value{ a \code{glsStruct} object similar to \code{object}, but with initialized model components. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}, \code{\link{Initialize.corStruct}}, \code{\link{Initialize.varFunc}}, \code{\link{Initialize}}} \keyword{models} nlme/man/Matrix.pdMat.Rd0000644000176000001440000000230512222512062014601 0ustar ripleyusers% File nlme/man/Matrix.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Matrix.pdMat} \title{Assign Matrix to a pdMat Object} \usage{ \method{matrix}{pdMat}(object) <- value } \alias{matrix<-.pdMat} \alias{matrix<-.pdBlocked} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive definite matrix.} \item{value}{a matrix with the new values to be assigned to the positive-definite matrix represented by \code{object}. Must have the same dimensions as \code{as.matrix(object)}.} } \description{ The positive-definite matrix represented by \code{object} is replaced by \code{value}. If the original matrix had row and/or column names, the corresponding names for \code{value} can either be \code{NULL}, or a permutation of the original names. } \value{ a \code{pdMat} object similar to \code{object}, but with its coefficients modified to produce the matrix in \code{value}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{pdMat}},\code{"\link{matrix<-}"} } \examples{ pd1 <- pdSymm(diag(3)) matrix(pd1) <- diag(1:3) pd1 } \keyword{models} nlme/man/varWeights.glsStruct.Rd0000644000176000001440000000232312222512062016405 0ustar ripleyusers% File nlme/man/varWeights.glsStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varWeights.glsStruct} \title{Variance Weights for glsStruct Object} \usage{ \method{varWeights}{glsStruct}(object) } \alias{varWeights.glsStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{glsStruct}"}, representing a list of linear model components, such as \code{corStruct} and \code{"\link{varFunc}"} objects.} } \description{ If \code{object} includes a \code{varStruct} component, the inverse of the standard deviations of the variance function structure represented by the corresponding \code{varFunc} object are returned; else, a vector of ones of length equal to the number of observations in the data frame used to fit the associated linear model is returned. } \value{ if \code{object} includes a \code{varStruct} component, a vector with the corresponding variance weights; else, or a vector of ones. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{varWeights}}} \keyword{models} nlme/man/nlmeStruct.Rd0000644000176000001440000000262012222512062014431 0ustar ripleyusers% File nlme/man/nlmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{nlmeStruct} \title{Nonlinear Mixed-Effects Structure} \usage{ nlmeStruct(reStruct, corStruct, varStruct) } \alias{nlmeStruct} \arguments{ \item{reStruct}{a \code{reStruct} representing a random effects structure.} \item{corStruct}{an optional \code{corStruct} object, representing a correlation structure. Default is \code{NULL}.} \item{varStruct}{an optional \code{varFunc} object, representing a variance function structure. Default is \code{NULL}.} } \description{ A nonlinear mixed-effects structure is a list of model components representing different sets of parameters in the nonlinear mixed-effects model. An \code{nlmeStruct} list must contain at least a \code{reStruct} object, but may also contain \code{corStruct} and \code{varFunc} objects. \code{NULL} arguments are not included in the \code{nlmeStruct} list. } \value{ a list of model components determining the parameters to be estimated for the associated nonlinear mixed-effects model. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{nlme}}, \code{\link{residuals.nlmeStruct}}, \code{\link{reStruct}}, \code{\link{varFunc}} } \examples{ nlms1 <- nlmeStruct(reStruct(~age), corAR1(), varPower()) } \keyword{models} nlme/man/plot.lme.Rd0000644000176000001440000001154612222512062014032 0ustar ripleyusers% File nlme/man/plot.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.lme} \title{Plot an lme or nls object} \alias{plot.lme} \alias{plot.nls} \usage{ \method{plot}{lme}(x, form, abline, id, idLabels, idResType, grid, \dots) \method{plot}{nls}(x, form, abline, id, idLabels, idResType, grid, \dots) } \arguments{ \item{x}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model, or from \code{nls}, representing an fitted nonlinear least squares model.} \item{form}{an optional formula specifying the desired type of plot. Any variable present in the original data frame used to obtain \code{x} can be referenced. In addition, \code{x} itself can be referenced in the formula using the symbol \code{"."}. Conditional expressions on the right of a \code{|} operator can be used to define separate panels in a Trellis display. Default is \code{resid(., type = "p") ~ fitted(.) }, corresponding to a plot of the standardized residuals versus fitted values, both evaluated at the innermost level of nesting.} \item{abline}{an optional numeric value, or numeric vector of length two. If given as a single value, a horizontal line will be added to the plot at that coordinate; else, if given as a vector, its values are used as the intercept and slope for a line added to the plot. If missing, no lines are added to the plot.} \item{id}{an optional numeric value, or one-sided formula. If given as a value, it is used as a significance level for a two-sided outlier test for the standardized, or normalized residuals. Observations with absolute standardized (normalized) residuals greater than the \eqn{1 - value/2} quantile of the standard normal distribution are identified in the plot using \code{idLabels}. If given as a one-sided formula, its right hand side must evaluate to a logical, integer, or character vector which is used to identify observations in the plot. If missing, no observations are identified.} \item{idLabels}{an optional vector, or one-sided formula. If given as a vector, it is converted to character and used to label the observations identified according to \code{id}. If given as a one-sided formula, its right hand side must evaluate to a vector which is converted to character and used to label the identified observations. Default is the innermost grouping factor.} \item{idResType}{an optional character string specifying the type of residuals to be used in identifying outliers, when \code{id} is a numeric value. If \code{"pearson"}, the standardized residuals (raw residuals divided by the corresponding standard errors) are used; else, if \code{"normalized"}, the normalized residuals (standardized residuals pre-multiplied by the inverse square-root factor of the estimated error correlation matrix) are used. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"pearson"}.} \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default depends on the type of Trellis plot used: if \code{xyplot} defaults to \code{TRUE}, else defaults to \code{FALSE}.} \item{\dots}{optional arguments passed to the Trellis plot function.} } \description{ Diagnostic plots for the linear mixed-effects fit are obtained. The \code{form} argument gives considerable flexibility in the type of plot specification. A conditioning expression (on the right side of a \code{|} operator) always implies that different panels are used for each level of the conditioning factor, according to a Trellis display. If \code{form} is a one-sided formula, histograms of the variable on the right hand side of the formula, before a \code{|} operator, are displayed (the Trellis function \code{histogram} is used). If \code{form} is two-sided and both its left and right hand side variables are numeric, scatter plots are displayed (the Trellis function \code{xyplot} is used). Finally, if \code{form} is two-sided and its left had side variable is a factor, box-plots of the right hand side variable by the levels of the left hand side variable are displayed (the Trellis function \code{bwplot} is used). } \value{ a diagnostic Trellis plot. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{xyplot}}, \code{\link{bwplot}}, \code{\link{histogram}}} \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) # standardized residuals versus fitted values by gender plot(fm1, resid(., type = "p") ~ fitted(.) | Sex, abline = 0) # box-plots of residuals by Subject plot(fm1, Subject ~ resid(.)) # observed versus fitted values by Subject plot(fm1, distance ~ fitted(.) | Subject, abline = c(0,1)) } \keyword{models} \keyword{hplot} nlme/man/Glucose.Rd0000644000176000001440000000167512222471724013714 0ustar ripleyusers% File nlme/man/Glucose.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Glucose} \alias{Glucose} \title{Glucose levels over time} \description{ The \code{Glucose} data frame has 378 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Subject}{ an ordered factor with levels \code{6} < \code{2} < \code{3} < \code{5} < \code{1} < \code{4} } \item{Time}{ a numeric vector } \item{conc}{ a numeric vector of glucose levels } \item{Meal}{ an ordered factor with levels \code{2am} < \code{6am} < \code{10am} < \code{2pm} < \code{6pm} < \code{10pm} } } } \source{ Hand, D. and Crowder, M. (1996), \emph{Practical Longitudinal Data Analysis}, Chapman and Hall, London. } %\examples{} \keyword{datasets} nlme/man/Names.pdBlocked.Rd0000644000176000001440000000302512222512062015222 0ustar ripleyusers% File nlme/man/Names.pdBlocked.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Names.pdBlocked} \title{Names of a pdBlocked Object} \usage{ \method{Names}{pdBlocked}(object, asList, \dots) } \alias{Names.pdBlocked} \alias{Names<-.pdBlocked} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdBlocked}"} representing a positive-definite matrix with block diagonal structure} \item{asList}{a logical value. If \code{TRUE} a \code{list} with the names for each block diagonal element is returned. If \code{FALSE} a character vector with all column names is returned. Defaults to \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the first element of the \code{Dimnames} attribute, which contains the column names, for each block diagonal element in the matrix represented by \code{object}. } \value{ if \code{asList} is \code{FALSE}, a character vector with column names of the matrix represented by \code{object}; otherwise, if \code{asList} is \code{TRUE}, a list with components given by the column names of the individual block diagonal elements in the matrix represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{Names}}, \code{\link{Names.pdMat}}} \examples{ pd1 <- pdBlocked(list(~Sex - 1, ~age - 1), data = Orthodont) Names(pd1) } \keyword{models} nlme/man/logLik.lmeStruct.Rd0000644000176000001440000000330512222512062015474 0ustar ripleyusers% File nlme/man/logLik.lmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logLik.lmeStruct} \title{Log-Likelihood of an lmeStruct Object} \usage{ \method{logLik}{lmeStruct}(object, Pars, conLin, \dots) } \alias{logLik.lmeStruct} \alias{logLik.lmeStructInt} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmeStruct}"}, representing a list of linear mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects.} \item{Pars}{the parameter values at which the (restricted) log-likelihood is to be evaluated.} \item{conLin}{an optional condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying lme model. Defaults to \code{attr(object, "conLin")}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ \code{Pars} is used to update the coefficients of the model components of \code{object} and the individual (restricted) log-likelihood contributions of each component are added together. The type of log-likelihood (restricted or not) is determined by the \code{settings} attribute of \code{object}. } \value{ the (restricted) log-likelihood for the linear mixed-effects model described by \code{object}, evaluated at \code{Pars}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{lmeStruct}}, \code{\link{logLik.lme}} } \keyword{models} nlme/man/summary.corStruct.Rd0000644000176000001440000000331412222512062015756 0ustar ripleyusers% File nlme/man/summary.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{summary.corStruct} \title{Summarize a corStruct Object} \usage{ \method{summary}{corStruct}(object, structName, \dots) } \alias{summary.corStruct} \alias{summary.corAR1} \alias{summary.corARMA} \alias{summary.corCAR1} \alias{summary.corCompSymm} \alias{summary.corExp} \alias{summary.corGaus} \alias{summary.corIdent} \alias{summary.corLin} \alias{summary.corNatural} \alias{summary.corRatio} \alias{summary.corSpher} \alias{summary.corSymm} \arguments{ \item{object}{an object inheriting from class \code{"\link{corStruct}"}, representing a correlation structure.} \item{structName}{an optional character string defining the type of correlation structure associated with \code{object}, to be used in the \code{print.summary} method. Defaults to \code{class(object)[1]}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function prepares \code{object} to be printed using the \code{print.summary} method, by changing its class and adding a \code{structName} attribute to it. } \value{ an object identical to \code{object}, but with its class changed to \code{summary.corStruct} and an additional attribute \code{structName}. The returned value inherits from the same classes as \code{object}. } \author{José Pinheiro and Douglas Bates } \seealso{ \code{\link{corClasses}}, \code{\link{corNatural}}, \code{\link{Initialize.corStruct}}, \code{\link{summary}} } %\seealso{\code{\link{print.summary.corStruct}}} \examples{ cs1 <- corAR1(0.2) summary(cs1) } \keyword{models} nlme/man/corRatio.Rd0000644000176000001440000001057712222512062014065 0ustar ripleyusers% File nlme/man/corRatio.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corRatio} \title{Rational Quadratic Correlation Structure} \usage{ corRatio(value, form, nugget, metric, fixed) } \alias{corRatio} \arguments{ \item{value}{an optional vector with the parameter values in constrained form. If \code{nugget} is \code{FALSE}, \code{value} can have only one element, corresponding to the "range" of the rational quadratic correlation structure, which must be greater than zero. If \code{nugget} is \code{TRUE}, meaning that a nugget effect is present, \code{value} can contain one or two elements, the first being the "range" and the second the "nugget effect" (one minus the correlation between two observations taken arbitrarily close together); the first must be greater than zero and the second must be between zero and one. Defaults to \code{numeric(0)}, which results in a range of 90\% of the minimum distance and a nugget effect of 0.1 being assigned to the parameters when \code{object} is initialized.} \item{form}{a one sided formula of the form \code{~ S1+...+Sp}, or \code{~ S1+...+Sp | g}, specifying spatial covariates \code{S1} through \code{Sp} and, optionally, a grouping factor \code{g}. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{nugget}{an optional logical value indicating whether a nugget effect is present. Defaults to \code{FALSE}.} \item{metric}{an optional character string specifying the distance metric to be used. The currently available options are \code{"euclidean"} for the root sum-of-squares of distances; \code{"maximum"} for the maximum difference; and \code{"manhattan"} for the sum of the absolute differences. Partial matching of arguments is used, so only the first three characters need to be provided. Defaults to \code{"euclidean"}.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{corRatio} class, representing a rational quadratic spatial correlation structure. Letting \eqn{d} denote the range and \eqn{n} denote the nugget effect, the correlation between two observations a distance \eqn{r} apart is \eqn{1/(1+(r/d)^2)} when no nugget effect is present and \eqn{(1-n)/(1+(r/d)^2)} when a nugget effect is assumed. Objects created using this constructor need to be later initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{corRatio}, also inheriting from class \code{corSpatial}, representing a rational quadratic spatial correlation structure. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. Littel, Milliken, Stroup, and Wolfinger (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}}, \code{\link{dist}} } \examples{ sp1 <- corRatio(form = ~ x + y + z) # example lme(..., corRatio ...) # Pinheiro and Bates, pp. 222-249 fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) # p. 223 fm2BW.lme <- update(fm1BW.lme, weights = varPower()) # p 246 fm3BW.lme <- update(fm2BW.lme, correlation = corExp(form = ~ Time)) # p. 249 fm5BW.lme <- update(fm3BW.lme, correlation = corRatio(form = ~ Time)) # example gls(..., corRatio ...) # Pinheiro and Bates, pp. 261, 263 fm1Wheat2 <- gls(yield ~ variety - 1, Wheat2) # p. 263 fm3Wheat2 <- update(fm1Wheat2, corr = corRatio(c(12.5, 0.2), form = ~ latitude + longitude, nugget = TRUE)) } \keyword{models} nlme/man/predict.gnls.Rd0000644000176000001440000000314212222512062014665 0ustar ripleyusers% File nlme/man/predict.gnls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{predict.gnls} \title{Predictions from a gnls Object} \usage{ \method{predict}{gnls}(object, newdata, na.action, naPattern, \dots) } \alias{predict.gnls} \arguments{ \item{object}{an object inheriting from class \code{"\link{gnls}"}, representing a generalized nonlinear least squares fitted model.} \item{newdata}{an optional data frame to be used for obtaining the predictions. All variables used in the nonlinear model must be present in the data frame. If missing, the fitted values are returned.} \item{na.action}{a function that indicates what should happen when \code{newdata} contains \code{NA}s. The default action (\code{na.fail}) causes the function to print an error message and terminate if there are any incomplete observations.} \item{naPattern}{an expression or formula object, specifying which returned values are to be regarded as missing.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The predictions for the nonlinear model represented by \code{object} are obtained at the covariate values defined in \code{newdata}. } \value{ a vector with the predicted values. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gnls}}} \examples{ fm1 <- gnls(weight ~ SSlogis(Time, Asym, xmid, scal), Soybean, weights = varPower()) newSoybean <- data.frame(Time = c(10,30,50,80,100)) predict(fm1, newSoybean) } \keyword{models} nlme/man/glsStruct.Rd0000644000176000001440000000227212222512062014266 0ustar ripleyusers% File nlme/man/glsStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{glsStruct} \title{Generalized Least Squares Structure} \usage{ glsStruct(corStruct, varStruct) } \alias{glsStruct} \arguments{ \item{corStruct}{an optional \code{corStruct} object, representing a correlation structure. Default is \code{NULL}.} \item{varStruct}{an optional \code{varFunc} object, representing a variance function structure. Default is \code{NULL}.} } \description{ A generalized least squares structure is a list of model components representing different sets of parameters in the linear model. A \code{glsStruct} may contain \code{corStruct} and \code{varFunc} objects. \code{NULL} arguments are not included in the \code{glsStruct} list. } \value{ a list of model variance-covariance components determining the parameters to be estimated for the associated linear model. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{gls}}, \code{\link{residuals.glsStruct}}, \code{\link{varFunc}} } \examples{ gls1 <- glsStruct(corAR1(), varPower()) } \keyword{models} nlme/man/varIdent.Rd0000644000176000001440000000705512222512062014054 0ustar ripleyusers% File nlme/man/varIdent.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varIdent} \title{Constant Variance Function} \usage{ varIdent(value, form, fixed) } \alias{varIdent} \arguments{ \item{value}{an optional numeric vector, or list of numeric values, with the variance function coefficients. If no grouping factor is present in \code{form}, this argument is ignored, as the resulting variance function contains no coefficients. If \code{value} has length one, its value is repeated for all coefficients in the variance function. If \code{value} has length greater than one, it must have length equal to the number of grouping levels minus one and names which identify its elements to the levels of the grouping factor. Only positive values are allowed for this argument. Default is \code{numeric(0)}, which results in a vector of zeros of appropriate length being assigned to the coefficients when \code{object} is initialized (corresponding to constant variance equal to one).} \item{form}{an optional one-sided formula of the form \code{~ v}, or \code{~ v | g}, specifying a variance covariate \code{v} and, optionally, a grouping factor \code{g} for the coefficients. The variance covariate is ignored in this variance function. When a grouping factor is present in \code{form}, a different coefficient value is used for each of its levels less one reference level (see description section below). Several grouping variables may be simultaneously specified, separated by the \code{*} operator, like in \code{~ v | g1 * g2 * g3}. In this case, the levels of each grouping variable are pasted together and the resulting factor is used to group the observations. Defaults to \code{~ 1}. } \item{fixed}{an optional numeric vector, or list of numeric values, specifying the values at which some or all of the coefficients in the variance function should be fixed. It must have names identifying which coefficients are to be fixed. Coefficients included in \code{fixed} are not allowed to vary during the optimization of an objective function. Defaults to \code{NULL}, corresponding to no fixed coefficients.} } \description{ This function is a constructor for the \code{varIdent} class, representing a constant variance function structure. If no grouping factor is present in \code{form}, the variance function is constant and equal to one, and no coefficients required to represent it. When \code{form} includes a grouping factor with \eqn{M > 1} levels, the variance function allows M different variances, one for each level of the factor. For identifiability reasons, the coefficients of the variance function represent the ratios between the variances and a reference variance (corresponding to a reference group level). Therefore, only \eqn{M-1} coefficients are needed to represent the variance function. By default, if the elements in \code{value} are unnamed, the first group level is taken as the reference level. } \value{ a \code{varIdent} object representing a constant variance function structure, also inheriting from class \code{varFunc}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{varClasses}}, \code{\link{varWeights.varFunc}}, \code{\link{coef.varIdent}}} \examples{ vf1 <- varIdent(c(Female = 0.5), form = ~ 1 | Sex) } \keyword{models} nlme/man/qqnorm.gls.Rd0000644000176000001440000000665112222512062014402 0ustar ripleyusers% File nlme/man/qqnorm.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{qqnorm.gls} \title{Normal Plot of Residuals from a gls Object} \usage{ \method{qqnorm}{gls}(y, form, abline, id, idLabels, grid, \dots) } \alias{qqnorm.gls} \arguments{ \item{y}{an object inheriting from class \code{"\link{gls}"}, representing a generalized least squares fitted model.} \item{form}{an optional one-sided formula specifying the desired type of plot. Any variable present in the original data frame used to obtain \code{y} can be referenced. In addition, \code{y} itself can be referenced in the formula using the symbol \code{"."}. Conditional expressions on the right of a \code{|} operator can be used to define separate panels in a Trellis display. The expression on the right hand side of \code{form} and to the left of a \code{|} operator must evaluate to a residuals vector. Default is \code{~ resid(., type = "p")}, corresponding to a normal plot of the standardized residuals.} \item{abline}{an optional numeric value, or numeric vector of length two. If given as a single value, a horizontal line will be added to the plot at that coordinate; else, if given as a vector, its values are used as the intercept and slope for a line added to the plot. If missing, no lines are added to the plot.} \item{id}{an optional numeric value, or one-sided formula. If given as a value, it is used as a significance level for a two-sided outlier test for the standardized residuals (random effects). Observations with absolute standardized residuals (random effects) greater than the \eqn{1 - value/2} quantile of the standard normal distribution are identified in the plot using \code{idLabels}. If given as a one-sided formula, its right hand side must evaluate to a logical, integer, or character vector which is used to identify observations in the plot. If missing, no observations are identified.} \item{idLabels}{an optional vector, or one-sided formula. If given as a vector, it is converted to character and used to label the observations identified according to \code{id}. If given as a one-sided formula, its right hand side must evaluate to a vector which is converted to character and used to label the identified observations. Default is the innermost grouping factor.} \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default depends on the type of Trellis plot used: if \code{xyplot} defaults to \code{TRUE}, else defaults to \code{FALSE}.} \item{\dots}{optional arguments passed to the Trellis plot function.} } \description{ Diagnostic plots for assessing the normality of residuals the generalized least squares fit are obtained. The \code{form} argument gives considerable flexibility in the type of plot specification. A conditioning expression (on the right side of a \code{|} operator) always implies that different panels are used for each level of the conditioning factor, according to a Trellis display. } \value{ a diagnostic Trellis plot for assessing normality of residuals. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}, \code{\link{plot.gls}}} \examples{ fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) qqnorm(fm1, abline = c(0,1)) } \keyword{models} nlme/man/Wheat2.Rd0000644000176000001440000000461512222471724013442 0ustar ripleyusers% File nlme/man/Wheat2.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Wheat2} \alias{Wheat2} \title{Wheat Yield Trials} \description{ The \code{Wheat2} data frame has 224 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{Block}{ an ordered factor with levels \code{4} < \code{2} < \code{3} < \code{1} } \item{variety}{ a factor with levels \code{ARAPAHOE} \code{BRULE} \code{BUCKSKIN} \code{CENTURA} \code{CENTURK78} \code{CHEYENNE} \code{CODY} \code{COLT} \code{GAGE} \code{HOMESTEAD} \code{KS831374} \code{LANCER} \code{LANCOTA} \code{NE83404} \code{NE83406} \code{NE83407} \code{NE83432} \code{NE83498} \code{NE83T12} \code{NE84557} \code{NE85556} \code{NE85623} \code{NE86482} \code{NE86501} \code{NE86503} \code{NE86507} \code{NE86509} \code{NE86527} \code{NE86582} \code{NE86606} \code{NE86607} \code{NE86T666} \code{NE87403} \code{NE87408} \code{NE87409} \code{NE87446} \code{NE87451} \code{NE87457} \code{NE87463} \code{NE87499} \code{NE87512} \code{NE87513} \code{NE87522} \code{NE87612} \code{NE87613} \code{NE87615} \code{NE87619} \code{NE87627} \code{NORKAN} \code{REDLAND} \code{ROUGHRIDER} \code{SCOUT66} \code{SIOUXLAND} \code{TAM107} \code{TAM200} \code{VONA} } \item{yield}{ a numeric vector } \item{latitude}{ a numeric vector } \item{longitude}{ a numeric vector } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/fdHess.Rd0000644000176000001440000000307512222471724013523 0ustar ripleyusers% File nlme/man/fdHess.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{fdHess} \alias{fdHess} \title{Finite difference Hessian} \description{ Evaluate an approximate Hessian and gradient of a scalar function using finite differences. } \usage{ fdHess(pars, fun, \dots, .relStep=(.Machine$double.eps)^(1/3), minAbsPar=0) } \arguments{ \item{pars}{the numeric values of the parameters at which to evaluate the function \code{fun} and its derivatives.} \item{fun}{a function depending on the parameters \code{pars} that returns a numeric scalar.} \item{\dots}{Optional additional arguments to \code{fun}} \item{.relStep}{The relative step size to use in the finite differences. It defaults to the cube root of \code{.Machine$double.eps}} \item{minAbsPar}{The minimum magnitude of a parameter value that is considered non-zero. It defaults to zero meaning that any non-zero value will be considered different from zero.} } \details{ This function uses a second-order response surface design known as a Koschal design to determine the parameter values at which the function is evaluated. } \value{ A list with components \item{mean}{the value of function \code{fun} evaluated at the parameter values \code{pars}} \item{gradient}{an approximate gradient} \item{Hessian}{a matrix whose upper triangle contains an approximate Hessian.} } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \examples{ fdHess(c(12.3, 2.34), function(x) x[1]*(1-exp(-0.4*x[2]))) } \keyword{models} nlme/man/recalc.reStruct.Rd0000644000176000001440000000330612222512062015336 0ustar ripleyusers% File nlme/man/recalc.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{recalc.reStruct} \title{Recalculate for an reStruct Object} \usage{ \method{recalc}{reStruct}(object, conLin, \dots) } \alias{recalc.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{conLin}{a condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying model.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The log-likelihood, or restricted log-likelihood, of the Gaussian linear mixed-effects model represented by \code{object} and \code{conLin} (assuming spherical within-group covariance structure), evaluated at \code{coef(object)} is calculated and added to the \code{logLik} component of \code{conLin}. The \code{settings} attribute of \code{object} determines whether the log-likelihood, or the restricted log-likelihood, is to be calculated. The computational methods for the (restricted) log-likelihood calculations are described in Bates and Pinheiro (1998). } \value{ the condensed linear model with its \code{logLik} component updated. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{logLik}}, \code{\link{lme}}, \code{\link{recalc}}, \code{\link{reStruct}} } \keyword{models} nlme/man/glsControl.Rd0000644000176000001440000000647112222471724014440 0ustar ripleyusers% File nlme/man/glsControl.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{glsControl} \title{Control Values for gls Fit} \usage{ glsControl(maxIter, msMaxIter, tolerance, msTol, msScale, msVerbose, singular.ok, returnObject, apVar, .relStep, nlmStepMax, opt=c("nlminb", "optim"), optimMethod, minAbsParApVar, natural) } \alias{glsControl} \arguments{ \item{maxIter}{maximum number of iterations for the \code{gls} optimization algorithm. Default is 50.} \item{msMaxIter}{maximum number of iterations for the optimization step inside the \code{gls} optimization. Default is 50.} \item{tolerance}{tolerance for the convergence criterion in the \code{gls} algorithm. Default is 1e-6.} \item{msTol}{tolerance for the convergence criterion in \code{ms}, passed as the \code{rel.tolerance} argument to the function (see documentation on \code{ms}). Default is 1e-7.} \item{msScale}{scale function passed as the \code{scale} argument to the \code{ms} function (see documentation on that function). Default is \code{lmeScale}.} \item{msVerbose}{a logical value passed as the \code{trace} argument to \code{ms} (see documentation on that function). Default is \code{FALSE}.} \item{singular.ok}{a logical value indicating whether non-estimable coefficients (resulting from linear dependencies among the columns of the regression matrix) should be allowed. Default is \code{FALSE}.} \item{returnObject}{a logical value indicating whether the fitted object should be returned when the maximum number of iterations is reached without convergence of the algorithm. Default is \code{FALSE}.} \item{apVar}{a logical value indicating whether the approximate covariance matrix of the variance-covariance parameters should be calculated. Default is \code{TRUE}.} \item{.relStep}{relative step for numerical derivatives calculations. Default is \code{.Machine$double.eps^(1/3)}.} \item{nlmStepMax}{stepmax value to be passed to nlm. See \code{\link{nlm}} for details. Default is 100.0} \item{opt}{the optimizer to be used, either \code{\link{nlminb}} (the default since (\R 2.2.0) or \code{\link{optim}} (the previous default).} \item{optimMethod}{character - the optimization method to be used with the \code{\link{optim}} optimizer. The default is \code{"BFGS"}. An alternative is \code{"L-BFGS-B"}.} \item{minAbsParApVar}{numeric value - minimum absolute parameter value in the approximate variance calculation. The default is \code{0.05}.} \item{natural}{logical. Should the natural parameterization be used for the approximate variance calculations? Default is \code{TRUE}.} } \description{ The values supplied in the function call replace the defaults and a list with all possible arguments is returned. The returned list is used as the \code{control} argument to the \code{gls} function. } \value{ a list with components for each of the possible arguments. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}, \code{\link{lmeScale}}} \examples{ # decrease the maximum number iterations in the optimization call and # request that information on the evolution of the ms iterations be printed glsControl(msMaxIter = 20, msVerbose = TRUE) } \keyword{models} nlme/man/Tetracycline2.Rd0000644000176000001440000000164212222471724015015 0ustar ripleyusers% File nlme/man/Tetracycline2.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Tetracycline2} \alias{Tetracycline2} \title{Pharmacokinetics of tetracycline} \description{ The \code{Tetracycline2} data frame has 40 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{conc}{ a numeric vector } \item{Time}{ a numeric vector } \item{Subject}{ an ordered factor with levels \code{4} < \code{5} < \code{2} < \code{1} < \code{3} } \item{Formulation}{ a factor with levels \code{Berkmycin} \code{tetramycin} } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/Names.formula.Rd0000644000176000001440000000266312222512062015007 0ustar ripleyusers% File nlme/man/Names.formula.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Names.formula} \title{Extract Names from a formula} \usage{ \method{Names}{formula}(object, data, exclude, \dots) } \alias{Names.formula} \alias{Names.listForm} \arguments{ \item{object}{an object inheriting from class \code{"\link{formula}"}.} \item{data}{an optional data frame containing the variables specified in \code{object}. By default the variables are taken from the environment from which \code{Names.formula} is called.} \item{exclude}{an optional character vector with names to be excluded from the returned value. Default is \code{c("pi",".")}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function returns the names of the terms corresponding to the right hand side of \code{object} (treated as a linear formula), obtained as the column names of the corresponding \code{model.matrix}. } \value{ a character vector with the column names of the \code{model.matrix} corresponding to the right hand side of \code{object} which are not listed in \code{excluded}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{model.matrix}}, \code{\link{terms}}, \code{\link{Names}} } \examples{ Names(distance ~ Sex * age, data = Orthodont) } \keyword{models} nlme/man/phenoModel.Rd0000644000176000001440000000267512222471724014406 0ustar ripleyusers% File nlme/man/phenoModel.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{phenoModel} \alias{phenoModel} \title{Model function for the Phenobarb data} \description{ A model function for a model used with the \code{Phenobarb} data. This function uses compiled C code to improve execution speed. } \usage{ phenoModel(Subject, time, dose, lCl, lV) } \arguments{ \item{Subject}{an integer vector of subject identifiers. These should be sorted in increasing order.} \item{time}{numeric. A vector of the times at which the sample was drawn or the drug administered (hr). } \item{dose}{numeric. A vector of doses of drug administered (\eqn{u}{\mu}g/kg). } \item{lCl}{numeric. A vector of values of the natural log of the clearance parameter according to \code{Subject} and \code{time}.} \item{lV}{numeric. A vector of values of the natural log of the effective volume of distribution according to \code{Subject} and \code{time}.} } \details{ See the details section of \code{\link{Phenobarb}} for a description of the model function that \code{phenoModel} evaluates. } \value{ a numeric vector of predicted phenobarbital concentrations. } \references{ Pinheiro, J. C. and Bates, D. M. (2000) \emph{Mixed-effects Models in S and S-PLUS}, Springer. (section 6.4) } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu} } \keyword{models} nlme/man/corCompSymm.Rd0000644000176000001440000000472412222512062014550 0ustar ripleyusers% File nlme/man/corCompSymm.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corCompSymm} \title{Compound Symmetry Correlation Structure} \usage{ corCompSymm(value, form, fixed) } \alias{corCompSymm} \arguments{ \item{value}{the correlation between any two correlated observations. Defaults to 0.} \item{form}{a one sided formula of the form \code{~ t}, or \code{~ t | g}, specifying a time covariate \code{t} and, optionally, a grouping factor \code{g}. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{corCompSymm} class, representing a compound symmetry structure corresponding to uniform correlation. Objects created using this constructor must later be initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{corCompSymm}, representing a compound symmetry correlation structure. } \references{ Milliken, G. A. and Johnson, D. E. (1992) "Analysis of Messy Data, Volume I: Designed Experiments", Van Nostrand Reinhold. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 233-234. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}} } \examples{ ## covariate is observation order and grouping factor is Subject cs1 <- corCompSymm(0.5, form = ~ 1 | Subject) # Pinheiro and Bates, pp. 222-225 fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) # p. 223 fm2BW.lme <- update(fm1BW.lme, weights = varPower()) # p. 225 cs1CompSymm <- corCompSymm(value = 0.3, form = ~ 1 | Subject) cs2CompSymm <- corCompSymm(value = 0.3, form = ~ age | Subject) cs1CompSymm <- Initialize(cs1CompSymm, data = Orthodont) corMatrix(cs1CompSymm) } \keyword{models} nlme/man/Nitrendipene.Rd0000644000176000001440000000150712222471724014731 0ustar ripleyusers% File nlme/man/Nitrendipene.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Nitrendipene} \alias{Nitrendipene} \title{Assay of nitrendipene} \description{ The \code{Nitrendipene} data frame has 89 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{activity}{ a numeric vector } \item{NIF}{ a numeric vector } \item{Tissue}{ an ordered factor with levels \code{2} < \code{1} < \code{3} < \code{4} } \item{log.NIF}{ a numeric vector } } } \source{ Bates, D. M. and Watts, D. G. (1988), \emph{Nonlinear Regression Analysis and Its Applications}, Wiley, New York. } %\examples{} \keyword{datasets} nlme/man/logLik.varFunc.Rd0000644000176000001440000000240012222512062015111 0ustar ripleyusers% File nlme/man/logLik.varFunc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logLik.varFunc} \title{Extract varFunc logLik} \usage{ \method{logLik}{varFunc}(object, data, \dots) } \alias{logLik.varFunc} \alias{logLik.varComb} \arguments{ \item{object}{an object inheriting from class \code{"\link{varFunc}"}, representing a variance function structure.} \item{data}{this argument is included to make this method function compatible with other \code{logLik} methods and will be ignored.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the component of a Gaussian log-likelihood associated with the variance function structure represented by \code{object}, which is equal to the sum of the logarithms of the corresponding weights. } \value{ the sum of the logarithms of the weights corresponding to the variance function structure represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{logLik.lme}} } \examples{ vf1 <- varPower(form = ~age) vf1 <- Initialize(vf1, Orthodont) coef(vf1) <- 0.1 logLik(vf1) } \keyword{models} nlme/man/MathAchieve.Rd0000644000176000001440000000226512222471724014465 0ustar ripleyusers% File nlme/man/MathAchieve.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{MathAchieve} \alias{MathAchieve} \title{Mathematics achievement scores} \description{ The \code{MathAchieve} data frame has 7185 rows and 6 columns. } \format{ This data frame contains the following columns: \describe{ \item{School}{ an ordered factor identifying the school that the student attends } \item{Minority}{ a factor with levels \code{No} \code{Yes} indicating if the student is a member of a minority racial group. } \item{Sex}{ a factor with levels \code{Male} \code{Female} } \item{SES}{ a numeric vector of socio-economic status. } \item{MathAch}{ a numeric vector of mathematics achievement scores. } \item{MEANSES}{ a numeric vector of the mean SES for the school. } } } \details{ Each row in this data frame contains the data for one student. } %\source{} \examples{ summary(MathAchieve) } \keyword{datasets} nlme/man/asTable.Rd0000644000176000001440000000253712222512062013653 0ustar ripleyusers% File nlme/man/asTable.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{asTable} \alias{asTable} \alias{asTable.groupedData} \title{Convert groupedData to a matrix} \usage{ asTable(object) } \arguments{ \item{object}{A balanced \code{groupedData} object} } \description{ Create a tabular representation of the response in a balanced groupedData object. } \details{ A balanced groupedData object can be represented as a matrix or table of response values corresponding to the values of a primary covariate for each level of a grouping factor. This function creates such a matrix representation of the data in \code{object}. } \value{ A matrix. The data in the matrix are the values of the response. The columns correspond to the distinct values of the primary covariate and are labelled as such. The rows correspond to the distinct levels of the grouping factor and are labelled as such. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{groupedData}}, \code{\link{isBalanced}}, \code{\link{balancedGrouped}}} \examples{ asTable(Orthodont) # Pinheiro and Bates, p. 109 ergoStool.mat <- asTable(ergoStool) } \keyword{manip} nlme/man/nlsList.selfStart.Rd0000644000176000001440000000621612222512062015674 0ustar ripleyusers% File nlme/man/nlsList.selfStart.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{nlsList.selfStart} \title{nlsList Fit from a selfStart Function} \usage{ \method{nlsList}{selfStart}(model, data, start, control, level, subset, na.action, pool) } \alias{nlsList.selfStart} \arguments{ \item{model}{a \code{"\link{selfStart}"} model function, which calculates initial estimates for the model parameters from \code{data}.} \item{data}{a data frame in which to interpret the variables in \code{model}. Because no grouping factor can be specified in \code{model}, \code{data} must inherit from class \code{"\link{groupedData}"}. } \item{start}{an optional named list with initial values for the parameters to be estimated in \code{model}. It is passed as the \code{start} argument to each \code{nls} call and is required when the nonlinear function in \code{model} does not inherit from class \code{selfStart}. } \item{control}{a list of control values passed as the \code{control} argument to \code{nls}. Defaults to an empty list. } \item{level}{an optional integer specifying the level of grouping to be used when multiple nested levels of grouping are present.} \item{subset}{an optional expression indicating the subset of the rows of \code{data} that should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{nlsList} to print an error message and terminate if there are any incomplete observations. } \item{pool}{ an optional logical value that is preserved as an attribute of the returned value. This will be used as the default for \code{pool} in calculations of standard deviations or standard errors for summaries. } } \description{ The response variable and primary covariate in \code{formula(data)} are used together with \code{model} to construct the nonlinear model formula. This is used in the \code{nls} calls and, because a selfStarting model function can calculate initial estimates for its parameters from the data, no starting estimates need to be provided. } \value{ a list of \code{nls} objects with as many components as the number of groups defined by the grouping factor. A \code{NULL} value is assigned to the components corresponding to clusters for which the \code{nls} algorithm failed to converge. Generic functions such as \code{coef}, \code{fixed.effects}, \code{lme}, \code{pairs}, \code{plot}, \code{predict}, \code{random.effects}, \code{summary}, and \code{update} have methods that can be applied to an \code{nlsList} object. } \seealso{ \code{\link{selfStart}}, \code{\link{groupedData}}, \code{\link{nls}}, \code{\link{nlsList}}, \code{\link{nlme.nlsList}}, \code{\link{nlsList.formula}} } \examples{ fm1 <- nlsList(SSasympOff, CO2) summary(fm1) } \keyword{models} nlme/man/Variogram.corGaus.Rd0000644000176000001440000000372312222512062015627 0ustar ripleyusers% File nlme/man/Variogram.corGaus.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Variogram.corGaus} \title{Calculate Semi-variogram for a corGaus Object} \usage{ \method{Variogram}{corGaus}(object, distance, sig2, length.out, \dots) } \alias{Variogram.corGaus} \arguments{ \item{object}{an object inheriting from class \code{"\link{corGaus}"}, representing an Gaussian spatial correlation structure.} \item{distance}{an optional numeric vector with the distances at which the semi-variogram is to be calculated. Defaults to \code{NULL}, in which case a sequence of length \code{length.out} between the minimum and maximum values of \code{getCovariate(object)} is used.} \item{sig2}{an optional numeric value representing the process variance. Defaults to \code{1}.} \item{length.out}{an optional integer specifying the length of the sequence of distances to be used for calculating the semi-variogram, when \code{distance = NULL}. Defaults to \code{50}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function calculates the semi-variogram values corresponding to the Gaussian correlation model, using the estimated coefficients corresponding to \code{object}, at the distances defined by \code{distance}. } \value{ a data frame with columns \code{variog} and \code{dist} representing, respectively, the semi-variogram values and the corresponding distances. The returned value inherits from class \code{Variogram}. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corGaus}}, \code{\link{plot.Variogram}}, \code{\link{Variogram}} } \examples{ cs1 <- corGaus(3, form = ~ Time | Rat) cs1 <- Initialize(cs1, BodyWeight) Variogram(cs1)[1:10,] } \keyword{models} nlme/man/summary.nlsList.Rd0000644000176000001440000000676012222512062015426 0ustar ripleyusers% File nlme/man/summary.nlsList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{summary.nlsList} \title{Summarize an nlsList Object} \usage{ \method{summary}{nlsList}(object, \dots) } \alias{summary.nlsList} \arguments{ \item{object}{an object inheriting from class \code{"\link{nlsList}"}, representing a list of \code{nls} fitted objects. } \item{\dots}{optional arguments to the \code{summary.lmList} method. One such optional argument is \code{pool}, a logical value indicating whether a pooled estimate of the residual standard error should be used. Default is \code{attr(object, "pool")}. } } \description{ The \code{summary} function is applied to each \code{nls} component of \code{object} to produce summary information on the individual fits, which is organized into a list of summary statistics. The returned object is suitable for printing with the \code{print.summary.nlsList} method. } \value{ a list with summary statistics obtained by applying \code{summary} to the elements of \code{object}, inheriting from class \code{summary.nlsList}. The components of \code{value} are: \item{call}{a list containing an image of the \code{nlsList} call that produced \code{object}. } \item{parameters}{a three dimensional array with summary information on the \code{nls} coefficients. The first dimension corresponds to the names of the \code{object} components, the second dimension is given by \code{"Value"}, \code{"Std. Error"}, \code{"t value"}, and \code{"Pr(>|t|)"}, corresponding, respectively, to the coefficient estimates and their associated standard errors, t-values, and p-values. The third dimension is given by the coefficients names. } \item{correlation}{a three dimensional array with the correlations between the individual \code{nls} coefficient estimates. The first dimension corresponds to the names of the \code{object} components. The third dimension is given by the coefficients names. For each coefficient, the rows of the associated array give the correlations between that coefficient and the remaining coefficients, by \code{nls} component. } \item{cov.unscaled}{a three dimensional array with the unscaled variances/covariances for the individual \code{lm} coefficient estimates (giving the estimated variance/covariance for the coefficients, when multiplied by the estimated residual errors). The first dimension corresponds to the names of the \code{object} components. The third dimension is given by the coefficients names. For each coefficient, the rows of the associated array give the unscaled covariances between that coefficient and the remaining coefficients, by \code{nls} component. } \item{df}{an array with the number of degrees of freedom for the model and for residuals, for each \code{nls} component. } \item{df.residual}{the total number of degrees of freedom for residuals, corresponding to the sum of residuals df of all \code{nls} components. } \item{pool}{the value of the \code{pool} argument to the function. } \item{RSE}{the pooled estimate of the residual standard error.} \item{sigma}{a vector with the residual standard error estimates for the individual \code{lm} fits. } } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{nlsList}}, \code{\link{summary}}} \examples{ fm1 <- nlsList(SSasymp, Loblolly) summary(fm1) } \keyword{models} nlme/man/Variogram.corSpher.Rd0000644000176000001440000000373612222512062016015 0ustar ripleyusers% File nlme/man/Variogram.corSpher.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Variogram.corSpher} \title{Calculate Semi-variogram for a corSpher Object} \usage{ \method{Variogram}{corSpher}(object, distance, sig2, length.out, \dots) } \alias{Variogram.corSpher} \arguments{ \item{object}{an object inheriting from class \code{"\link{corSpher}"}, representing an Spherical spatial correlation structure.} \item{distance}{an optional numeric vector with the distances at which the semi-variogram is to be calculated. Defaults to \code{NULL}, in which case a sequence of length \code{length.out} between the minimum and maximum values of \code{getCovariate(object)} is used.} \item{sig2}{an optional numeric value representing the process variance. Defaults to \code{1}.} \item{length.out}{an optional integer specifying the length of the sequence of distances to be used for calculating the semi-variogram, when \code{distance = NULL}. Defaults to \code{50}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function calculates the semi-variogram values corresponding to the Spherical correlation model, using the estimated coefficients corresponding to \code{object}, at the distances defined by \code{distance}. } \value{ a data frame with columns \code{variog} and \code{dist} representing, respectively, the semi-variogram values and the corresponding distances. The returned value inherits from class \code{Variogram}. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corSpher}}, \code{\link{plot.Variogram}}, \code{\link{Variogram}} } \examples{ cs1 <- corSpher(15, form = ~ Time | Rat) cs1 <- Initialize(cs1, BodyWeight) Variogram(cs1)[1:10,] } \keyword{models} nlme/man/formula.pdBlocked.Rd0000644000176000001440000000267212222512062015633 0ustar ripleyusers% File nlme/man/formula.pdBlocked.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{formula.pdBlocked} \title{Extract pdBlocked Formula} \usage{ \method{formula}{pdBlocked}(x, asList, \dots) } \alias{formula.pdBlocked} \arguments{ \item{x}{an object inheriting from class \code{"pdBlocked"}, representing a positive definite block diagonal matrix.} \item{asList}{an optional logical value. If \code{TRUE}, a list with the formulas for the individual block diagonal elements of \code{x} is returned; else, if \code{FALSE}, a one-sided formula combining all individual formulas is returned. Defaults to \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The \code{formula} attributes of the \code{pdMat} elements of \code{x} are extracted and returned as a list, in case \code{asList=TRUE}, or converted to a single one-sided formula when \code{asList=FALSE}. If the \code{pdMat} elements do not have a \code{formula} attribute, a \code{NULL} value is returned. } \value{ a list of one-sided formulas, or a single one-sided formula, or \code{NULL}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{pdBlocked}}, \code{\link{pdMat}}} \examples{ pd1 <- pdBlocked(list(~ age, ~ Sex - 1)) formula(pd1) formula(pd1, asList = TRUE) } \keyword{models} nlme/man/lme.groupedData.Rd0000644000176000001440000001525412222512062015313 0ustar ripleyusers% File nlme/man/lme.groupedData.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{lme.groupedData} \title{LME fit from groupedData Object} \usage{ \method{lme}{groupedData}(fixed, data, random, correlation, weights, subset, method, na.action, control, contrasts, keep.data = TRUE) } \alias{lme.groupedData} \arguments{ \item{fixed}{a data frame inheriting from class \code{"\link{groupedData}"}.} \item{data}{this argument is included for consistency with the generic function. It is ignored in this method function.} \item{random}{optionally, any of the following: (i) a one-sided formula of the form \code{~x1+...+xn | g1/.../gm}, with \code{x1+...+xn} specifying the model for the random effects and \code{g1/.../gm} the grouping structure (\code{m} may be equal to 1, in which case no \code{/} is required). The random effects formula will be repeated for all levels of grouping, in the case of multiple levels of grouping; (ii) a list of one-sided formulas of the form \code{~x1+...+xn | g}, with possibly different random effects models for each grouping level. The order of nesting will be assumed the same as the order of the elements in the list; (iii) a one-sided formula of the form \code{~x1+...+xn}, or a \code{pdMat} object with a formula (i.e. a non-\code{NULL} value for \code{formula(object)}), or a list of such formulas or \code{pdMat} objects. In this case, the grouping structure formula will be derived from the data used to fit the linear mixed-effects model, which should inherit from class \code{groupedData}; (iv) a named list of formulas or \code{pdMat} objects as in (iii), with the grouping factors as names. The order of nesting will be assumed the same as the order of the order of the elements in the list; (v) an \code{reStruct} object. See the documentation on \code{pdClasses} for a description of the available \code{pdMat} classes. Defaults to a formula consisting of the right hand side of \code{fixed}.} \item{correlation}{an optional \code{corStruct} object describing the within-group correlation structure. See the documentation of \code{corClasses} for a description of the available \code{corStruct} classes. Defaults to \code{NULL}, corresponding to no within-group correlations.} \item{weights}{an optional \code{varFunc} object or one-sided formula describing the within-group heteroscedasticity structure. If given as a formula, it is used as the argument to \code{varFixed}, corresponding to fixed variance weights. See the documentation on \code{varClasses} for a description of the available \code{varFunc} classes. Defaults to \code{NULL}, corresponding to homoscedastic within-group errors.} \item{subset}{an optional expression indicating the subset of the rows of \code{data} that should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{method}{a character string. If \code{"REML"} the model is fit by maximizing the restricted log-likelihood. If \code{"ML"} the log-likelihood is maximized. Defaults to \code{"REML"}.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{lme} to print an error message and terminate if there are any incomplete observations.} \item{control}{a list of control values for the estimation algorithm to replace the default values returned by the function \code{lmeControl}. Defaults to an empty list.} \item{contrasts}{an optional list. See the \code{contrasts.arg} of \code{model.matrix.default}.} \item{keep.data}{logical: should the \code{data} argument (if supplied and a data frame) be saved as part of the model object?} } \description{ The response variable and primary covariate in \code{formula(fixed)} are used to construct the fixed effects model formula. This formula and the \code{groupedData} object are passed as the \code{fixed} and \code{data} arguments to \code{lme.formula}, together with any other additional arguments in the function call. See the documentation on \code{lme.formula} for a description of that function. } \value{ an object of class \code{lme} representing the linear mixed-effects model fit. Generic functions such as \code{print}, \code{plot} and \code{summary} have methods to show the results of the fit. See \code{lmeObject} for the components of the fit. The functions \code{resid}, \code{coef}, \code{fitted}, \code{fixed.effects}, and \code{random.effects} can be used to extract some of its components. } \references{ The computational methods follow on the general framework of Lindstrom, M.J. and Bates, D.M. (1988). The model formulation is described in Laird, N.M. and Ware, J.H. (1982). The variance-covariance parametrizations are described in Pinheiro, J.C. and Bates., D.M. (1996). The different correlation structures available for the \code{correlation} argument are described in Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994), Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996), and Venables, W.N. and Ripley, B.D. (2002). The use of variance functions for linear and nonlinear mixed effects models is presented in detail in Davidian, M. and Giltinan, D.M. (1995). Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Davidian, M. and Giltinan, D.M. (1995) "Nonlinear Mixed Effects Models for Repeated Measurement Data", Chapman and Hall. Laird, N.M. and Ware, J.H. (1982) "Random-Effects Models for Longitudinal Data", Biometrics, 38, 963-974. Lindstrom, M.J. and Bates, D.M. (1988) "Newton-Raphson and EM Algorithms for Linear Mixed-Effects Models for Repeated-Measures Data", Journal of the American Statistical Association, 83, 1014-1022. Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C. and Bates., D.M. (1996) "Unconstrained Parametrizations for Variance-Covariance Matrices", Statistics and Computing, 6, 289-296. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{groupedData}}, \code{\link{lmeObject}} } \examples{ fm1 <- lme(Orthodont) summary(fm1) } \keyword{models} nlme/man/Fatigue.Rd0000644000176000001440000000335012222471724013667 0ustar ripleyusers% File nlme/man/Fatigue.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Fatigue} \alias{Fatigue} \title{Cracks caused by metal fatigue} \description{ The \code{Fatigue} data frame has 262 rows and 3 columns. } \format{ This data frame contains the following columns: \describe{ \item{Path}{ an ordered factor with levels \code{1} < \code{2} < \code{3} < \code{4} < \code{5} < \code{6} < \code{7} < \code{8} < \code{9} < \code{10} < \code{11} < \code{12} < \code{13} < \code{14} < \code{15} < \code{16} < \code{17} < \code{18} < \code{19} < \code{20} < \code{21} giving the test path (or test unit) number. The order is in terms of increasing failure time or decreasing terminal crack length. } \item{cycles}{ number of test cycles at which the measurement is made (millions of cycles). } \item{relLength}{ relative crack length (dimensionless). } } } \details{ These data are given in Lu and Meeker (1993) where they state ``We obtained the data in Table 1 visually from figure 4.5.2 on page 242 of Bogdanoff and Kozin (1985).'' The data represent the growth of cracks in metal for 21 test units. An initial notch of length 0.90 inches was made on each unit which then was subjected to several thousand test cycles. After every 10,000 test cycles the crack length was measured. Testing was stopped if the crack length exceeded 1.60 inches, defined as a failure, or at 120,000 cycles. } \source{ Lu, C. Joséph , and Meeker, William Q. (1993), Using degradation measures to estimate a time-to-failure distribution, \emph{Technometrics}, \bold{35}, 161-174 } %\examples{} \keyword{datasets} nlme/man/Spruce.Rd0000644000176000001440000000233612222471724013547 0ustar ripleyusers% File nlme/man/Spruce.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Spruce} \alias{Spruce} \title{Growth of Spruce Trees} \description{ The \code{Spruce} data frame has 1027 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Tree}{ a factor giving a unique identifier for each tree. } \item{days}{ a numeric vector giving the number of days since the beginning of the experiment. } \item{logSize}{ a numeric vector giving the logarithm of an estimate of the volume of the tree trunk. } \item{plot}{ a factor identifying the plot in which the tree was grown. } } } \details{ Diggle, Liang, and Zeger (1994, Example 1.3, page 5) describe data on the growth of spruce trees that have been exposed to an ozone-rich atmosphere or to a normal atmosphere. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.28) Diggle, Peter J., Liang, Kung-Yee and Zeger, Scott L. (1994), \emph{Analysis of longitudinal data}, Oxford University Press, Oxford. } %\examples{} \keyword{datasets} nlme/man/coef.lme.Rd0000644000176000001440000000770412222512062013771 0ustar ripleyusers% File nlme/man/coef.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.lme} \title{Extract lme Coefficients} \usage{ \method{coef}{lme}(object, augFrame, level, data, which, FUN, omitGroupingFactor, subset, \dots) } \alias{coef.lme} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{augFrame}{an optional logical value. If \code{TRUE}, the returned data frame is augmented with variables defined in \code{data}; else, if \code{FALSE}, only the coefficients are returned. Defaults to \code{FALSE}.} \item{level}{an optional positive integer giving the level of grouping to be used in extracting the coefficients from an object with multiple nested grouping levels. Defaults to the highest or innermost level of grouping.} \item{data}{an optional data frame with the variables to be used for augmenting the returned data frame when \code{augFrame = TRUE}. Defaults to the data frame used to fit \code{object}.} \item{which}{an optional positive integer or character vector specifying which columns of \code{data} should be used in the augmentation of the returned data frame. Defaults to all columns in \code{data}.} \item{FUN}{an optional summary function or a list of summary functions to be applied to group-varying variables, when collapsing \code{data} by groups. Group-invariant variables are always summarized by the unique value that they assume within that group. If \code{FUN} is a single function it will be applied to each non-invariant variable by group to produce the summary for that variable. If \code{FUN} is a list of functions, the names in the list should designate classes of variables in the frame such as \code{ordered}, \code{factor}, or \code{numeric}. The indicated function will be applied to any group-varying variables of that class. The default functions to be used are \code{mean} for numeric factors, and \code{Mode} for both \code{factor} and \code{ordered}. The \code{Mode} function, defined internally in \code{gsummary}, returns the modal or most popular value of the variable. It is different from the \code{mode} function that returns the S-language mode of the variable.} \item{omitGroupingFactor}{an optional logical value. When \code{TRUE} the grouping factor itself will be omitted from the group-wise summary of \code{data} but the levels of the grouping factor will continue to be used as the row names for the returned data frame. Defaults to \code{FALSE}.} \item{subset}{an optional expression specifying a subset} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The estimated coefficients at level \eqn{i} are obtained by adding together the fixed effects estimates and the corresponding random effects estimates at grouping levels less or equal to \eqn{i}. The resulting estimates are returned as a data frame, with rows corresponding to groups and columns to coefficients. Optionally, the returned data frame may be augmented with covariates summarized over groups. } \value{ a data frame inheriting from class \code{"coef.lme"} with the estimated coefficients at level \code{level} and, optionally, other covariates summarized over groups. The returned object also inherits from classes \code{"ranef.lme"} and \code{"data.frame"}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York, esp. pp. 455-457. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, %\code{\link{fixef.lme}}, \code{\link{ranef.lme}}, \code{\link{plot.ranef.lme}}, \code{\link{gsummary}} } \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) coef(fm1) coef(fm1, augFrame = TRUE) } \keyword{models} nlme/man/varWeights.Rd0000644000176000001440000000204012222512062014410 0ustar ripleyusers% File nlme/man/varWeights.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varWeights} \title{Extract Variance Function Weights} \usage{ varWeights(object) } \alias{varWeights} \alias{varWeights.varComb} \alias{varWeights.varFunc} \arguments{ \item{object}{an object inheriting from class \code{varFunc}, representing a variance function structure.} } \description{ The inverse of the standard deviations corresponding to the variance function structure represented by \code{object} are returned. } \value{ if \code{object} has a \code{weights} attribute, its value is returned; else \code{NULL} is returned. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{logLik.varFunc}}, \code{\link{varWeights}} } \examples{ vf1 <- varPower(form=~age) vf1 <- Initialize(vf1, Orthodont) coef(vf1) <- 0.3 varWeights(vf1)[1:10] } \keyword{models} nlme/man/pdNatural.Rd0000644000176000001440000001006212222512062014222 0ustar ripleyusers% File nlme/man/pdNatural.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdNatural} \title{General Positive-Definite Matrix in Natural Parametrization} \usage{ pdNatural(value, form, nam, data) } \alias{pdNatural} \arguments{ \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric vector. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} } \description{ This function is a constructor for the \code{pdNatural} class, representing a general positive-definite matrix, using a natural parametrization . If the matrix associated with \code{object} is of dimension \eqn{n}, it is represented by \eqn{n(n+1)/2}{n*(n+1)/2} parameters. Letting \eqn{\sigma_{ij}}{S(i,j)} denote the \eqn{ij}-th element of the underlying positive definite matrix and \eqn{\rho_{ij}=\sigma_{i}/\sqrt{\sigma_{ii}\sigma_{jj}},\;i\neq j}{r(i,j) = S(i,j)/sqrt(S(i,i)S(j,j)), i not equal to j} denote the associated "correlations", the "natural" parameters are given by \eqn{\sqrt{\sigma_{ii}}, \;i=1,\ldots,n}{sqrt(Sii), i=1,..,n} and \eqn{\log((1+\rho_{ij})/(1-\rho_{ij})),\; i \neq j}{log((1+r(i,j))/(1-r(i,j))), i not equal to j}. Note that all natural parameters are individually unrestricted, but not jointly unrestricted (meaning that not all unrestricted vectors would give positive-definite matrices). Therefore, this parametrization should NOT be used for optimization. It is mostly used for deriving approximate confidence intervals on parameters following the optimization of an objective function. When \code{value} is \code{numeric(0)}, an uninitialized \code{pdMat} object, a one-sided formula, or a vector of character strings, \code{object} is returned as an uninitialized \code{pdSymm} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is an initialized \code{pdMat} object, \code{object} will be constructed from \code{as.matrix(value)}. Finally, if \code{value} is a numeric vector, it is assumed to represent the natural parameters of the underlying positive-definite matrix. } \value{ a \code{pdNatural} object representing a general positive-definite matrix in natural parametrization, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. p. 162. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{pdClasses}}, \code{\link{matrix<-.pdMat}}} \examples{ pdNatural(diag(1:3)) } \keyword{models} nlme/man/lmeStruct.Rd0000644000176000001440000000257612222512062014265 0ustar ripleyusers% File nlme/man/lmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{lmeStruct} \title{Linear Mixed-Effects Structure} \usage{ lmeStruct(reStruct, corStruct, varStruct) } \alias{lmeStruct} \arguments{ \item{reStruct}{a \code{reStruct} representing a random effects structure.} \item{corStruct}{an optional \code{corStruct} object, representing a correlation structure. Default is \code{NULL}.} \item{varStruct}{an optional \code{varFunc} object, representing a variance function structure. Default is \code{NULL}.} } \description{ A linear mixed-effects structure is a list of model components representing different sets of parameters in the linear mixed-effects model. An \code{lmeStruct} list must contain at least a \code{reStruct} object, but may also contain \code{corStruct} and \code{varFunc} objects. \code{NULL} arguments are not included in the \code{lmeStruct} list. } \value{ a list of model components determining the parameters to be estimated for the associated linear mixed-effects model. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{lme}}, \code{\link{residuals.lmeStruct}}, \code{\link{reStruct}}, \code{\link{varFunc}} } \examples{ lms1 <- lmeStruct(reStruct(~age), corAR1(), varPower()) } \keyword{models} nlme/man/nlmeObject.Rd0000644000176000001440000001066312222512062014361 0ustar ripleyusers% File nlme/man/nlmeObject.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{nlmeObject} \title{Fitted nlme Object} \alias{nlmeObject} \description{ An object returned by the \code{\link{nlme}} function, inheriting from class \code{"nlme"}, also inheriting from class \code{"lme"}, and representing a fitted nonlinear mixed-effects model. Objects of this class have methods for the generic functions \code{anova}, \code{coef}, \code{fitted}, \code{fixed.effects}, \code{formula}, \code{getGroups}, \code{getResponse}, \code{intervals}, \code{logLik}, \code{pairs}, \code{plot}, \code{predict}, \code{print}, \code{random.effects}, \code{residuals}, \code{summary}, and \code{update}. } \value{ The following components must be included in a legitimate \code{"nlme"} object. \item{apVar}{an approximate covariance matrix for the variance-covariance coefficients. If \code{apVar = FALSE} in the list of control values used in the call to \code{nlme}, this component is equal to \code{NULL}.} \item{call}{a list containing an image of the \code{nlme} call that produced the object.} \item{coefficients}{a list with two components, \code{fixed} and \code{random}, where the first is a vector containing the estimated fixed effects and the second is a list of matrices with the estimated random effects for each level of grouping. For each matrix in the \code{random} list, the columns refer to the random effects and the rows to the groups.} \item{contrasts}{a list with the contrasts used to represent factors in the fixed effects formula and/or random effects formula. This information is important for making predictions from a new data frame in which not all levels of the original factors are observed. If no factors are used in the nlme model, this component will be an empty list.} \item{dims}{a list with basic dimensions used in the nlme fit, including the components \code{N} - the number of observations in the data, \code{Q} - the number of grouping levels, \code{qvec} - the number of random effects at each level from innermost to outermost (last two values are equal to zero and correspond to the fixed effects and the response), \code{ngrps} - the number of groups at each level from innermost to outermost (last two values are one and correspond to the fixed effects and the response), and \code{ncol} - the number of columns in the model matrix for each level of grouping from innermost to outermost (last two values are equal to the number of fixed effects and one).} \item{fitted}{a data frame with the fitted values as columns. The leftmost column corresponds to the population fixed effects (corresponding to the fixed effects only) and successive columns from left to right correspond to increasing levels of grouping.} \item{fixDF}{a list with components \code{X} and \code{terms} specifying the denominator degrees of freedom for, respectively, t-tests for the individual fixed effects and F-tests for the fixed-effects terms in the models.} \item{groups}{a data frame with the grouping factors as columns. The grouping level increases from left to right.} \item{logLik}{the (restricted) log-likelihood at convergence.} \item{map}{a list with components \code{fmap}, \code{rmap}, \code{rmapRel}, and \code{bmap}, specifying various mappings for the fixed and random effects, used to generate predictions from the fitted object.} \item{method}{the estimation method: either \code{"ML"} for maximum likelihood, or \code{"REML"} for restricted maximum likelihood.} \item{modelStruct}{an object inheriting from class \code{nlmeStruct}, representing a list of mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects.} \item{numIter}{the number of iterations used in the iterative algorithm.} \item{residuals}{a data frame with the residuals as columns. The leftmost column corresponds to the population residuals and successive columns from left to right correspond to increasing levels of grouping.} \item{sigma}{the estimated within-group error standard deviation.} \item{varFix}{an approximate covariance matrix of the fixed effects estimates.} } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{nlme}}, \code{nlmeStruct}} \keyword{models} nlme/man/as.matrix.corStruct.Rd0000644000176000001440000000237112222512062016171 0ustar ripleyusers% File nlme/man/as.matrix.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{as.matrix.corStruct} \title{Matrix of a corStruct Object} \usage{ \method{as.matrix}{corStruct}(x, \dots) } \alias{as.matrix.corStruct} \arguments{ \item{x}{an object inheriting from class \code{"\link{corStruct}"}, representing a correlation structure.} \item{\dots}{further arguments passed from other methods.} } \description{ This method function extracts the correlation matrix, or list of correlation matrices, associated with \code{object}. } \value{ If the correlation structure includes a grouping factor, the returned value will be a list with components given by the correlation matrices for each group. Otherwise, the returned value will be a matrix representing the correlation structure associated with \code{object}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{corClasses}}, \code{\link{corMatrix}}} \examples{ cst1 <- corAR1(form = ~1|Subject) cst1 <- Initialize(cst1, data = Orthodont) as.matrix(cst1) } \keyword{models} nlme/man/predict.nlme.Rd0000644000176000001440000000624712222512062014666 0ustar ripleyusers% File nlme/man/predict.nlme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{predict.nlme} \title{Predictions from an nlme Object} \usage{ \method{predict}{nlme}(object, newdata, level, asList, na.action, naPattern, \dots) } \alias{predict.nlme} \arguments{ \item{object}{an object inheriting from class \code{"\link{nlme}"}, representing a fitted nonlinear mixed-effects model.} \item{newdata}{an optional data frame to be used for obtaining the predictions. All variables used in the nonlinear model, the fixed and the random effects models, as well as the grouping factors, must be present in the data frame. If missing, the fitted values are returned.} \item{level}{an optional integer vector giving the level(s) of grouping to be used in obtaining the predictions. Level values increase from outermost to innermost grouping, with level zero corresponding to the population predictions. Defaults to the highest or innermost level of grouping.} \item{asList}{an optional logical value. If \code{TRUE} and a single value is given in \code{level}, the returned object is a list with the predictions split by groups; else the returned value is either a vector or a data frame, according to the length of \code{level}. } \item{na.action}{a function that indicates what should happen when \code{newdata} contains \code{NA}s. The default action (\code{na.fail}) causes the function to print an error message and terminate if there are any incomplete observations.} \item{naPattern}{an expression or formula object, specifying which returned values are to be regarded as missing.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The predictions at level \eqn{i} are obtained by adding together the contributions from the estimated fixed effects and the estimated random effects at levels less or equal to \eqn{i} and evaluating the model function at the resulting estimated parameters. If group values not included in the original grouping factors are present in \code{newdata}, the corresponding predictions will be set to \code{NA} for levels greater or equal to the level at which the unknown groups occur. } \value{ if a single level of grouping is specified in \code{level}, the returned value is either a list with the predictions split by groups (\code{asList = TRUE}) or a vector with the predictions (\code{asList = FALSE}); else, when multiple grouping levels are specified in \code{level}, the returned object is a data frame with columns given by the predictions at different levels and the grouping factors. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{nlme}}, \code{\link{fitted.lme}}} \examples{ fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, fixed = Asym + R0 + lrc ~ 1, random = Asym ~ 1, start = c(Asym = 103, R0 = -8.5, lrc = -3.3)) newLoblolly <- data.frame(age = c(5,10,15,20,25,30), Seed = rep(301,6)) predict(fm1, newLoblolly, level = 0:1) } \keyword{models} nlme/man/Alfalfa.Rd0000644000176000001440000000336112222471724013633 0ustar ripleyusers% File nlme/man/Alfalfa.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Alfalfa} \alias{Alfalfa} \title{Split-Plot Experiment on Varieties of Alfalfa} \description{ The \code{Alfalfa} data frame has 72 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Variety}{ a factor with levels \code{Cossack}, \code{Ladak}, and \code{Ranger} } \item{Date}{ a factor with levels \code{None} \code{S1} \code{S20} \code{O7} } \item{Block}{ a factor with levels \code{1} \code{2} \code{3} \code{4} \code{5} \code{6} } \item{Yield}{ a numeric vector } } } \details{ These data are described in Snedecor and Cochran (1980) as an example of a split-plot design. The treatment structure used in the experiment was a 3\eqn{ x }{\times}4 full factorial, with three varieties of alfalfa and four dates of third cutting in 1943. The experimental units were arranged into six blocks, each subdivided into four plots. The varieties of alfalfa (\emph{Cossac}, \emph{Ladak}, and \emph{Ranger}) were assigned randomly to the blocks and the dates of third cutting (\emph{None}, \emph{S1}---September 1, \emph{S20}---September 20, and \emph{O7}---October 7) were randomly assigned to the plots. All four dates were used on each block. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.1) Snedecor, G. W. and Cochran, W. G. (1980), \emph{Statistical Methods (7th ed)}, Iowa State University Press, Ames, IA } %\examples{} \keyword{datasets} nlme/man/pdConstruct.pdBlocked.Rd0000644000176000001440000001057212222512062016474 0ustar ripleyusers% File nlme/man/pdConstruct.pdBlocked.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdConstruct.pdBlocked} \title{Construct pdBlocked Objects} \usage{ \method{pdConstruct}{pdBlocked}(object, value, form, nam, data, pdClass, \dots) } \alias{pdConstruct.pdBlocked} \arguments{ \item{object}{an object inheriting from class \code{"pdBlocked"}, representing a positive definite block-diagonal matrix.} \item{value}{an optional list with elements to be used as the \code{value} argument to other \code{pdMat} constructors. These include: \code{pdMat} objects, positive-definite matrices, one-sided linear formulas, vectors of character strings, or numeric vectors. All elements in the list must be similar (e.g. all one-sided formulas, or all numeric vectors). Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional list of one-sided linear formula specifying the row/column names for the block-diagonal elements of the matrix represented by \code{object}. Because factors may be present in \code{form}, the formulas needs to be evaluated on a data.frame to resolve the names they defines. This argument is ignored when \code{value} is a list of one-sided formulas. Defaults to \code{NULL}.} \item{nam}{an optional list of vector of character strings specifying the row/column names for the block-diagonal elements of the matrix represented by object. Each of its components must have length equal to the dimension of the corresponding block-diagonal element and unreplicated elements. This argument is ignored when \code{value} is a list of vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} \item{pdClass}{an optional vector of character strings naming the \code{pdMat} classes to be assigned to the individual blocks in the underlying matrix. If a single class is specified, it is used for all block-diagonal elements. This argument will only be used when \code{value} is missing, or its elements are not \code{pdMat} objects. Defaults to \code{"pdSymm"}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This function give an alternative constructor for the \code{pdBlocked} class, representing a positive-definite block-diagonal matrix. Each block-diagonal element of the underlying matrix is itself a positive-definite matrix and is represented internally as an individual \code{pdMat} object. When \code{value} is \code{numeric(0)}, a list of uninitialized \code{pdMat} objects, a list of one-sided formulas, or a list of vectors of character strings, \code{object} is returned as an uninitialized \code{pdBlocked} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is a list of initialized \code{pdMat} objects, \code{object} will be constructed from the list obtained by applying \code{as.matrix} to each of the \code{pdMat} elements of \code{value}. Finally, if \code{value} is a list of numeric vectors, they are assumed to represent the unrestricted coefficients of the block-diagonal elements of the underlying positive-definite matrix. } \value{ a \code{pdBlocked} object representing a positive-definite block-diagonal matrix, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{pdBlocked}}, \code{\link{pdClasses}}, \code{\link{pdConstruct}}, \code{\link{matrix<-.pdMat}}} \examples{ pd1 <- pdBlocked(list(c("A","B"), c("a1", "a2", "a3"))) pdConstruct(pd1, list(diag(1:2), diag(c(0.1, 0.2, 0.3)))) } \keyword{models} nlme/man/Phenobarb.Rd0000644000176000001440000000460512222471724014207 0ustar ripleyusers% File nlme/man/Phenobarb.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Phenobarb} \alias{Phenobarb} \title{Phenobarbitol Kinetics} \description{ The \code{Phenobarb} data frame has 744 rows and 7 columns. } \format{ This data frame contains the following columns: \describe{ \item{Subject}{ an ordered factor identifying the infant. } \item{Wt}{ a numeric vector giving the birth weight of the infant (kg). } \item{Apgar}{ an ordered factor giving the 5-minute Apgar score for the infant. This is an indication of health of the newborn infant. } \item{ApgarInd}{ a factor indicating whether the 5-minute Apgar score is \code{< 5} or \code{>= 5}. } \item{time}{ a numeric vector giving the time when the sample is drawn or drug administered (hr). } \item{dose}{ a numeric vector giving the dose of drug administered (\eqn{u}{\mu}g/kg). } \item{conc}{ a numeric vector giving the phenobarbital concentration in the serum (\eqn{u}{\mu}g/L). } } } \details{ Data from a pharmacokinetics study of phenobarbital in neonatal infants. During the first few days of life the infants receive multiple doses of phenobarbital for prevention of seizures. At irregular intervals blood samples are drawn and serum phenobarbital concentrations are determined. The data were originally given in Grasela and Donn(1985) and are analyzed in Boeckmann, Sheiner and Beal (1994), in Davidian and Giltinan (1995), and in Littell et al. (1996). } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.23) Davidian, M. and Giltinan, D. M. (1995), \emph{Nonlinear Models for Repeated Measurement Data}, Chapman and Hall, London. (section 6.6) Grasela and Donn (1985), Neonatal population pharmacokinetics of phenobarbital derived from routine clinical data, \emph{Developmental Pharmacology and Therapeutics}, \bold{8}, 374-383. Boeckmann, A. J., Sheiner, L. B., and Beal, S. L. (1994), \emph{NONMEM Users Guide: Part V}, University of California, San Francisco. Littell, R. C., Milliken, G. A., Stroup, W. W. and Wolfinger, R. D. (1996), \emph{SAS System for Mixed Models}, SAS Institute, Cary, NC. } %\examples{} \keyword{datasets} nlme/man/groupedData.Rd0000644000176000001440000001626512222512062014542 0ustar ripleyusers% File nlme/man/groupedData.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{groupedData} \title{Construct a groupedData Object} \usage{ groupedData(formula, data, order.groups, FUN, outer, inner, labels, units) \method{update}{groupedData}(object, formula, data, order.groups, FUN, outer, inner, labels, units, \dots) } \alias{groupedData} \alias{nfGroupedData} \alias{nmGroupedData} \alias{[.groupedData} \alias{as.data.frame.groupedData} \alias{update.groupedData} \arguments{ \item{object}{an object inheriting from class \code{groupedData}.} \item{formula}{a formula of the form \code{resp ~ cov | group} where \code{resp} is the response, \code{cov} is the primary covariate, and \code{group} is the grouping factor. The expression \code{1} can be used for the primary covariate when there is no other suitable candidate. Multiple nested grouping factors can be listed separated by the \code{/} symbol as in \code{fact1/fact2}. In an expression like this the \code{fact2} factor is nested within the \code{fact1} factor.} \item{data}{a data frame in which the expressions in \code{formula} can be evaluated. The resulting \code{groupedData} object will consist of the same data values in the same order but with additional attributes.} \item{order.groups}{an optional logical value, or list of logical values, indicating if the grouping factors should be converted to ordered factors according to the function \code{FUN} applied to the response from each group. If multiple levels of grouping are present, this argument can be either a single logical value (which will be repeated for all grouping levels) or a list of logical values. If no names are assigned to the list elements, they are assumed in the same order as the group levels (outermost to innermost grouping). Ordering within a level of grouping is done within the levels of the grouping factors which are outer to it. Changing the grouping factor to an ordered factor does not affect the ordering of the rows in the data frame but it does affect the order of the panels in a trellis display of the data or models fitted to the data. Defaults to \code{TRUE}.} \item{FUN}{an optional summary function that will be applied to the values of the response for each level of the grouping factor, when \code{order.groups = TRUE}, to determine the ordering. Defaults to the \code{max} function.} \item{outer}{an optional one-sided formula, or list of one-sided formulas, indicating covariates that are outer to the grouping factor(s). If multiple levels of grouping are present, this argument can be either a single one-sided formula, or a list of one-sided formulas. If no names are assigned to the list elements, they are assumed in the same order as the group levels (outermost to innermost grouping). An outer covariate is invariant within the sets of rows defined by the grouping factor. Ordering of the groups is done in such a way as to preserve adjacency of groups with the same value of the outer variables. When plotting a groupedData object, the argument \code{outer = TRUE} causes the panels to be determined by the \code{outer} formula. The points within the panels are associated by level of the grouping factor. Defaults to \code{NULL}, meaning that no outer covariates are present.} \item{inner}{an optional one-sided formula, or list of one-sided formulas, indicating covariates that are inner to the grouping factor(s). If multiple levels of grouping are present, this argument can be either a single one-sided formula, or a list of one-sided formulas. If no names are assigned to the list elements, they are assumed in the same order as the group levels (outermost to innermost grouping). An inner covariate can change within the sets of rows defined by the grouping factor. An inner formula can be used to associate points in a plot of a groupedData object. Defaults to \code{NULL}, meaning that no inner covariates are present.} \item{labels}{an optional list of character strings giving labels for the response and the primary covariate. The label for the primary covariate is named \code{x} and that for the response is named \code{y}. Either label can be omitted.} \item{units}{an optional list of character strings giving the units for the response and the primary covariate. The units string for the primary covariate is named \code{x} and that for the response is named \code{y}. Either units string can be omitted.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ An object of the \code{groupedData} class is constructed from the \code{formula} and \code{data} by attaching the \code{formula} as an attribute of the data, along with any of \code{outer}, \code{inner}, \code{labels}, and \code{units} that are given. If \code{order.groups} is \code{TRUE} the grouping factor is converted to an ordered factor with the ordering determined by \code{FUN}. Depending on the number of grouping levels and the type of primary covariate, the returned object will be of one of three classes: \code{nfnGroupedData} - numeric covariate, single level of nesting; \code{nffGroupedData} - factor covariate, single level of nesting; and \code{nmGroupedData} - multiple levels of nesting. Several modeling and plotting functions can use the formula stored with a \code{groupedData} object to construct default plots and models. } \value{ an object of one of the classes \code{nfnGroupedData}, \code{nffGroupedData}, or \code{nmGroupedData}, and also inheriting from classes \code{groupedData} and \code{data.frame}. } \references{ Bates, D.M. and Pinheiro, J.C. (1997), "Software Design for Longitudinal Data", in "Modelling Longitudinal and Spatially Correlated Data: Methods, Applications and Future Directions", T.G. Gregoire (ed.), Springer-Verlag, New York. Pinheiro, J.C. and Bates, D.M. (1997) "Future Directions in Mixed-Effects Software: Design of NLME 3.0" available at http://nlme.stat.wisc.edu/ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{Douglas Bates and José Pinheiro} \seealso{\code{\link{formula}}, \code{\link{gapply}}, \code{\link{gsummary}}, \code{\link{lme}}, \code{\link{plot.nffGroupedData}}, \code{\link{plot.nfnGroupedData}}, \code{\link{plot.nmGroupedData}}, \code{\link{reStruct}} } \examples{ Orth.new <- # create a new copy of the groupedData object groupedData( distance ~ age | Subject, data = as.data.frame( Orthodont ), FUN = mean, outer = ~ Sex, labels = list( x = "Age", y = "Distance from pituitary to pterygomaxillary fissure" ), units = list( x = "(yr)", y = "(mm)") ) \dontrun{ plot( Orth.new ) # trellis plot by Subject } formula( Orth.new ) # extractor for the formula gsummary( Orth.new ) # apply summary by Subject fm1 <- lme( Orth.new ) # fixed and groups formulae extracted from object Orthodont2 <- update(Orthodont, FUN = mean) } \keyword{manip} \keyword{attribute} nlme/man/print.varFunc.Rd0000644000176000001440000000146512222512062015036 0ustar ripleyusers% File nlme/man/print.varFunc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{print.varFunc} \title{Print a varFunc Object} \usage{ \method{print}{varFunc}(x, \dots) } \alias{print.varFunc} \alias{print.varComb} \arguments{ \item{x}{an object inheriting from class \code{"\link{varFunc}"}, representing a variance function structure.} \item{\dots}{optional arguments passed to \code{print.default}; see the documentation on that method function.} } \description{ The class and the coefficients associated with \code{x} are printed. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{summary.varFunc}}} \examples{ vf1 <- varPower(0.3, form = ~age) vf1 <- Initialize(vf1, Orthodont) print(vf1) } \keyword{models} nlme/man/corMatrix.corStruct.Rd0000644000176000001440000000664712222512062016245 0ustar ripleyusers% File nlme/man/corMatrix.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corMatrix.corStruct} \title{Matrix of a corStruct Object} \usage{ \method{corMatrix}{corStruct}(object, covariate, corr, \dots) } \alias{corMatrix.corStruct} \alias{corMatrix.compSymm} \alias{corMatrix.corAR1} \alias{corMatrix.corARMA} \alias{corMatrix.corCAR1} \alias{corMatrix.corCompSymm} \alias{corMatrix.corIdent} \alias{corMatrix.corNatural} \alias{corMatrix.corSpatial} \alias{corMatrix.corSymm} \arguments{ \item{object}{an object inheriting from class \code{"\link{corStruct}"} representing a correlation structure.} \item{covariate}{an optional covariate vector (matrix), or list of covariate vectors (matrices), at which values the correlation matrix, or list of correlation matrices, are to be evaluated. Defaults to \code{getCovariate(object)}.} \item{corr}{a logical value. If \code{TRUE} the function returns the correlation matrix, or list of correlation matrices, represented by \code{object}. If \code{FALSE} the function returns a transpose inverse square-root of the correlation matrix, or a list of transpose inverse square-root factors of the correlation matrices.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the correlation matrix (or its transpose inverse square-root factor), or list of correlation matrices (or their transpose inverse square-root factors) corresponding to \code{covariate} and \code{object}. Letting \eqn{\Sigma}{S} denote a correlation matrix, a square-root factor of \eqn{\Sigma}{S} is any square matrix \eqn{L} such that \eqn{\Sigma = L'L}{S=L'L}. When \code{corr = FALSE}, this method extracts \eqn{L^{-t}}{L^(-t)}. } \value{ If \code{covariate} is a vector (matrix), the returned value will be an array with the corresponding correlation matrix (or its transpose inverse square-root factor). If the \code{covariate} is a list of vectors (matrices), the returned value will be a list with the correlation matrices (or their transpose inverse square-root factors) corresponding to each component of \code{covariate}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{corFactor.corStruct}}, \code{\link{Initialize.corStruct}}} \examples{ cs1 <- corAR1(0.3) corMatrix(cs1, covariate = 1:4) corMatrix(cs1, covariate = 1:4, corr = FALSE) # Pinheiro and Bates, p. 225 cs1CompSymm <- corCompSymm(value = 0.3, form = ~ 1 | Subject) cs1CompSymm <- Initialize(cs1CompSymm, data = Orthodont) corMatrix(cs1CompSymm) # Pinheiro and Bates, p. 226 cs1Symm <- corSymm(value = c(0.2, 0.1, -0.1, 0, 0.2, 0), form = ~ 1 | Subject) cs1Symm <- Initialize(cs1Symm, data = Orthodont) corMatrix(cs1Symm) # Pinheiro and Bates, p. 236 cs1AR1 <- corAR1(0.8, form = ~ 1 | Subject) cs1AR1 <- Initialize(cs1AR1, data = Orthodont) corMatrix(cs1AR1) # Pinheiro and Bates, p. 237 cs1ARMA <- corARMA(0.4, form = ~ 1 | Subject, q = 1) cs1ARMA <- Initialize(cs1ARMA, data = Orthodont) corMatrix(cs1ARMA) # Pinheiro and Bates, p. 238 spatDat <- data.frame(x = (0:4)/4, y = (0:4)/4) cs1Exp <- corExp(1, form = ~ x + y) cs1Exp <- Initialize(cs1Exp, spatDat) corMatrix(cs1Exp) } \keyword{models} nlme/man/corExp.Rd0000644000176000001440000001126112222512062013532 0ustar ripleyusers% File nlme/man/corExp.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corExp} \title{Exponential Correlation Structure} \usage{ corExp(value, form, nugget, metric, fixed) } \alias{corExp} \arguments{ \item{value}{an optional vector with the parameter values in constrained form. If \code{nugget} is \code{FALSE}, \code{value} can have only one element, corresponding to the "range" of the exponential correlation structure, which must be greater than zero. If \code{nugget} is \code{TRUE}, meaning that a nugget effect is present, \code{value} can contain one or two elements, the first being the "range" and the second the "nugget effect" (one minus the correlation between two observations taken arbitrarily close together); the first must be greater than zero and the second must be between zero and one. Defaults to \code{numeric(0)}, which results in a range of 90\% of the minimum distance and a nugget effect of 0.1 being assigned to the parameters when \code{object} is initialized.} \item{form}{a one sided formula of the form \code{~ S1+...+Sp}, or \code{~ S1+...+Sp | g}, specifying spatial covariates \code{S1} through \code{Sp} and, optionally, a grouping factor \code{g}. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{nugget}{an optional logical value indicating whether a nugget effect is present. Defaults to \code{FALSE}.} \item{metric}{an optional character string specifying the distance metric to be used. The currently available options are \code{"euclidean"} for the root sum-of-squares of distances; \code{"maximum"} for the maximum difference; and \code{"manhattan"} for the sum of the absolute differences. Partial matching of arguments is used, so only the first three characters need to be provided. Defaults to \code{"euclidean"}.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{"corExp"} class, representing an exponential spatial correlation structure. Letting \eqn{d} denote the range and \eqn{n} denote the nugget effect, the correlation between two observations a distance \eqn{r} apart is \eqn{\exp(-r/d)}{exp(-r/d)} when no nugget effect is present and \eqn{(1-n) \exp(-r/d)}{(1-n)*exp(-r/d)} when a nugget effect is assumed. Objects created using this constructor must later be initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{"corExp"}, also inheriting from class \code{"corSpatial"}, representing an exponential spatial correlation structure. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. Littel, Milliken, Stroup, and Wolfinger (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. p. 238. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}}, \code{\link{dist}} } \examples{ sp1 <- corExp(form = ~ x + y + z) # Pinheiro and Bates, p. 238 spatDat <- data.frame(x = (0:4)/4, y = (0:4)/4) cs1Exp <- corExp(1, form = ~ x + y) cs1Exp <- Initialize(cs1Exp, spatDat) corMatrix(cs1Exp) cs2Exp <- corExp(1, form = ~ x + y, metric = "man") cs2Exp <- Initialize(cs2Exp, spatDat) corMatrix(cs2Exp) cs3Exp <- corExp(c(1, 0.2), form = ~ x + y, nugget = TRUE) cs3Exp <- Initialize(cs3Exp, spatDat) corMatrix(cs3Exp) # example lme(..., corExp ...) # Pinheiro and Bates, pp. 222-247 # p. 222 options(contrasts = c("contr.treatment", "contr.poly")) fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) # p. 223 fm2BW.lme <- update(fm1BW.lme, weights = varPower()) # p. 246 fm3BW.lme <- update(fm2BW.lme, correlation = corExp(form = ~ Time)) # p. 247 fm4BW.lme <- update(fm3BW.lme, correlation = corExp(form = ~ Time, nugget = TRUE)) anova(fm3BW.lme, fm4BW.lme) } \keyword{models} nlme/man/predict.gls.Rd0000644000176000001440000000275012222512062014513 0ustar ripleyusers% File nlme/man/predict.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{predict.gls} \title{Predictions from a gls Object} \usage{ \method{predict}{gls}(object, newdata, na.action, \dots) } \alias{predict.gls} \arguments{ \item{object}{an object inheriting from class \code{"\link{gls}"}, representing a generalized least squares fitted linear model.} \item{newdata}{an optional data frame to be used for obtaining the predictions. All variables used in the linear model must be present in the data frame. If missing, the fitted values are returned.} \item{na.action}{a function that indicates what should happen when \code{newdata} contains \code{NA}s. The default action (\code{na.fail}) causes the function to print an error message and terminate if there are any incomplete observations.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The predictions for the linear model represented by \code{object} are obtained at the covariate values defined in \code{newdata}. } \value{ a vector with the predicted values. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}} \examples{ fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) newOvary <- data.frame(Time = c(-0.75, -0.5, 0, 0.5, 0.75)) predict(fm1, newOvary) } \keyword{models} nlme/man/pooledSD.Rd0000644000176000001440000000164612222512062014011 0ustar ripleyusers% File nlme/man/pooledSD.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pooledSD} \title{Extract Pooled Standard Deviation} \usage{ pooledSD(object) } \alias{pooledSD} \arguments{ \item{object}{an object inheriting from class \code{lmList}.} } \description{ The pooled estimated standard deviation is obtained by adding together the residual sum of squares for each non-null element of \code{object}, dividing by the sum of the corresponding residual degrees-of-freedom, and taking the square-root. } \value{ the pooled standard deviation for the non-null elements of \code{object}, with an attribute \code{df} with the number of degrees-of-freedom used in the estimation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{lm}}} \examples{ fm1 <- lmList(Orthodont) pooledSD(fm1) } \keyword{models} nlme/man/residuals.nlmeStruct.Rd0000644000176000001440000000452712222512062016433 0ustar ripleyusers% File nlme/man/residuals.nlmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{residuals.nlmeStruct} \title{Calculate nlmeStruct Residuals} \usage{ \method{residuals}{nlmeStruct}(object, level, conLin, \dots) } \alias{residuals.nlmeStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{nlmeStruct}"}, representing a list of mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects.} \item{level}{an optional integer vector giving the level(s) of grouping to be used in extracting the residuals from \code{object}. Level values increase from outermost to innermost grouping, with level zero corresponding to the population fitted values. Defaults to the highest or innermost level of grouping.} \item{conLin}{an optional condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying nlme model. Defaults to \code{attr(object, "conLin")}.} \item{\dots}{optional arguments to the residuals generic. Not used.} } \description{ The residuals at level \eqn{i} are obtained by subtracting the fitted values at that level from the response vector. The fitted values at level \eqn{i} are obtained by adding together the contributions from the estimated fixed effects and the estimated random effects at levels less or equal to \eqn{i} and evaluating the model function at the resulting estimated parameters. } \value{ if a single level of grouping is specified in \code{level}, the returned value is a vector with the residuals at the desired level; else, when multiple grouping levels are specified in \code{level}, the returned object is a matrix with columns given by the residuals at different levels. } \references{ Bates, D.M. and Pinheiro, J.C. (1998) "Computational methods for multilevel models" available in PostScript or PDF formats at http://nlme.stat.wisc.edu } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This method function is primarily used within the \code{nlme} function. } \seealso{\code{\link{nlme}}, \code{\link{fitted.nlmeStruct}} } \keyword{models} nlme/man/Oats.Rd0000644000176000001440000000302512222471724013210 0ustar ripleyusers% File nlme/man/Oats.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Oats} \alias{Oats} \title{Split-plot Experiment on Varieties of Oats} \description{ The \code{Oats} data frame has 72 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Block}{ an ordered factor with levels \code{VI} < \code{V} < \code{III} < \code{IV} < \code{II} < \code{I} } \item{Variety}{ a factor with levels \code{Golden Rain} \code{Marvellous} \code{Victory} } \item{nitro}{ a numeric vector } \item{yield}{ a numeric vector } } } \details{ These data have been introduced by Yates (1935) as an example of a split-plot design. The treatment structure used in the experiment was a \eqn{3 \times 4}{3 x 4} full factorial, with three varieties of oats and four concentrations of nitrogen. The experimental units were arranged into six blocks, each with three whole-plots subdivided into four subplots. The varieties of oats were assigned randomly to the whole-plots and the concentrations of nitrogen to the subplots. All four concentrations of nitrogen were used on each whole-plot. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.15) Venables, W. N. and Ripley, B. D. (2002) \emph{Modern Applied Statistics with S. (4th ed)}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/corClasses.Rd0000644000176000001440000000354712222512062014403 0ustar ripleyusers% File nlme/man/corClasses.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corClasses} \title{Correlation Structure Classes} \alias{corClasses} \alias{corIdent} \alias{corStruct} \description{ Standard classes of correlation structures (\code{corStruct}) available in the \code{nlme} package. } \value{ Available standard classes: \item{corAR1}{autoregressive process of order 1.} \item{corARMA}{autoregressive moving average process, with arbitrary orders for the autoregressive and moving average components.} \item{corCAR1}{continuous autoregressive process (AR(1) process for a continuous time covariate).} \item{corCompSymm}{compound symmetry structure corresponding to a constant correlation.} \item{corExp}{exponential spatial correlation.} \item{corGaus}{Gaussian spatial correlation.} \item{corLin}{linear spatial correlation.} \item{corRatio}{Rational quadratics spatial correlation.} \item{corSpher}{spherical spatial correlation.} \item{corSymm}{general correlation matrix, with no additional structure.} } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ Users may define their own \code{corStruct} classes by specifying a \code{constructor} function and, at a minimum, methods for the functions \code{corMatrix} and \code{coef}. For examples of these functions, see the methods for classes \code{corSymm} and \code{corAR1}. } \seealso{ \code{\link{corAR1}}, \code{\link{corARMA}}, \code{\link{corCAR1}}, \code{\link{corCompSymm}}, \code{\link{corExp}}, \code{\link{corGaus}}, \code{\link{corLin}}, \code{\link{corRatio}}, \code{\link{corSpher}}, \code{\link{corSymm}}, \code{\link{summary.corStruct}}} \keyword{models} nlme/man/Wheat.Rd0000644000176000001440000000162212222471724013353 0ustar ripleyusers% File nlme/man/Wheat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Wheat} \alias{Wheat} \title{Yields by growing conditions} \description{ The \code{Wheat} data frame has 48 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Tray}{ an ordered factor with levels \code{3} < \code{1} < \code{2} < \code{4} < \code{5} < \code{6} < \code{8} < \code{9} < \code{7} < \code{12} < \code{11} < \code{10} } \item{Moisture}{ a numeric vector } \item{fertilizer}{ a numeric vector } \item{DryMatter}{ a numeric vector } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/Covariate.varFunc.Rd0000644000176000001440000000214612222512062015614 0ustar ripleyusers% File nlme/man/Covariate.varFunc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Covariate.varFunc} \title{Assign varFunc Covariate} \usage{ \method{covariate}{varFunc}(object) <- value } \alias{covariate<-.varFunc} \arguments{ \item{object}{an object inheriting from class \code{"\link{varFunc}"}, representing a variance function structure.} \item{value}{a value to be assigned to the covariate associated with \code{object}.} } \description{ The covariate(s) used in the calculation of the weights of the variance function represented by \code{object} is (are) replaced by \code{value}. If \code{object} has been initialized, \code{value} must have the same dimensions as \code{getCovariate(object)}. } \value{ a \code{varFunc} object similar to \code{object}, but with its \code{covariate} attribute replaced by \code{value}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getCovariate.varFunc}}} \examples{ vf1 <- varPower(1.1, form = ~age) covariate(vf1) <- Orthodont[["age"]] } \keyword{models} nlme/man/getCovariate.data.frame.Rd0000644000176000001440000000211412222512062016705 0ustar ripleyusers% File nlme/man/getCovariate.data.frame.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getCovariate.data.frame} \title{Extract Data Frame Covariate} \usage{ \method{getCovariate}{data.frame}(object, form, data) } \alias{getCovariate.data.frame} \arguments{ \item{object}{an object inheriting from class \code{data.frame}.} \item{form}{an optional formula specifying the covariate to be evaluated in \code{object}. Defaults to \code{formula(object)}.} \item{data}{some methods for this generic require a separate data frame. Not used in this method.} } \description{ The right hand side of \code{form}, stripped of any conditioning expression (i.e. an expression following a \code{|} operator), is evaluated in \code{object}. } \value{ the value of the right hand side of \code{form}, stripped of any conditional expression, evaluated in \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getCovariateFormula}}} \examples{ getCovariate(Orthodont) } \keyword{models} nlme/man/getCovariate.Rd0000644000176000001440000000246112222512062014711 0ustar ripleyusers% File nlme/man/getCovariate.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getCovariate} \title{Extract Covariate from an Object} \usage{ getCovariate(object, form, data) } \alias{getCovariate} \arguments{ \item{object}{any object with a \code{covariate} component} \item{form}{an optional one-sided formula specifying the covariate(s) to be extracted. Defaults to \code{formula(object)}.} \item{data}{a data frame in which to evaluate the variables defined in \code{form}. } } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include \code{corStruct}, \code{corSpatial}, \code{data.frame}, and \code{varFunc}. } \value{ will depend on the method function used; see the appropriate documentation. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. p. 100. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{getCovariate.corStruct}}, \code{\link{getCovariate.data.frame}}, \code{\link{getCovariate.varFunc}}, \code{\link{getCovariateFormula}} } \examples{ ## see the method function documentation } \keyword{models} nlme/man/pdBlocked.Rd0000644000176000001440000001004612222512062014161 0ustar ripleyusers% File nlme/man/pdBlocked.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdBlocked} \title{Positive-Definite Block Diagonal Matrix} \usage{ pdBlocked(value, form, nam, data, pdClass) } \alias{pdBlocked} \arguments{ \item{value}{an optional list with elements to be used as the \code{value} argument to other \code{pdMat} constructors. These include: \code{pdMat} objects, positive-definite matrices, one-sided linear formulas, vectors of character strings, or numeric vectors. All elements in the list must be similar (e.g. all one-sided formulas, or all numeric vectors). Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional list of one-sided linear formulas specifying the row/column names for the block-diagonal elements of the matrix represented by \code{object}. Because factors may be present in \code{form}, the formulas needs to be evaluated on a data.frame to resolve the names they define. This argument is ignored when \code{value} is a list of one-sided formulas. Defaults to \code{NULL}.} \item{nam}{an optional list of vector of character strings specifying the row/column names for the block-diagonal elements of the matrix represented by object. Each of its components must have length equal to the dimension of the corresponding block-diagonal element and unreplicated elements. This argument is ignored when \code{value} is a list of vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on any \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} \item{pdClass}{an optional vector of character strings naming the \code{pdMat} classes to be assigned to the individual blocks in the underlying matrix. If a single class is specified, it is used for all block-diagonal elements. This argument will only be used when \code{value} is missing, or its elements are not \code{pdMat} objects. Defaults to \code{"pdSymm"}.} } \description{ This function is a constructor for the \code{pdBlocked} class, representing a positive-definite block-diagonal matrix. Each block-diagonal element of the underlying matrix is itself a positive-definite matrix and is represented internally as an individual \code{pdMat} object. When \code{value} is \code{numeric(0)}, a list of uninitialized \code{pdMat} objects, a list of one-sided formulas, or a list of vectors of character strings, \code{object} is returned as an uninitialized \code{pdBlocked} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is a list of initialized \code{pdMat} objects, \code{object} will be constructed from the list obtained by applying \code{as.matrix} to each of the \code{pdMat} elements of \code{value}. Finally, if \code{value} is a list of numeric vectors, they are assumed to represent the unrestricted coefficients of the block-diagonal elements of the underlying positive-definite matrix. } \value{ a \code{pdBlocked} object representing a positive-definite block-diagonal matrix, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. p. 162. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{pdClasses}}, \code{\link{matrix<-.pdMat}} } \examples{ pd1 <- pdBlocked(list(diag(1:2), diag(c(0.1, 0.2, 0.3))), nam = list(c("A","B"), c("a1", "a2", "a3"))) pd1 } \keyword{models} nlme/man/coef.modelStruct.Rd0000644000176000001440000000354512222512062015520 0ustar ripleyusers% File nlme/man/coef.modelStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.modelStruct} \title{Extract modelStruct Object Coefficients} \usage{ \method{coef}{modelStruct}(object, unconstrained, \dots) \method{coef}{modelStruct}(object, \dots) <- value } \alias{coef.modelStruct} \alias{coef<-.modelStruct} \arguments{ \item{object}{an object inheriting from class \code{"modelStruct"}, representing a list of model components, such as \code{"\link{corStruct}"} and \code{"\link{varFunc}"} objects.} \item{unconstrained}{a logical value. If \code{TRUE} the coefficients are returned in unconstrained form (the same used in the optimization algorithm). If \code{FALSE} the coefficients are returned in "natural", possibly constrained, form. Defaults to \code{TRUE}.} \item{value}{a vector with the replacement values for the coefficients associated with \code{object}. It must be a vector with the same length of \code{coef{object}} and must be given in unconstrained form.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the coefficients associated with each component of the \code{modelStruct} list. } \value{ a vector with all coefficients corresponding to the components of \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \section{SIDE EFFECTS}{ On the left side of an assignment, sets the values of the coefficients of \code{object} to \code{value}. \code{Object} must be initialized (using \code{Initialize}) before new values can be assigned to its coefficients. } \seealso{\code{\link{Initialize}}} \examples{ lms1 <- lmeStruct(reStruct = reStruct(pdDiag(diag(2), ~age)), corStruct = corAR1(0.3)) coef(lms1) } \keyword{models} nlme/man/varClasses.Rd0000644000176000001440000000332312222512062014400 0ustar ripleyusers% File nlme/man/varClasses.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varClasses} \title{Variance Function Classes} \alias{varClasses} \description{ Standard classes of variance function structures (\code{varFunc}) available in the \code{nlme} package. Covariates included in the variance function, denoted by variance covariates, may involve functions of the fitted model object, such as the fitted values and the residuals. Different coefficients may be assigned to the levels of a classification factor. } \value{ Available standard classes: \item{varExp}{exponential of a variance covariate.} \item{varPower}{power of a variance covariate.} \item{varConstPower}{constant plus power of a variance covariate.} \item{varIdent}{constant variance(s), generally used to allow different variances according to the levels of a classification factor.} \item{varFixed}{fixed weights, determined by a variance covariate.} \item{varComb}{combination of variance functions.} } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ Users may define their own \code{varFunc} classes by specifying a \code{constructor} function and, at a minimum, methods for the functions \code{coef}, \code{coef<-}, and \code{initialize}. For examples of these functions, see the methods for class \code{varPower}. } \seealso{ \code{\link{varComb}}, \code{\link{varConstPower}}, \code{\link{varExp}}, \code{\link{varFixed}}, \code{\link{varIdent}}, \code{\link{varPower}}, \code{\link{summary.varFunc}} } \keyword{models} nlme/man/corAR1.Rd0000644000176000001440000000661512222512062013370 0ustar ripleyusers% File nlme/man/corAR1.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corAR1} \title{AR(1) Correlation Structure} \usage{ corAR1(value, form, fixed) } \alias{corAR1} \arguments{ \item{value}{the value of the lag 1 autocorrelation, which must be between -1 and 1. Defaults to 0 (no autocorrelation).} \item{form}{a one sided formula of the form \code{~ t}, or \code{~ t | g}, specifying a time covariate \code{t} and, optionally, a grouping factor \code{g}. A covariate for this correlation structure must be integer valued. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{corAR1} class, representing an autocorrelation structure of order 1. Objects created using this constructor must later be initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{corAR1}, representing an autocorrelation structure of order 1. } \references{ Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 235, 397. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{ACF.lme}}, \code{\link{corARMA}}, \code{\link{corClasses}}, \code{\link{Dim.corSpatial}}, \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}} } \examples{ ## covariate is observation order and grouping factor is Mare cs1 <- corAR1(0.2, form = ~ 1 | Mare) # Pinheiro and Bates, p. 236 cs1AR1 <- corAR1(0.8, form = ~ 1 | Subject) cs1AR1. <- Initialize(cs1AR1, data = Orthodont) corMatrix(cs1AR1.) # Pinheiro and Bates, p. 240 fm1Ovar.lme <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), data = Ovary, random = pdDiag(~sin(2*pi*Time))) fm2Ovar.lme <- update(fm1Ovar.lme, correlation = corAR1()) # Pinheiro and Bates, pp. 255-258: use in gls fm1Dial.gls <- gls(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB, Dialyzer) fm2Dial.gls <- update(fm1Dial.gls, weights = varPower(form = ~ pressure)) fm3Dial.gls <- update(fm2Dial.gls, corr = corAR1(0.771, form = ~ 1 | Subject)) # Pinheiro and Bates use in nlme: # from p. 240 needed on p. 396 fm1Ovar.lme <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), data = Ovary, random = pdDiag(~sin(2*pi*Time))) fm5Ovar.lme <- update(fm1Ovar.lme, corr = corARMA(p = 1, q = 1)) # p. 396 fm1Ovar.nlme <- nlme(follicles~ A+B*sin(2*pi*w*Time)+C*cos(2*pi*w*Time), data=Ovary, fixed=A+B+C+w~1, random=pdDiag(A+B+w~1), start=c(fixef(fm5Ovar.lme), 1) ) # p. 397 fm2Ovar.nlme <- update(fm1Ovar.nlme, corr=corAR1(0.311) ) } \keyword{models} nlme/man/Pixel.Rd0000644000176000001440000000226212222471724013365 0ustar ripleyusers% File nlme/man/Pixel.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Pixel} \alias{Pixel} \title{X-ray pixel intensities over time} \description{ The \code{Pixel} data frame has 102 rows and 4 columns of data on the pixel intensities of CT scans of dogs over time } \format{ This data frame contains the following columns: \describe{ \item{Dog}{ a factor with levels \code{1} to \code{10} designating the dog on which the scan was made } \item{Side}{ a factor with levels \code{L} and \code{R} designating the side of the dog being scanned } \item{day}{ a numeric vector giving the day post injection of the contrast on which the scan was made } \item{pixel}{ a numeric vector of pixel intensities } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000) \emph{Mixed-effects Models in S and S-PLUS}, Springer. } \examples{ fm1 <- lme(pixel ~ day + I(day^2), data = Pixel, random = list(Dog = ~ day, Side = ~ 1)) summary(fm1) VarCorr(fm1) } \keyword{datasets} nlme/man/anova.gls.Rd0000644000176000001440000001433712222512062014171 0ustar ripleyusers% File nlme/man/anova.gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{anova.gls} \title{Compare Likelihoods of Fitted Objects} \usage{ \method{anova}{gls}(object, \dots, test, type, adjustSigma, Terms, L, verbose) } \alias{anova.gls} \arguments{ \item{object}{a fitted model object inheriting from class \code{gls}, representing a generalized least squares fit.} \item{\dots}{other optional fitted model objects inheriting from classes \code{"gls"}, \code{"gnls"}, \code{"lm"}, \code{"lme"}, \code{"lmList"}, \code{"nlme"}, \code{"nlsList"}, or \code{"nls"}.} \item{test}{an optional logical value controlling whether likelihood ratio tests should be used to compare the fitted models represented by \code{object} and the objects in \code{\dots}. Defaults to \code{TRUE}.} \item{type}{an optional character string specifying the type of sum of squares to be used in F-tests for the terms in the model. If \code{"sequential"}, the sequential sum of squares obtained by including the terms in the order they appear in the model is used; else, if \code{"marginal"}, the marginal sum of squares obtained by deleting a term from the model at a time is used. This argument is only used when a single fitted object is passed to the function. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"sequential"}.} \item{adjustSigma}{an optional logical value. If \code{TRUE} and the estimation method used to obtain \code{object} was maximum likelihood, the residual standard error is multiplied by \eqn{\sqrt{n_{obs}/(n_{obs} - n_{par})}}{sqrt(nobs/(nobs - npar))}, converting it to a REML-like estimate. This argument is only used when a single fitted object is passed to the function. Default is \code{TRUE}.} \item{Terms}{an optional integer or character vector specifying which terms in the model should be jointly tested to be zero using a Wald F-test. If given as a character vector, its elements must correspond to term names; else, if given as an integer vector, its elements must correspond to the order in which terms are included in the model. This argument is only used when a single fitted object is passed to the function. Default is \code{NULL}.} \item{L}{an optional numeric vector or array specifying linear combinations of the coefficients in the model that should be tested to be zero. If given as an array, its rows define the linear combinations to be tested. If names are assigned to the vector elements (array columns), they must correspond to coefficients names and will be used to map the linear combination(s) to the coefficients; else, if no names are available, the vector elements (array columns) are assumed in the same order as the coefficients appear in the model. This argument is only used when a single fitted object is passed to the function. Default is \code{NULL}.} \item{verbose}{an optional logical value. If \code{TRUE}, the calling sequences for each fitted model object are printed with the rest of the output, being omitted if \code{verbose = FALSE}. Defaults to \code{FALSE}.} } \description{ When only one fitted model object is present, a data frame with the sums of squares, numerator degrees of freedom, F-values, and P-values for Wald tests for the terms in the model (when \code{Terms} and \code{L} are \code{NULL}), a combination of model terms (when \code{Terms} in not \code{NULL}), or linear combinations of the model coefficients (when \code{L} is not \code{NULL}). Otherwise, when multiple fitted objects are being compared, a data frame with the degrees of freedom, the (restricted) log-likelihood, the Akaike Information Criterion (AIC), and the Bayesian Information Criterion (BIC) of each object is returned. If \code{test=TRUE}, whenever two consecutive objects have different number of degrees of freedom, a likelihood ratio statistic, with the associated p-value is included in the returned data frame. } \value{ a data frame inheriting from class \code{"anova.lme"}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ Likelihood comparisons are not meaningful for objects fit using restricted maximum likelihood and with different fixed effects. } \seealso{\code{\link{gls}}, \code{\link{gnls}}, \code{\link{lme}}, \code{\link{logLik.gls}}, \code{\link{AIC}}, \code{\link{BIC}}, \code{\link{print.anova.lme}} } \examples{ # AR(1) errors within each Mare fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) anova(fm1) # variance changes with a power of the absolute fitted values? fm2 <- update(fm1, weights = varPower()) anova(fm1, fm2) # Pinheiro and Bates, p. 251-252 fm1Orth.gls <- gls(distance ~ Sex * I(age - 11), Orthodont, correlation = corSymm(form = ~ 1 | Subject), weights = varIdent(form = ~ 1 | age)) fm2Orth.gls <- update(fm1Orth.gls, corr = corCompSymm(form = ~ 1 | Subject)) anova(fm1Orth.gls, fm2Orth.gls) # Pinheiro and Bates, pp. 215-215, 255-260 #p. 215 fm1Dial.lme <- lme(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB, Dialyzer, ~ pressure + I(pressure^2)) # p. 216 fm2Dial.lme <- update(fm1Dial.lme, weights = varPower(form = ~ pressure)) # p. 255 fm1Dial.gls <- gls(rate ~ (pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB, Dialyzer) fm2Dial.gls <- update(fm1Dial.gls, weights = varPower(form = ~ pressure)) anova(fm1Dial.gls, fm2Dial.gls) fm3Dial.gls <- update(fm2Dial.gls, corr = corAR1(0.771, form = ~ 1 | Subject)) anova(fm2Dial.gls, fm3Dial.gls) # anova.gls to compare a gls and an lme fit anova(fm3Dial.gls, fm2Dial.lme, test = FALSE) # Pinheiro and Bates, pp. 261-266 fm1Wheat2 <- gls(yield ~ variety - 1, Wheat2) fm3Wheat2 <- update(fm1Wheat2, corr = corRatio(c(12.5, 0.2), form = ~ latitude + longitude, nugget = TRUE)) # Test a specific contrast anova(fm3Wheat2, L = c(-1, 0, 1)) } \keyword{models} nlme/man/augPred.Rd0000644000176000001440000000663312222512062013670 0ustar ripleyusers% File nlme/man/augPred.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{augPred} \title{Augmented Predictions} \usage{ augPred(object, primary, minimum, maximum, length.out, \dots) %% extra argument 'level': \S3method{augPred}{lme}(object, primary = NULL, minimum = min(primary), maximum = max(primary), length.out = 51, level = Q, \dots) } \alias{augPred} \alias{augPred.gls} \alias{augPred.lme} \alias{augPred.lmList} \arguments{ \item{object}{a fitted model object from which predictions can be extracted, using a \code{predict} method.} \item{primary}{an optional one-sided formula specifying the primary covariate to be used to generate the augmented predictions. By default, if a covariate can be extracted from the data used to generate \code{object} (using \code{getCovariate}), it will be used as \code{primary}.} \item{minimum}{an optional lower limit for the primary covariate. Defaults to \code{min(primary)}.} \item{maximum}{an optional upper limit for the primary covariate. Defaults to \code{max(primary)}.} \item{length.out}{an optional integer with the number of primary covariate values at which to evaluate the predictions. Defaults to 51.} \item{level}{an optional integer vector specifying the desired prediction levels. Levels increase from outermost to innermost grouping, with level 0 representing the population (fixed effects) predictions. Defaults to the innermost level.} \item{\dots}{some methods for the generic may require additional arguments.} } \description{ Predicted values are obtained at the specified values of \code{primary}. If \code{object} has a grouping structure (i.e. \code{getGroups(object)} is not \code{NULL}), predicted values are obtained for each group. If \code{level} has more than one element, predictions are obtained for each level of the \code{max(level)} grouping factor. If other covariates besides \code{primary} are used in the prediction model, their average (numeric covariates) or most frequent value (categorical covariates) are used to obtain the predicted values. The original observations are also included in the returned object. } \value{ a data frame with four columns representing, respectively, the values of the primary covariate, the groups (if \code{object} does not have a grouping structure, all elements will be \code{1}), the predicted or observed values, and the type of value in the third column: \code{original} for the observed values and \code{predicted} (single or no grouping factor) or \code{predict.groupVar} (multiple levels of grouping), with \code{groupVar} replaced by the actual grouping variable name (\code{fixed} is used for population predictions). The returned object inherits from class \code{"augPred"}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{gls}, \code{lme}, and \code{lmList}. } \seealso{\code{\link{plot.augPred}}, \code{\link{getGroups}}, \code{\link{predict}}} \examples{ fm1 <- lme(Orthodont, random = ~1) augPred(fm1, length.out = 2, level = c(0,1)) } \keyword{models} nlme/man/residuals.lme.Rd0000644000176000001440000000615012222512062015042 0ustar ripleyusers% File nlme/man/residuals.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{residuals.lme} \title{Extract lme Residuals} \usage{ \method{residuals}{lme}(object, level = Q, type = c("response", "pearson", "normalized"), asList = FALSE, \dots) } \alias{residuals.lme} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{level}{an optional integer vector giving the level(s) of grouping to be used in extracting the residuals from \code{object}. Level values increase from outermost to innermost grouping, with level zero corresponding to the population residuals. Defaults to the highest or innermost level of grouping.} \item{type}{an optional character string specifying the type of residuals to be used. If \code{"response"}, as by default, the \dQuote{raw} residuals (observed - fitted) are used; else, if \code{"pearson"}, the standardized residuals (raw residuals divided by the corresponding standard errors) are used; else, if \code{"normalized"}, the normalized residuals (standardized residuals pre-multiplied by the inverse square-root factor of the estimated error correlation matrix) are used. Partial matching of arguments is used, so only the first character needs to be provided.} \item{asList}{an optional logical value. If \code{TRUE} and a single value is given in \code{level}, the returned object is a list with the residuals split by groups; else the returned value is either a vector or a data frame, according to the length of \code{level}. Defaults to \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The residuals at level \eqn{i} are obtained by subtracting the fitted levels at that level from the response vector (and dividing by the estimated within-group standard error, if \code{type="pearson"}). The fitted values at level \eqn{i} are obtained by adding together the population fitted values (based only on the fixed effects estimates) and the estimated contributions of the random effects to the fitted values at grouping levels less or equal to \eqn{i}. } \value{ if a single level of grouping is specified in \code{level}, the returned value is either a list with the residuals split by groups (\code{asList = TRUE}) or a vector with the residuals (\code{asList = FALSE}); else, when multiple grouping levels are specified in \code{level}, the returned object is a data frame with columns given by the residuals at different levels and the grouping factors. For a vector or data frame result the \code{\link{naresid}} method is applied. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{fitted.lme}} } \examples{ fm1 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1) head(residuals(fm1, level = 0:1)) summary(residuals(fm1) / residuals(fm1, type = "p")) # constant scaling factor 1.432 } \keyword{models} nlme/man/Muscle.Rd0000644000176000001440000000221112222471724013526 0ustar ripleyusers% File nlme/man/Muscle.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Muscle} \alias{Muscle} \title{Contraction of heart muscle sections} \description{ The \code{Muscle} data frame has 60 rows and 3 columns. } \format{ This data frame contains the following columns: \describe{ \item{Strip}{ an ordered factor indicating the strip of muscle being measured. } \item{conc}{ a numeric vector giving the concentration of CaCl2 } \item{length}{ a numeric vector giving the shortening of the heart muscle strip. } } } \details{ Baumann and Waldvogel (1963) describe data on the shortening of heart muscle strips dipped in a \eqn{\mbox{CaCl}{}_2}{CaCl_2} solution. The muscle strips are taken from the left auricle of a rat's heart.} \source{ Baumann, F. and Waldvogel, F. (1963), La restitution pastsystolique de la contraction de l'oreillette gauche du rat. Effets de divers ions et de l'acetylcholine, \emph{Helvetica Physiologica Acta}, \bold{21}. } %\examples{} \keyword{datasets} nlme/man/pairs.lme.Rd0000644000176000001440000000726712222512062014177 0ustar ripleyusers% File nlme/man/pairs.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pairs.lme} \title{Pairs Plot of an lme Object} \usage{ \method{pairs}{lme}(x, form, label, id, idLabels, grid, \dots) } \alias{pairs.lme} \arguments{ \item{x}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{form}{an optional one-sided formula specifying the desired type of plot. Any variable present in the original data frame used to obtain \code{x} can be referenced. In addition, \code{x} itself can be referenced in the formula using the symbol \code{"."}. Conditional expressions on the right of a \code{|} operator can be used to define separate panels in a Trellis display. The expression on the right hand side of \code{form}, and to the left of the \code{|} operator, must evaluate to a data frame with at least two columns. Default is \code{~ coef(.) }, corresponding to a pairs plot of the coefficients evaluated at the innermost level of nesting.} \item{label}{an optional character vector of labels for the variables in the pairs plot.} \item{id}{an optional numeric value, or one-sided formula. If given as a value, it is used as a significance level for an outlier test based on the Mahalanobis distances of the estimated random effects. Groups with random effects distances greater than the \eqn{1-value} percentile of the appropriate chi-square distribution are identified in the plot using \code{idLabels}. If given as a one-sided formula, its right hand side must evaluate to a logical, integer, or character vector which is used to identify points in the plot. If missing, no points are identified.} \item{idLabels}{an optional vector, or one-sided formula. If given as a vector, it is converted to character and used to label the points identified according to \code{id}. If given as a one-sided formula, its right hand side must evaluate to a vector which is converted to character and used to label the identified points. Default is the innermost grouping factor. } \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default is \code{FALSE}.} \item{\dots}{optional arguments passed to the Trellis plot function.} } \description{ Diagnostic plots for the linear mixed-effects fit are obtained. The \code{form} argument gives considerable flexibility in the type of plot specification. A conditioning expression (on the right side of a \code{|} operator) always implies that different panels are used for each level of the conditioning factor, according to a Trellis display. The expression on the right hand side of the formula, before a \code{|} operator, must evaluate to a data frame with at least two columns. If the data frame has two columns, a scatter plot of the two variables is displayed (the Trellis function \code{xyplot} is used). Otherwise, if more than two columns are present, a scatter plot matrix with pairwise scatter plots of the columns in the data frame is displayed (the Trellis function \code{splom} is used). } \value{ a diagnostic Trellis plot. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{pairs.compareFits}}, \code{\link{pairs.lmList}}, \code{\link{xyplot}}, \code{\link{splom}} } \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) # scatter plot of coefficients by gender, identifying unusual subjects pairs(fm1, ~coef(., augFrame = TRUE) | Sex, id = 0.1, adj = -0.5) # scatter plot of estimated random effects \dontrun{ pairs(fm1, ~ranef(.)) } } \keyword{models} nlme/man/nlsList.Rd0000644000176000001440000000710212222512062013721 0ustar ripleyusers% File nlme/man/nlsList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{nlsList} \title{List of nls Objects with a Common Model} \usage{ nlsList(model, data, start, control, level, subset, na.action, pool) \method{update}{nlsList}(object, model., \dots, evaluate = TRUE) } \alias{nlsList} \alias{nlsList.formula} \alias{update.nlsList} \arguments{ \item{object}{an object inheriting from class \code{nlsList}, representing a list of fitted \code{nls} objects.} \item{model}{either a nonlinear model formula, with the response on the left of a \code{~} operator and an expression involving parameters, covariates, and a grouping factor separated by the \code{|} operator on the right, or a \code{selfStart} function. The method function \code{nlsList.selfStart} is documented separately. } \item{model.}{Changes to the model -- see \code{update.formula} for details.} \item{data}{ a data frame in which to interpret the variables named in \code{model}. } \item{start}{an optional named list with initial values for the parameters to be estimated in \code{model}. It is passed as the \code{start} argument to each \code{nls} call and is required when the nonlinear function in \code{model} does not inherit from class \code{selfStart}. } \item{control}{a list of control values passed as the \code{control} argument to \code{nls}. Defaults to an empty list. } \item{level}{an optional integer specifying the level of grouping to be used when multiple nested levels of grouping are present.} \item{subset}{an optional expression indicating the subset of the rows of \code{data} that should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{nlsList} to print an error message and terminate if there are any incomplete observations. } \item{pool}{ an optional logical value that is preserved as an attribute of the returned value. This will be used as the default for \code{pool} in calculations of standard deviations or standard errors for summaries. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} \item{evaluate}{If \code{TRUE} evaluate the new call else return the call.} } \description{ \code{Data} is partitioned according to the levels of the grouping factor defined in \code{model} and individual \code{nls} fits are obtained for each \code{data} partition, using the model defined in \code{model}. } \value{ a list of \code{nls} objects with as many components as the number of groups defined by the grouping factor. Generic functions such as \code{coef}, \code{fixed.effects}, \code{lme}, \code{pairs}, \code{plot}, \code{predict}, \code{random.effects}, \code{summary}, and \code{update} have methods that can be applied to an \code{nlsList} object. } \references{ Pinheiro, J.C., and Bates, D.M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer. } \seealso{ \code{\link{nls}}, \code{\link{nlme.nlsList}}, \code{\link{nlsList.selfStart}}, \code{\link{summary.nlsList}} } \examples{ fm1 <- nlsList(uptake ~ SSasympOff(conc, Asym, lrc, c0), data = CO2, start = c(Asym = 30, lrc = -4.5, c0 = 52)) summary(fm1) } \keyword{models} nlme/man/PBG.Rd0000644000176000001440000000341612222471724012716 0ustar ripleyusers% File nlme/man/PBG.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{PBG} \alias{PBG} \title{Effect of Phenylbiguanide on Blood Pressure} \description{ The \code{PBG} data frame has 60 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{deltaBP}{ a numeric vector } \item{dose}{ a numeric vector } \item{Run}{ an ordered factor with levels \code{T5} < \code{T4} < \code{T3} < \code{T2} < \code{T1} < \code{P5} < \code{P3} < \code{P2} < \code{P4} < \code{P1} } \item{Treatment}{ a factor with levels \code{MDL 72222} \code{Placebo} } \item{Rabbit}{ an ordered factor with levels \code{5} < \code{3} < \code{2} < \code{4} < \code{1} } } } \details{ Data on an experiment to examine the effect of a antagonist MDL 72222 on the change in blood pressure experienced with increasing dosage of phenylbiguanide are described in Ludbrook (1994) and analyzed in Venables and Ripley (2002, section 10.3). Each of five rabbits was exposed to increasing doses of phenylbiguanide after having either a placebo or the HD5-antagonist MDL 72222 administered. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.21) Venables, W. N. and Ripley, B. D. (2002) \emph{Modern Applied Statistics with S (4th ed)}, Springer, New York. Ludbrook, J. (1994), Repeated measurements and multiple comparisons in cardiovascular research, \emph{Cardiovascular Research}, \bold{28}, 303-311. } %\examples{} \keyword{datasets} nlme/man/nlme.nlsList.Rd0000644000176000001440000001616512222512062014664 0ustar ripleyusers% File nlme/man/nlme.nlsList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{nlme.nlsList} \title{NLME fit from nlsList Object} \usage{ \method{nlme}{nlsList}(model, data, fixed, random, groups, start, correlation, weights, subset, method, na.action, naPattern, control, verbose) } \alias{nlme.nlsList} \arguments{ \item{model}{an object inheriting from class \code{"\link{nlsList}"}, representing a list of \code{nls} fits with a common model.} \item{data}{this argument is included for consistency with the generic function. It is ignored in this method function.} \item{fixed}{this argument is included for consistency with the generic function. It is ignored in this method function.} \item{random}{an optional one-sided linear formula with no conditioning expression, or a \code{pdMat} object with a \code{formula} attribute. Multiple levels of grouping are not allowed with this method function. Defaults to a formula consisting of the right hand side of \code{formula(fixed)}.} \item{groups}{an optional one-sided formula of the form \code{~g1} (single level of nesting) or \code{~g1/.../gQ} (multiple levels of nesting), specifying the partitions of the data over which the random effects vary. \code{g1,...,gQ} must evaluate to factors in \code{data}. The order of nesting, when multiple levels are present, is taken from left to right (i.e. \code{g1} is the first level, \code{g2} the second, etc.).} \item{start}{an optional numeric vector, or list of initial estimates for the fixed effects and random effects. If declared as a numeric vector, it is converted internally to a list with a single component \code{fixed}, given by the vector. The \code{fixed} component is required, unless the model function inherits from class \code{selfStart}, in which case initial values will be derived from a call to \code{nlsList}. An optional \code{random} component is used to specify initial values for the random effects and should consist of a matrix, or a list of matrices with length equal to the number of grouping levels. Each matrix should have as many rows as the number of groups at the corresponding level and as many columns as the number of random effects in that level.} \item{correlation}{an optional \code{corStruct} object describing the within-group correlation structure. See the documentation of \code{corClasses} for a description of the available \code{corStruct} classes. Defaults to \code{NULL}, corresponding to no within-group correlations.} \item{weights}{an optional \code{varFunc} object or one-sided formula describing the within-group heteroscedasticity structure. If given as a formula, it is used as the argument to \code{varFixed}, corresponding to fixed variance weights. See the documentation on \code{varClasses} for a description of the available \code{varFunc} classes. Defaults to \code{NULL}, corresponding to homoscedastic within-group errors.} \item{subset}{an optional expression indicating the subset of the rows of \code{data} that should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{method}{a character string. If \code{"REML"} the model is fit by maximizing the restricted log-likelihood. If \code{"ML"} the log-likelihood is maximized. Defaults to \code{"ML"}.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{nlme} to print an error message and terminate if there are any incomplete observations.} \item{naPattern}{an expression or formula object, specifying which returned values are to be regarded as missing.} \item{control}{a list of control values for the estimation algorithm to replace the default values returned by the function \code{nlmeControl}. Defaults to an empty list.} \item{verbose}{an optional logical value. If \code{TRUE} information on the evolution of the iterative algorithm is printed. Default is \code{FALSE}.} } \description{ If the random effects names defined in \code{random} are a subset of the \code{lmList} object coefficient names, initial estimates for the covariance matrix of the random effects are obtained (overwriting any values given in \code{random}). \code{formula(fixed)} and the \code{data} argument in the calling sequence used to obtain \code{fixed} are passed as the \code{fixed} and \code{data} arguments to \code{nlme.formula}, together with any other additional arguments in the function call. See the documentation on \code{nlme.formula} for a description of that function. } \value{ an object of class \code{nlme} representing the linear mixed-effects model fit. Generic functions such as \code{print}, \code{plot} and \code{summary} have methods to show the results of the fit. See \code{nlmeObject} for the components of the fit. The functions \code{resid}, \code{coef}, \code{fitted}, \code{fixed.effects}, and \code{random.effects} can be used to extract some of its components. } \references{ The computational methods follow on the general framework of Lindstrom, M.J. and Bates, D.M. (1988). The model formulation is described in Laird, N.M. and Ware, J.H. (1982). The variance-covariance parametrizations are described in = d} the correlation is zero. Objects created using this constructor must later be initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{corLin}, also inheriting from class \code{corSpatial}, representing a linear spatial correlation structure. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. Littel, Milliken, Stroup, and Wolfinger (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}}, \code{\link{dist}} } \examples{ sp1 <- corLin(form = ~ x + y) # example lme(..., corLin ...) # Pinheiro and Bates, pp. 222-249 fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) # p. 223 fm2BW.lme <- update(fm1BW.lme, weights = varPower()) # p 246 fm3BW.lme <- update(fm2BW.lme, correlation = corExp(form = ~ Time)) # p. 249 fm7BW.lme <- update(fm3BW.lme, correlation = corLin(form = ~ Time)) } \keyword{models} nlme/man/fixed.effects.Rd0000644000176000001440000000173212222512062015011 0ustar ripleyusers% File nlme/man/fixed.effects.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{fixed.effects} \title{Extract Fixed Effects} \usage{ fixed.effects(object, \dots) fixef(object, \dots) } \alias{fixed.effects} \alias{fixef} \arguments{ \item{object}{any fitted model object from which fixed effects estimates can be extracted.} \item{\dots}{some methods for this generic function require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include \code{lmList} and \code{lme}. } \value{ will depend on the method function used; see the appropriate documentation. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \seealso{\code{\link{fixef.lmList}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/Dim.Rd0000644000176000001440000000215612222512062013006 0ustar ripleyusers% File nlme/man/Dim.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Dim} \title{Extract Dimensions from an Object} \usage{ Dim(object, \dots) } \alias{Dim} \alias{Dim.default} \arguments{ \item{object}{any object for which dimensions can be extracted.} \item{\dots}{some methods for this generic function require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{"\link{corSpatial}"}, \code{"\link{corStruct}"}, \code{"pdCompSymm"}, \code{"pdDiag"}, \code{"pdIdent"}, \code{"pdMat"}, and \code{"pdSymm"}. } \value{ will depend on the method function used; see the appropriate documentation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ If \code{dim} allowed more than one argument, there would be no need for this generic function. } \seealso{ \code{\link{Dim.pdMat}}, \code{\link{Dim.corStruct}} } \examples{ ## see the method function documentation } \keyword{models} nlme/man/formula.pdMat.Rd0000644000176000001440000000237712222512062015013 0ustar ripleyusers% File nlme/man/formula.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{formula.pdMat} \title{Extract pdMat Formula} \usage{ \method{formula}{pdMat}(x, asList, \dots) } \alias{formula.pdMat} \arguments{ \item{x}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive definite matrix.} \item{asList}{logical. Should the asList argument be applied to each of the components? Never used.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the formula associated with a \code{pdMat} object, in which the column and row names are specified. } \value{ if \code{x} has a \code{formula} attribute, its value is returned, else \code{NULL} is returned. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ Because factors may be present in \code{formula(x)}, the \code{pdMat} object needs to have access to a data frame where the variables named in the formula can be evaluated, before it can resolve its row and column names from the formula. } \seealso{\code{\link{pdMat}}} \examples{ pd1 <- pdSymm(~Sex*age) formula(pd1) } \keyword{models} nlme/man/pairs.compareFits.Rd0000644000176000001440000000361012222512062015662 0ustar ripleyusers% File nlme/man/pairs.compareFits.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pairs.compareFits} \title{Pairs Plot of compareFits Object} \usage{ \method{pairs}{compareFits}(x, subset, key, \dots) } \alias{pairs.compareFits} \arguments{ \item{x}{an object of class \code{compareFits}.} \item{subset}{an optional logical or integer vector specifying which rows of \code{x} should be used in the plots. If missing, all rows are used.} \item{key}{an optional logical value, or list. If \code{TRUE}, a legend is included at the top of the plot indicating which symbols (colors) correspond to which objects being compared. If \code{FALSE}, no legend is included. If given as a list, \code{key} is passed down as an argument to the \code{trellis} function generating the plots (\code{splom} or \code{xyplot}). Defaults to \code{TRUE}.} \item{\dots}{optional arguments passed down to the \code{trellis} function generating the plots.} } \description{ Scatter plots of the values being compared are generated for each pair of coefficients in \code{x}. Different symbols (colors) are used for each object being compared and values corresponding to the same group are joined by a line, to facilitate comparison of fits. If only two coefficients are present, the \code{trellis} function \code{xyplot} is used; otherwise the \code{trellis} function \code{splom} is used. } \value{ Pairwise scatter plots of the values being compared, with different symbols (colors) used for each object under comparison. } \author{José Pinheiro and Douglas Bates } \seealso{ \code{\link{compareFits}}, \code{\link{plot.compareFits}}, \code{\link{pairs.lme}}, \code{\link{pairs.lmList}}, \code{\link{xyplot}}, \code{\link{splom}} } \examples{ fm1 <- lmList(Orthodont) fm2 <- lme(Orthodont) pairs(compareFits(coef(fm1), coef(fm2))) } \keyword{models} nlme/man/Oxboys.Rd0000644000176000001440000000217512222471724013572 0ustar ripleyusers% File nlme/man/Oxboys.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Oxboys} \alias{Oxboys} \title{Heights of Boys in Oxford} \description{ The \code{Oxboys} data frame has 234 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Subject}{ an ordered factor giving a unique identifier for each boy in the experiment } \item{age}{ a numeric vector giving the standardized age (dimensionless) } \item{height}{ a numeric vector giving the height of the boy (cm) } \item{Occasion}{ an ordered factor - the result of converting \code{age} from a continuous variable to a count so these slightly unbalanced data can be analyzed as balanced. } } } \details{ These data are described in Goldstein (1987) as data on the height of a selection of boys from Oxford, England versus a standardized age. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.19) } %\examples{} \keyword{datasets} nlme/man/recalc.Rd0000644000176000001440000000273412222512062013530 0ustar ripleyusers% File nlme/man/recalc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{recalc} \title{Recalculate Condensed Linear Model Object} \usage{ recalc(object, conLin, \dots) } \alias{recalc} \arguments{ \item{object}{any object which induces a recalculation of the condensed linear model object \code{conLin}.} \item{conLin}{a condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying model.} \item{\dots}{some methods for this generic can take additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{corStruct}, \code{modelStruct}, \code{reStruct}, and \code{varFunc}. } \value{ the recalculated condensed linear model object. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{This function is only used inside model fitting functions, such as \code{lme} and \code{gls}, that require recalculation of a condensed linear model object.} \seealso{\code{\link{recalc.corStruct}}, \code{\link{recalc.modelStruct}}, \code{\link{recalc.reStruct}}, \code{\link{recalc.varFunc}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/logDet.Rd0000644000176000001440000000201012222512062013500 0ustar ripleyusers% File nlme/man/logDet.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logDet} \title{Extract the Logarithm of the Determinant} \usage{ logDet(object, \dots) } \alias{logDet} \arguments{ \item{object}{any object from which a matrix, or list of matrices, can be extracted} \item{\dots}{some methods for this generic function require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{corStruct}, several \code{pdMat} classes, and \code{reStruct}. } \value{ will depend on the method function used; see the appropriate documentation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{logLik}}, \code{\link{logDet.corStruct}}, \code{\link{logDet.pdMat}}, \code{\link{logDet.reStruct}} } \examples{ ## see the method function documentation } \keyword{models} nlme/man/isInitialized.Rd0000644000176000001440000000144212222512062015073 0ustar ripleyusers% File nlme/man/isInitialized.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{isInitialized} \title{Check if Object is Initialized} \usage{ isInitialized(object) } \alias{isInitialized} \alias{isInitialized.pdMat} \alias{isInitialized.pdBlocked} \arguments{ \item{object}{any object requiring initialization.} } \description{ Checks if \code{object} has been initialized (generally through a call to \code{Initialize}), by searching for components and attributes which are modified during initialization. } \value{ a logical value indicating whether \code{object} has been initialized. } \author{José Pinheiro and Douglas Bates } \seealso{\code{\link{Initialize}}} \examples{ pd1 <- pdDiag(~age) isInitialized(pd1) } \keyword{models} nlme/man/solve.pdMat.Rd0000644000176000001440000000230512222512062014465 0ustar ripleyusers% File nlme/man/solve.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{solve.pdMat} \title{Calculate Inverse of a Positive-Definite Matrix} \usage{ \method{solve}{pdMat}(a, b, \dots) } \alias{solve.pdMat} \alias{solve.pdBlocked} \alias{solve.pdDiag} \alias{solve.pdIdent} \alias{solve.pdLogChol} \alias{solve.pdNatural} \alias{solve.pdSymm} \arguments{ \item{a}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive definite matrix.} \item{b}{this argument is only included for consistency with the generic function and is not used in this method function.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The positive-definite matrix represented by \code{a} is inverted and assigned to \code{a}. } \value{ a \code{pdMat} object similar to \code{a}, but with coefficients corresponding to the inverse of the positive-definite matrix represented by \code{a}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{pdMat}}} \examples{ pd1 <- pdCompSymm(3 * diag(3) + 1) solve(pd1) } \keyword{models} nlme/man/getResponseFormula.Rd0000644000176000001440000000132712222471724016131 0ustar ripleyusers% File nlme/man/getResponseFormula.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getResponseFormula} \title{Extract Formula Specifying Response Variable} \usage{ getResponseFormula(object) } \alias{getResponseFormula} \arguments{ \item{object}{any object from which a formula can be extracted.} } \description{ The left hand side of \code{formula{object}} is returned as a one-sided formula. } \value{ a one-sided formula with the response variable associated with \code{formula{object}}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getResponse}}} \examples{ getResponseFormula(y ~ x | g) } \keyword{models} nlme/man/Oxide.Rd0000644000176000001440000000311512222471724013352 0ustar ripleyusers% File nlme/man/Oxide.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Oxide} \alias{Oxide} \title{Variability in Semiconductor Manufacturing} \description{ The \code{Oxide} data frame has 72 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{Source}{ a factor with levels \code{1} and \code{2} } \item{Lot}{ a factor giving a unique identifier for each lot. } \item{Wafer}{ a factor giving a unique identifier for each wafer within a lot. } \item{Site}{ a factor with levels \code{1}, \code{2}, and \code{3} } \item{Thickness}{ a numeric vector giving the thickness of the oxide layer. } } } \details{ These data are described in Littell et al. (1996, p. 155) as coming ``from a passive data collection study in the semiconductor industry where the objective is to estimate the variance components to determine the assignable causes of the observed variability.'' The observed response is the thickness of the oxide layer on silicon wafers, measured at three different sites of each of three wafers selected from each of eight lots sampled from the population of lots. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.20) Littell, R. C., Milliken, G. A., Stroup, W. W. and Wolfinger, R. D. (1996), \emph{SAS System for Mixed Models}, SAS Institute, Cary, NC. } %\examples{} \keyword{datasets} nlme/man/pdClasses.Rd0000644000176000001440000000353712222512062014222 0ustar ripleyusers% File nlme/man/pdClasses.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdClasses} \title{Positive-Definite Matrix Classes} \alias{pdClasses} \description{ Standard classes of positive-definite matrices (\code{pdMat}) structures available in the \code{nlme} package. } \value{ Available standard classes: \item{pdSymm}{general positive-definite matrix, with no additional structure} \item{pdLogChol}{general positive-definite matrix, with no additional structure, using a log-Cholesky parameterization} \item{pdDiag}{diagonal} \item{pdIdent}{multiple of an identity} \item{pdCompSymm}{compound symmetry structure (constant diagonal and constant off-diagonal elements)} \item{pdBlocked}{block-diagonal matrix, with diagonal blocks of any "atomic" \code{pdMat} class} \item{pdNatural}{general positive-definite matrix in natural parametrization (i.e. parametrized in terms of standard deviations and correlations). The underlying coefficients are not unrestricted, so this class should NOT be used for optimization.} } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ Users may define their own \code{pdMat} classes by specifying a \code{constructor} function and, at a minimum, methods for the functions \code{pdConstruct}, \code{pdMatrix} and \code{coef}. For examples of these functions, see the methods for classes \code{pdSymm} and \code{pdDiag}. } \seealso{\code{\link{pdBlocked}}, \code{\link{pdCompSymm}}, \code{\link{pdDiag}}, \code{\link{pdFactor}}, \code{\link{pdIdent}}, \code{\link{pdMat}}, \code{\link{pdMatrix}}, \code{\link{pdNatural}}, \code{\link{pdSymm}}, \code{\link{pdLogChol}} } \keyword{models} nlme/man/gsummary.Rd0000644000176000001440000001017312222512062014137 0ustar ripleyusers% File nlme/man/gsummary.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{gsummary} \title{Summarize by Groups} \usage{ gsummary(object, FUN, omitGroupingFactor, form, level, groups, invariantsOnly, \dots) } \alias{gsummary} \arguments{ \item{object}{an object to be summarized - usually a \code{groupedData} object or a \code{data.frame}. } \item{FUN}{an optional summary function or a list of summary functions to be applied to each variable in the frame. The function or functions are applied only to variables in \code{object} that vary within the groups defined by \code{groups}. Invariant variables are always summarized by group using the unique value that they assume within that group. If \code{FUN} is a single function it will be applied to each non-invariant variable by group to produce the summary for that variable. If \code{FUN} is a list of functions, the names in the list should designate classes of variables in the frame such as \code{ordered}, \code{factor}, or \code{numeric}. The indicated function will be applied to any non-invariant variables of that class. The default functions to be used are \code{mean} for numeric factors, and \code{Mode} for both \code{factor} and \code{ordered}. The \code{Mode} function, defined internally in \code{gsummary}, returns the modal or most popular value of the variable. It is different from the \code{mode} function that returns the S-language mode of the variable. } \item{omitGroupingFactor}{an optional logical value. When \code{TRUE} the grouping factor itself will be omitted from the group-wise summary but the levels of the grouping factor will continue to be used as the row names for the data frame that is produced by the summary. Defaults to \code{FALSE}. } \item{form}{an optional one-sided formula that defines the groups. When this formula is given, the right-hand side is evaluated in \code{object}, converted to a factor if necessary, and the unique levels are used to define the groups. Defaults to \code{formula(object)}. } \item{level}{an optional positive integer giving the level of grouping to be used in an object with multiple nested grouping levels. Defaults to the highest or innermost level of grouping.} \item{groups}{an optional factor that will be used to split the rows into groups. Defaults to \code{getGroups(object, form, level)}. } \item{invariantsOnly}{an optional logical value. When \code{TRUE} only those covariates that are invariant within each group will be summarized. The summary value for the group is always the unique value taken on by that covariate within the group. The columns in the summary are of the same class as the corresponding columns in \code{object}. By definition, the grouping factor itself must be an invariant. When combined with \code{omitGroupingFactor = TRUE}, this option can be used to discover is there are invariant covariates in the data frame. Defaults to \code{FALSE}. } \item{\dots}{optional additional arguments to the summary functions that are invoked on the variables by group. Often it is helpful to specify \code{na.rm = TRUE}. } } \description{ Provide a summary of the variables in a data frame by groups of rows. This is most useful with a \code{groupedData} object to examine the variables by group. } \value{ A \code{data.frame} with one row for each level of the grouping factor. The number of columns is at most the number of columns in \code{object}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{summary}}, \code{\link{groupedData}}, \code{\link{getGroups}}} \examples{ gsummary(Orthodont) # default summary by Subject ## gsummary with invariantsOnly = TRUE and omitGroupingFactor = TRUE ## determines whether there are covariates like Sex that are invariant ## within the repeated observations on the same Subject. gsummary(Orthodont, inv = TRUE, omit = TRUE) } \keyword{manip} nlme/man/pairs.lmList.Rd0000644000176000001440000000731712222512062014662 0ustar ripleyusers% File nlme/man/pairs.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pairs.lmList} \title{Pairs Plot of an lmList Object} \usage{ \method{pairs}{lmList}(x, form, label, id, idLabels, grid, \dots) } \alias{pairs.lmList} \arguments{ \item{x}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} objects with a common model. } \item{form}{an optional one-sided formula specifying the desired type of plot. Any variable present in the original data frame used to obtain \code{x} can be referenced. In addition, \code{x} itself can be referenced in the formula using the symbol \code{"."}. Conditional expressions on the right of a \code{|} operator can be used to define separate panels in a Trellis display. The expression on the right hand side of \code{form}, and to the left of the \code{|} operator, must evaluate to a data frame with at least two columns. Default is \code{~ coef(.) }, corresponding to a pairs plot of the coefficients of \code{x}. } \item{label}{an optional character vector of labels for the variables in the pairs plot.} \item{id}{an optional numeric value, or one-sided formula. If given as a value, it is used as a significance level for an outlier test based on the Mahalanobis distances of the estimated random effects. Groups with random effects distances greater than the \eqn{1-value} percentile of the appropriate chi-square distribution are identified in the plot using \code{idLabels}. If given as a one-sided formula, its right hand side must evaluate to a logical, integer, or character vector which is used to identify points in the plot. If missing, no points are identified. } \item{idLabels}{an optional vector, or one-sided formula. If given as a vector, it is converted to character and used to label the points identified according to \code{id}. If given as a one-sided formula, its right hand side must evaluate to a vector which is converted to character and used to label the identified points. Default is the innermost grouping factor. } \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default is \code{FALSE}.} \item{\dots}{optional arguments passed to the Trellis plot function. } } \description{ Diagnostic plots for the linear model fits corresponding to the \code{x} components are obtained. The \code{form} argument gives considerable flexibility in the type of plot specification. A conditioning expression (on the right side of a \code{|} operator) always implies that different panels are used for each level of the conditioning factor, according to a Trellis display. The expression on the right hand side of the formula, before a \code{|} operator, must evaluate to a data frame with at least two columns. If the data frame has two columns, a scatter plot of the two variables is displayed (the Trellis function \code{xyplot} is used). Otherwise, if more than two columns are present, a scatter plot matrix with pairwise scatter plots of the columns in the data frame is displayed (the Trellis function \code{splom} is used). } \value{ a diagnostic Trellis plot. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{pairs.lme}}, \code{\link{pairs.compareFits}}, \code{\link{xyplot}}, \code{\link{splom}}} \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) # scatter plot of coefficients by gender, identifying unusual subjects pairs(fm1, ~coef(.) | Sex, id = 0.1, adj = -0.5) # scatter plot of estimated random effects \dontrun{ pairs(fm1, ~ranef(.)) } } \keyword{models} nlme/man/Extract.pdMat.Rd0000644000176000001440000000312612222512062014751 0ustar ripleyusers% File nlme/man/Extract.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{[.pdMat} \title{Subscript a pdMat Object} \usage{ \method{[}{pdMat}(x, i, j, drop = TRUE) \method{[}{pdMat}(x, i, j) <- value } \alias{[.pdMat} \alias{[.pdBlocked} \alias{[<-.pdMat} \arguments{ \item{x}{an object inheriting from class \code{"\link{pdMat}"} representing a positive-definite matrix.} \item{i, j}{optional subscripts applying respectively to the rows and columns of the positive-definite matrix represented by \code{object}. When \code{i} (\code{j}) is omitted, all rows (columns) are extracted.} \item{drop}{a logical value. If \code{TRUE}, single rows or columns are converted to vectors. If \code{FALSE} the returned value retains its matrix representation.} \item{value}{a vector, or matrix, with the replacement values for the relevant piece of the matrix represented by \code{x}.} } \description{ This method function extracts sub-matrices from the positive-definite matrix represented by \code{x}. } \value{ if \code{i} and \code{j} are identical, the returned value will be \code{pdMat} object with the same class as \code{x}. Otherwise, the returned value will be a matrix. In the case a single row (or column) is selected, the returned value may be converted to a vector, according to the rules above. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{[}}, \code{\link{pdMat}}} \examples{ pd1 <- pdSymm(diag(3)) pd1[1, , drop = FALSE] pd1[1:2, 1:2] <- 3 * diag(2) } \keyword{models} nlme/man/intervals.Rd0000644000176000001440000000242012222512062014276 0ustar ripleyusers% File nlme/man/intervals.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{intervals} \title{Confidence Intervals on Coefficients} \usage{ intervals(object, level, \dots) } \alias{intervals} \arguments{ \item{object}{a fitted model object from which parameter estimates can be extracted.} \item{level}{an optional numeric value for the interval confidence level. Defaults to 0.95.} \item{\dots}{some methods for the generic may require additional arguments.} } \description{ Confidence intervals on the parameters associated with the model represented by \code{object} are obtained. This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{gls}, \code{lme}, and \code{lmList}. } \value{ will depend on the method function used; see the appropriate documentation. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{intervals.lme}}, \code{\link{intervals.lmList}}, \code{\link{intervals.gls}} } \examples{ ## see the method documentation } \keyword{models} nlme/man/corGaus.Rd0000644000176000001440000001014512222512062013675 0ustar ripleyusers% File nlme/man/corGaus.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corGaus} \title{Gaussian Correlation Structure} \usage{ corGaus(value, form, nugget, metric, fixed) } \alias{corGaus} \arguments{ \item{value}{an optional vector with the parameter values in constrained form. If \code{nugget} is \code{FALSE}, \code{value} can have only one element, corresponding to the "range" of the Gaussian correlation structure, which must be greater than zero. If \code{nugget} is \code{TRUE}, meaning that a nugget effect is present, \code{value} can contain one or two elements, the first being the "range" and the second the "nugget effect" (one minus the correlation between two observations taken arbitrarily close together); the first must be greater than zero and the second must be between zero and one. Defaults to \code{numeric(0)}, which results in a range of 90\% of the minimum distance and a nugget effect of 0.1 being assigned to the parameters when \code{object} is initialized.} \item{form}{a one sided formula of the form \code{~ S1+...+Sp}, or \code{~ S1+...+Sp | g}, specifying spatial covariates \code{S1} through \code{Sp} and, optionally, a grouping factor \code{g}. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{nugget}{an optional logical value indicating whether a nugget effect is present. Defaults to \code{FALSE}.} \item{metric}{an optional character string specifying the distance metric to be used. The currently available options are \code{"euclidean"} for the root sum-of-squares of distances; \code{"maximum"} for the maximum difference; and \code{"manhattan"} for the sum of the absolute differences. Partial matching of arguments is used, so only the first three characters need to be provided. Defaults to \code{"euclidean"}.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{corGaus} class, representing a Gaussian spatial correlation structure. Letting \eqn{d} denote the range and \eqn{n} denote the nugget effect, the correlation between two observations a distance \eqn{r} apart is \eqn{\exp(-(r/d)^2)}{exp(-(r/d)^2)} when no nugget effect is present and \eqn{(1-n) \exp(-(r/d)^2)}{(1-n)*exp(-(r/d)^2)} when a nugget effect is assumed. Objects created using this constructor must later be initialized using the appropriate ` \code{Initialize} method. } \value{ an object of class \code{corGaus}, also inheriting from class \code{corSpatial}, representing a Gaussian spatial correlation structure. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. Littel, Milliken, Stroup, and Wolfinger (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{Initialize.corStruct}}, \code{\link{summary.corStruct}}, \code{\link{dist}} } \examples{ sp1 <- corGaus(form = ~ x + y + z) # example lme(..., corGaus ...) # Pinheiro and Bates, pp. 222-249 fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) # p. 223 fm2BW.lme <- update(fm1BW.lme, weights = varPower()) # p 246 fm3BW.lme <- update(fm2BW.lme, correlation = corExp(form = ~ Time)) # p. 249 fm8BW.lme <- update(fm3BW.lme, correlation = corGaus(form = ~ Time)) } \keyword{models} nlme/man/Rail.Rd0000644000176000001440000000234612222471724013176 0ustar ripleyusers% File nlme/man/Rail.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Rail} \alias{Rail} \title{Evaluation of Stress in Railway Rails} \description{ The \code{Rail} data frame has 18 rows and 2 columns. } \format{ This data frame contains the following columns: \describe{ \item{Rail}{ an ordered factor identifying the rail on which the measurement was made. } \item{travel}{ a numeric vector giving the travel time for ultrasonic head-waves in the rail (nanoseconds). The value given is the original travel time minus 36,100 nanoseconds. } } } \details{ Devore (2000, Example 10.10, p. 427) cites data from an article in \emph{Materials Evaluation} on ``a study of travel time for a certain type of wave that results from longitudinal stress of rails used for railroad track.'' } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.26) Devore, J. L. (2000), \emph{Probability and Statistics for Engineering and the Sciences (5th ed)}, Duxbury, Boston, MA. } %\examples{} \keyword{datasets} nlme/man/Initialize.varFunc.Rd0000644000176000001440000000317712222512062016005 0ustar ripleyusers% File nlme/man/Initialize.varFunc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Initialize.varFunc} \title{Initialize varFunc Object} \usage{ \method{Initialize}{varFunc}(object, data, \dots) } \alias{Initialize.varFunc} \alias{Initialize.varComb} \alias{Initialize.varConstPower} \alias{Initialize.varExp} \alias{Initialize.varFixed} \alias{Initialize.varIdent} \alias{Initialize.varPower} \arguments{ \item{object}{an object inheriting from class \code{"\link{varFunc}"}, representing a variance function structure.} \item{data}{a data frame in which to evaluate the variables named in \code{formula(object)}. } \item{\dots}{this argument is included to make this method compatible with the generic.} } \description{ This method initializes \code{object} by evaluating its associated covariate(s) and grouping factor, if any is present, in \code{data}; determining if the covariate(s) need to be updated when the values of the coefficients associated with \code{object} change; initializing the log-likelihood and the weights associated with \code{object}; and assigning initial values for the coefficients in \code{object}, if none were present. The covariate(s) will only be initialized if no update is needed when \code{coef(object)} changes. } \value{ an initialized object with the same class as \code{object} representing a variance function structure. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{Initialize}} } \examples{ vf1 <- varPower( form = ~ age | Sex ) vf1 <- Initialize( vf1, Orthodont ) } \keyword{models} nlme/man/corFactor.corStruct.Rd0000644000176000001440000000441712222512062016210 0ustar ripleyusers% File nlme/man/corFactor.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corFactor.corStruct} \title{Factor of a corStruct Object Matrix} \usage{ \method{corFactor}{corStruct}(object, \dots) } \alias{corFactor.compSymm} \alias{corFactor.corAR1} \alias{corFactor.corARMA} \alias{corFactor.corCAR1} \alias{corFactor.corNatural} \alias{corFactor.corSpatial} \alias{corFactor.corStruct} \alias{corFactor.corSymm} \arguments{ \item{object}{an object inheriting from class \code{"\link{corStruct}"} representing a correlation structure, which must have been initialized (using \code{Initialize}).} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts a transpose inverse square-root factor, or a series of transpose inverse square-root factors, of the correlation matrix, or list of correlation matrices, represented by \code{object}. Letting \eqn{\Sigma}{S} denote a correlation matrix, a square-root factor of \eqn{\Sigma}{S} is any square matrix \eqn{L}{L} such that \eqn{\Sigma = L'L}{S = L'L}. This method extracts \eqn{L^{-t}}{L^(-t)}. } \value{ If the correlation structure does not include a grouping factor, the returned value will be a vector with a transpose inverse square-root factor of the correlation matrix associated with \code{object} stacked column-wise. If the correlation structure includes a grouping factor, the returned value will be a vector with transpose inverse square-root factors of the correlation matrices for each group, stacked by group and stacked column-wise within each group. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu} } \note{ This method function is used intensively in optimization algorithms and its value is returned as a vector for efficiency reasons. The \code{corMatrix} method function can be used to obtain transpose inverse square-root factors in matrix form. } \seealso{ \code{\link{corFactor}}, \code{\link{corMatrix.corStruct}}, \code{\link{recalc.corStruct}}, \code{\link{Initialize.corStruct}} } \examples{ cs1 <- corAR1(form = ~1 | Subject) cs1 <- Initialize(cs1, data = Orthodont) corFactor(cs1) } \keyword{models} nlme/man/Initialize.lmeStruct.Rd0000644000176000001440000000433112222512062016354 0ustar ripleyusers% File nlme/man/Initialize.lmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Initialize.lmeStruct} \title{Initialize an lmeStruct Object} \usage{ \method{Initialize}{lmeStruct}(object, data, groups, conLin, control, \dots) } \alias{Initialize.lmeStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmeStruct}"}, representing a list of linear mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects.} \item{data}{a data frame in which to evaluate the variables defined in \code{formula(object)}.} \item{groups}{a data frame with the grouping factors corresponding to the lme model associated with \code{object} as columns, sorted from innermost to outermost grouping level.} \item{conLin}{an optional condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying lme model. Defaults to \code{attr(object, "conLin")}.} \item{control}{an optional list with control parameters for the initialization and optimization algorithms used in \code{lme}. Defaults to \code{list(niterEM=20, gradHess=TRUE)}, implying that 20 EM iterations are to be used in the derivation of initial estimates for the coefficients of the \code{reStruct} component of \code{object} and, if possible, numerical gradient vectors and Hessian matrices for the log-likelihood function are to be used in the optimization algorithm.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The individual linear mixed-effects model components of the \code{lmeStruct} list are initialized. } \value{ an \code{lmeStruct} object similar to \code{object}, but with initialized model components. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{Initialize.reStruct}}, \code{\link{Initialize.corStruct}}, \code{\link{Initialize.varFunc}}, \code{\link{Initialize}} } \keyword{models} nlme/man/Soybean.Rd0000644000176000001440000000265012222471724013705 0ustar ripleyusers% File nlme/man/Soybean.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Soybean} \alias{Soybean} \title{Growth of soybean plants} \description{ The \code{Soybean} data frame has 412 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{Plot}{ a factor giving a unique identifier for each plot. } \item{Variety}{ a factor indicating the variety; Forrest (F) or Plant Introduction \#416937 (P). } \item{Year}{ a factor indicating the year the plot was planted. } \item{Time}{ a numeric vector giving the time the sample was taken (days after planting). } \item{weight}{ a numeric vector giving the average leaf weight per plant (g). } } } \details{ These data are described in Davidian and Giltinan (1995, 1.1.3, p.7) as ``Data from an experiment to compare growth patterns of two genotypes of soybeans: Plant Introduction \#416937 (P), an experimental strain, and Forrest (F), a commercial variety.'' } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.27) Davidian, M. and Giltinan, D. M. (1995), \emph{Nonlinear Models for Repeated Measurement Data}, Chapman and Hall, London. } \examples{ summary(fm1 <- nlsList(SSlogis, data = Soybean)) } \keyword{datasets} nlme/man/pdLogChol.Rd0000644000176000001440000000664412222512062014156 0ustar ripleyusers% File nlme/man/pdLogChol.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdLogChol} \title{General Positive-Definite Matrix} \usage{ pdLogChol(value, form, nam, data) } \alias{pdLogChol} \arguments{ \item{value}{an optional initialization value, which can be any of the following: a \code{pdMat} object, a positive-definite matrix, a one-sided linear formula (with variables separated by \code{+}), a vector of character strings, or a numeric vector. Defaults to \code{numeric(0)}, corresponding to an uninitialized object.} \item{form}{an optional one-sided linear formula specifying the row/column names for the matrix represented by \code{object}. Because factors may be present in \code{form}, the formula needs to be evaluated on a data.frame to resolve the names it defines. This argument is ignored when \code{value} is a one-sided formula. Defaults to \code{NULL}.} \item{nam}{an optional vector of character strings specifying the row/column names for the matrix represented by object. It must have length equal to the dimension of the underlying positive-definite matrix and unreplicated elements. This argument is ignored when \code{value} is a vector of character strings. Defaults to \code{NULL}.} \item{data}{an optional data frame in which to evaluate the variables named in \code{value} and \code{form}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying matrix. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} } \description{ This function is a constructor for the \code{pdLogChol} class, representing a general positive-definite matrix. If the matrix associated with \code{object} is of dimension \eqn{n}, it is represented by \eqn{n(n+1)/2}{n*(n+1)/2} unrestricted parameters, using the log-Cholesky parametrization described in Pinheiro and Bates (1996). When \code{value} is \code{numeric(0)}, an uninitialized \code{pdMat} object, a one-sided formula, or a vector of character strings, \code{object} is returned as an uninitialized \code{pdLogChol} object (with just some of its attributes and its class defined) and needs to have its coefficients assigned later, generally using the \code{coef} or \code{matrix} replacement functions. If \code{value} is an initialized \code{pdMat} object, \code{object} will be constructed from \code{as.matrix(value)}. Finally, if \code{value} is a numeric vector, it is assumed to represent the unrestricted coefficients of the matrix-logarithm parametrization of the underlying positive-definite matrix. } \value{ a \code{pdLogChol} object representing a general positive-definite matrix, also inheriting from class \code{pdMat}. } \references{ Pinheiro, J.C. and Bates., D.M. (1996) "Unconstrained Parametrizations for Variance-Covariance Matrices", Statistics and Computing, 6, 289-296. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{coef.pdMat}}, \code{\link{pdClasses}}, \code{\link{matrix<-.pdMat}}} \examples{ pd1 <- pdLogChol(diag(1:3), nam = c("A","B","C")) pd1 } \keyword{models} nlme/man/isBalanced.Rd0000644000176000001440000000436112222512062014322 0ustar ripleyusers% File nlme/man/isBalanced.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{isBalanced} \alias{isBalanced} \alias{isBalanced.groupedData} %- Also NEED an `\alias' for EACH other topic documented here. \title{Check a Design for Balance} \usage{ isBalanced(object, countOnly, level) } \arguments{ \item{object}{A \code{groupedData} object containing a data frame and a formula that describes the roles of variables in the data frame. The object will have one or more nested grouping factors and a primary covariate.} \item{countOnly}{A logical value indicating if the check for balance should only consider the number of observations at each level of the grouping factor(s). Defaults to \code{FALSE}.} \item{level}{an optional integer vector specifying the desired prediction levels. Levels increase from outermost to innermost grouping, with level 0 representing the population (fixed effects) predictions. Defaults to the innermost level.} } \description{ Check the design of the experiment or study for balance. } \details{ A design is balanced with respect to the grouping factor(s) if there are the same number of observations at each distinct value of the grouping factor or each combination of distinct levels of the nested grouping factors. If \code{countOnly} is \code{FALSE} the design is also checked for balance with respect to the primary covariate, which is often the time of the observation. A design is balanced with respect to the grouping factor and the covariate if the number of observations at each distinct level (or combination of levels for nested factors) is constant and the times at which the observations are taken (in general, the values of the primary covariates) also are constant. } \value{ \code{TRUE} or \code{FALSE} according to whether the data are balanced or not } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{table}}, \code{\link{groupedData}}} \examples{ isBalanced(Orthodont) # should return TRUE isBalanced(Orthodont, countOnly = TRUE) # should return TRUE isBalanced(Pixel) # should return FALSE isBalanced(Pixel, level = 1) # should return FALSE } \keyword{data} nlme/man/update.varFunc.Rd0000644000176000001440000000326012222512062015157 0ustar ripleyusers% File nlme/man/update.varFunc.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{update.varFunc} \title{Update varFunc Object} \usage{ \method{update}{varFunc}(object, data, \dots) } \alias{update.varExp} \alias{update.varFunc} \alias{update.varComb} \alias{update.varConstPower} \alias{update.varExpon} \alias{update.varPower} \arguments{ \item{object}{an object inheriting from class \code{"\link{varFunc}"}, representing a variance function structure.} \item{data}{a list with a component named \code{"."} with the current version of the fitted object (from which fitted values, coefficients, and residuals can be extracted) and, if necessary, other variables used to evaluate the variance covariate(s).} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ If the \code{formula(object)} includes a \code{"."} term, representing a fitted object, the variance covariate needs to be updated upon completion of an optimization cycle (in which the variance function weights are kept fixed). This method function allows a reevaluation of the variance covariate using the current fitted object and, optionally, other variables in the original data. } \value{ if \code{formula(object)} includes a \code{"."} term, an \code{varFunc} object similar to \code{object}, but with the variance covariate reevaluated at the current fitted object value; else \code{object} is returned unchanged. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{needUpdate}}, \code{\link{covariate<-.varFunc}} } \keyword{models} nlme/man/reStruct.Rd0000644000176000001440000000767012222512062014116 0ustar ripleyusers% File nlme/man/reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{reStruct} \title{Random Effects Structure} \usage{ reStruct(object, pdClass, REML, data) \method{print}{reStruct}(x, sigma, reEstimates, verbose, \dots) } \alias{reStruct} \alias{[.reStruct} \alias{print.reStruct} \arguments{ \item{object}{any of the following: (i) a one-sided formula of the form \code{~x1+...+xn | g1/.../gm}, with \code{x1+...+xn} specifying the model for the random effects and \code{g1/.../gm} the grouping structure (\code{m} may be equal to 1, in which case no \code{/} is required). The random effects formula will be repeated for all levels of grouping, in the case of multiple levels of grouping; (ii) a list of one-sided formulas of the form \code{~x1+...+xn | g}, with possibly different random effects models for each grouping level. The order of nesting will be assumed the same as the order of the elements in the list; (iii) a one-sided formula of the form \code{~x1+...+xn}, or a \code{pdMat} object with a formula (i.e. a non-\code{NULL} value for \code{formula(object)}), or a list of such formulas or \code{pdMat} objects. In this case, the grouping structure formula will be derived from the data used to to fit the mixed-effects model, which should inherit from class \code{groupedData}; (iv) a named list of formulas or \code{pdMat} objects as in (iii), with the grouping factors as names. The order of nesting will be assumed the same as the order of the order of the elements in the list; (v) an \code{reStruct} object.} \item{pdClass}{an optional character string with the name of the \code{pdMat} class to be used for the formulas in \code{object}. Defaults to \code{"pdSymm"} which corresponds to a general positive-definite matrix.} \item{REML}{an optional logical value. If \code{TRUE}, the associated mixed-effects model will be fitted using restricted maximum likelihood; else, if \code{FALSE}, maximum likelihood will be used. Defaults to \code{FALSE}.} \item{data}{an optional data frame in which to evaluate the variables used in the random effects formulas in \code{object}. It is used to obtain the levels for \code{factors}, which affect the dimensions and the row/column names of the underlying \code{pdMat} objects. If \code{NULL}, no attempt is made to obtain information on \code{factors} appearing in the formulas. Defaults to the parent frame from which the function was called.} \item{x}{an object inheriting from class \code{reStruct} to be printed.} \item{sigma}{an optional numeric value used as a multiplier for the square-root factors of the \code{pdMat} components (usually the estimated within-group standard deviation from a mixed-effects model). Defaults to 1.} \item{reEstimates}{an optional list with the random effects estimates for each level of grouping. Only used when \code{verbose = TRUE}.} \item{verbose}{an optional logical value determining if the random effects estimates should be printed. Defaults to \code{FALSE}.} \item{\dots}{Optional arguments can be given to other methods for this generic. None are used in this method.} } \description{ This function is a constructor for the \code{reStruct} class, representing a random effects structure and consisting of a list of \code{pdMat} objects, plus a \code{settings} attribute containing information for the optimization algorithm used to fit the associated mixed-effects model. } \value{ an object inheriting from class \code{reStruct}, representing a random effects structure. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{groupedData}}, \code{\link{lme}}, \code{\link{pdMat}}, \code{\link{solve.reStruct}}, \code{\link{summary.reStruct}}, \code{\link{update.reStruct}} } \examples{ rs1 <- reStruct(list(Dog = ~day, Side = ~1), data = Pixel) rs1 } \keyword{models} nlme/man/logLik.lme.Rd0000644000176000001440000000362712222471724014307 0ustar ripleyusers% File nlme/man/logLik.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logLik.lme} \title{Log-Likelihood of an lme Object} \usage{ \method{logLik}{lme}(object, REML, \dots) } \alias{logLik.lme} \alias{logLik.gls} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{REML}{an optional logical value. If \code{TRUE} the restricted log-likelihood is returned, else, if \code{FALSE}, the log-likelihood is returned. Defaults to the method of estimation used, that is \code{TRUE} if and only \code{object} was fitted with \code{method = "REML"} (the default for these fitting functions) . } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ If \code{REML=FALSE}, returns the log-likelihood value of the linear mixed-effects model represented by \code{object} evaluated at the estimated coefficients; else, the restricted log-likelihood evaluated at the estimated coefficients is returned. } \value{ the (restricted) log-likelihood of the model represented by \code{object} evaluated at the estimated coefficients. } \references{ Harville, D.A. (1974) ``Bayesian Inference for Variance Components Using Only Error Contrasts'', \emph{Biometrika}, \bold{61}, 383--385. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates} \seealso{\code{\link{lme}},\code{\link{gls}}, \code{\link{logLik.corStruct}}, \code{\link{logLik.glsStruct}}, \code{\link{logLik.lmeStruct}}, \code{\link{logLik.lmList}}, \code{\link{logLik.reStruct}}, \code{\link{logLik.varFunc}}, } \examples{ fm1 <- lme(distance ~ Sex * age, Orthodont, random = ~ age, method = "ML") logLik(fm1) logLik(fm1, REML = TRUE) } \keyword{models} nlme/man/gls.Rd0000644000176000001440000001300312223250232013052 0ustar ripleyusers% File nlme/man/gls.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{gls} \title{Fit Linear Model Using Generalized Least Squares} \alias{gls} \alias{update.gls} \usage{ gls(model, data, correlation, weights, subset, method, na.action, control, verbose) \method{update}{gls}(object, model., \dots, evaluate = TRUE) } \arguments{ \item{object}{an object inheriting from class \code{"gls"}, representing a generalized least squares fitted linear model.} \item{model}{a two-sided linear formula object describing the model, with the response on the left of a \code{~} operator and the terms, separated by \code{+} operators, on the right.} \item{model.}{Changes to the model -- see \code{\link{update.formula}} for details.} \item{data}{an optional data frame containing the variables named in \code{model}, \code{correlation}, \code{weights}, and \code{subset}. By default the variables are taken from the environment from which \code{gls} is called.} \item{correlation}{an optional \code{\link{corStruct}} object describing the within-group correlation structure. See the documentation of \code{\link{corClasses}} for a description of the available \code{corStruct} classes. If a grouping variable is to be used, it must be specified in the \code{form} argument to the \code{corStruct} constructor. Defaults to \code{NULL}, corresponding to uncorrelated errors.} \item{weights}{an optional \code{\link{varFunc}} object or one-sided formula describing the within-group heteroscedasticity structure. If given as a formula, it is used as the argument to \code{\link{varFixed}}, corresponding to fixed variance weights. See the documentation on \code{\link{varClasses}} for a description of the available \code{\link{varFunc}} classes. Defaults to \code{NULL}, corresponding to homoscedastic errors.} \item{subset}{an optional expression indicating which subset of the rows of \code{data} should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{method}{a character string. If \code{"REML"} the model is fit by maximizing the restricted log-likelihood. If \code{"ML"} the log-likelihood is maximized. Defaults to \code{"REML"}.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{\link{na.fail}}) causes \code{gls} to print an error message and terminate if there are any incomplete observations.} \item{control}{a list of control values for the estimation algorithm to replace the default values returned by the function \code{\link{glsControl}}. Defaults to an empty list.} \item{verbose}{an optional logical value. If \code{TRUE} information on the evolution of the iterative algorithm is printed. Default is \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} \item{evaluate}{If \code{TRUE} evaluate the new call else return the call.} } \description{ This function fits a linear model using generalized least squares. The errors are allowed to be correlated and/or have unequal variances. } \value{ an object of class \code{"gls"} representing the linear model fit. Generic functions such as \code{print}, \code{plot}, and \code{summary} have methods to show the results of the fit. See \code{\link{glsObject}} for the components of the fit. The functions \code{\link{resid}}, \code{\link{coef}} and \code{\link{fitted}}, can be used to extract some of its components. } \references{ The different correlation structures available for the \code{correlation} argument are described in Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994), Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996), and Venables, W.N. and Ripley, B.D. (2002). The use of variance functions for linear and nonlinear models is presented in detail in Carroll, R.J. and Ruppert, D. (1988) and Davidian, M. and Giltinan, D.M. (1995). Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Carroll, R.J. and Ruppert, D. (1988) "Transformation and Weighting in Regression", Chapman and Hall. Davidian, M. and Giltinan, D.M. (1995) "Nonlinear Mixed Effects Models for Repeated Measurement Data", Chapman and Hall. Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996) "SAS Systems for Mixed Models", SAS Institute. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 100, 461. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{corClasses}}, \code{\link{glsControl}}, \code{\link{glsObject}}, \code{\link{glsStruct}}, \code{\link{plot.gls}}, \code{\link{predict.gls}}, \code{\link{qqnorm.gls}}, \code{\link{residuals.gls}}, \code{\link{summary.gls}}, \code{\link{varClasses}}, \code{\link{varFunc}} } \examples{ # AR(1) errors within each Mare fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, correlation = corAR1(form = ~ 1 | Mare)) # variance increases as a power of the absolute fitted values fm2 <- update(fm1, weights = varPower()) } \keyword{models} nlme/man/comparePred.Rd0000644000176000001440000000640312222512062014535 0ustar ripleyusers% File nlme/man/comparePred.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{comparePred} \title{Compare Predictions} \usage{ comparePred(object1, object2, primary, minimum, maximum, length.out, level, \dots) } \alias{comparePred} \alias{comparePred.gls} \alias{comparePred.lme} \alias{comparePred.lmList} \arguments{ \item{object1,object2}{fitted model objects, from which predictions can be extracted using the \code{predict} method.} \item{primary}{an optional one-sided formula specifying the primary covariate to be used to generate the augmented predictions. By default, if a covariate can be extracted from the data used to generate the objects (using \code{getCovariate}), it will be used as \code{primary}.} \item{minimum}{an optional lower limit for the primary covariate. Defaults to \code{min(primary)}, after \code{primary} is evaluated in the \code{data} used in fitting \code{object1}.} \item{maximum}{an optional upper limit for the primary covariate. Defaults to \code{max(primary)}, after \code{primary} is evaluated in the \code{data} used in fitting \code{object1}.} \item{length.out}{an optional integer with the number of primary covariate values at which to evaluate the predictions. Defaults to 51.} \item{level}{an optional integer specifying the desired prediction level. Levels increase from outermost to innermost grouping, with level 0 representing the population (fixed effects) predictions. Only one level can be specified. Defaults to the innermost level.} \item{\dots}{some methods for the generic may require additional arguments.} } \description{ Predicted values are obtained at the specified values of \code{primary} for each object. If either \code{object1} or \code{object2} have a grouping structure (i.e. \code{getGroups(object)} is not \code{NULL}), predicted values are obtained for each group. When both objects determine groups, the group levels must be the same. If other covariates besides \code{primary} are used in the prediction model, their group-wise averages (numeric covariates) or most frequent values (categorical covariates) are used to obtain the predicted values. The original observations are also included in the returned object. } \value{ a data frame with four columns representing, respectively, the values of the primary covariate, the groups (if \code{object} does not have a grouping structure, all elements will be \code{1}), the predicted or observed values, and the type of value in the third column: the objects' names are used to classify the predicted values and \code{original} is used for the observed values. The returned object inherits from classes \code{comparePred} and \code{augPred}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{gls}, \code{lme}, and \code{lmList}. } \seealso{\code{\link{augPred}}, \code{\link{getGroups}}} \examples{ fm1 <- lme(distance ~ age * Sex, data = Orthodont, random = ~ age) fm2 <- update(fm1, distance ~ age) comparePred(fm1, fm2, length.out = 2) } \keyword{models} nlme/man/allCoef.Rd0000644000176000001440000000207112222512062013636 0ustar ripleyusers% File nlme/man/allCoef.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{allCoef} \title{Extract Coefficients from a Set of Objects} \usage{ allCoef(\dots, extract) } \alias{allCoef} \arguments{ \item{\dots}{objects to which \code{extract} will be applied. Generally these will be model components, such as \code{corStruct} and \code{varFunc} objects.} \item{extract}{an optional extractor function. Defaults to \code{coef}.} } \description{ The extractor function is applied to each object in \code{\dots}, with the result being converted to a vector. A \code{map} attribute is included to indicate which pieces of the returned vector correspond to the original objects in \code{dots}. } \value{ a vector with all elements, generally coefficients, obtained by applying \code{extract} to the objects in \code{\dots}. } \author{José' Pinheiro and Douglas Bates} \seealso{\code{\link{lmeStruct}},\code{\link{nlmeStruct}}} \examples{ cs1 <- corAR1(0.1) vf1 <- varPower(0.5) allCoef(cs1, vf1) } \keyword{models} nlme/man/RatPupWeight.Rd0000644000176000001440000000241612222471724014670 0ustar ripleyusers% File nlme/man/RatPupWeight.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{RatPupWeight} \alias{RatPupWeight} \title{The weight of rat pups} \description{ The \code{RatPupWeight} data frame has 322 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{weight}{ a numeric vector } \item{sex}{ a factor with levels \code{Male} \code{Female} } \item{Litter}{ an ordered factor with levels \code{9} < \code{8} < \code{7} < \code{4} < \code{2} < \code{10} < \code{1} < \code{3} < \code{5} < \code{6} < \code{21} < \code{22} < \code{24} < \code{27} < \code{26} < \code{25} < \code{23} < \code{17} < \code{11} < \code{14} < \code{13} < \code{15} < \code{16} < \code{20} < \code{19} < \code{18} < \code{12} } \item{Lsize}{ a numeric vector } \item{Treatment}{ an ordered factor with levels \code{Control} < \code{Low} < \code{High} } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/residuals.lmeStruct.Rd0000644000176000001440000000471012222512062016247 0ustar ripleyusers% File nlme/man/residuals.lmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{residuals.lmeStruct} \title{Calculate lmeStruct Residuals} \usage{ \method{residuals}{lmeStruct}(object, level, conLin, lmeFit, \dots) } \alias{residuals.lmeStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmeStruct}"}, representing a list of linear mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects.} \item{level}{an optional integer vector giving the level(s) of grouping to be used in extracting the residuals from \code{object}. Level values increase from outermost to innermost grouping, with level zero corresponding to the population fitted values. Defaults to the highest or innermost level of grouping.} \item{conLin}{an optional condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying lme model. Defaults to \code{attr(object, "conLin")}.} \item{lmeFit}{an optional list with components \code{beta} and \code{b} containing respectively the fixed effects estimates and the random effects estimates to be used to calculate the residuals. Defaults to \code{attr(object, "lmeFit")}.} \item{\dots}{some methods for this generic accept optional arguments.} } \description{ The residuals at level \eqn{i} are obtained by subtracting the fitted values at that level from the response vector. The fitted values at level \eqn{i} are obtained by adding together the population fitted values (based only on the fixed effects estimates) and the estimated contributions of the random effects to the fitted values at grouping levels less or equal to \eqn{i}. } \value{ if a single level of grouping is specified in \code{level}, the returned value is a vector with the residuals at the desired level; else, when multiple grouping levels are specified in \code{level}, the returned object is a matrix with columns given by the residuals at different levels. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This method function is primarily used within the \code{lme} function. } \seealso{\code{\link{lme}}, \code{\link{residuals.lme}}, \code{\link{fitted.lmeStruct}} } \keyword{models} nlme/man/collapse.Rd0000644000176000001440000000150612222512062014075 0ustar ripleyusers% File nlme/man/collapse.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{collapse} \title{Collapse According to Groups} \usage{ collapse(object, \dots) } \alias{collapse} \arguments{ \item{object}{an object to be collapsed, usually a data frame.} \item{\dots}{some methods for the generic may require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Currently, only a \code{groupedData} method is available. } \value{ will depend on the method function used; see the appropriate documentation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{collapse.groupedData}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/logLik.lmList.Rd0000644000176000001440000000334412222512062014761 0ustar ripleyusers% File nlme/man/logLik.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logLik.lmList} \title{Log-Likelihood of an lmList Object} \usage{ \method{logLik}{lmList}(object, REML, pool, \dots) } \alias{logLik.lmList} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} objects with a common model. } \item{REML}{an optional logical value. If \code{TRUE} the restricted log-likelihood is returned, else, if \code{FALSE}, the log-likelihood is returned. Defaults to \code{FALSE}. } \item{pool}{an optional logical value indicating whether all \code{lm} components of \code{object} may be assumed to have the same error variance. Default is \code{attr(object, "pool")}. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ If \code{pool=FALSE}, the (restricted) log-likelihoods of the \code{lm} components of \code{object} are summed together. Else, the (restricted) log-likelihood of the \code{lm} fit with different coefficients for each level of the grouping factor associated with the partitioning of the \code{object} components is obtained. } \value{ either the sum of the (restricted) log-likelihoods of each \code{lm} component in \code{object}, or the (restricted) log-likelihood for the \code{lm} fit with separate coefficients for each component of \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{logLik.lme}}, } \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) logLik(fm1) # returns NA when it should not } \keyword{models} nlme/man/Gun.Rd0000644000176000001440000000240212222471724013031 0ustar ripleyusers% File nlme/man/Gun.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Gun} \alias{Gun} \title{Methods for firing naval guns} \description{ The \code{Gun} data frame has 36 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{rounds}{ a numeric vector } \item{Method}{ a factor with levels \code{M1} \code{M2} } \item{Team}{ an ordered factor with levels \code{T1S} < \code{T3S} < \code{T2S} < \code{T1A} < \code{T2A} < \code{T3A} < \code{T1H} < \code{T3H} < \code{T2H} } \item{Physique}{ an ordered factor with levels \code{Slight} < \code{Average} < \code{Heavy} } } } \details{ Hicks (p.180, 1993) reports data from an experiment on methods for firing naval guns. Gunners of three different physiques (slight, average, and heavy) tested two firing methods. Both methods were tested twice by each of nine teams of three gunners with identical physique. The response was the number of rounds fired per minute.} \source{ Hicks, C. R. (1993), \emph{Fundamental Concepts in the Design of Experiments (4th ed)}, Harcourt Brace, New York. } %\examples{} \keyword{datasets} nlme/man/recalc.corStruct.Rd0000644000176000001440000000331512222512062015513 0ustar ripleyusers% File nlme/man/recalc.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{recalc.corStruct} \title{Recalculate for corStruct Object} \usage{ \method{recalc}{corStruct}(object, conLin, \dots) } \alias{recalc.corStruct} \alias{recalc.corAR1} \alias{recalc.corARMA} \alias{recalc.corCAR1} \alias{recalc.corCompSymm} \alias{recalc.corHF} \alias{recalc.corIdent} \alias{recalc.corNatural} \alias{recalc.corSpatial} \alias{recalc.corSymm} \arguments{ \item{object}{an object inheriting from class \code{"\link{corStruct}"}, representing a correlation structure.} \item{conLin}{a condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying model.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function pre-multiples the \code{"Xy"} component of \code{conLin} by the transpose square-root factor(s) of the correlation matrix (matrices) associated with \code{object} and adds the log-likelihood contribution of \code{object}, given by \code{logLik(object)}, to the \code{"logLik"} component of \code{conLin}. } \value{ the recalculated condensed linear model object. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{This method function is only used inside model fitting functions, such as \code{lme} and \code{gls}, that allow correlated error terms.} \seealso{\code{\link{corFactor}}, \code{\link{logLik.corStruct}} } \keyword{models} nlme/man/logDet.pdMat.Rd0000644000176000001440000000216212222512062014554 0ustar ripleyusers% File nlme/man/logDet.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{logDet.pdMat} \title{Extract Log-Determinant from a pdMat Object} \usage{ \method{logDet}{pdMat}(object, \dots) } \alias{logDet.pdMat} \alias{logDet.pdBlocked} \alias{logDet.pdCompSymm} \alias{logDet.pdDiag} \alias{logDet.pdIdent} \alias{logDet.pdNatural} \alias{logDet.pdSymm} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive definite matrix.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the logarithm of the determinant of a square-root factor of the positive-definite matrix represented by \code{object}. } \value{ the log-determinant of a square-root factor of the positive-definite matrix represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{pdMat}}, \code{\link{logDet}} } \examples{ pd1 <- pdSymm(diag(1:3)) logDet(pd1) } \keyword{models} nlme/man/pdMatrix.reStruct.Rd0000644000176000001440000000312712222512062015676 0ustar ripleyusers% File nlme/man/pdMatrix.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdMatrix.reStruct} \title{Extract Matrix or Square-Root Factor from Components of an reStruct Object} \usage{ \method{pdMatrix}{reStruct}(object, factor) } \alias{pdMatrix.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{factor}{an optional logical value. If \code{TRUE}, square-root factors of the positive-definite matrices represented by the elements of \code{object} are returned; else, if \code{FALSE}, the positive-definite matrices are returned. Defaults to \code{FALSE}.} } \description{ This method function extracts the positive-definite matrices corresponding to the \code{pdMat} elements of \code{object}, or square-root factors of the positive-definite matrices. } \value{ a list with components given by the positive-definite matrices corresponding to the elements of \code{object}, or square-root factors of the positive-definite matrices. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. p. 162. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.reStruct}}, \code{\link{reStruct}}, \code{\link{pdMat}}, \code{\link{pdMatrix}}, \code{\link{pdMatrix.pdMat}} } \examples{ rs1 <- reStruct(pdSymm(diag(3), ~age+Sex, data = Orthodont)) pdMatrix(rs1) } \keyword{models} nlme/man/Ovary.Rd0000644000176000001440000000247012222471724013405 0ustar ripleyusers% File nlme/man/Ovary.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Ovary} \alias{Ovary} \title{Counts of Ovarian Follicles} \description{ The \code{Ovary} data frame has 308 rows and 3 columns. } \format{ This data frame contains the following columns: \describe{ \item{Mare}{ an ordered factor indicating the mare on which the measurement is made. } \item{Time}{ time in the estrus cycle. The data were recorded daily from 3 days before ovulation until 3 days after the next ovulation. The measurement times for each mare are scaled so that the ovulations for each mare occur at times 0 and 1. } \item{follicles}{ the number of ovarian follicles greater than 10 mm in diameter. } } } \details{ Pierson and Ginther (1987) report on a study of the number of large ovarian follicles detected in different mares at several times in their estrus cycles. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.18) Pierson, R. A. and Ginther, O. J. (1987), Follicular population dynamics during the estrus cycle of the mare, \emph{Animal Reproduction Science}, \bold{14}, 219-231. } %\examples{} \keyword{datasets} nlme/man/pdFactor.Rd0000644000176000001440000000311512222512062014033 0ustar ripleyusers% File nlme/man/pdFactor.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdFactor} \title{Square-Root Factor of a Positive-Definite Matrix} \usage{ pdFactor(object) } \alias{pdFactor} \alias{pdFactor.pdBlocked} \alias{pdFactor.pdCompSymm} \alias{pdFactor.pdDiag} \alias{pdFactor.pdIdent} \alias{pdFactor.pdMat} \alias{pdFactor.pdNatural} \alias{pdFactor.pdSymm} \alias{pdFactor.pdLogChol} \arguments{ \item{object}{an object inheriting from class \code{pdMat}, representing a positive definite matrix, which must have been initialized (i.e. \code{length(coef(object)) > 0}).} } \description{ A square-root factor of the positive-definite matrix represented by \code{object} is obtained. Letting \eqn{\Sigma}{S} denote a positive-definite matrix, a square-root factor of \eqn{\Sigma}{S} is any square matrix \eqn{L}{L} such that \eqn{\Sigma = L'L}{S = L'L}. This function extracts \eqn{L}. } \value{ a vector with a square-root factor of the positive-definite matrix associated with \code{object} stacked column-wise. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This function is used intensively in optimization algorithms and its value is returned as a vector for efficiency reasons. The \code{pdMatrix} function can be used to obtain square-root factors in matrix form. } \seealso{\code{\link{pdMatrix}}} \examples{ pd1 <- pdCompSymm(4 * diag(3) + 1) pdFactor(pd1) } \keyword{models} nlme/man/ACF.Rd0000644000176000001440000000245512222471724012701 0ustar ripleyusers% File nlme/man/ACF.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{ACF} \title{Autocorrelation Function} \usage{ ACF(object, maxLag, \dots) } \alias{ACF} \arguments{ \item{object}{any object from which an autocorrelation function can be obtained. Generally an object resulting from a model fit, from which residuals can be extracted.} \item{maxLag}{maximum lag for which the autocorrelation should be calculated.} \item{\dots}{some methods for this generic require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include: \code{gls} and \code{lme}. } \value{ will depend on the method function used; see the appropriate documentation. } \references{ Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{Bates@stat.wisc.edu}} \seealso{\code{\link{ACF.gls}}, \code{\link{ACF.lme}}, \code{\link{plot.ACF}} } \examples{ ## see the method function documentation } \keyword{models} nlme/man/predict.lmList.Rd0000644000176000001440000000531612222512062015173 0ustar ripleyusers% File nlme/man/predict.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{predict.lmList} \title{Predictions from an lmList Object} \usage{ \method{predict}{lmList}(object, newdata, subset, pool, asList, se.fit, \dots) } \alias{predict.lmList} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} objects with a common model. } \item{newdata}{an optional data frame to be used for obtaining the predictions. All variables used in the \code{object} model formula must be present in the data frame. If missing, the same data frame used to produce \code{object} is used. } \item{subset}{an optional character or integer vector naming the \code{lm} components of \code{object} from which the predictions are to be extracted. Default is \code{NULL}, in which case all components are used. } \item{asList}{an optional logical value. If \code{TRUE}, the returned object is a list with the predictions split by groups; else the returned value is a vector. Defaults to \code{FALSE}. } \item{pool}{an optional logical value indicating whether a pooled estimate of the residual standard error should be used. Default is \code{attr(object, "pool")}. } \item{se.fit}{an optional logical value indicating whether pointwise standard errors should be computed along with the predictions. Default is \code{FALSE}. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ If the grouping factor corresponding to \code{object} is included in \code{newdata}, the data frame is partitioned according to the grouping factor levels; else, \code{newdata} is repeated for all \code{lm} components. The predictions and, optionally, the standard errors for the predictions, are obtained for each \code{lm} component of \code{object}, using the corresponding element of the partitioned \code{newdata}, and arranged into a list with as many components as \code{object}, or combined into a single vector or data frame (if \code{se.fit=TRUE}). } \value{ a list with components given by the predictions (and, optionally, the standard errors for the predictions) from each \code{lm} component of \code{object}, a vector with the predictions from all \code{lm} components of \code{object}, or a data frame with columns given by the predictions and their corresponding standard errors. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{predict.lm}}} \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) predict(fm1, se.fit = TRUE) } \keyword{models} nlme/man/coef.corStruct.Rd0000644000176000001440000000514112222512062015175 0ustar ripleyusers% File nlme/man/coef.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{coef.corStruct} \title{Coefficients of a corStruct Object} \usage{ \method{coef}{corStruct}(object, unconstrained, \dots) \method{coef}{corStruct}(object, \dots) <- value } \alias{coef.corStruct} \alias{coef.corAR1} \alias{coef.corARMAd} \alias{coef.corCAR1} \alias{coef.corCompSymm} \alias{coef.corHF} \alias{coef.corIdent} \alias{coef.corLin} \alias{coef.corNatural} \alias{coef.corSpatial} \alias{coef.corSpher} \alias{coef.corSymm} \alias{coef<-.corStruct} \alias{coef<-.corAR1} \alias{coef<-.corARMA} \alias{coef<-.corCAR1} \alias{coef<-.corCompSymm} \alias{coef<-.corNatural} \alias{coef<-.corHF} \alias{coef<-.corIdent} \alias{coef<-.corLin} \alias{coef<-.corSpatial} \alias{coef<-.corSpher} \alias{coef<-.corSymm} \alias{coef.summary.nlsList} \arguments{ \item{object}{an object inheriting from class \code{"\link{corStruct}"}, representing a correlation structure.} \item{unconstrained}{a logical value. If \code{TRUE} the coefficients are returned in unconstrained form (the same used in the optimization algorithm). If \code{FALSE} the coefficients are returned in "natural", possibly constrained, form. Defaults to \code{TRUE}.} \item{value}{a vector with the replacement values for the coefficients associated with \code{object}. It must be a vector with the same length of \code{coef{object}} and must be given in unconstrained form.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function extracts the coefficients associated with the correlation structure represented by \code{object}. } \value{ a vector with the coefficients corresponding to \code{object}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates } \section{SIDE EFFECTS}{ On the left side of an assignment, sets the values of the coefficients of \code{object} to \code{value}. \code{Object} must be initialized (using \code{Initialize}) before new values can be assigned to its coefficients. } \seealso{\code{\link{corAR1}}, \code{\link{corARMA}}, \code{\link{corCAR1}}, \code{\link{corCompSymm}}, \code{\link{corExp}}, \code{\link{corGaus}}, \code{\link{corLin}}, \code{\link{corRatio}}, \code{\link{corSpatial}}, \code{\link{corSpher}}, \code{\link{corSymm}},\code{\link{Initialize}}} \examples{ cst1 <- corARMA(p = 1, q = 1) coef(cst1) } \keyword{models} nlme/man/varPower.Rd0000644000176000001440000000675712222512062014115 0ustar ripleyusers% File nlme/man/varPower.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varPower} \title{Power Variance Function} \usage{ varPower(value, form, fixed) } \alias{varPower} \arguments{ \item{value}{an optional numeric vector, or list of numeric values, with the variance function coefficients. \code{Value} must have length one, unless a grouping factor is specified in \code{form}. If \code{value} has length greater than one, it must have names which identify its elements to the levels of the grouping factor defined in \code{form}. If a grouping factor is present in \code{form} and \code{value} has length one, its value will be assigned to all grouping levels. Default is \code{numeric(0)}, which results in a vector of zeros of appropriate length being assigned to the coefficients when \code{object} is initialized (corresponding to constant variance equal to one).} \item{form}{an optional one-sided formula of the form \code{~ v}, or \code{~ v | g}, specifying a variance covariate \code{v} and, optionally, a grouping factor \code{g} for the coefficients. The variance covariate must evaluate to a numeric vector and may involve expressions using \code{"."}, representing a fitted model object from which fitted values (\code{fitted(.)}) and residuals (\code{resid(.)}) can be extracted (this allows the variance covariate to be updated during the optimization of an object function). When a grouping factor is present in \code{form}, a different coefficient value is used for each of its levels. Several grouping variables may be simultaneously specified, separated by the \code{*} operator, like in \code{~ v | g1 * g2 * g3}. In this case, the levels of each grouping variable are pasted together and the resulting factor is used to group the observations. Defaults to \code{~ fitted(.)} representing a variance covariate given by the fitted values of a fitted model object and no grouping factor. } \item{fixed}{an optional numeric vector, or list of numeric values, specifying the values at which some or all of the coefficients in the variance function should be fixed. If a grouping factor is specified in \code{form}, \code{fixed} must have names identifying which coefficients are to be fixed. Coefficients included in \code{fixed} are not allowed to vary during the optimization of an objective function. Defaults to \code{NULL}, corresponding to no fixed coefficients.} } \description{ This function is a constructor for the \code{varPower} class, representing a power variance function structure. Letting \eqn{v} denote the variance covariate and \eqn{\sigma^2(v)}{s2(v)} denote the variance function evaluated at \eqn{v}, the power variance function is defined as \eqn{\sigma^2(v) = |v|^{2\theta}}{s2(v) = |v|^(2*t)}, where \eqn{\theta}{t} is the variance function coefficient. When a grouping factor is present, a different \eqn{\theta}{t} is used for each factor level. } \value{ a \code{varPower} object representing a power variance function structure, also inheriting from class \code{varFunc}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{varWeights.varFunc}}, \code{\link{coef.varPower}}} \examples{ vf1 <- varPower(0.2, form = ~age|Sex) } \keyword{models} nlme/man/ranef.lme.Rd0000644000176000001440000001057312222471724014157 0ustar ripleyusers% File nlme/man/ranef.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{ranef.lme} \title{Extract lme Random Effects} \usage{ \method{ranef}{lme}(object, augFrame, level, data, which, FUN, standard, omitGroupingFactor, subset, \dots) } \alias{ranef.lme} \alias{random.effects.lme} \alias{print.ranef.lme} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{augFrame}{an optional logical value. If \code{TRUE}, the returned data frame is augmented with variables defined in \code{data}; else, if \code{FALSE}, only the coefficients are returned. Defaults to \code{FALSE}.} \item{level}{an optional vector of positive integers giving the levels of grouping to be used in extracting the random effects from an object with multiple nested grouping levels. Defaults to all levels of grouping.} \item{data}{an optional data frame with the variables to be used for augmenting the returned data frame when \code{augFrame = TRUE}. Defaults to the data frame used to fit \code{object}.} \item{which}{an optional positive integer vector specifying which columns of \code{data} should be used in the augmentation of the returned data frame. Defaults to all columns in \code{data}.} \item{FUN}{an optional summary function or a list of summary functions to be applied to group-varying variables, when collapsing \code{data} by groups. Group-invariant variables are always summarized by the unique value that they assume within that group. If \code{FUN} is a single function it will be applied to each non-invariant variable by group to produce the summary for that variable. If \code{FUN} is a list of functions, the names in the list should designate classes of variables in the frame such as \code{ordered}, \code{factor}, or \code{numeric}. The indicated function will be applied to any group-varying variables of that class. The default functions to be used are \code{mean} for numeric factors, and \code{Mode} for both \code{factor} and \code{ordered}. The \code{Mode} function, defined internally in \code{gsummary}, returns the modal or most popular value of the variable. It is different from the \code{mode} function that returns the S-language mode of the variable.} \item{standard}{an optional logical value indicating whether the estimated random effects should be "standardized" (i.e. divided by the estimate of the standard deviation of that group of random effects). Defaults to \code{FALSE}.} \item{omitGroupingFactor}{an optional logical value. When \code{TRUE} the grouping factor itself will be omitted from the group-wise summary of \code{data} but the levels of the grouping factor will continue to be used as the row names for the returned data frame. Defaults to \code{FALSE}.} \item{subset}{an optional expression indicating for which rows the random effects should be extracted.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The estimated random effects at level \eqn{i} are represented as a data frame with rows given by the different groups at that level and columns given by the random effects. If a single level of grouping is specified, the returned object is a data frame; else, the returned object is a list of such data frames. Optionally, the returned data frame(s) may be augmented with covariates summarized over groups. } \value{ a data frame, or list of data frames, with the estimated random effects at the grouping level(s) specified in \code{level} and, optionally, other covariates summarized over groups. The returned object inherits from classes \code{random.effects.lme} and \code{data.frame}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 100, 461. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{coef.lme}}, \code{\link{gsummary}}, \code{\link{lme}}, %\code{\link{fixed.effects.lme}}, \code{\link{plot.ranef.lme}}, \code{\link{random.effects}} } \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) ranef(fm1) random.effects(fm1) # same as above random.effects(fm1, augFrame = TRUE) } \keyword{models} nlme/man/Gasoline.Rd0000644000176000001440000000424112222471724014044 0ustar ripleyusers% File nlme/man/Gasoline.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Gasoline} \alias{Gasoline} \title{Refinery yield of gasoline} \description{ The \code{Gasoline} data frame has 32 rows and 6 columns. } \format{ This data frame contains the following columns: \describe{ \item{yield}{ a numeric vector giving the percentage of crude oil converted to gasoline after distillation and fractionation } \item{endpoint}{ a numeric vector giving the temperature (degrees F) at which all the gasoline is vaporized } \item{Sample}{ an ordered factor giving the inferred crude oil sample number } \item{API}{ a numeric vector giving the crude oil gravity (degrees API) } \item{vapor}{ a numeric vector giving the vapor pressure of the crude oil \eqn{(\mathrm{lbf}/\mathrm{in}^2)}{(lbf/in^2)} } \item{ASTM}{ a numeric vector giving the crude oil 10\% point ASTM---the temperature at which 10\% of the crude oil has become vapor. } } } \details{ Prater (1955) provides data on crude oil properties and gasoline yields. Atkinson (1985) uses these data to illustrate the use of diagnostics in multiple regression analysis. Three of the covariates---\code{API}, \code{vapor}, and \code{ASTM}---measure characteristics of the crude oil used to produce the gasoline. The other covariate --- \code{endpoint}---is a characteristic of the refining process. Daniel and Wood (1980) notice that the covariates characterizing the crude oil occur in only ten distinct groups and conclude that the data represent responses measured on ten different crude oil samples. } \source{ Prater, N. H. (1955), Estimate gasoline yields from crudes, \emph{Petroleum Refiner}, \bold{35} (5). Atkinson, A. C. (1985), \emph{Plots, Transformations, and Regression}, Oxford Press, New York. Daniel, C. and Wood, F. S. (1980), \emph{Fitting Equations to Data}, Wiley, New York Venables, W. N. and Ripley, B. D. (2002) \emph{Modern Applied Statistics with S (4th ed)}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/plot.nfnGroupedData.Rd0000644000176000001440000001047212222512062016153 0ustar ripleyusers% File nlme/man/plot.nfnGroupedData.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.nfnGroupedData} \title{Plot an nfnGroupedData Object} \usage{ \method{plot}{nfnGroupedData}(x, outer, inner, innerGroups, xlab, ylab, strip, aspect, panel, key, grid, \dots) } \alias{plot.nfnGroupedData} \arguments{ \item{x}{an object inheriting from class \code{nfnGroupedData}, representing a \code{groupedData} object with a numeric primary covariate and a single grouping level. } \item{outer}{an optional logical value or one-sided formula, indicating covariates that are outer to the grouping factor, which are used to determine the panels of the Trellis plot. If equal to \code{TRUE}, \code{attr(object, "outer")} is used to indicate the outer covariates. An outer covariate is invariant within the sets of rows defined by the grouping factor. Ordering of the groups is done in such a way as to preserve adjacency of groups with the same value of the outer variables. Defaults to \code{NULL}, meaning that no outer covariates are to be used. } \item{inner}{an optional logical value or one-sided formula, indicating a covariate that is inner to the grouping factor, which is used to associate points within each panel of the Trellis plot. If equal to \code{TRUE}, \code{attr(object, "inner")} is used to indicate the inner covariate. An inner covariate can change within the sets of rows defined by the grouping factor. Defaults to \code{NULL}, meaning that no inner covariate is present. } \item{innerGroups}{an optional one-sided formula specifying a factor to be used for grouping the levels of the \code{inner} covariate. Different colors, or line types, are used for each level of the \code{innerGroups} factor. Default is \code{NULL}, meaning that no \code{innerGroups} covariate is present. } \item{xlab, ylab}{optional character strings with the labels for the plot. Default is the corresponding elements of \code{attr(object, "labels")} and \code{attr(object, "units")} pasted together. } \item{strip}{an optional function passed as the \code{strip} argument to the \code{xyplot} function. Default is \code{strip.default(\dots, style = 1)} (see \code{trellis.args}). } \item{aspect}{an optional character string indicating the aspect ratio for the plot passed as the \code{aspect} argument to the \code{xyplot} function. Default is \code{"xy"} (see \code{trellis.args}). } \item{panel}{an optional function used to generate the individual panels in the Trellis display, passed as the \code{panel} argument to the \code{xyplot} function.} \item{key}{an optional logical function or function. If \code{TRUE} and \code{innerGroups} is non-\code{NULL}, a legend for the different \code{innerGroups} levels is included at the top of the plot. If given as a function, it is passed as the \code{key} argument to the \code{xyplot} function. Default is \code{TRUE} if \code{innerGroups} is non-\code{NULL} and \code{FALSE} otherwise. } \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default is \code{TRUE}.} \item{\dots}{optional arguments passed to the \code{xyplot} function.} } \description{ A Trellis plot of the response versus the primary covariate is generated. If outer variables are specified, the combination of their levels are used to determine the panels of the Trellis display. Otherwise, the levels of the grouping variable determine the panels. A scatter plot of the response versus the primary covariate is displayed in each panel, with observations corresponding to same inner group joined by line segments. The Trellis function \code{xyplot} is used. } \value{ a Trellis plot of the response versus the primary covariate. } \references{ Bates, D.M. and Pinheiro, J.C. (1997), "Software Design for Longitudinal Data", in "Modelling Longitudinal and Spatially Correlated Data: Methods, Applications and Future Directions", T.G. Gregoire (ed.), Springer-Verlag, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{groupedData}}, \code{\link{xyplot}}} \examples{ # different panels per Subject plot(Orthodont) # different panels per gender plot(Orthodont, outer = TRUE) } \keyword{models} nlme/man/Variogram.lme.Rd0000644000176000001440000001446112222512062015002 0ustar ripleyusers% File nlme/man/Variogram.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Variogram.lme} \title{Calculate Semi-variogram for Residuals from an lme Object} \usage{ \method{Variogram}{lme}(object, distance, form, resType, data, na.action, maxDist, length.out, collapse, nint, breaks, robust, metric, \dots) } \alias{Variogram.lme} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{distance}{an optional numeric vector with the distances between residual pairs. If a grouping variable is present, only the distances between residual pairs within the same group should be given. If missing, the distances are calculated based on the values of the arguments \code{form}, \code{data}, and \code{metric}, unless \code{object} includes a \code{corSpatial} element, in which case the associated covariate (obtained with the \code{getCovariate} method) is used.} \item{form}{an optional one-sided formula specifying the covariate(s) to be used for calculating the distances between residual pairs and, optionally, a grouping factor for partitioning the residuals (which must appear to the right of a \code{|} operator in \code{form}). Default is \code{~1}, implying that the observation order within the groups is used to obtain the distances.} \item{resType}{an optional character string specifying the type of residuals to be used. If \code{"response"}, the "raw" residuals (observed - fitted) are used; else, if \code{"pearson"}, the standardized residuals (raw residuals divided by the corresponding standard errors) are used; else, if \code{"normalized"}, the normalized residuals (standardized residuals pre-multiplied by the inverse square-root factor of the estimated error correlation matrix) are used. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"pearson"}.} \item{data}{an optional data frame in which to interpret the variables in \code{form}. By default, the same data used to fit \code{object} is used.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes an error message to be printed and the function to terminate, if there are any incomplete observations.} \item{maxDist}{an optional numeric value for the maximum distance used for calculating the semi-variogram between two residuals. By default all residual pairs are included.} \item{length.out}{an optional integer value. When \code{object} includes a \code{corSpatial} element, its semi-variogram values are calculated and this argument is used as the \code{length.out} argument to the corresponding \code{Variogram} method. Defaults to \code{50}.} \item{collapse}{an optional character string specifying the type of collapsing to be applied to the individual semi-variogram values. If equal to \code{"quantiles"}, the semi-variogram values are split according to quantiles of the distance distribution, with equal number of observations per group, with possibly varying distance interval lengths. Else, if \code{"fixed"}, the semi-variogram values are divided according to distance intervals of equal lengths, with possibly different number of observations per interval. Else, if \code{"none"}, no collapsing is used and the individual semi-variogram values are returned. Defaults to \code{"quantiles"}.} \item{nint}{an optional integer with the number of intervals to be used when collapsing the semi-variogram values. Defaults to \code{20}.} \item{robust}{an optional logical value specifying if a robust semi-variogram estimator should be used when collapsing the individual values. If \code{TRUE} the robust estimator is used. Defaults to \code{FALSE}.} \item{breaks}{an optional numeric vector with the breakpoints for the distance intervals to be used in collapsing the semi-variogram values. If not missing, the option specified in \code{collapse} is ignored.} \item{metric}{an optional character string specifying the distance metric to be used. The currently available options are \code{"euclidean"} for the root sum-of-squares of distances; \code{"maximum"} for the maximum difference; and \code{"manhattan"} for the sum of the absolute differences. Partial matching of arguments is used, so only the first three characters need to be provided. Defaults to \code{"euclidean"}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function calculates the semi-variogram for the within-group residuals from an \code{lme} fit. The semi-variogram values are calculated for pairs of residuals within the same group. If \code{collapse} is different from \code{"none"}, the individual semi-variogram values are collapsed using either a robust estimator (\code{robust = TRUE}) defined in Cressie (1993), or the average of the values within the same distance interval. The semi-variogram is useful for modeling the error term correlation structure. } \value{ a data frame with columns \code{variog} and \code{dist} representing, respectively, the semi-variogram values and the corresponding distances. If the semi-variogram values are collapsed, an extra column, \code{n.pairs}, with the number of residual pairs used in each semi-variogram calculation, is included in the returned data frame. If \code{object} includes a \code{corSpatial} element, a data frame with its corresponding semi-variogram is included in the returned value, as an attribute \code{"modelVariog"}. The returned value inherits from class \code{Variogram}. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{lme}}, \code{\link{Variogram}}, \code{\link{Variogram.default}}, \code{\link{Variogram.gls}}, \code{\link{plot.Variogram}} } \examples{ fm1 <- lme(weight ~ Time * Diet, data=BodyWeight, ~ Time | Rat) Variogram(fm1, form = ~ Time | Rat, nint = 10, robust = TRUE) } \keyword{models} nlme/man/Variogram.Rd0000644000176000001440000000355312222512062014226 0ustar ripleyusers% File nlme/man/Variogram.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Variogram} \title{Calculate Semi-variogram} \usage{ Variogram(object, distance, \dots) } \alias{Variogram} \arguments{ \item{object}{a numeric vector with the values to be used for calculating the semi-variogram, usually a residual vector from a fitted model.} \item{distance}{a numeric vector with the pairwise distances corresponding to the elements of \code{object}. The order of the elements in \code{distance} must correspond to the pairs \code{(1,2), (1,3), \dots, (n-1,n)}, with \code{n} representing the length of \code{object}, and must have length \code{n(n-1)/2}.} \item{\dots}{some methods for this generic function require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include \code{default}, \code{gls} and \code{lme}. See the appropriate method documentation for a description of the arguments. } \value{ will depend on the method function used; see the appropriate documentation. } \references{ Cressie, N.A.C. (1993), "Statistics for Spatial Data", J. Wiley & Sons. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{Variogram.corExp}}, \code{\link{Variogram.corGaus}}, \code{\link{Variogram.corLin}}, \code{\link{Variogram.corRatio}}, \code{\link{Variogram.corSpatial}}, \code{\link{Variogram.corSpher}}, \code{\link{Variogram.default}}, \code{\link{Variogram.gls}}, \code{\link{Variogram.lme}}, \code{\link{plot.Variogram}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/summary.lmList.Rd0000644000176000001440000000770412222512062015241 0ustar ripleyusers% File nlme/man/summary.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{summary.lmList} \title{Summarize an lmList Object} \usage{ \method{summary}{lmList}(object, pool, \dots) } \alias{summary.lmList} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} fitted objects. } \item{pool}{an optional logical value indicating whether a pooled estimate of the residual standard error should be used. Default is \code{attr(object, "pool")}. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The \code{summary.lm} method is applied to each \code{lm} component of \code{object} to produce summary information on the individual fits, which is organized into a list of summary statistics. The returned object is suitable for printing with the \code{print.summary.lmList} method. } \value{ a list with summary statistics obtained by applying \code{summary.lm} to the elements of \code{object}, inheriting from class \code{summary.lmList}. The components of \code{value} are: \item{call}{a list containing an image of the \code{lmList} call that produced \code{object}. } \item{coefficients}{a three dimensional array with summary information on the \code{lm} coefficients. The first dimension corresponds to the names of the \code{object} components, the second dimension is given by \code{"Value"}, \code{"Std. Error"}, \code{"t value"}, and \code{"Pr(>|t|)"}, corresponding, respectively, to the coefficient estimates and their associated standard errors, t-values, and p-values. The third dimension is given by the coefficients names. } \item{correlation}{a three dimensional array with the correlations between the individual \code{lm} coefficient estimates. The first dimension corresponds to the names of the \code{object} components. The third dimension is given by the coefficients names. For each coefficient, the rows of the associated array give the correlations between that coefficient and the remaining coefficients, by \code{lm} component. } \item{cov.unscaled}{a three dimensional array with the unscaled variances/covariances for the individual \code{lm} coefficient estimates (giving the estimated variance/covariance for the coefficients, when multiplied by the estimated residual errors). The first dimension corresponds to the names of the \code{object} components. The third dimension is given by the coefficients names. For each coefficient, the rows of the associated array give the unscaled covariances between that coefficient and the remaining coefficients, by \code{lm} component. } \item{df}{an array with the number of degrees of freedom for the model and for residuals, for each \code{lm} component. } \item{df.residual}{the total number of degrees of freedom for residuals, corresponding to the sum of residuals df of all \code{lm} components. } \item{fstatistics}{an array with the F test statistics and corresponding degrees of freedom, for each \code{lm} component. } \item{pool}{the value of the \code{pool} argument to the function. } \item{r.squared}{a vector with the multiple R-squared statistics for each \code{lm} component. } \item{residuals}{a list with components given by the residuals from individual \code{lm} fits. } \item{RSE}{the pooled estimate of the residual standard error.} \item{sigma}{a vector with the residual standard error estimates for the individual \code{lm} fits. } \item{terms}{the terms object used in fitting the individual \code{lm} components. } } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{summary}} } \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) summary(fm1) } \keyword{models} nlme/man/anova.lme.Rd0000644000176000001440000001504612222512062014157 0ustar ripleyusers% File nlme/man/anova.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{anova.lme} \alias{anova.lme} \alias{print.anova.lme} \title{Compare Likelihoods of Fitted Objects} \usage{ \method{anova}{lme}(object, \dots, test, type, adjustSigma, Terms, L, verbose) \method{print}{anova.lme}(x, verbose, \dots) } \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{\dots}{other optional fitted model objects inheriting from classes \code{"gls"}, \code{"gnls"}, \code{"lm"}, \code{"lme"}, \code{"lmList"}, \code{"nlme"}, \code{"nlsList"}, or \code{"nls"}.} \item{test}{an optional logical value controlling whether likelihood ratio tests should be used to compare the fitted models represented by \code{object} and the objects in \code{\dots}. Defaults to \code{TRUE}.} \item{type}{an optional character string specifying the type of sum of squares to be used in F-tests for the terms in the model. If \code{"sequential"}, the sequential sum of squares obtained by including the terms in the order they appear in the model is used; else, if \code{"marginal"}, the marginal sum of squares obtained by deleting a term from the model at a time is used. This argument is only used when a single fitted object is passed to the function. Partial matching of arguments is used, so only the first character needs to be provided. Defaults to \code{"sequential"}.} \item{adjustSigma}{an optional logical value. If \code{TRUE} and the estimation method used to obtain \code{object} was maximum likelihood, the residual standard error is multiplied by \eqn{\sqrt{n_{obs}/(n_{obs} - n_{par})}}{sqrt(nobs/(nobs - npar))}, converting it to a REML-like estimate. This argument is only used when a single fitted object is passed to the function. Default is \code{TRUE}.} \item{Terms}{an optional integer or character vector specifying which terms in the model should be jointly tested to be zero using a Wald F-test. If given as a character vector, its elements must correspond to term names; else, if given as an integer vector, its elements must correspond to the order in which terms are included in the model. This argument is only used when a single fitted object is passed to the function. Default is \code{NULL}.} \item{L}{an optional numeric vector or array specifying linear combinations of the coefficients in the model that should be tested to be zero. If given as an array, its rows define the linear combinations to be tested. If names are assigned to the vector elements (array columns), they must correspond to coefficients names and will be used to map the linear combination(s) to the coefficients; else, if no names are available, the vector elements (array columns) are assumed in the same order as the coefficients appear in the model. This argument is only used when a single fitted object is passed to the function. Default is \code{NULL}.} \item{x}{an object inheriting from class \code{"anova.lme"}} \item{verbose}{an optional logical value. If \code{TRUE}, the calling sequences for each fitted model object are printed with the rest of the output, being omitted if \code{verbose = FALSE}. Defaults to \code{FALSE}.} } \description{ When only one fitted model object is present, a data frame with the sums of squares, numerator degrees of freedom, denominator degrees of freedom, F-values, and P-values for Wald tests for the terms in the model (when \code{Terms} and \code{L} are \code{NULL}), a combination of model terms (when \code{Terms} in not \code{NULL}), or linear combinations of the model coefficients (when \code{L} is not \code{NULL}). Otherwise, when multiple fitted objects are being compared, a data frame with the degrees of freedom, the (restricted) log-likelihood, the Akaike Information Criterion (AIC), and the Bayesian Information Criterion (BIC) of each object is returned. If \code{test=TRUE}, whenever two consecutive objects have different number of degrees of freedom, a likelihood ratio statistic, with the associated p-value is included in the returned data frame. } \value{ a data frame inheriting from class \code{"anova.lme"}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ Likelihood comparisons are not meaningful for objects fit using restricted maximum likelihood and with different fixed effects. } \seealso{\code{\link{gls}}, \code{\link{gnls}}, \code{\link{nlme}}, \code{\link{lme}}, \code{\link{AIC}}, \code{\link{BIC}}, \code{\link{print.anova.lme}}, \code{\link{logLik.lme}}, } \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) anova(fm1) fm2 <- update(fm1, random = pdDiag(~age)) anova(fm1, fm2) # Pinheiro and Bates, pp. 251-254 fm1Orth.gls <- gls(distance ~ Sex * I(age - 11), Orthodont, correlation = corSymm(form = ~ 1 | Subject), weights = varIdent(form = ~ 1 | age)) fm2Orth.gls <- update(fm1Orth.gls, corr = corCompSymm(form = ~ 1 | Subject)) # anova.gls anova(fm1Orth.gls, fm2Orth.gls) fm3Orth.gls <- update(fm2Orth.gls, weights = NULL) # anova.gls anova(fm2Orth.gls, fm3Orth.gls) fm4Orth.gls <- update(fm3Orth.gls, weights = varIdent(form = ~ 1 | Sex)) # anova.gls anova(fm3Orth.gls, fm4Orth.gls) # not in book but needed for the following command fm3Orth.lme <- lme(distance~Sex*I(age-11), data = Orthodont, random = ~ I(age-11) | Subject, weights = varIdent(form = ~ 1 | Sex)) # anova.lme to compare an "lme" object with a "gls" object anova(fm3Orth.lme, fm4Orth.gls, test = FALSE) # Pinheiro and Bates, pp. 222-225 options(contrasts = c("contr.treatment", "contr.poly")) fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight, random = ~ Time) fm2BW.lme <- update(fm1BW.lme, weights = varPower()) # Test a specific contrast anova(fm2BW.lme, L = c("Time:Diet2" = 1, "Time:Diet3" = -1)) fm1Theo.lis <- nlsList( conc ~ SSfol(Dose, Time, lKe, lKa, lCl), data=Theoph) fm1Theo.lis # Pinheiro and Bates, pp. 352-365 fm1Theo.lis <- nlsList( conc ~ SSfol(Dose, Time, lKe, lKa, lCl), data=Theoph) fm1Theo.nlme <- nlme(fm1Theo.lis) fm2Theo.nlme <- update(fm1Theo.nlme, random=pdDiag(lKe+lKa+lCl~1) ) fm3Theo.nlme <- update(fm2Theo.nlme, random=pdDiag(lKa+lCl~1) ) # anova comparing 3 models anova(fm1Theo.nlme, fm3Theo.nlme, fm2Theo.nlme) } \keyword{models} nlme/man/residuals.gnlsStruct.Rd0000644000176000001440000000220312222512062016430 0ustar ripleyusers% File nlme/man/residuals.gnlsStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{residuals.gnlsStruct} \title{Calculate gnlsStruct Residuals} \usage{ \method{residuals}{gnlsStruct}(object, \dots) } \alias{residuals.gnlsStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{gnlsStruct}"}, representing a list of model components, such as \code{corStruct} and \code{varFunc} objects, and attributes specifying the underlying nonlinear model and the response variable.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The residuals for the nonlinear model represented by \code{object} are extracted. } \value{ a vector with the residuals for the nonlinear model represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This method function is primarily used inside \code{gnls} and \code{residuals.gnls}. } \seealso{\code{\link{gnls}}, \code{\link{residuals.gnls}}, \code{\link{fitted.gnlsStruct}} } \keyword{models} nlme/man/fitted.gnlsStruct.Rd0000644000176000001440000000220712222512062015720 0ustar ripleyusers% File nlme/man/fitted.gnlsStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{fitted.gnlsStruct} \title{Calculate gnlsStruct Fitted Values} \usage{ \method{fitted}{gnlsStruct}(object, \dots) } \alias{fitted.gnlsStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{gnlsStruct}"}, representing a list of model components, such as \code{corStruct} and \code{varFunc} objects, and attributes specifying the underlying nonlinear model and the response variable.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The fitted values for the nonlinear model represented by \code{object} are extracted. } \value{ a vector with the fitted values for the nonlinear model represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This method function is generally only used inside \code{gnls} and \code{fitted.gnls}. } \seealso{\code{\link{gnls}}, %\code{\link{fitted.gnls}}, \code{\link{residuals.gnlsStruct}} } \keyword{models} nlme/man/plot.augPred.Rd0000644000176000001440000000310412222512062014633 0ustar ripleyusers% File nlme/man/plot.augPred.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.augPred} \title{Plot an augPred Object} \usage{ \method{plot}{augPred}(x, key, grid, \dots) } \alias{plot.augPred} \arguments{ \item{x}{an object of class \code{"\link{augPred}"}.} \item{key}{an optional logical value, or list. If \code{TRUE}, a legend is included at the top of the plot indicating which symbols (colors) correspond to which prediction levels. If \code{FALSE}, no legend is included. If given as a list, \code{key} is passed down as an argument to the \code{trellis} function generating the plots (\code{xyplot}). Defaults to \code{TRUE}.} \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default is \code{FALSE}.} \item{\dots}{optional arguments passed down to the \code{trellis} function generating the plots.} } \description{ A Trellis \code{xyplot} of predictions versus the primary covariate is generated, with a different panel for each value of the grouping factor. Predicted values are joined by lines, with different line types (colors) being used for each level of grouping. Original observations are represented by circles. } \value{ A Trellis plot of predictions versus the primary covariate, with panels determined by the grouping factor. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{augPred}}, \code{\link{xyplot}}} \examples{ fm1 <- lme(Orthodont) plot(augPred(fm1, level = 0:1, length.out = 2)) } \keyword{models} nlme/man/getCovariateFormula.Rd0000644000176000001440000000147612222471724016255 0ustar ripleyusers% File nlme/man/getCovariateFormula.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getCovariateFormula} \title{Extract Covariates Formula} \usage{ getCovariateFormula(object) } \alias{getCovariateFormula} \arguments{ \item{object}{any object from which a formula can be extracted.} } \description{ The right hand side of \code{formula(object)}, without any conditioning expressions (i.e. any expressions after a \code{|} operator) is returned as a one-sided formula. } \value{ a one-sided formula describing the covariates associated with \code{formula(object)}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getCovariate}}} \examples{ getCovariateFormula(y ~ x | g) getCovariateFormula(y ~ x) } \keyword{models} nlme/man/Earthquake.Rd0000644000176000001440000000452112222471724014376 0ustar ripleyusers% File nlme/man/Earthquake.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Earthquake} \alias{Earthquake} \title{Earthquake Intensity} \description{ The \code{Earthquake} data frame has 182 rows and 5 columns. } \format{ This data frame contains the following columns: \describe{ \item{Quake}{ an ordered factor with levels \code{20} < \code{16} < \code{14} < \code{10} < \code{3} < \code{8} < \code{23} < \code{22} < \code{6} < \code{13} < \code{7} < \code{21} < \code{18} < \code{15} < \code{4} < \code{12} < \code{19} < \code{5} < \code{9} < \code{1} < \code{2} < \code{17} < \code{11} indicating the earthquake on which the measurements were made. } \item{Richter}{ a numeric vector giving the intensity of the earthquake on the Richter scale. } \item{distance}{ the distance from the seismological measuring station to the epicenter of the earthquake (km). } \item{soil}{ a factor with levels \code{0} and \code{1} giving the soil condition at the measuring station, either soil or rock. } \item{accel}{ maximum horizontal acceleration observed (g). } } } \details{ Measurements recorded at available seismometer locations for 23 large earthquakes in western North America between 1940 and 1980. They were originally given in Joyner and Boore (1981); are mentioned in Brillinger (1987); and are analyzed in Davidian and Giltinan (1995). } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.8) Davidian, M. and Giltinan, D. M. (1995), \emph{Nonlinear Models for Repeated Measurement Data}, Chapman and Hall, London. Joyner and Boore (1981), Peak horizontal acceleration and velocity from strong-motion records including records from the 1979 Imperial Valley, California, earthquake, \emph{Bulletin of the Seismological Society of America}, \bold{71}, 2011-2038. Brillinger, D. (1987), Comment on a paper by C. R. Rao, \emph{Statistical Science}, \bold{2}, 448-450. } %\examples{} \keyword{datasets} nlme/man/pdFactor.reStruct.Rd0000644000176000001440000000260512222512062015650 0ustar ripleyusers% File nlme/man/pdFactor.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{pdFactor.reStruct} \title{Extract Square-Root Factor from Components of an reStruct Object} \usage{ \method{pdFactor}{reStruct}(object) } \alias{pdFactor.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} } \description{ This method function extracts square-root factors of the positive-definite matrices corresponding to the \code{pdMat} elements of \code{object}. } \value{ a vector with square-root factors of the positive-definite matrices corresponding to the elements of \code{object} stacked column-wise. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This function is used intensively in optimization algorithms and its value is returned as a vector for efficiency reasons. The \code{pdMatrix} function can be used to obtain square-root factors in matrix form. } \seealso{\code{\link{pdFactor}}, \code{\link{pdMatrix.reStruct}}, \code{\link{pdFactor.pdMat}}} \examples{ rs1 <- reStruct(pdSymm(diag(3), ~age+Sex, data = Orthodont)) pdFactor(rs1) } \keyword{models} nlme/man/plot.intervals.lmList.Rd0000644000176000001440000000302412222512062016517 0ustar ripleyusers% File nlme/man/plot.intervals.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.intervals.lmList} \title{Plot lmList Confidence Intervals} \usage{ \method{plot}{intervals.lmList}(x, \dots) } \alias{plot.intervals.lmList} \arguments{ \item{x}{an object inheriting from class \code{"\link{intervals.lmList}"}, representing confidence intervals and estimates for the coefficients in the \code{lm} components of the \code{lmList} object used to produce \code{x}. } \item{\dots}{optional arguments passed to the Trellis \code{dotplot} function. } } \description{ A Trellis dot-plot of the confidence intervals on the linear model coefficients is generated, with a different panel for each coefficient. Rows in the dot-plot correspond to the names of the \code{lm} components of the \code{lmList} object used to produce \code{x}. The lower and upper confidence limits are connected by a line segment and the estimated coefficients are marked with a \code{"+"}. The Trellis function \code{dotplot} is used in this method function. } \value{ a Trellis plot with the confidence intervals on the coefficients of the individual \code{lm} components of the \code{lmList} that generated \code{x}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{intervals.lmList}}, \code{\link{lmList}}, \code{\link{dotplot}}} \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) plot(intervals(fm1)) } \keyword{models} nlme/man/bdf.Rd0000644000176000001440000000370512222471724013042 0ustar ripleyusers% File nlme/man/bdf.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{bdf} \alias{bdf} \title{Language scores} \usage{data(bdf)} \description{ The \code{bdf} data frame has 2287 rows and 25 columns of language scores from grade 8 pupils in elementary schools in The Netherlands. } \format{ \describe{ \item{schoolNR}{a factor denoting the school.} \item{pupilNR}{a factor denoting the pupil.} \item{IQ.verb}{a numeric vector of verbal IQ scores} \item{IQ.perf}{a numeric vector of IQ scores.} \item{sex}{Sex of the student.} \item{Minority}{a factor indicating if the student is a member of a minority group.} \item{repeatgr}{an ordered factor indicating if one or more grades have been repeated.} \item{aritPRET}{a numeric vector} \item{classNR}{a numeric vector} \item{aritPOST}{a numeric vector} \item{langPRET}{a numeric vector} \item{langPOST}{a numeric vector} \item{ses}{a numeric vector of socioeconomic status indicators.} \item{denomina}{a factor indicating of the school is a public school, a Protestant private school, a Catholic private school, or a non-denominational private school.} \item{schoolSES}{a numeric vector} \item{satiprin}{a numeric vector} \item{natitest}{a factor with levels \code{0} and \code{1}} \item{meetings}{a numeric vector} \item{currmeet}{a numeric vector} \item{mixedgra}{a factor indicating if the class is a mixed-grade class.} \item{percmino}{a numeric vector} \item{aritdiff}{a numeric vector} \item{homework}{a numeric vector} \item{classsiz}{a numeric vector} \item{groupsiz}{a numeric vector} } } \source{ \url{http://stat.gamma.rug.nl/snijders/multilevel.htm} } \references{ Snijders, Tom and Bosker, Roel (1999), \emph{Multilevel Analysis: An Introduction to Basic and Advanced Multilevel Modeling}, Sage. } \examples{ summary(bdf) } \keyword{datasets} nlme/man/fixef.lmList.Rd0000644000176000001440000000176112222512062014642 0ustar ripleyusers% File nlme/man/fixef.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{fixef.lmList} \title{Extract lmList Fixed Effects} \usage{ \method{fixef}{lmList}(object, \dots) } \alias{fixed.effects.lmList} \alias{fixef.lmList} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} objects with a common model. } \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The average of the coefficients corresponding to the \code{lm} components of \code{object} is calculated. } \value{ a vector with the average of the individual \code{lm} coefficients in \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}, \code{\link{random.effects.lmList}}} \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) fixed.effects(fm1) } \keyword{models} nlme/man/corMatrix.Rd0000644000176000001440000000163512222512062014246 0ustar ripleyusers% File nlme/man/corMatrix.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corMatrix} \title{Extract Correlation Matrix} \usage{ corMatrix(object, \dots) } \alias{corMatrix} \arguments{ \item{object}{an object for which a correlation matrix can be extracted.} \item{\dots}{some methods for this generic function require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include all \code{corStruct} classes. } \value{ will depend on the method function used; see the appropriate documentation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{corMatrix.corStruct}}, \code{\link{corMatrix.pdMat}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/model.matrix.reStruct.Rd0000644000176000001440000000361112222512062016507 0ustar ripleyusers% File nlme/man/model.matrix.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{model.matrix.reStruct} \title{reStruct Model Matrix} \usage{ \method{model.matrix}{reStruct}(object, data, contrast, \dots) } \alias{model.matrix.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{data}{a data frame in which to evaluate the variables defined in \code{formula(object)}.} \item{contrast}{an optional named list specifying the contrasts to be used for representing the \code{factor} variables in \code{data}. The components names should match the names of the variables in \code{data} for which the contrasts are to be specified. The components of this list will be used as the \code{contrasts} attribute of the corresponding factor. If missing, the default contrast specification is used.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The model matrices for each element of \code{formula(object)}, calculated using \code{data}, are bound together column-wise. When multiple grouping levels are present (i.e. when \code{length(object) > 1}), the individual model matrices are combined from innermost (at the leftmost position) to outermost (at the rightmost position). } \value{ a matrix obtained by binding together, column-wise, the model matrices for each element of \code{formula(object)}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{model.matrix}}, \code{\link{contrasts}}, \code{\link{reStruct}}, \code{\link{formula.reStruct}}} \examples{ rs1 <- reStruct(list(Dog = ~day, Side = ~1), data = Pixel) model.matrix(rs1, Pixel) } \keyword{models} nlme/man/corSymm.Rd0000644000176000001440000000632712222512062013732 0ustar ripleyusers% File nlme/man/corSymm.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{corSymm} \title{General Correlation Structure} \usage{ corSymm(value, form, fixed) } \alias{corSymm} \arguments{ \item{value}{an optional vector with the parameter values. Default is \code{numeric(0)}, which results in a vector of zeros of appropriate dimension being assigned to the parameters when \code{object} is initialized (corresponding to an identity correlation structure).} \item{form}{a one sided formula of the form \code{~ t}, or \code{~ t | g}, specifying a time covariate \code{t} and, optionally, a grouping factor \code{g}. A covariate for this correlation structure must be integer valued. When a grouping factor is present in \code{form}, the correlation structure is assumed to apply only to observations within the same grouping level; observations with different grouping levels are assumed to be uncorrelated. Defaults to \code{~ 1}, which corresponds to using the order of the observations in the data as a covariate, and no groups.} \item{fixed}{an optional logical value indicating whether the coefficients should be allowed to vary in the optimization, or kept fixed at their initial value. Defaults to \code{FALSE}, in which case the coefficients are allowed to vary.} } \description{ This function is a constructor for the \code{corSymm} class, representing a general correlation structure. The internal representation of this structure, in terms of unconstrained parameters, uses the spherical parametrization defined in Pinheiro and Bates (1996). Objects created using this constructor must later be initialized using the appropriate \code{Initialize} method. } \value{ an object of class \code{corSymm} representing a general correlation structure. } \references{ Pinheiro, J.C. and Bates., D.M. (1996) "Unconstrained Parametrizations for Variance-Covariance Matrices", Statistics and Computing, 6, 289-296. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{Initialize.corSymm}}, \code{\link{summary.corSymm}} } \examples{ ## covariate is observation order and grouping factor is Subject cs1 <- corSymm(form = ~ 1 | Subject) # Pinheiro and Bates, p. 225 cs1CompSymm <- corCompSymm(value = 0.3, form = ~ 1 | Subject) cs1CompSymm <- Initialize(cs1CompSymm, data = Orthodont) corMatrix(cs1CompSymm) # Pinheiro and Bates, p. 226 cs1Symm <- corSymm(value = c(0.2, 0.1, -0.1, 0, 0.2, 0), form = ~ 1 | Subject) cs1Symm <- Initialize(cs1Symm, data = Orthodont) corMatrix(cs1Symm) # example gls(..., corSpher ...) # Pinheiro and Bates, pp. 261, 263 fm1Wheat2 <- gls(yield ~ variety - 1, Wheat2) # p. 262 fm2Wheat2 <- update(fm1Wheat2, corr = corSpher(c(28, 0.2), form = ~ latitude + longitude, nugget = TRUE)) # example gls(..., corSymm ... ) # Pinheiro and Bates, p. 251 fm1Orth.gls <- gls(distance ~ Sex * I(age - 11), Orthodont, correlation = corSymm(form = ~ 1 | Subject), weights = varIdent(form = ~ 1 | age)) } \keyword{models} nlme/man/glsObject.Rd0000644000176000001440000000507712222512062014216 0ustar ripleyusers% File nlme/man/glsObject.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{glsObject} \title{Fitted gls Object} \alias{glsObject} \description{ An object returned by the \code{\link{gls}} function, inheriting from class \code{"gls"} and representing a generalized least squares fitted linear model. Objects of this class have methods for the generic functions \code{anova}, \code{coef}, \code{fitted}, \code{formula}, \code{getGroups}, \code{getResponse}, \code{intervals}, \code{logLik}, \code{plot}, \code{predict}, \code{print}, \code{residuals}, \code{summary}, and \code{update}. } \value{ The following components must be included in a legitimate \code{"gls"} object. \item{apVar}{an approximate covariance matrix for the variance-covariance coefficients. If \code{apVar = FALSE} in the list of control values used in the call to \code{gls}, this component is equal to \code{NULL}.} \item{call}{a list containing an image of the \code{gls} call that produced the object.} \item{coefficients}{a vector with the estimated linear model coefficients.} \item{contrasts}{a list with the contrasts used to represent factors in the model formula. This information is important for making predictions from a new data frame in which not all levels of the original factors are observed. If no factors are used in the model, this component will be an empty list.} \item{dims}{a list with basic dimensions used in the model fit, including the components \code{N} - the number of observations in the data and \code{p} - the number of coefficients in the linear model.} \item{fitted}{a vector with the fitted values..} \item{glsStruct}{an object inheriting from class \code{glsStruct}, representing a list of linear model components, such as \code{corStruct} and \code{varFunc} objects.} \item{groups}{a vector with the correlation structure grouping factor, if any is present.} \item{logLik}{the log-likelihood at convergence.} \item{method}{the estimation method: either \code{"ML"} for maximum likelihood, or \code{"REML"} for restricted maximum likelihood.} \item{numIter}{the number of iterations used in the iterative algorithm.} \item{residuals}{a vector with the residuals.} \item{sigma}{the estimated residual standard error.} \item{varBeta}{an approximate covariance matrix of the coefficients estimates.} } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gls}}, \code{glsStruct}} \keyword{models} nlme/man/getData.Rd0000644000176000001440000000157512222512062013652 0ustar ripleyusers% File nlme/man/getData.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getData} \title{Extract Data from an Object} \usage{ getData(object) } \alias{getData} \arguments{ \item{object}{an object from which a data.frame can be extracted, generally a fitted model object.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include \code{gls}, \code{lme}, and \code{lmList}. } \value{ will depend on the method function used; see the appropriate documentation. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{getData.gls}}, \code{\link{getData.lme}}, \code{\link{getData.lmList}} } \examples{ ## see the method function documentation } \keyword{models} nlme/man/Dim.pdMat.Rd0000644000176000001440000000166712222512062014060 0ustar ripleyusers% File nlme/man/Dim.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Dim.pdMat} \title{Dimensions of a pdMat Object} \usage{ \method{Dim}{pdMat}(object, \dots) } \alias{Dim.pdMat} \alias{Dim.pdCompSymm} \alias{Dim.pdDiag} \alias{Dim.pdIdent} \alias{Dim.pdNatural} \alias{Dim.pdSymm} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive-definite matrix.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function returns the dimensions of the matrix represented by \code{object}. } \value{ an integer vector with the number of rows and columns of the matrix represented by \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{Dim}}} \examples{ Dim(pdSymm(diag(3))) } \keyword{models} nlme/man/plot.ACF.Rd0000644000176000001440000000322612222512062013642 0ustar ripleyusers% File nlme/man/plot.ACF.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{plot.ACF} \title{Plot an ACF Object} \usage{ \method{plot}{ACF}(x, alpha, xlab, ylab, grid, \dots) } \alias{plot.ACF} \arguments{ \item{x}{an object inheriting from class \code{ACF}, consisting of a data frame with two columns named \code{lag} and \code{ACF}, representing the autocorrelation values and the corresponding lags. } \item{alpha}{an optional numeric value with the significance level for testing if the autocorrelations are zero. Lines corresponding to the lower and upper critical values for a test of level \code{alpha} are added to the plot. Default is \code{0}, in which case no lines are plotted. } \item{xlab,ylab}{optional character strings with the x- and y-axis labels. Default respectively to \code{"Lag"} and \code{"Autocorrelation"}. } \item{grid}{an optional logical value indicating whether a grid should be added to plot. Default is \code{FALSE}.} \item{\dots}{optional arguments passed to the \code{xyplot} function.} } \description{ an \code{xyplot} of the autocorrelations versus the lags, with \code{type = "h"}, is produced. If \code{alpha > 0}, curves representing the critical limits for a two-sided test of level \code{alpha} for the autocorrelations are added to the plot. } \value{ an \code{xyplot} Trellis plot. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{ACF}}, \code{\link{xyplot}}} \examples{ fm1 <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary) plot(ACF(fm1, maxLag = 10), alpha = 0.01) } \keyword{models} nlme/man/ranef.lmList.Rd0000644000176000001440000000667012222512062014640 0ustar ripleyusers% File nlme/man/ranef.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{ranef.lmList} \title{Extract lmList Random Effects} \usage{ \method{ranef}{lmList}(object, augFrame, data, which, FUN, standard, omitGroupingFactor, \dots) } \alias{random.effects.lmList} \alias{ranef.lmList} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmList}"}, representing a list of \code{lm} objects with a common model. } \item{augFrame}{an optional logical value. If \code{TRUE}, the returned data frame is augmented with variables defined in \code{data}; else, if \code{FALSE}, only the coefficients are returned. Defaults to \code{FALSE}.} \item{data}{an optional data frame with the variables to be used for augmenting the returned data frame when \code{augFrame = TRUE}. Defaults to the data frame used to fit \code{object}.} \item{which}{an optional positive integer vector specifying which columns of \code{data} should be used in the augmentation of the returned data frame. Defaults to all columns in \code{data}.} \item{FUN}{an optional summary function or a list of summary functions to be applied to group-varying variables, when collapsing \code{data} by groups. Group-invariant variables are always summarized by the unique value that they assume within that group. If \code{FUN} is a single function it will be applied to each non-invariant variable by group to produce the summary for that variable. If \code{FUN} is a list of functions, the names in the list should designate classes of variables in the frame such as \code{ordered}, \code{factor}, or \code{numeric}. The indicated function will be applied to any group-varying variables of that class. The default functions to be used are \code{mean} for numeric factors, and \code{Mode} for both \code{factor} and \code{ordered}. The \code{Mode} function, defined internally in \code{gsummary}, returns the modal or most popular value of the variable. It is different from the \code{mode} function that returns the S-language mode of the variable.} \item{standard}{an optional logical value indicating whether the estimated random effects should be "standardized" (i.e. divided by the corresponding estimated standard error). Defaults to \code{FALSE}.} \item{omitGroupingFactor}{an optional logical value. When \code{TRUE} the grouping factor itself will be omitted from the group-wise summary of \code{data} but the levels of the grouping factor will continue to be used as the row names for the returned data frame. Defaults to \code{FALSE}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ The difference between the individual \code{lm} components coefficients and their average is calculated. } \value{ a vector with the differences between the individual \code{lm} coefficients in \code{object} and their average. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 100, 461. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{fixed.effects.lmList}}, \code{\link{lmList}}, \code{\link{random.effects}} } \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) ranef(fm1) random.effects(fm1) # same as above } \keyword{models} nlme/man/nlme.Rd0000644000176000001440000002304212222512062013225 0ustar ripleyusers% File nlme/man/nlme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{nlme} \title{Nonlinear Mixed-Effects Models} \usage{ nlme(model, data, fixed, random, groups, start, correlation, weights, subset, method, na.action, naPattern, control, verbose) } \alias{nlme} \alias{nlme.formula} \arguments{ \item{model}{a nonlinear model formula, with the response on the left of a \code{~} operator and an expression involving parameters and covariates on the right, or an \code{nlsList} object. If \code{data} is given, all names used in the formula should be defined as parameters or variables in the data frame. The method function \code{nlme.nlsList} is documented separately.} \item{data}{an optional data frame containing the variables named in \code{model}, \code{fixed}, \code{random}, \code{correlation}, \code{weights}, \code{subset}, and \code{naPattern}. By default the variables are taken from the environment from which \code{nlme} is called.} \item{fixed}{a two-sided linear formula of the form \code{f1+...+fn~x1+...+xm}, or a list of two-sided formulas of the form \code{f1~x1+...+xm}, with possibly different models for different parameters. The \code{f1,...,fn} are the names of parameters included on the right hand side of \code{model} and the \code{x1+...+xm} expressions define linear models for these parameters (when the left hand side of the formula contains several parameters, they all are assumed to follow the same linear model, described by the right hand side expression). A \code{1} on the right hand side of the formula(s) indicates a single fixed effects for the corresponding parameter(s).} \item{random}{optionally, any of the following: (i) a two-sided formula of the form \code{r1+...+rn~x1+...+xm | g1/.../gQ}, with \code{r1,...,rn} naming parameters included on the right hand side of \code{model}, \code{x1+...+xm} specifying the random-effects model for these parameters and \code{g1/.../gQ} the grouping structure (\code{Q} may be equal to 1, in which case no \code{/} is required). The random effects formula will be repeated for all levels of grouping, in the case of multiple levels of grouping; (ii) a two-sided formula of the form \code{r1+...+rn~x1+..+xm}, a list of two-sided formulas of the form \code{r1~x1+...+xm}, with possibly different random-effects models for different parameters, a \code{pdMat} object with a two-sided formula, or list of two-sided formulas (i.e. a non-\code{NULL} value for \code{formula(random)}), or a list of pdMat objects with two-sided formulas, or lists of two-sided formulas. In this case, the grouping structure formula will be given in \code{groups}, or derived from the data used to fit the nonlinear mixed-effects model, which should inherit from class \code{groupedData},; (iii) a named list of formulas, lists of formulas, or \code{pdMat} objects as in (ii), with the grouping factors as names. The order of nesting will be assumed the same as the order of the order of the elements in the list; (iv) an \code{reStruct} object. See the documentation on \code{pdClasses} for a description of the available \code{pdMat} classes. Defaults to \code{fixed}, resulting in all fixed effects having also random effects.} \item{groups}{an optional one-sided formula of the form \code{~g1} (single level of nesting) or \code{~g1/.../gQ} (multiple levels of nesting), specifying the partitions of the data over which the random effects vary. \code{g1,...,gQ} must evaluate to factors in \code{data}. The order of nesting, when multiple levels are present, is taken from left to right (i.e. \code{g1} is the first level, \code{g2} the second, etc.).} \item{start}{an optional numeric vector, or list of initial estimates for the fixed effects and random effects. If declared as a numeric vector, it is converted internally to a list with a single component \code{fixed}, given by the vector. The \code{fixed} component is required, unless the model function inherits from class \code{selfStart}, in which case initial values will be derived from a call to \code{nlsList}. An optional \code{random} component is used to specify initial values for the random effects and should consist of a matrix, or a list of matrices with length equal to the number of grouping levels. Each matrix should have as many rows as the number of groups at the corresponding level and as many columns as the number of random effects in that level.} \item{correlation}{an optional \code{corStruct} object describing the within-group correlation structure. See the documentation of \code{corClasses} for a description of the available \code{corStruct} classes. Defaults to \code{NULL}, corresponding to no within-group correlations.} \item{weights}{an optional \code{varFunc} object or one-sided formula describing the within-group heteroscedasticity structure. If given as a formula, it is used as the argument to \code{varFixed}, corresponding to fixed variance weights. See the documentation on \code{varClasses} for a description of the available \code{varFunc} classes. Defaults to \code{NULL}, corresponding to homoscedastic within-group errors.} \item{subset}{an optional expression indicating the subset of the rows of \code{data} that should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the row names to be included. All observations are included by default.} \item{method}{a character string. If \code{"REML"} the model is fit by maximizing the restricted log-likelihood. If \code{"ML"} the log-likelihood is maximized. Defaults to \code{"ML"}.} \item{na.action}{a function that indicates what should happen when the data contain \code{NA}s. The default action (\code{na.fail}) causes \code{nlme} to print an error message and terminate if there are any incomplete observations.} \item{naPattern}{an expression or formula object, specifying which returned values are to be regarded as missing.} \item{control}{a list of control values for the estimation algorithm to replace the default values returned by the function \code{nlmeControl}. Defaults to an empty list.} \item{verbose}{an optional logical value. If \code{TRUE} information on the evolution of the iterative algorithm is printed. Default is \code{FALSE}.} } \description{ This generic function fits a nonlinear mixed-effects model in the formulation described in Lindstrom and Bates (1990) but allowing for nested random effects. The within-group errors are allowed to be correlated and/or have unequal variances. } \value{ an object of class \code{nlme} representing the nonlinear mixed-effects model fit. Generic functions such as \code{print}, \code{plot} and \code{summary} have methods to show the results of the fit. See \code{nlmeObject} for the components of the fit. The functions \code{resid}, \code{coef}, \code{fitted}, \code{fixed.effects}, and \code{random.effects} can be used to extract some of its components. } \note{ The function does not do any scaling internally: the optimization will work best when the response is scaled so its variance is of the order of one. } \references{ The model formulation and computational methods are described in Lindstrom, M.J. and Bates, D.M. (1990). The variance-covariance parametrizations are described in Pinheiro, J.C. and Bates., D.M. (1996). The different correlation structures available for the \code{correlation} argument are described in Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994), Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996), and Venables, W.N. and Ripley, B.D. (2002). The use of variance functions for linear and nonlinear mixed effects models is presented in detail in Davidian, M. and Giltinan, D.M. (1995). Box, G.E.P., Jenkins, G.M., and Reinsel G.C. (1994) "Time Series Analysis: Forecasting and Control", 3rd Edition, Holden-Day. Davidian, M. and Giltinan, D.M. (1995) "Nonlinear Mixed Effects Models for Repeated Measurement Data", Chapman and Hall. Laird, N.M. and Ware, J.H. (1982) "Random-Effects Models for Longitudinal Data", Biometrics, 38, 963-974. Littel, R.C., Milliken, G.A., Stroup, W.W., and Wolfinger, R.D. (1996) "SAS Systems for Mixed Models", SAS Institute. Lindstrom, M.J. and Bates, D.M. (1990) "Nonlinear Mixed Effects Models for Repeated Measures Data", Biometrics, 46, 673-687. Pinheiro, J.C. and Bates., D.M. (1996) "Unconstrained Parametrizations for Variance-Covariance Matrices", Statistics and Computing, 6, 289-296. Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. Venables, W.N. and Ripley, B.D. (2002) "Modern Applied Statistics with S", 4th Edition, Springer-Verlag. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{nlmeControl}}, \code{\link{nlme.nlsList}}, \code{\link{nlmeObject}}, \code{\link{nlsList}}, \code{\link{nlmeStruct}}, \code{\link{pdClasses}}, \code{\link{reStruct}}, \code{\link{varFunc}}, \code{\link{corClasses}}, \code{\link{varClasses}} } \examples{ fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, fixed = Asym + R0 + lrc ~ 1, random = Asym ~ 1, start = c(Asym = 103, R0 = -8.5, lrc = -3.3)) summary(fm1) fm2 <- update(fm1, random = pdDiag(Asym + lrc ~ 1)) summary(fm2) } \keyword{models} nlme/man/varFixed.Rd0000644000176000001440000000243112222512062014041 0ustar ripleyusers% File nlme/man/varFixed.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varFixed} \title{Fixed Variance Function} \usage{ varFixed(value) } \alias{varFixed} \arguments{ \item{value}{a one-sided formula of the form \code{~ v} specifying a variance covariate \code{v}. Grouping factors are ignored.} } \description{ This function is a constructor for the \code{varFixed} class, representing a variance function with fixed variances. Letting \eqn{v} denote the variance covariate defined in \code{value}, the variance function \eqn{\sigma^2(v)}{s2(v)} for this class is \eqn{\sigma^2(v)=|v|}{s2(v)=|v|}. The variance covariate \eqn{v} is evaluated once at initialization and remains fixed thereafter. No coefficients are required to represent this variance function. } \value{ a \code{varFixed} object representing a fixed variance function structure, also inheriting from class \code{varFunc}. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{ \code{\link{varClasses}}, \code{\link{varWeights.varFunc}}, \code{\link{varFunc}}} \examples{ vf1 <- varFixed(~age) } \keyword{models} nlme/man/Quinidine.Rd0000644000176000001440000000667712222471724014247 0ustar ripleyusers% File nlme/man/Quinidine.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Quinidine} \alias{Quinidine} \title{Quinidine Kinetics} \description{ The \code{Quinidine} data frame has 1471 rows and 14 columns. } \format{ This data frame contains the following columns: \describe{ \item{Subject}{ a factor identifying the patient on whom the data were collected. } \item{time}{ a numeric vector giving the time (hr) at which the drug was administered or the blood sample drawn. This is measured from the time the patient entered the study. } \item{conc}{ a numeric vector giving the serum quinidine concentration (mg/L). } \item{dose}{ a numeric vector giving the dose of drug administered (mg). Although there were two different forms of quinidine administered, the doses were adjusted for differences in salt content by conversion to milligrams of quinidine base. } \item{interval}{ a numeric vector giving the when the drug has been given at regular intervals for a sufficiently long period of time to assume steady state behavior, the interval is recorded. } \item{Age}{ a numeric vector giving the age of the subject on entry to the study (yr). } \item{Height}{ a numeric vector giving the height of the subject on entry to the study (in.). } \item{Weight}{ a numeric vector giving the body weight of the subject (kg). } \item{Race}{ a factor with levels \code{Caucasian}, \code{Latin}, and \code{Black} identifying the race of the subject. } \item{Smoke}{ a factor with levels \code{no} and \code{yes} giving smoking status at the time of the measurement. } \item{Ethanol}{ a factor with levels \code{none}, \code{current}, \code{former} giving ethanol (alcohol) abuse status at the time of the measurement. } \item{Heart}{ a factor with levels \code{No/Mild}, \code{Moderate}, and \code{Severe} indicating congestive heart failure for the subject. } \item{Creatinine}{ an ordered factor with levels \code{< 50} < \code{>= 50} indicating the creatine clearance (mg/min). } \item{glyco}{ a numeric vector giving the alpha-1 acid glycoprotein concentration (mg/dL). Often measured at the same time as the quinidine concentration. } } } \details{ Verme et al. (1992) analyze routine clinical data on patients receiving the drug quinidine as a treatment for cardiac arrythmia (atrial fibrillation of ventricular arrythmias). All patients were receiving oral quinidine doses. At irregular intervals blood samples were drawn and serum concentrations of quinidine were determined. These data are analyzed in several publications, including Davidian and Giltinan (1995, section 9.3). } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.25) Davidian, M. and Giltinan, D. M. (1995), \emph{Nonlinear Models for Repeated Measurement Data}, Chapman and Hall, London. Verme, C. N., Ludden, T. M., Clementi, W. A. and Harris, S. C. (1992), Pharmacokinetics of quinidine in male patients: A population analysis, \emph{Clinical Pharmacokinetics}, \bold{22}, 468-480. } %\examples{} \keyword{datasets} nlme/man/fitted.nlmeStruct.Rd0000644000176000001440000000465212222512062015716 0ustar ripleyusers% File nlme/man/fitted.nlmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{fitted.nlmeStruct} \title{Calculate nlmeStruct Fitted Values} \usage{ \method{fitted}{nlmeStruct}(object, level, conLin, \dots) } \alias{fitted.nlmeStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{nlmeStruct}"}, representing a list of mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects, plus attributes specifying the underlying nonlinear model and the response variable.} \item{level}{an optional integer vector giving the level(s) of grouping to be used in extracting the fitted values from \code{object}. Level values increase from outermost to innermost grouping, with level zero corresponding to the population fitted values. Defaults to the highest or innermost level of grouping.} \item{conLin}{an optional condensed linear model object, consisting of a list with components \code{"Xy"}, corresponding to a regression matrix (\code{X}) combined with a response vector (\code{y}), and \code{"logLik"}, corresponding to the log-likelihood of the underlying nlme model. Defaults to \code{attr(object, "conLin")}.} \item{\dots}{additional arguments that could be given to this method. None are used.} } \description{ The fitted values at level \eqn{i} are obtained by adding together the contributions from the estimated fixed effects and the estimated random effects at levels less or equal to \eqn{i} and evaluating the model function at the resulting estimated parameters. The resulting values estimate the predictions at level \eqn{i}. } \value{ if a single level of grouping is specified in \code{level}, the returned value is a vector with the fitted values at the desired level; else, when multiple grouping levels are specified in \code{level}, the returned object is a matrix with columns given by the fitted values at different levels. } \references{ Bates, D.M. and Pinheiro, J.C. (1998) "Computational methods for multilevel models" available in PostScript or PDF formats at http://nlme.stat.wisc.edu/pub/NLME/ } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \note{ This method function is generally only used inside \code{nlme} and \code{fitted.nlme}. } \seealso{\code{\link{nlme}}, \code{\link{residuals.nlmeStruct}}} \keyword{models} nlme/man/getGroups.data.frame.Rd0000644000176000001440000000371712222512062016261 0ustar ripleyusers% File nlme/man/getGroups.data.frame.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getGroups.data.frame} \title{Extract Groups from a Data Frame} \usage{ \method{getGroups}{data.frame}(object, form, level, data, sep) } \alias{getGroups.data.frame} \arguments{ \item{object}{an object inheriting from class \code{data.frame}.} \item{form}{an optional formula with a conditioning expression on its right hand side (i.e. an expression involving the \code{|} operator). Defaults to \code{formula(object)}.} \item{level}{a positive integer vector with the level(s) of grouping to be used when multiple nested levels of grouping are present. Defaults to all levels of nesting.} \item{data}{unused} \item{sep}{character, the separator to use between group levels when multiple levels are collapsed. The default is \code{'/'}.} } \description{ Each variable named in the expression after the \code{|} operator on the right hand side of \code{form} is evaluated in \code{object}. If more than one variable is indicated in \code{level} they are combined into a data frame; else the selected variable is returned as a vector. When multiple grouping levels are defined in \code{form} and \code{level > 1}, the levels of the returned factor are obtained by pasting together the levels of the grouping factors of level greater or equal to \code{level}, to ensure their uniqueness. } \value{ either a data frame with columns given by the grouping factors indicated in \code{level}, from outer to inner, or, when a single level is requested, a factor representing the selected grouping factor. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 100, 461. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getGroupsFormula}}} \examples{ getGroups(Pixel) getGroups(Pixel, level = 2) } \keyword{models} nlme/man/getGroups.corStruct.Rd0000644000176000001440000000303312222512062016236 0ustar ripleyusers% File nlme/man/getGroups.corStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getGroups.corStruct} \title{Extract corStruct Groups} \usage{ \method{getGroups}{corStruct}(object, form, level, data, sep) } \alias{getGroups.corStruct} \arguments{ \item{object}{an object inheriting from class \code{corStruct} representing a correlation structure.} \item{form}{this argument is included to make the method function compatible with the generic. It will be assigned the value of \code{formula(object)} and should not be modified.} \item{level}{this argument is included to make the method function compatible with the generic and is not used.} \item{data}{an optional data frame in which to evaluate the variables defined in \code{form}, in case \code{object} is not initialized and the grouping factor needs to be evaluated.} \item{sep}{character, the separator to use between group levels when multiple levels are collapsed. The default is \code{'/'}.} } \description{ This method function extracts the grouping factor associated with \code{object}, if any is present. } \value{ if a grouping factor is present in the correlation structure represented by \code{object}, the function returns the corresponding factor vector; else the function returns \code{NULL}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{getGroups}}} \examples{ cs1 <- corAR1(form = ~ 1 | Subject) getGroups(cs1, data = Orthodont) } \keyword{models} nlme/man/Wafer.Rd0000644000176000001440000000220512222471724013345 0ustar ripleyusers% File nlme/man/Wafer.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Wafer} \alias{Wafer} \title{Modeling of Analog MOS Circuits} \description{ The \code{Wafer} data frame has 400 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Wafer}{ a factor with levels \code{1} \code{2} \code{3} \code{4} \code{5} \code{6} \code{7} \code{8} \code{9} \code{10} } \item{Site}{ a factor with levels \code{1} \code{2} \code{3} \code{4} \code{5} \code{6} \code{7} \code{8} } \item{voltage}{ a numeric vector } \item{current}{ a numeric vector } } } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } %\examples{} \keyword{datasets} nlme/man/getGroups.lmList.Rd0000644000176000001440000000313112222512062015511 0ustar ripleyusers% File nlme/man/getGroups.lmList.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{getGroups.lmList} \title{Extract lmList Object Groups} \usage{ \method{getGroups}{lmList}(object, form, level, data, sep) } \alias{getGroups.lmList} \arguments{ \item{object}{an object inheriting from class \code{lmList}, representing a list of \code{lm} objects with a common model.} \item{form}{an optional formula with a conditioning expression on its right hand side (i.e. an expression involving the \code{|} operator). Defaults to \code{formula(object)}. Not used.} \item{level}{a positive integer vector with the level(s) of grouping to be used when multiple nested levels of grouping are present. This argument is optional for most methods of this generic function and defaults to all levels of nesting. Not used.} \item{data}{a data frame in which to interpret the variables named in \code{form}. Optional for most methods. Not used.} \item{sep}{character, the separator to use between group levels when multiple levels are collapsed. The default is \code{'/'}. Not used.} } \description{ The grouping factor determining the partitioning of the observations used to produce the \code{lm} components of \code{object} is extracted. } \value{ a vector with the grouping factor corresponding to the \code{lm} components of \code{object}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lmList}}} \examples{ fm1 <- lmList(distance ~ age | Subject, Orthodont) getGroups(fm1) } \keyword{models} nlme/man/splitFormula.Rd0000644000176000001440000000173012222512062014753 0ustar ripleyusers% File nlme/man/splitFormula.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{splitFormula} \title{Split a Formula} \usage{ splitFormula(form, sep) } \alias{splitFormula} \arguments{ \item{form}{a \code{formula} object.} \item{sep}{an optional character string specifying the separator to be used for splitting the formula. Defaults to \code{"/"}. } } \description{ Splits the right hand side of \code{form} into a list of subformulas according to the presence of \code{sep}. The left hand side of \code{form}, if present, will be ignored. The length of the returned list will be equal to the number of occurrences of \code{sep} in \code{form} plus one. } \value{ a list of formulas, corresponding to the split of \code{form} according to \code{sep}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{formula}}} \examples{ splitFormula(~ g1/g2/g3) } \keyword{models} nlme/man/Names.pdMat.Rd0000644000176000001440000000310112222512062014373 0ustar ripleyusers% File nlme/man/Names.pdMat.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Names.pdMat} \title{Names of a pdMat Object} \usage{ \method{Names}{pdMat}(object, \dots) \method{Names}{pdMat}(object, \dots) <- value } \alias{Names.pdMat} \alias{Names<-.pdMat} \arguments{ \item{object}{an object inheriting from class \code{"\link{pdMat}"}, representing a positive-definite matrix.} \item{value}{a character vector with the replacement values for the column and row names of the matrix represented by \code{object}. It must have length equal to the dimension of the matrix represented by \code{object} and, if names have been previously assigned to \code{object}, it must correspond to a permutation of the original names.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ This method function returns the fist element of the \code{Dimnames} attribute of \code{object}, which contains the column names of the matrix represented by \code{object}. } \value{ if \code{object} has a \code{Dimnames} attribute then the first element of this attribute is returned; otherwise \code{NULL}. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \section{SIDE EFFECTS}{ On the left side of an assignment, sets the \code{Dimnames} attribute of \code{object} to \code{list(value, value)}. } \seealso{\code{\link{Names}}, \code{\link{Names.pdBlocked}}} \examples{ pd1 <- pdSymm(~age, data = Orthodont) Names(pd1) } \keyword{models} nlme/man/gnlsControl.Rd0000644000176000001440000000661612222512062014606 0ustar ripleyusers% File nlme/man/gnlsControl.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{gnlsControl} \alias{gnlsControl} \title{Control Values for gnls Fit} \usage{ gnlsControl(maxIter, nlsMaxIter, msMaxIter, minScale, tolerance, nlsTol, msTol, msScale, returnObject, msVerbose, apVar, .relStep, nlmStepMax, opt = c("nlminb", "optim"), optimMethod, minAbsParApVar) } \arguments{ \item{maxIter}{maximum number of iterations for the \code{gnls} optimization algorithm. Default is 50.} \item{nlsMaxIter}{maximum number of iterations for the \code{nls} optimization step inside the \code{gnls} optimization. Default is 7.} \item{msMaxIter}{maximum number of iterations for the \code{ms} optimization step inside the \code{gnls} optimization. Default is 50.} \item{minScale}{minimum factor by which to shrink the default step size in an attempt to decrease the sum of squares in the \code{nls} step. Default 0.001.} \item{tolerance}{tolerance for the convergence criterion in the \code{gnls} algorithm. Default is 1e-6.} \item{nlsTol}{tolerance for the convergence criterion in \code{nls} step. Default is 1e-3.} \item{msTol}{tolerance for the convergence criterion in \code{ms}, passed as the \code{rel.tolerance} argument to the function (see documentation on \code{ms}). Default is 1e-7.} \item{msScale}{scale function passed as the \code{scale} argument to the \code{ms} function (see documentation on that function). Default is \code{lmeScale}.} \item{returnObject}{a logical value indicating whether the fitted object should be returned when the maximum number of iterations is reached without convergence of the algorithm. Default is \code{FALSE}.} \item{msVerbose}{a logical value passed as the \code{trace} argument to \code{ms} (see documentation on that function). Default is \code{FALSE}.} \item{apVar}{a logical value indicating whether the approximate covariance matrix of the variance-covariance parameters should be calculated. Default is \code{TRUE}.} \item{.relStep}{relative step for numerical derivatives calculations. Default is \code{.Machine$double.eps^(1/3)}.} \item{opt}{the optimizer to be used, either \code{\link{nlminb}} (the default since (\R 2.2.0) or \code{\link{optim}} (the previous default).} \item{optimMethod}{character - the optimization method to be used with the \code{\link{optim}} optimizer. The default is \code{"BFGS"}. An alternative is \code{"L-BFGS-B"}.} \item{nlmStepMax}{stepmax value to be passed to nlm. See \code{\link{nlm}} for details. Default is 100.0} \item{minAbsParApVar}{numeric value - minimum absolute parameter value in the approximate variance calculation. The default is \code{0.05}.} } \description{ The values supplied in the function call replace the defaults and a list with all possible arguments is returned. The returned list is used as the \code{control} argument to the \code{gnls} function. } \value{ a list with components for each of the possible arguments. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{gnls}}, \code{\link{lmeScale}}} \examples{ # decrease the maximum number iterations in the ms call and # request that information on the evolution of the ms iterations be printed gnlsControl(msMaxIter = 20, msVerbose = TRUE) } \keyword{models} nlme/man/varWeights.lmeStruct.Rd0000644000176000001440000000237512222512062016404 0ustar ripleyusers% File nlme/man/varWeights.lmeStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{varWeights.lmeStruct} \title{Variance Weights for lmeStruct Object} \usage{ \method{varWeights}{lmeStruct}(object) } \alias{varWeights.lmeStruct} \arguments{ \item{object}{an object inheriting from class \code{"\link{lmeStruct}"}, representing a list of linear mixed-effects model components, such as \code{reStruct}, \code{corStruct}, and \code{varFunc} objects.} } \description{ If \code{object} includes a \code{varStruct} component, the inverse of the standard deviations of the variance function structure represented by the corresponding \code{varFunc} object are returned; else, a vector of ones of length equal to the number of observations in the data frame used to fit the associated linear mixed-effects model is returned. } \value{ if \code{object} includes a \code{varStruct} component, a vector with the corresponding variance weights; else, or a vector of ones. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{varWeights}}} \keyword{models} nlme/man/intervals.lme.Rd0000644000176000001440000000604712222471724015074 0ustar ripleyusers% File nlme/man/intervals.lme.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{intervals.lme} \title{Confidence Intervals on lme Parameters} \usage{ \method{intervals}{lme}(object, level, which, \dots) } \alias{intervals.lme} \alias{print.intervals.lme} \arguments{ \item{object}{an object inheriting from class \code{"\link{lme}"}, representing a fitted linear mixed-effects model.} \item{level}{an optional numeric value with the confidence level for the intervals. Defaults to 0.95.} \item{which}{an optional character string specifying the subset of parameters for which to construct the confidence intervals. Possible values are \code{"all"} for all parameters, \code{"var-cov"} for the variance-covariance parameters only, and \code{"fixed"} for the fixed effects only. Defaults to \code{"all"}.} \item{\dots}{some methods for this generic require additional arguments. None are used in this method.} } \description{ Approximate confidence intervals for the parameters in the linear mixed-effects model represented by \code{object} are obtained, using a normal approximation to the distribution of the (restricted) maximum likelihood estimators (the estimators are assumed to have a normal distribution centered at the true parameter values and with covariance matrix equal to the negative inverse Hessian matrix of the (restricted) log-likelihood evaluated at the estimated parameters). Confidence intervals are obtained in an unconstrained scale first, using the normal approximation, and, if necessary, transformed to the constrained scale. The \code{pdNatural} parametrization is used for general positive-definite matrices. } \value{ a list with components given by data frames with rows corresponding to parameters and columns \code{lower}, \code{est.}, and \code{upper} representing respectively lower confidence limits, the estimated values, and upper confidence limits for the parameters. Possible components are: \item{fixed}{fixed effects, only present when \code{which} is not equal to \code{"var-cov"}.} \item{reStruct}{random effects variance-covariance parameters, only present when \code{which} is not equal to \code{"fixed"}.} \item{corStruct}{within-group correlation parameters, only present when \code{which} is not equal to \code{"fixed"} and a correlation structure is used in \code{object}.} \item{varFunc}{within-group variance function parameters, only present when \code{which} is not equal to \code{"fixed"} and a variance function structure is used in \code{object}.} \item{sigma}{within-group standard deviation.} } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{lme}}, \code{\link{intervals}}, \code{\link{print.intervals.lme}}, \code{\link{pdNatural}}} \examples{ fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject) intervals(fm1) } \keyword{models} nlme/man/random.effects.Rd0000644000176000001440000000203512222512062015167 0ustar ripleyusers% File nlme/man/random.effects.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{random.effects} \title{Extract Random Effects} \usage{ random.effects(object, \dots) ranef(object, \dots) } \alias{random.effects} \alias{ranef} \alias{print.ranef} \arguments{ \item{object}{any fitted model object from which random effects estimates can be extracted.} \item{\dots}{some methods for this generic function require additional arguments.} } \description{ This function is generic; method functions can be written to handle specific classes of objects. Classes which already have methods for this function include \code{lmList} and \code{lme}. } \value{ will depend on the method function used; see the appropriate documentation. } \references{ Pinheiro, J.C., and Bates, D.M. (2000) "Mixed-Effects Models in S and S-PLUS", Springer, esp. pp. 100, 461. } \seealso{\code{\link{ranef.lmList}},\code{\link{ranef.lme}}} \examples{ ## see the method function documentation } \keyword{models} nlme/man/Assay.Rd0000644000176000001440000000402312222471724013361 0ustar ripleyusers% File nlme/man/Assay.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Assay} \alias{Assay} \title{Bioassay on Cell Culture Plate} \description{ The \code{Assay} data frame has 60 rows and 4 columns. } \format{ This data frame contains the following columns: \describe{ \item{Block}{ an ordered factor with levels \code{2} < \code{1} identifying the block where the wells are measured. } \item{sample}{ a factor with levels \code{a} to \code{f} identifying the sample corresponding to the well. } \item{dilut}{ a factor with levels \code{1} to \code{5} indicating the dilution applied to the well } \item{logDens}{ a numeric vector of the log-optical density } } } \details{ These data, courtesy of Rich Wolfe and David Lansky from Searle, Inc., come from a bioassay run on a 96-well cell culture plate. The assay is performed using a split-block design. The 8 rows on the plate are labeled A--H from top to bottom and the 12 columns on the plate are labeled 1--12 from left to right. Only the central 60 wells of the plate are used for the bioassay (the intersection of rows B--G and columns 2--11). There are two blocks in the design: Block 1 contains columns 2--6 and Block 2 contains columns 7--11. Within each block, six samples are assigned randomly to rows and five (serial) dilutions are assigned randomly to columns. The response variable is the logarithm of the optical density. The cells are treated with a compound that they metabolize to produce the stain. Only live cells can make the stain, so the optical density is a measure of the number of cells that are alive and healthy.} \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.2) } %\examples{} \keyword{datasets} nlme/man/as.matrix.reStruct.Rd0000644000176000001440000000222412222512062016011 0ustar ripleyusers% File nlme/man/as.matrix.reStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{as.matrix.reStruct} \title{Matrices of an reStruct Object} \usage{ \method{as.matrix}{reStruct}(x, \dots) } \alias{as.matrix.reStruct} \arguments{ \item{x}{an object inheriting from class \code{"\link{reStruct}"}, representing a random effects structure and consisting of a list of \code{pdMat} objects.} \item{\dots}{further arguments passed from other methods.} } \description{ This method function extracts the positive-definite matrices corresponding to the \code{pdMat} elements of \code{object}. } \value{ a list with components given by the positive-definite matrices corresponding to the elements of \code{object}. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{as.matrix.pdMat}}, \code{\link{reStruct}}, \code{\link{pdMat}}} \examples{ rs1 <- reStruct(pdSymm(diag(3), ~age+Sex, data = Orthodont)) as.matrix(rs1) } \keyword{models} nlme/man/Orthodont.Rd0000644000176000001440000000350112222471724014261 0ustar ripleyusers% File nlme/man/Orthodont.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{Orthodont} \alias{Orthodont} \title{Growth curve data on an orthdontic measurement} \description{ The \code{Orthodont} data frame has 108 rows and 4 columns of the change in an orthdontic measurement over time for several young subjects. } \format{ This data frame contains the following columns: \describe{ \item{distance}{ a numeric vector of distances from the pituitary to the pterygomaxillary fissure (mm). These distances are measured on x-ray images of the skull. } \item{age}{ a numeric vector of ages of the subject (yr). } \item{Subject}{ an ordered factor indicating the subject on which the measurement was made. The levels are labelled \code{M01} to \code{M16} for the males and \code{F01} to \code{F13} for the females. The ordering is by increasing average distance within sex. } \item{Sex}{ a factor with levels \code{Male} and \code{Female} } } } \details{ Investigators at the University of North Carolina Dental School followed the growth of 27 children (16 males, 11 females) from age 8 until age 14. Every two years they measured the distance between the pituitary and the pterygomaxillary fissure, two points that are easily identified on x-ray exposures of the side of the head. } \source{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. (Appendix A.17) Potthoff, R. F. and Roy, S. N. (1964), ``A generalized multivariate analysis of variance model useful especially for growth curve problems'', \emph{Biometrika}, \bold{51}, 313--326. } \examples{ formula(Orthodont) plot(Orthodont) } \keyword{datasets} nlme/man/balancedGrouped.Rd0000644000176000001440000000442412222512062015354 0ustar ripleyusers% File nlme/man/balancedGrouped.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{balancedGrouped} \alias{balancedGrouped} \title{Create a groupedData object from a matrix} \usage{ balancedGrouped(form, data, labels=NULL, units=NULL) } \arguments{ \item{form}{A formula of the form \code{y ~ x | g} giving the name of the response, the primary covariate, and the grouping factor.} \item{data}{A matrix or data frame containing the values of the response grouped according to the levels of the grouping factor (rows) and the distinct levels of the primary covariate (columns). The \code{dimnames} of the matrix are used to construct the levels of the grouping factor and the primary covariate.} \item{labels}{an optional list of character strings giving labels for the response and the primary covariate. The label for the primary covariate is named \code{x} and that for the response is named \code{y}. Either label can be omitted.} \item{units}{an optional list of character strings giving the units for the response and the primary covariate. The units string for the primary covariate is named \code{x} and that for the response is named \code{y}. Either units string can be omitted.} } \description{ Create a \code{groupedData} object from a data matrix. This function can be used only with balanced data. The opposite conversion, from a \code{groupedData} object to a \code{matrix}, is done with \code{asTable}. } \value{ A balanced \code{groupedData} object. } \references{ Pinheiro, J. C. and Bates, D. M. (2000), \emph{Mixed-Effects Models in S and S-PLUS}, Springer, New York. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{groupedData}}, \code{\link{isBalanced}}, \code{\link{asTable}}} \examples{ OrthoMat <- asTable( Orthodont ) Orth2 <- balancedGrouped(distance ~ age | Subject, data = OrthoMat, labels = list(x = "Age", y = "Distance from pituitary to pterygomaxillary fissure"), units = list(x = "(yr)", y = "(mm)")) Orth2[ 1:10, ] ## check the first few entries # Pinheiro and Bates, p. 109 ergoStool.mat <- asTable(ergoStool) balancedGrouped(effort~Type|Subject, data=ergoStool.mat) } \keyword{data} nlme/man/needUpdate.modelStruct.Rd0000644000176000001440000000222412222512062016653 0ustar ripleyusers% File nlme/man/needUpdate.modelStruct.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{needUpdate.modelStruct} \title{Check if a modelStruct Object Needs Updating} \usage{ \method{needUpdate}{modelStruct}(object) } \alias{needUpdate.modelStruct} \alias{needUpdate.corStruct} \alias{needUpdate.reStruct} \arguments{ \item{object}{an object inheriting from class \code{"modelStruct"}, representing a list of model components, such as \code{corStruct} and \code{varFunc} objects.} } \description{ This method function checks if any of the elements of \code{object} needs to be updated. Updating of objects usually takes place in iterative algorithms in which auxiliary quantities associated with the object, and not being optimized over, may change. } \value{ a logical value indicating whether any element of \code{object} needs to be updated. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{needUpdate}} } \examples{ lms1 <- lmeStruct(reStruct = reStruct(pdDiag(diag(2), ~age)), varStruct = varPower(form = ~age)) needUpdate(lms1) } \keyword{models} nlme/man/nlmeControl.Rd0000644000176000001440000001075012222471724014601 0ustar ripleyusers% File nlme/man/nlmeControl.Rd % Part of the nlme package for R % Distributed under GPL 2 or later: see nlme/LICENCE.note \name{nlmeControl} \title{Control Values for nlme Fit} \usage{ nlmeControl(maxIter, pnlsMaxIter, msMaxIter, minScale, tolerance, niterEM, pnlsTol, msTol, msScale, returnObject, msVerbose, gradHess, apVar, .relStep, nlmStepMax = 100.0, minAbsParApVar = 0.05, opt = c("nlminb", "nlm"), natural = TRUE, \dots) } \alias{nlmeControl} \arguments{ \item{maxIter}{maximum number of iterations for the \code{nlme} optimization algorithm. Default is 50.} \item{pnlsMaxIter}{maximum number of iterations for the \code{PNLS} optimization step inside the \code{nlme} optimization. Default is 7.} \item{msMaxIter}{maximum number of iterations for the \code{nlm} optimization step inside the \code{nlme} optimization. Default is 50.} \item{minScale}{minimum factor by which to shrink the default step size in an attempt to decrease the sum of squares in the \code{PNLS} step. Default 0.001.} \item{tolerance}{tolerance for the convergence criterion in the \code{nlme} algorithm. Default is 1e-6.} \item{niterEM}{number of iterations for the EM algorithm used to refine the initial estimates of the random effects variance-covariance coefficients. Default is 25.} \item{pnlsTol}{tolerance for the convergence criterion in \code{PNLS} step. Default is 1e-3.} \item{msTol}{tolerance for the convergence criterion in \code{nlm}, passed as the \code{rel.tolerance} argument to the function (see documentation on \code{nlm}). Default is 1e-7. } \item{msScale}{scale function passed as the \code{scale} argument to the \code{nlm} function (see documentation on that function). Default is \code{lmeScale}.} \item{returnObject}{a logical value indicating whether the fitted object should be returned when the maximum number of iterations is reached without convergence of the algorithm. Default is \code{FALSE}.} \item{msVerbose}{a logical value passed as the \code{trace} argument to \code{nlm} (see documentation on that function). Default is \code{FALSE}.} \item{gradHess}{a logical value indicating whether numerical gradient vectors and Hessian matrices of the log-likelihood function should be used in the \code{nlm} optimization. This option is only available when the correlation structure (\code{corStruct}) and the variance function structure (\code{varFunc}) have no "varying" parameters and the \code{pdMat} classes used in the random effects structure are \code{pdSymm} (general positive-definite), \code{pdDiag} (diagonal), \code{pdIdent} (multiple of the identity), or \code{pdCompSymm} (compound symmetry). Default is \code{TRUE}.} \item{apVar}{a logical value indicating whether the approximate covariance matrix of the variance-covariance parameters should be calculated. Default is \code{TRUE}.} \item{.relStep}{relative step for numerical derivatives calculations. Default is \code{.Machine$double.eps^(1/3)}.} \item{nlmStepMax}{stepmax value to be passed to \code{\link{nlm}}. See \code{\link{nlm}} for details. Default is 100.0} \item{minAbsParApVar}{numeric value - minimum absolute parameter value in the approximate variance calculation. The default is \code{0.05}.} \item{opt}{the optimizer to be used, either \code{"link{nlminb}"}(the default) or \code{"link{nlm}"}.} \item{natural}{a logical value indicating whether the \code{pdNatural} parametrization should be used for general positive-definite matrices (\code{pdSymm}) in \code{reStruct}, when the approximate covariance matrix of the estimators is calculated. Default is \code{TRUE}.} \item{\dots}{Further named control arguments to be passed to \code{\link{nlminb}}, where used (\code{eval.max} and those from \code{abs.tol} down).} } \description{ The values supplied in the function call replace the defaults and a list with all possible arguments is returned. The returned list is used as the \code{control} argument to the \code{nlme} function. } \value{ a list with components for each of the possible arguments. } \author{José Pinheiro and Douglas Bates \email{bates@stat.wisc.edu}} \seealso{\code{\link{nlme}}, \code{\link{nlm}}, \code{\link{optim}}, \code{\link{nlmeStruct}}} \examples{ # decrease the maximum number iterations in the ms call and # request that information on the evolution of the ms iterations be printed nlmeControl(msMaxIter = 20, msVerbose = TRUE) } \keyword{models} nlme/LICENCE.note0000644000176000001440000000054612164302040013163 0ustar ripleyusersThis software is distributed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of the GNU General Public License version 2 is in file GPL-2 in the sources of this package, and is also available at http://www.r-project.org/Licenses/ nlme/INDEX0000644000176000001440000004013211176412254012032 0ustar ripleyusersACF Autocorrelation Function ACF.gls Autocorrelation Function for gls Residuals ACF.lme Autocorrelation Function for lme Residuals Alfalfa Split-Plot Experiment on Varieties of Alfalfa allCoef Extract Coefficients from a Set of Objects anova.gls Compare Likelihoods of Fitted Objects anova.lme Compare Likelihoods of Fitted Objects as.matrix.corStruct Matrix of a corStruct Object as.matrix.pdMat Matrix of a pdMat Object as.matrix.reStruct Matrices of an reStruct Object asOneFormula Combine Formulas of a Set of Objects Assay Bioassay on Cell Culture Plate asTable Convert groupedData to a matrix augPred Augmented Predictions balancedGrouped Create a groupedData object from a matrix bdf Language scores BIC Bayesian Information Criterion BIC.logLik BIC of a logLik Object BodyWeight Rat weight over time for different diets Cefamandole Pharmacokinetics of Cefamandole coef<- Assign Values to Coefficients coef.corStruct Coefficients of a corStruct Object coef.gnls Extract gnls Coefficients coef.lme Extract lme Coefficients coef.lmList Extract lmList Coefficients coef.modelStruct Extract modelStruct Object Coefficients coef.pdMat pdMat Object Coefficients coef.reStruct reStruct Object Coefficients coef.varFunc varFunc Object Coefficients collapse Collapse According to Groups collapse.groupedData Collapse a groupedData Object compareFits Compare Fitted Objects comparePred Compare Predictions corAR1 AR(1) Correlation Structure corARMA ARMA(p,q) Correlation Structure corCAR1 Continuous AR(1) Correlation Structure corClasses Correlation Structure Classes corCompSymm Compound Symmetry Correlation Structure corExp Exponential Correlation Structure corFactor Factor of a Correlation Matrix corFactor.corStruct Factor of a corStruct Object Matrix corGaus Gaussian Correlation Structure corLin Linear Correlation Structure corMatrix Extract Correlation Matrix corMatrix.corStruct Matrix of a corStruct Object corMatrix.pdMat Extract Correlation Matrix from a pdMat Object corMatrix.reStruct Extract Correlation Matrix from Components of an reStruct Object corNatural General correlation in natural parameterization corRatio Rational Quadratic Correlation Structure corSpatial Spatial Correlation Structure corSpher Spherical Correlation Structure corSymm General Correlation Structure covariate<- Assign Covariate Values covariate<-.varFunc Assign varFunc Covariate Dialyzer High-Flux Hemodialyzer Dim Extract Dimensions from an Object Dim.corSpatial Dimensions of a corSpatial Object Dim.corStruct Dimensions of a corStruct Object Dim.pdMat Dimensions of a pdMat Object Earthquake Earthquake Intensity ergoStool Ergometrics experiment with stool types Fatigue Cracks caused by metal fatigue fdHess Finite difference Hessian fitted.glsStruct Calculate glsStruct Fitted Values fitted.gnlsStruct Calculate gnlsStruct Fitted Values fitted.lme Extract lme Fitted Values fitted.lmeStruct Calculate lmeStruct Fitted Values fitted.lmList Extract lmList Fitted Values fitted.nlmeStruct Calculate nlmeStruct Fitted Values fixed.effects Extract Fixed Effects fixef.lmList Extract lmList Fixed Effects formula.pdBlocked Extract pdBlocked Formula formula.pdMat Extract pdMat Formula formula.reStruct Extract reStruct Object Formula gapply Apply a Function by Groups Gasoline Refinery yield of gasoline getCovariate Extract Covariate from an Object getCovariate.corStruct Extract corStruct Object Covariate getCovariate.data.frame Extract Data Frame Covariate getCovariateFormula Extract Covariates Formula getCovariate.varFunc Extract varFunc Covariate getData Extract Data from an Object getData.gls Extract gls Object Data getData.lme Extract lme Object Data getData.lmList Extract lmList Object Data getGroups Extract Grouping Factors from an Object getGroups.corStruct Extract corStruct Groups getGroups.data.frame Extract Groups from a Data Frame getGroupsFormula Extract Grouping Formula getGroups.gls Extract gls Object Groups getGroups.lme Extract lme Object Groups getGroups.lmList Extract lmList Object Groups getGroups.varFunc Extract varFunc Groups getResponse Extract Response Variable from an Object getResponseFormula Extract Formula Specifying Response Variable getVarCov Extract variance-covariance matrix gls Fit Linear Model Using Generalized Least Squares glsControl Control Values for gls Fit glsObject Fitted gls Object glsStruct Generalized Least Squares Structure Glucose Glucose levels over time Glucose2 Glucose Levels Following Alcohol Ingestion gnls Fit Nonlinear Model Using Generalized Least Squares gnlsControl Control Values for gnls Fit gnlsObject Fitted gnls Object gnlsStruct Generalized Nonlinear Least Squares Structure groupedData Construct a groupedData Object gsummary Summarize by Groups Gun Methods for firing naval guns IGF Radioimmunoassay of IGF-I Protein Initialize Initialize Object Initialize.corStruct Initialize corStruct Object Initialize.glsStruct Initialize a glsStruct Object Initialize.lmeStruct Initialize an lmeStruct Object Initialize.reStruct Initialize reStruct Object Initialize.varFunc Initialize varFunc Object intervals Confidence Intervals on Coefficients intervals.gls Confidence Intervals on gls Parameters intervals.lme Confidence Intervals on lme Parameters intervals.lmList Confidence Intervals on lmList Coefficients isBalanced Check a Design for Balance isInitialized Check if Object is Initialized LDEsysMat Generate system matrix for LDEs lme Linear Mixed-Effects Models lmeControl Control Values for lme Fit lme.groupedData LME fit from groupedData Object lme.lmList LME fit from lmList Object lmeObject Fitted lme Object lmeScale Scale for lme Optimization lmeStruct Linear Mixed-Effects Structure lmList List of lm Objects with a Common Model lmList.groupedData lmList Fit from a groupedData Object logDet Extract the Logarithm of the Determinant logDet.corStruct Extract corStruct Log-Determinant logDet.pdMat Extract Log-Determinant from a pdMat Object logDet.reStruct Extract reStruct Log-Determinants logLik.corStruct Extract corStruct Log-Likelihood logLik.glsStruct Log-Likelihood of a glsStruct Object logLik.gnls Log-Likelihood of a gnls Object logLik.gnlsStruct Log-Likelihood of a gnlsStruct Object logLik.lme Log-Likelihood of an lme Object logLik.lmeStruct Log-Likelihood of an lmeStruct Object logLik.lmList Log-Likelihood of an lmList Object logLik.reStruct Calculate reStruct Log-Likelihood logLik.varFunc Extract varFunc logLik Machines Productivity Scores for Machines and Workers MathAchieve Mathematics achievement scores MathAchSchool School demographic data for MathAchieve matrix<- Assign Matrix Values matrix<-.pdMat Assign Matrix to a pdMat Object matrix<-.reStruct Assign reStruct Matrices Meat Tenderness of meat Milk Protein content of cows' milk model.matrix.reStruct reStruct Model Matrix Muscle Contraction of heart muscle sections Names Names Associated with an Object Names.formula Extract Names from a formula Names.pdBlocked Names of a pdBlocked Object Names.pdMat Names of a pdMat Object Names.reStruct Names of an reStruct Object needUpdate Check if Update is Needed needUpdate.modelStruct Check if a modelStruct Object Needs Updating Nitrendipene Assay of nitrendipene nlme Nonlinear Mixed-Effects Models nlmeControl Control Values for nlme Fit nlme.nlsList NLME fit from nlsList Object nlmeObject Fitted nlme Object nlmeStruct Nonlinear Mixed-Effects Structure nlsList List of nls Objects with a Common Model nlsList.selfStart nlsList Fit from a selfStart Function Oats Split-plot Experiment on Varieties of Oats Orthodont Growth curve data on an orthdontic measurement Ovary Counts of Ovarian Follicles Oxboys Heights of Boys in Oxford Oxide Variability in Semiconductor Manufacturing pairs.compareFits Pairs Plot of compareFits Object pairs.lme Pairs Plot of an lme Object pairs.lmList Pairs Plot of an lmList Object PBG Effect of Phenylbiguanide on Blood Pressure pdBlocked Positive-Definite Block Diagonal Matrix pdClasses Positive-Definite Matrix Classes pdCompSymm Positive-Definite Matrix with Compound Symmetry Structure pdConstruct Construct pdMat Objects pdConstruct.pdBlocked Construct pdBlocked Objects pdDiag Diagonal Positive-Definite Matrix pdFactor Square-Root Factor of a Positive-Definite Matrix pdFactor.reStruct Extract Square-Root Factor from Components of an reStruct Object pdIdent Multiple of the Identity Positive-Definite Matrix pdLogChol General Positive-Definite Matrix pdMat Positive-Definite Matrix [.pdMat Subscript a pdMat Object pdMatrix Extract Matrix or Square-Root Factor from a pdMat Object pdMatrix.reStruct Extract Matrix or Square-Root Factor from Components of an reStruct Object pdNatural General Positive-Definite Matrix in Natural Parametrization pdSymm General Positive-Definite Matrix Phenobarb Phenobarbitol Kinetics phenoModel Model function for the Phenobarb data Pixel X-ray pixel intensities over time plot.ACF Plot an ACF Object plot.augPred Plot an augPred Object plot.compareFits Plot a compareFits Object plot.gls Plot a gls Object plot.intervals.lmList Plot lmList Confidence Intervals plot.lme Plot an lme or nls object plot.lmList Plot an lmList Object plot.nffGroupedData Plot an nffGroupedData Object plot.nfnGroupedData Plot an nfnGroupedData Object plot.nmGroupedData Plot an nmGroupedData Object plot.ranef.lme Plot a ranef.lme Object plot.ranef.lmList Plot a ranef.lmList Object plot.Variogram Plot a Variogram Object pooledSD Extract Pooled Standard Deviation predict.gls Predictions from a gls Object predict.gnls Predictions from a gnls Object predict.lme Predictions from an lme Object predict.lmList Predictions from an lmList Object predict.nlme Predictions from an nlme Object print.summary.pdMat Print a summary.pdMat Object print.varFunc Print a varFunc Object qqnorm.gls Normal Plot of Residuals from a gls Object qqnorm.lme Normal Plot of Residuals or Random Effects from an lme Object Quinidine Quinidine Kinetics quinModel Model function for the Quinidine data Rail Evaluation of Stress in Railway Rails random.effects Extract Random Effects ranef.lme Extract lme Random Effects ranef.lmList Extract lmList Random Effects RatPupWeight The weight of rat pups recalc Recalculate Condensed Linear Model Object recalc.corStruct Recalculate for corStruct Object recalc.modelStruct Recalculate for a modelStruct Object recalc.reStruct Recalculate for an reStruct Object recalc.varFunc Recalculate for varFunc Object Relaxin Assay for Relaxin Remifentanil Pharmacokinetics of remifentanil residuals.gls Extract gls Residuals residuals.glsStruct Calculate glsStruct Residuals residuals.gnlsStruct Calculate gnlsStruct Residuals residuals.lme Extract lme Residuals residuals.lmeStruct Calculate lmeStruct Residuals residuals.lmList Extract lmList Residuals residuals.nlmeStruct Calculate nlmeStruct Residuals reStruct Random Effects Structure simulate.lme Simulate results from lme models solve.pdMat Calculate Inverse of a Positive-Definite Matrix solve.reStruct Apply Solve to an reStruct Object Soybean Growth of soybean plants splitFormula Split a Formula Spruce Growth of Spruce Trees summary.corStruct Summarize a corStruct Object summary.gls Summarize a gls Object summary.lme Summarize an lme Object summary.lmList Summarize an lmList Object summary.modelStruct Summarize a modelStruct Object summary.nlsList Summarize an nlsList Object summary.pdMat Summarize a pdMat Object summary.varFunc Summarize varFunc Object Tetracycline1 Pharmacokinetics of tetracycline Tetracycline2 Pharmacokinetics of tetracycline update.modelStruct Update a modelStruct Object update.varFunc Update varFunc Object varClasses Variance Function Classes varComb Combination of Variance Functions varConstPower Constant Plus Power Variance Function VarCorr Extract variance and correlation components varExp Exponential Variance Function varFixed Fixed Variance Function varFunc Variance Function Structure varIdent Constant Variance Function Variogram Calculate Semi-variogram Variogram.corExp Calculate Semi-variogram for a corExp Object Variogram.corGaus Calculate Semi-variogram for a corGaus Object Variogram.corLin Calculate Semi-variogram for a corLin Object Variogram.corRatio Calculate Semi-variogram for a corRatio Object Variogram.corSpatial Calculate Semi-variogram for a corSpatial Object Variogram.corSpher Calculate Semi-variogram for a corSpher Object Variogram.default Calculate Semi-variogram Variogram.gls Calculate Semi-variogram for Residuals from a gls Object Variogram.lme Calculate Semi-variogram for Residuals from an lme Object varPower Power Variance Function varWeights Extract Variance Function Weights varWeights.glsStruct Variance Weights for glsStruct Object varWeights.lmeStruct Variance Weights for lmeStruct Object Wafer Modeling of Analog MOS Circuits Wheat Yields by growing conditions Wheat2 Wheat Yield Trials