library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(broom.mixed)
## Warning: package 'broom.mixed' was built under R version 4.3.1
library(lme4)
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## 
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
#creación de datos
CO2
## Grouped Data: uptake ~ conc | Plant
##    Plant        Type  Treatment conc uptake
## 1    Qn1      Quebec nonchilled   95   16.0
## 2    Qn1      Quebec nonchilled  175   30.4
## 3    Qn1      Quebec nonchilled  250   34.8
## 4    Qn1      Quebec nonchilled  350   37.2
## 5    Qn1      Quebec nonchilled  500   35.3
## 6    Qn1      Quebec nonchilled  675   39.2
## 7    Qn1      Quebec nonchilled 1000   39.7
## 8    Qn2      Quebec nonchilled   95   13.6
## 9    Qn2      Quebec nonchilled  175   27.3
## 10   Qn2      Quebec nonchilled  250   37.1
## 11   Qn2      Quebec nonchilled  350   41.8
## 12   Qn2      Quebec nonchilled  500   40.6
## 13   Qn2      Quebec nonchilled  675   41.4
## 14   Qn2      Quebec nonchilled 1000   44.3
## 15   Qn3      Quebec nonchilled   95   16.2
## 16   Qn3      Quebec nonchilled  175   32.4
## 17   Qn3      Quebec nonchilled  250   40.3
## 18   Qn3      Quebec nonchilled  350   42.1
## 19   Qn3      Quebec nonchilled  500   42.9
## 20   Qn3      Quebec nonchilled  675   43.9
## 21   Qn3      Quebec nonchilled 1000   45.5
## 22   Qc1      Quebec    chilled   95   14.2
## 23   Qc1      Quebec    chilled  175   24.1
## 24   Qc1      Quebec    chilled  250   30.3
## 25   Qc1      Quebec    chilled  350   34.6
## 26   Qc1      Quebec    chilled  500   32.5
## 27   Qc1      Quebec    chilled  675   35.4
## 28   Qc1      Quebec    chilled 1000   38.7
## 29   Qc2      Quebec    chilled   95    9.3
## 30   Qc2      Quebec    chilled  175   27.3
## 31   Qc2      Quebec    chilled  250   35.0
## 32   Qc2      Quebec    chilled  350   38.8
## 33   Qc2      Quebec    chilled  500   38.6
## 34   Qc2      Quebec    chilled  675   37.5
## 35   Qc2      Quebec    chilled 1000   42.4
## 36   Qc3      Quebec    chilled   95   15.1
## 37   Qc3      Quebec    chilled  175   21.0
## 38   Qc3      Quebec    chilled  250   38.1
## 39   Qc3      Quebec    chilled  350   34.0
## 40   Qc3      Quebec    chilled  500   38.9
## 41   Qc3      Quebec    chilled  675   39.6
## 42   Qc3      Quebec    chilled 1000   41.4
## 43   Mn1 Mississippi nonchilled   95   10.6
## 44   Mn1 Mississippi nonchilled  175   19.2
## 45   Mn1 Mississippi nonchilled  250   26.2
## 46   Mn1 Mississippi nonchilled  350   30.0
## 47   Mn1 Mississippi nonchilled  500   30.9
## 48   Mn1 Mississippi nonchilled  675   32.4
## 49   Mn1 Mississippi nonchilled 1000   35.5
## 50   Mn2 Mississippi nonchilled   95   12.0
## 51   Mn2 Mississippi nonchilled  175   22.0
## 52   Mn2 Mississippi nonchilled  250   30.6
## 53   Mn2 Mississippi nonchilled  350   31.8
## 54   Mn2 Mississippi nonchilled  500   32.4
## 55   Mn2 Mississippi nonchilled  675   31.1
## 56   Mn2 Mississippi nonchilled 1000   31.5
## 57   Mn3 Mississippi nonchilled   95   11.3
## 58   Mn3 Mississippi nonchilled  175   19.4
## 59   Mn3 Mississippi nonchilled  250   25.8
## 60   Mn3 Mississippi nonchilled  350   27.9
## 61   Mn3 Mississippi nonchilled  500   28.5
## 62   Mn3 Mississippi nonchilled  675   28.1
## 63   Mn3 Mississippi nonchilled 1000   27.8
## 64   Mc1 Mississippi    chilled   95   10.5
## 65   Mc1 Mississippi    chilled  175   14.9
## 66   Mc1 Mississippi    chilled  250   18.1
## 67   Mc1 Mississippi    chilled  350   18.9
## 68   Mc1 Mississippi    chilled  500   19.5
## 69   Mc1 Mississippi    chilled  675   22.2
## 70   Mc1 Mississippi    chilled 1000   21.9
## 71   Mc2 Mississippi    chilled   95    7.7
## 72   Mc2 Mississippi    chilled  175   11.4
## 73   Mc2 Mississippi    chilled  250   12.3
## 74   Mc2 Mississippi    chilled  350   13.0
## 75   Mc2 Mississippi    chilled  500   12.5
## 76   Mc2 Mississippi    chilled  675   13.7
## 77   Mc2 Mississippi    chilled 1000   14.4
## 78   Mc3 Mississippi    chilled   95   10.6
## 79   Mc3 Mississippi    chilled  175   18.0
## 80   Mc3 Mississippi    chilled  250   17.9
## 81   Mc3 Mississippi    chilled  350   17.9
## 82   Mc3 Mississippi    chilled  500   17.9
## 83   Mc3 Mississippi    chilled  675   18.9
## 84   Mc3 Mississippi    chilled 1000   19.9
datos=CO2
View(datos)
uptake_2= runif(84,0.02,0.04)
up=uptake_2+CO2$uptake



datos_n= data.frame(CO2$Plant, CO2$Type, CO2$Treatment, CO2$conc, up)
datos_n
##    CO2.Plant    CO2.Type CO2.Treatment CO2.conc        up
## 1        Qn1      Quebec    nonchilled       95 16.026297
## 2        Qn1      Quebec    nonchilled      175 30.435972
## 3        Qn1      Quebec    nonchilled      250 34.823886
## 4        Qn1      Quebec    nonchilled      350 37.232888
## 5        Qn1      Quebec    nonchilled      500 35.322103
## 6        Qn1      Quebec    nonchilled      675 39.224760
## 7        Qn1      Quebec    nonchilled     1000 39.725725
## 8        Qn2      Quebec    nonchilled       95 13.627980
## 9        Qn2      Quebec    nonchilled      175 27.333127
## 10       Qn2      Quebec    nonchilled      250 37.134386
## 11       Qn2      Quebec    nonchilled      350 41.832380
## 12       Qn2      Quebec    nonchilled      500 40.628455
## 13       Qn2      Quebec    nonchilled      675 41.424386
## 14       Qn2      Quebec    nonchilled     1000 44.339815
## 15       Qn3      Quebec    nonchilled       95 16.221948
## 16       Qn3      Quebec    nonchilled      175 32.432990
## 17       Qn3      Quebec    nonchilled      250 40.331765
## 18       Qn3      Quebec    nonchilled      350 42.139784
## 19       Qn3      Quebec    nonchilled      500 42.932919
## 20       Qn3      Quebec    nonchilled      675 43.926320
## 21       Qn3      Quebec    nonchilled     1000 45.538265
## 22       Qc1      Quebec       chilled       95 14.233396
## 23       Qc1      Quebec       chilled      175 24.138150
## 24       Qc1      Quebec       chilled      250 30.322738
## 25       Qc1      Quebec       chilled      350 34.638108
## 26       Qc1      Quebec       chilled      500 32.522706
## 27       Qc1      Quebec       chilled      675 35.425608
## 28       Qc1      Quebec       chilled     1000 38.732399
## 29       Qc2      Quebec       chilled       95  9.335057
## 30       Qc2      Quebec       chilled      175 27.323376
## 31       Qc2      Quebec       chilled      250 35.024087
## 32       Qc2      Quebec       chilled      350 38.832181
## 33       Qc2      Quebec       chilled      500 38.631348
## 34       Qc2      Quebec       chilled      675 37.529962
## 35       Qc2      Quebec       chilled     1000 42.438603
## 36       Qc3      Quebec       chilled       95 15.136276
## 37       Qc3      Quebec       chilled      175 21.037558
## 38       Qc3      Quebec       chilled      250 38.137662
## 39       Qc3      Quebec       chilled      350 34.022657
## 40       Qc3      Quebec       chilled      500 38.936024
## 41       Qc3      Quebec       chilled      675 39.622491
## 42       Qc3      Quebec       chilled     1000 41.421495
## 43       Mn1 Mississippi    nonchilled       95 10.638828
## 44       Mn1 Mississippi    nonchilled      175 19.220886
## 45       Mn1 Mississippi    nonchilled      250 26.224325
## 46       Mn1 Mississippi    nonchilled      350 30.023920
## 47       Mn1 Mississippi    nonchilled      500 30.930636
## 48       Mn1 Mississippi    nonchilled      675 32.431158
## 49       Mn1 Mississippi    nonchilled     1000 35.522488
## 50       Mn2 Mississippi    nonchilled       95 12.037434
## 51       Mn2 Mississippi    nonchilled      175 22.028804
## 52       Mn2 Mississippi    nonchilled      250 30.630772
## 53       Mn2 Mississippi    nonchilled      350 31.829970
## 54       Mn2 Mississippi    nonchilled      500 32.429665
## 55       Mn2 Mississippi    nonchilled      675 31.133149
## 56       Mn2 Mississippi    nonchilled     1000 31.528443
## 57       Mn3 Mississippi    nonchilled       95 11.339485
## 58       Mn3 Mississippi    nonchilled      175 19.433139
## 59       Mn3 Mississippi    nonchilled      250 25.823863
## 60       Mn3 Mississippi    nonchilled      350 27.938194
## 61       Mn3 Mississippi    nonchilled      500 28.532179
## 62       Mn3 Mississippi    nonchilled      675 28.125024
## 63       Mn3 Mississippi    nonchilled     1000 27.837945
## 64       Mc1 Mississippi       chilled       95 10.526255
## 65       Mc1 Mississippi       chilled      175 14.927160
## 66       Mc1 Mississippi       chilled      250 18.125956
## 67       Mc1 Mississippi       chilled      350 18.928346
## 68       Mc1 Mississippi       chilled      500 19.525301
## 69       Mc1 Mississippi       chilled      675 22.238223
## 70       Mc1 Mississippi       chilled     1000 21.933761
## 71       Mc2 Mississippi       chilled       95  7.734252
## 72       Mc2 Mississippi       chilled      175 11.439835
## 73       Mc2 Mississippi       chilled      250 12.337009
## 74       Mc2 Mississippi       chilled      350 13.030858
## 75       Mc2 Mississippi       chilled      500 12.539608
## 76       Mc2 Mississippi       chilled      675 13.730471
## 77       Mc2 Mississippi       chilled     1000 14.431417
## 78       Mc3 Mississippi       chilled       95 10.637937
## 79       Mc3 Mississippi       chilled      175 18.033533
## 80       Mc3 Mississippi       chilled      250 17.936751
## 81       Mc3 Mississippi       chilled      350 17.930183
## 82       Mc3 Mississippi       chilled      500 17.920969
## 83       Mc3 Mississippi       chilled      675 18.926589
## 84       Mc3 Mississippi       chilled     1000 19.920409

#analisis descriptivo

plot(datos_n$up~ datos_n$CO2.conc, pch=16)

library(ggplot2)
datos_n
##    CO2.Plant    CO2.Type CO2.Treatment CO2.conc        up
## 1        Qn1      Quebec    nonchilled       95 16.026297
## 2        Qn1      Quebec    nonchilled      175 30.435972
## 3        Qn1      Quebec    nonchilled      250 34.823886
## 4        Qn1      Quebec    nonchilled      350 37.232888
## 5        Qn1      Quebec    nonchilled      500 35.322103
## 6        Qn1      Quebec    nonchilled      675 39.224760
## 7        Qn1      Quebec    nonchilled     1000 39.725725
## 8        Qn2      Quebec    nonchilled       95 13.627980
## 9        Qn2      Quebec    nonchilled      175 27.333127
## 10       Qn2      Quebec    nonchilled      250 37.134386
## 11       Qn2      Quebec    nonchilled      350 41.832380
## 12       Qn2      Quebec    nonchilled      500 40.628455
## 13       Qn2      Quebec    nonchilled      675 41.424386
## 14       Qn2      Quebec    nonchilled     1000 44.339815
## 15       Qn3      Quebec    nonchilled       95 16.221948
## 16       Qn3      Quebec    nonchilled      175 32.432990
## 17       Qn3      Quebec    nonchilled      250 40.331765
## 18       Qn3      Quebec    nonchilled      350 42.139784
## 19       Qn3      Quebec    nonchilled      500 42.932919
## 20       Qn3      Quebec    nonchilled      675 43.926320
## 21       Qn3      Quebec    nonchilled     1000 45.538265
## 22       Qc1      Quebec       chilled       95 14.233396
## 23       Qc1      Quebec       chilled      175 24.138150
## 24       Qc1      Quebec       chilled      250 30.322738
## 25       Qc1      Quebec       chilled      350 34.638108
## 26       Qc1      Quebec       chilled      500 32.522706
## 27       Qc1      Quebec       chilled      675 35.425608
## 28       Qc1      Quebec       chilled     1000 38.732399
## 29       Qc2      Quebec       chilled       95  9.335057
## 30       Qc2      Quebec       chilled      175 27.323376
## 31       Qc2      Quebec       chilled      250 35.024087
## 32       Qc2      Quebec       chilled      350 38.832181
## 33       Qc2      Quebec       chilled      500 38.631348
## 34       Qc2      Quebec       chilled      675 37.529962
## 35       Qc2      Quebec       chilled     1000 42.438603
## 36       Qc3      Quebec       chilled       95 15.136276
## 37       Qc3      Quebec       chilled      175 21.037558
## 38       Qc3      Quebec       chilled      250 38.137662
## 39       Qc3      Quebec       chilled      350 34.022657
## 40       Qc3      Quebec       chilled      500 38.936024
## 41       Qc3      Quebec       chilled      675 39.622491
## 42       Qc3      Quebec       chilled     1000 41.421495
## 43       Mn1 Mississippi    nonchilled       95 10.638828
## 44       Mn1 Mississippi    nonchilled      175 19.220886
## 45       Mn1 Mississippi    nonchilled      250 26.224325
## 46       Mn1 Mississippi    nonchilled      350 30.023920
## 47       Mn1 Mississippi    nonchilled      500 30.930636
## 48       Mn1 Mississippi    nonchilled      675 32.431158
## 49       Mn1 Mississippi    nonchilled     1000 35.522488
## 50       Mn2 Mississippi    nonchilled       95 12.037434
## 51       Mn2 Mississippi    nonchilled      175 22.028804
## 52       Mn2 Mississippi    nonchilled      250 30.630772
## 53       Mn2 Mississippi    nonchilled      350 31.829970
## 54       Mn2 Mississippi    nonchilled      500 32.429665
## 55       Mn2 Mississippi    nonchilled      675 31.133149
## 56       Mn2 Mississippi    nonchilled     1000 31.528443
## 57       Mn3 Mississippi    nonchilled       95 11.339485
## 58       Mn3 Mississippi    nonchilled      175 19.433139
## 59       Mn3 Mississippi    nonchilled      250 25.823863
## 60       Mn3 Mississippi    nonchilled      350 27.938194
## 61       Mn3 Mississippi    nonchilled      500 28.532179
## 62       Mn3 Mississippi    nonchilled      675 28.125024
## 63       Mn3 Mississippi    nonchilled     1000 27.837945
## 64       Mc1 Mississippi       chilled       95 10.526255
## 65       Mc1 Mississippi       chilled      175 14.927160
## 66       Mc1 Mississippi       chilled      250 18.125956
## 67       Mc1 Mississippi       chilled      350 18.928346
## 68       Mc1 Mississippi       chilled      500 19.525301
## 69       Mc1 Mississippi       chilled      675 22.238223
## 70       Mc1 Mississippi       chilled     1000 21.933761
## 71       Mc2 Mississippi       chilled       95  7.734252
## 72       Mc2 Mississippi       chilled      175 11.439835
## 73       Mc2 Mississippi       chilled      250 12.337009
## 74       Mc2 Mississippi       chilled      350 13.030858
## 75       Mc2 Mississippi       chilled      500 12.539608
## 76       Mc2 Mississippi       chilled      675 13.730471
## 77       Mc2 Mississippi       chilled     1000 14.431417
## 78       Mc3 Mississippi       chilled       95 10.637937
## 79       Mc3 Mississippi       chilled      175 18.033533
## 80       Mc3 Mississippi       chilled      250 17.936751
## 81       Mc3 Mississippi       chilled      350 17.930183
## 82       Mc3 Mississippi       chilled      500 17.920969
## 83       Mc3 Mississippi       chilled      675 18.926589
## 84       Mc3 Mississippi       chilled     1000 19.920409
library(collapsibleTree)
collapsibleTreeSummary(CO2,
                       c("Type", "Treatment","Plant", "conc"), collapsed = F)
ggplot(datos_n, aes(x = CO2.conc,  y = up, color = datos_n$CO2.Type))+
  geom_point(aes(shape = CO2.Treatment))+
  geom_path(aes(group = CO2.Plant, lty = CO2.Treatment))+
               theme_bw()
## Warning: Use of `datos_n$CO2.Type` is discouraged.
## ℹ Use `CO2.Type` instead.
## Use of `datos_n$CO2.Type` is discouraged.
## ℹ Use `CO2.Type` instead.

#se puede observar que el mejor tratamiento es en Quebec Nonchilled. #modelo lineal

#a: modelo lienal no se usa en este caso
f1= lm(up~I(log(datos_n$CO2.conc)) + datos_n$CO2.Type+datos_n$CO2.Treatment,data =datos_n)
#modelo linaal mixto uso correcto
f2=lmer(up~I(log(datos_n$CO2.conc))+datos_n$CO2.Type:datos_n$CO2.Treatment+(1|datos_n$CO2.Plant), data=datos_n)
## fixed-effect model matrix is rank deficient so dropping 1 column / coefficient
a=broom::glance(f1)#error
b=broom::tidy(f1)#error

a;b
## # A tibble: 1 × 12
##   r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC
##       <dbl>         <dbl> <dbl>     <dbl>    <dbl> <dbl>  <dbl> <dbl> <dbl>
## 1     0.799         0.792  4.93      106. 7.94e-28     3  -251.  512.  525.
## # ℹ 3 more variables: deviance <dbl>, df.residual <int>, nobs <int>
## # A tibble: 4 × 5
##   term                         estimate std.error statistic  p.value
##   <chr>                           <dbl>     <dbl>     <dbl>    <dbl>
## 1 (Intercept)                    -12.4      4.28      -2.89 4.94e- 3
## 2 I(log(datos_n$CO2.conc))         8.48     0.717     11.8  2.97e-19
## 3 datos_n$CO2.TypeMississippi    -12.7      1.08     -11.8  4.03e-19
## 4 datos_n$CO2.Treatmentchilled    -6.86     1.08      -6.37 1.11e- 8
broom.mixed::glance(f2)
## # A tibble: 1 × 7
##    nobs sigma logLik   AIC   BIC REMLcrit df.residual
##   <int> <dbl>  <dbl> <dbl> <dbl>    <dbl>       <int>
## 1    84  4.50  -241.  496.  513.     482.          77
broom.mixed::tidy(f2)
## # A tibble: 7 × 6
##   effect   group             term                   estimate std.error statistic
##   <chr>    <chr>             <chr>                     <dbl>     <dbl>     <dbl>
## 1 fixed    <NA>              (Intercept)              -33.5      4.02      -8.33
## 2 fixed    <NA>              I(log(datos_n$CO2.con…     8.48     0.654     13.0 
## 3 fixed    <NA>              datos_n$CO2.TypeQuebe…    19.5      1.83      10.6 
## 4 fixed    <NA>              datos_n$CO2.TypeMissi…    10.1      1.83       5.53
## 5 fixed    <NA>              datos_n$CO2.TypeQuebe…    15.9      1.83       8.69
## 6 ran_pars datos_n$CO2.Plant sd__(Intercept)            1.47    NA         NA   
## 7 ran_pars Residual          sd__Observation            4.50    NA         NA

#CONCLUSIÓN: El Type Quebec con nonchilled presentó la mayor pendiente con un valor de 19.52 siendo el mejor tratamiento para implementar, confirmando lo visto en el analisis descriptivo #el uso de un modelo (lm) no el adecuado en estos casos, ya que se enfoca en un solo efecto; en el caso de modelo lineal mixto (lmer), se emplean cuando hay efectos fijos (controlados) y efectos aleatorios, sin que, presenten una distribución normal pero los datos estan correlacionados, en este caso poisson

#utilidad del modelo mixto en la agricultura: Mejoramiento genético en plantas,mirar el mejor individual y permite analizar variables con diferentes comportamientos no lineales, Poisson, Gamma, Binomial, entre otras.

data("ChickWeight");data
## function (..., list = character(), package = NULL, lib.loc = NULL, 
##     verbose = getOption("verbose"), envir = .GlobalEnv, overwrite = TRUE) 
## {
##     fileExt <- function(x) {
##         db <- grepl("\\.[^.]+\\.(gz|bz2|xz)$", x)
##         ans <- sub(".*\\.", "", x)
##         ans[db] <- sub(".*\\.([^.]+\\.)(gz|bz2|xz)$", "\\1\\2", 
##             x[db])
##         ans
##     }
##     my_read_table <- function(...) {
##         lcc <- Sys.getlocale("LC_COLLATE")
##         on.exit(Sys.setlocale("LC_COLLATE", lcc))
##         Sys.setlocale("LC_COLLATE", "C")
##         read.table(...)
##     }
##     stopifnot(is.character(list))
##     names <- c(as.character(substitute(list(...))[-1L]), list)
##     if (!is.null(package)) {
##         if (!is.character(package)) 
##             stop("'package' must be a character vector or NULL")
##     }
##     paths <- find.package(package, lib.loc, verbose = verbose)
##     if (is.null(lib.loc)) 
##         paths <- c(path.package(package, TRUE), if (!length(package)) getwd(), 
##             paths)
##     paths <- unique(normalizePath(paths[file.exists(paths)]))
##     paths <- paths[dir.exists(file.path(paths, "data"))]
##     dataExts <- tools:::.make_file_exts("data")
##     if (length(names) == 0L) {
##         db <- matrix(character(), nrow = 0L, ncol = 4L)
##         for (path in paths) {
##             entries <- NULL
##             packageName <- if (file_test("-f", file.path(path, 
##                 "DESCRIPTION"))) 
##                 basename(path)
##             else "."
##             if (file_test("-f", INDEX <- file.path(path, "Meta", 
##                 "data.rds"))) {
##                 entries <- readRDS(INDEX)
##             }
##             else {
##                 dataDir <- file.path(path, "data")
##                 entries <- tools::list_files_with_type(dataDir, 
##                   "data")
##                 if (length(entries)) {
##                   entries <- unique(tools::file_path_sans_ext(basename(entries)))
##                   entries <- cbind(entries, "")
##                 }
##             }
##             if (NROW(entries)) {
##                 if (is.matrix(entries) && ncol(entries) == 2L) 
##                   db <- rbind(db, cbind(packageName, dirname(path), 
##                     entries))
##                 else warning(gettextf("data index for package %s is invalid and will be ignored", 
##                   sQuote(packageName)), domain = NA, call. = FALSE)
##             }
##         }
##         colnames(db) <- c("Package", "LibPath", "Item", "Title")
##         footer <- if (missing(package)) 
##             paste0("Use ", sQuote(paste("data(package =", ".packages(all.available = TRUE))")), 
##                 "\n", "to list the data sets in all *available* packages.")
##         else NULL
##         y <- list(title = "Data sets", header = NULL, results = db, 
##             footer = footer)
##         class(y) <- "packageIQR"
##         return(y)
##     }
##     paths <- file.path(paths, "data")
##     for (name in names) {
##         found <- FALSE
##         for (p in paths) {
##             tmp_env <- if (overwrite) 
##                 envir
##             else new.env()
##             if (file_test("-f", file.path(p, "Rdata.rds"))) {
##                 rds <- readRDS(file.path(p, "Rdata.rds"))
##                 if (name %in% names(rds)) {
##                   found <- TRUE
##                   if (verbose) 
##                     message(sprintf("name=%s:\t found in Rdata.rds", 
##                       name), domain = NA)
##                   thispkg <- sub(".*/([^/]*)/data$", "\\1", p)
##                   thispkg <- sub("_.*$", "", thispkg)
##                   thispkg <- paste0("package:", thispkg)
##                   objs <- rds[[name]]
##                   lazyLoad(file.path(p, "Rdata"), envir = tmp_env, 
##                     filter = function(x) x %in% objs)
##                   break
##                 }
##                 else if (verbose) 
##                   message(sprintf("name=%s:\t NOT found in names() of Rdata.rds, i.e.,\n\t%s\n", 
##                     name, paste(names(rds), collapse = ",")), 
##                     domain = NA)
##             }
##             if (file_test("-f", file.path(p, "Rdata.zip"))) {
##                 warning("zipped data found for package ", sQuote(basename(dirname(p))), 
##                   ".\nThat is defunct, so please re-install the package.", 
##                   domain = NA)
##                 if (file_test("-f", fp <- file.path(p, "filelist"))) 
##                   files <- file.path(p, scan(fp, what = "", quiet = TRUE))
##                 else {
##                   warning(gettextf("file 'filelist' is missing for directory %s", 
##                     sQuote(p)), domain = NA)
##                   next
##                 }
##             }
##             else {
##                 files <- list.files(p, full.names = TRUE)
##             }
##             files <- files[grep(name, files, fixed = TRUE)]
##             if (length(files) > 1L) {
##                 o <- match(fileExt(files), dataExts, nomatch = 100L)
##                 paths0 <- dirname(files)
##                 paths0 <- factor(paths0, levels = unique(paths0))
##                 files <- files[order(paths0, o)]
##             }
##             if (length(files)) {
##                 for (file in files) {
##                   if (verbose) 
##                     message("name=", name, ":\t file= ...", .Platform$file.sep, 
##                       basename(file), "::\t", appendLF = FALSE, 
##                       domain = NA)
##                   ext <- fileExt(file)
##                   if (basename(file) != paste0(name, ".", ext)) 
##                     found <- FALSE
##                   else {
##                     found <- TRUE
##                     zfile <- file
##                     zipname <- file.path(dirname(file), "Rdata.zip")
##                     if (file.exists(zipname)) {
##                       Rdatadir <- tempfile("Rdata")
##                       dir.create(Rdatadir, showWarnings = FALSE)
##                       topic <- basename(file)
##                       rc <- .External(C_unzip, zipname, topic, 
##                         Rdatadir, FALSE, TRUE, FALSE, FALSE)
##                       if (rc == 0L) 
##                         zfile <- file.path(Rdatadir, topic)
##                     }
##                     if (zfile != file) 
##                       on.exit(unlink(zfile))
##                     switch(ext, R = , r = {
##                       library("utils")
##                       sys.source(zfile, chdir = TRUE, envir = tmp_env)
##                     }, RData = , rdata = , rda = load(zfile, 
##                       envir = tmp_env), TXT = , txt = , tab = , 
##                       tab.gz = , tab.bz2 = , tab.xz = , txt.gz = , 
##                       txt.bz2 = , txt.xz = assign(name, my_read_table(zfile, 
##                         header = TRUE, as.is = FALSE), envir = tmp_env), 
##                       CSV = , csv = , csv.gz = , csv.bz2 = , 
##                       csv.xz = assign(name, my_read_table(zfile, 
##                         header = TRUE, sep = ";", as.is = FALSE), 
##                         envir = tmp_env), found <- FALSE)
##                   }
##                   if (found) 
##                     break
##                 }
##                 if (verbose) 
##                   message(if (!found) 
##                     "*NOT* ", "found", domain = NA)
##             }
##             if (found) 
##                 break
##         }
##         if (!found) {
##             warning(gettextf("data set %s not found", sQuote(name)), 
##                 domain = NA)
##         }
##         else if (!overwrite) {
##             for (o in ls(envir = tmp_env, all.names = TRUE)) {
##                 if (exists(o, envir = envir, inherits = FALSE)) 
##                   warning(gettextf("an object named %s already exists and will not be overwritten", 
##                     sQuote(o)))
##                 else assign(o, get(o, envir = tmp_env, inherits = FALSE), 
##                   envir = envir)
##             }
##             rm(tmp_env)
##         }
##     }
##     invisible(names)
## }
## <bytecode: 0x0000021d0e45a7d0>
## <environment: namespace:utils>
view(ChickWeight)
f1_poisson= glm(weight~Diet:Time, data= ChickWeight, family=poisson())
tidy(f1_poisson)
## # A tibble: 5 × 5
##   term        estimate std.error statistic p.value
##   <chr>          <dbl>     <dbl>     <dbl>   <dbl>
## 1 (Intercept)   3.86    0.00931      415.        0
## 2 Diet1:Time    0.0656  0.000722      90.8       0
## 3 Diet2:Time    0.0754  0.000768      98.1       0
## 4 Diet3:Time    0.0862  0.000729     118.        0
## 5 Diet4:Time    0.0823  0.000756     109.        0
ggplot(ChickWeight, aes(x=Time, y=weight))+ 
  geom_point(aes(color=Diet))+
  geom_path(aes(color=Diet, group=Chick))