The goal of this study was to determine whether energetic state influences tail regeneration in brown anoles, and whether treatment with IGF1 or IGF2 can mitigate the negative effects of energetic stress.

Load Packages

#load all packages necessary to run statistical and graphic models
library(ggplot2)
library(nlme)
library(multcomp)
library(emmeans)
library(MuMIn)
library(bestNormalize)
library(lmtest)
library(car)
library(Rmisc)
library(dplyr)
library(viridis)
library(hrbrthemes)
library(plotly)
library(tidyr)
library(ggeffects)
library(lme4)

#Set position dodge location for categorized boxplot graphs and data point locations
pd <- position_dodge(0.02)
dodge <- position_dodge(width = 0.6)

Part 1: Pre-experimental body size comparisons

Were animals assigned to treatment groups similar in body size at the start of the experiment?

Before interpreting treatment effects, we need to confirm that groups did not differ systematically in size. If one group began with larger animals, any differences in regeneration could reflect starting size rather than treatment.

#Read in data set that includes the SVL, mass, and treatment assignment of each individual immediately before beginning the experiment
diet=read.csv("WL.analysis.csv")

#subset data to only include the original body measurements
pre.diet=subset(diet, Week == "-4")

#Run linear model to determine if there was a statistical difference in SVL at the time of beginning the experiment
SVL=lm(SVL~Treatment, data=pre.diet)
#print linear model results
anova(SVL)
## Analysis of Variance Table
## 
## Response: SVL
##           Df  Sum Sq Mean Sq F value Pr(>F)
## Treatment  3   6.984  2.3279  0.6542 0.5829
## Residuals 72 256.214  3.5585
#plot the relationship of SVL across treatments
svl.pl=ggplot(pre.diet, aes(x=as.factor(Treatment), y=SVL, fill=Treatment)) +
    #violin plot displays the density of data at each point displaying the mix and max of each treatment as well
    geom_violin(trim=F, position= dodge, scale="width") +
scale_fill_manual(values = c("slategrey", "lemonchiffon2", "thistle4", "mistyrose3")) +  #insert boxplot overlay displaying the quantiles and means of each group
  geom_boxplot(width=0.1, position= dodge, outlier.shape = NA) +
  geom_jitter(width=0.1) +
  xlab("Treatment")

svl.pl

ggsave(svl.pl, file="svl.png", width=5, height=4, dpi=600)

Result: There was no statistical difference in body size in SVL at the beginning of the experimental period between treatments.

#Run linear model to determine if there was a statistical difference in SVL at the time of beginning the experiment
Mass=lm(Mass~Treatment, data=pre.diet)
#print linear model results
anova(Mass)
## Analysis of Variance Table
## 
## Response: Mass
##           Df  Sum Sq Mean Sq F value Pr(>F)
## Treatment  3  0.3761 0.12538  0.5547 0.6467
## Residuals 72 16.2743 0.22603
#Plot the relationship of SVL across treatments
mass.pl=ggplot(pre.diet, aes(x=as.factor(Treatment), y=Mass, fill=Treatment)) + 
     #violin plot displays the density of data at each point displaying the mix and max of each treatment as well
    geom_violin(trim=F, position= dodge, scale="width") +
scale_fill_manual(values = c("slategrey", "lemonchiffon2", "thistle4", "mistyrose3")) +  geom_boxplot(width=0.1, position= dodge, outlier.shape = NA) +
  geom_jitter(width=0.1) +
  xlab("Treatment")

ggsave(mass.pl, file="mass.png", width=5, height=4, dpi=600)

Result: There was no statistical difference in body size in mass at the beginning of the experimental period between treatments.

Part 2: Assess weight lost post-diet implementation

Did Dietary Restriction Cause Weight Loss?

This verifies that the experimental manipulation successfully altered energetic state.

#Look at data set including the body measurements (mass) over time before and after diet implementation. This data set is designed to verify that the diet did result in weight loss in the DR group, and that weight loss levels off before the experiment begins. We do not want to begin the experiment with some animals actively losing weight at a high rate, and others not.

#Subset data to be only the data collected immediately before the experiment begins (week -1). 
diet.an=subset(diet, Week == -1)
#Run linear model determining if the group on a diet lost more weight than the group on the ad lib food 
diet.lm=lm(Perc_WL~Diet, data=diet.an)
#print the results
anova(diet.lm)
## Analysis of Variance Table
## 
## Response: Perc_WL
##           Df  Sum Sq Mean Sq F value    Pr(>F)    
## Diet       1  608.22  608.22  13.854 0.0004068 ***
## Residuals 67 2941.39   43.90                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Plot the relationship of percent weight loss between the two groups (diet restricted and ad lib)
diet.pl=ggplot(diet.an, aes(x=as.factor(Diet), y=Perc_Orig, fill=Diet)) + 
     #violin plot displays the density of data at each point displaying the mix and max of each treatment as well
    geom_violin(trim=F, position= dodge, scale="width") +
scale_fill_manual(values = c("slategrey", "lemonchiffon2")) +    #insert boxplot overlay displaying the quantiles and means of each group
  geom_boxplot(width=0.1, position= dodge, outlier.shape = NA) +
geom_jitter(width=0.1) +
  xlab("Diet")

ggsave(diet.pl, file="diet.png", width=5, height=4, dpi=600)

diet.pl

Result: The animals on a restricted diet lost significantly more of their body weight than those from the ad lib diet. This indicates that the diet was effective at calorically restricting the animals. The animals on the ad lib diet lost <5% of their total body weight on average, indicating that the ad lib diet was truly ad lib.

#Plot the relationship of percent weight loss between the two groups (diet restricted and ad lib) over time
diet2.pl=ggplot(diet, aes(x=as.factor(Week), y=Mass, fill=Diet)) + 
     #violin plot displays the density of data at each point displaying the mix and max of each treatment as well
    geom_violin(trim=F, position= dodge, scale="width", width=0.5) +
scale_fill_manual(values = c("slategrey", "lemonchiffon2")) +    #insert boxplot overlay displaying the quantiles and means of each group
  geom_boxplot(width=0.1, position= dodge, outlier.shape = NA) +
geom_jitter(position= dodge) +
  xlab("Week")

ggsave(diet2.pl, file="diet2.png", width=5, height=4, dpi=600)

#plot this relationship as a line graph
diet2.pl=ggplot(diet, aes(x=Week, y=Mass, colour=Diet)) + 
  geom_smooth() +
    scale_color_manual(values = c("slategrey", "lemonchiffon2")) 

diet3.pl=ggplot(diet, aes(x=Week, y=Perc_WL, colour=Diet)) + 
  geom_smooth() +
    scale_color_manual(values = c("slategrey", "lemonchiffon2")) 

diet4.pl=ggplot(diet, aes(x=Week, y=Perc_Orig, colour=Diet)) + 
  geom_smooth() +
    scale_color_manual(values = c("slategrey", "lemonchiffon2")) 

ggsave(diet4.pl, file="diet4.png", width=4.75, height=4, dpi=600)

diet2.pl

diet3.pl

diet4.pl

Result: There was weight fluctuation in the early week, but the weight loss had tapered off by the beginning of the experiment and steadied.

Part 3: Outlier analysis and analysis of reduction in regeneration data points

#Length Loss Analysis

reg <- read.csv("R.analysis.currated.csv", stringsAsFactors = FALSE)
reg_sub=subset(reg, Week>2)

pl.ll=ggplot(reg, aes(x=Week, y=Regeneration, colour=Animal_ID)) +
  geom_line(aes(group = Animal_ID)) +
    facet_wrap(~Treatment, scales="free", ncol=2) +
  geom_text(aes(label=Animal_ID),hjust=0, vjust=0, size=2)+
  theme(legend.position = "none")
  
pl.ll

ggsave(pl.ll, file="length_loss.png", width=8, height=8, dpi=600)

pl.ll.sub=ggplot(reg_sub, aes(x=Week, y=Regeneration, colour=Animal_ID)) +
  geom_line(aes(group = Animal_ID)) +
    facet_wrap(~Treatment, scales="free", ncol=2) +
    geom_text(aes(label=Animal_ID),hjust=0, vjust=0, size=2)+
  theme(legend.position = "none")
pl.ll.sub

ggsave(pl.ll.sub, file="length_loss_sub.png", width=8, height=8, dpi=600)

Result: There are clear inconsistencies following the 4 week timepoint. Beginning at week 5, there were points in time where there were decreases in regeneration length (meaning tail length was lost). Therefore, we decided to zoom in to the first four weeks of time. Additionally, this decision is supported by the Beatty, Mote, Schwartz Regeneration paper indicating the majority of investment into tail regeneration occurs during the first 4 weeks of tail regeneration. There were no additional inconsistencies in the tail regeneration patterns within the first 4 weeks.

Overall visualization of data

#upload raw data set in long format with all 8 weeks of regeneration, reproduction, and weight data following the acclimation period.
data=read.csv("R.analysis.currated.csv")
early_reg=subset(data, Week <5)
#The primary data set used in analysis will be weeks 1-4. We chose this because our previous study (Beatty, Mote and Schwartz 2020) shows that nearly all investment into regeneration occurs in the first four weeks of regeneration. Additionally, the study was performed late in the season, as reproduction tapered off, and there were issues with measurements, COVID, and feeding during the end of the experiment.
pl.reg.rate=ggplot(early_reg, aes(x=Week, y=Rate_Reg, colour=Animal_ID)) +
  geom_line(aes(group = Animal_ID)) +
    facet_wrap(~Treatment, scales="free", ncol=2) +
  geom_text(aes(label=Animal_ID),hjust=0, vjust=0, size=2)+
  theme(legend.position = "none")
  
pl.reg.rate

pl.perc.reg=ggplot(early_reg, aes(x=Week, y=Perc.Regeneration, colour=Animal_ID)) +
  geom_line(aes(group = Animal_ID)) +
    facet_wrap(~Treatment, scales="free", ncol=2) +
  geom_text(aes(label=Animal_ID),hjust=0, vjust=0, size=2)+
  theme(legend.position = "none")
  
pl.perc.reg

Result: Analyses were previously completed using the rate of tail regeneration rather than the regenerative length. This showed that there was a large spike in regenerative investment between weeks 2 and 3, which then decreased significantly again by week 4 (also consistant with our previous findings). This was the case for nearly all individials regardless of treatment assignment. The validation of regeneration using this metric was a sanity check. For analyses, percent regneration is used, as it accounts for differences in total amount needed to regenerate, and possible variations in body size of the animals (volume of tissue needed to regenerate varies between animal).

outlierTest(lm(Rate_Reg~ Treatment*Week, random=~1|Animal_ID , data=early_reg, na.action=na.omit))
## No Studentized residuals with Bonferroni p < 0.05
## Largest |rstudent|:
##     rstudent unadjusted p-value Bonferroni p
## 169 2.990036          0.0031587      0.62857
outlierTest(lm(Perc.Regeneration~ Treatment*Week, random=~1|Animal_ID , data=early_reg, na.action=na.omit))
##     rstudent unadjusted p-value Bonferroni p
## 274 4.241648         3.0990e-05    0.0082432
## 275 4.217107         3.4316e-05    0.0091280
## 277 4.051736         6.7389e-05    0.0179250

Result: When using percent regeneration, BC333 and BC335 at week 4 are statistical outliers. These are the two highest individuals in the ad lib group. Additionally, in the IGF2 group individual BC337 is labeled as an outlier at week 4. Using the corrected p-values, the rate of regeneration does not have any statistical outliers. These samples did not have any questionable data, and followed reliable trends indicating that they are statistical outliers, but biologically accurate. The individual of concern (BC327) was not indicated as an outlier in either test. Therefore, no data points were excluded as data points. Again, regeneration within the first 4 weeks appears to be consistent across individuals and a reliable measure for analysis.

RQ1- Does worsening energetic state (measured as percent weight loss) decrease regeneration rate?

Determination of metabolic state as a continous or categorical variable. Do animals that lose more body mass regenerate their tails more slowly?

data=read.csv("R.analysis.currated.csv")

data <- data %>%
  mutate(
    Diet = case_when(
      Treatment == "AdLib" ~ "AdLib",
      Treatment %in% c("DR", "DR.IGF1", "DR.IGF2") ~ "Restricted"
    )
  )
data$Diet <- factor(data$Diet, levels = c("AdLib", "Restricted"))

model_weightloss <- lmer(
  Perc.Regeneration ~ Week * Perc.WeightLoss + (1 | Animal_ID),
  data = data
)
summary(model_weightloss)
## Linear mixed model fit by REML ['lmerMod']
## Formula: Perc.Regeneration ~ Week * Perc.WeightLoss + (1 | Animal_ID)
##    Data: data
## 
## REML criterion at convergence: 2882.1
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.1479 -0.5381  0.0486  0.5775  3.3623 
## 
## Random effects:
##  Groups    Name        Variance Std.Dev.
##  Animal_ID (Intercept) 18.41    4.291   
##  Residual              21.28    4.614   
## Number of obs: 465, groups:  Animal_ID, 69
## 
## Fixed effects:
##                      Estimate Std. Error t value
## (Intercept)          -6.07577    1.13441  -5.356
## Week                  4.85717    0.19194  25.305
## Perc.WeightLoss       0.07376    0.05308   1.390
## Week:Perc.WeightLoss -0.03017    0.01002  -3.011
## 
## Correlation of Fixed Effects:
##             (Intr) Week   Prc.WL
## Week        -0.676              
## Prc.WghtLss -0.792  0.638       
## Wk:Prc.WghL  0.575 -0.852 -0.747
model_weightloss2 <- lmer(
  Rate_Reg ~ Week * Perc.WeightLoss + (1 | Animal_ID),
  data = data
)
summary(model_weightloss2)
## Linear mixed model fit by REML ['lmerMod']
## Formula: Rate_Reg ~ Week * Perc.WeightLoss + (1 | Animal_ID)
##    Data: data
## 
## REML criterion at convergence: 1943.2
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -1.3348 -0.7224 -0.2061  0.5857  6.0165 
## 
## Random effects:
##  Groups    Name        Variance Std.Dev.
##  Animal_ID (Intercept) 0.000    0.000   
##  Residual              7.411    2.722   
## Number of obs: 398, groups:  Animal_ID, 68
## 
## Fixed effects:
##                       Estimate Std. Error t value
## (Intercept)           2.575384   0.641542   4.014
## Week                 -0.014038   0.123911  -0.113
## Perc.WeightLoss       0.047865   0.034100   1.404
## Week:Perc.WeightLoss -0.006574   0.006620  -0.993
## 
## Correlation of Fixed Effects:
##             (Intr) Week   Prc.WL
## Week        -0.901              
## Prc.WghtLss -0.831  0.746       
## Wk:Prc.WghL  0.743 -0.822 -0.910
## optimizer (nloptwrap) convergence code: 0 (OK)
## boundary (singular) fit: see help('isSingular')
model_weightloss3 <- lmer(
  Regeneration ~ Week * Perc.WeightLoss + (1 | Animal_ID),
  data = data
)
summary(model_weightloss3)
## Linear mixed model fit by REML ['lmerMod']
## Formula: Regeneration ~ Week * Perc.WeightLoss + (1 | Animal_ID)
##    Data: data
## 
## REML criterion at convergence: 2439.5
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -2.94714 -0.58783  0.05597  0.59658  2.92872 
## 
## Random effects:
##  Groups    Name        Variance Std.Dev.
##  Animal_ID (Intercept) 6.532    2.556   
##  Residual              8.341    2.888   
## Number of obs: 464, groups:  Animal_ID, 69
## 
## Fixed effects:
##                       Estimate Std. Error t value
## (Intercept)          -3.381642   0.700657  -4.826
## Week                  2.983636   0.120040  24.855
## Perc.WeightLoss       0.008783   0.033047   0.266
## Week:Perc.WeightLoss -0.005927   0.006263  -0.946
## 
## Correlation of Fixed Effects:
##             (Intr) Week   Prc.WL
## Week        -0.685              
## Prc.WghtLss -0.798  0.640       
## Wk:Prc.WghL  0.582 -0.851 -0.750
data <- data %>%
  mutate(WL_group = cut(Perc.WeightLoss, breaks = 3))

ggplot(data, aes(x = Week, y = Perc.Regeneration, color = WL_group)) +
  stat_summary(fun = mean, geom = "line", linewidth = 1.2) +
  stat_summary(fun = mean, geom = "point") +
  theme_classic()

A negative interaction indicates that animals experiencing greater weight loss regenerate more slowly over time. Animals that lost more weight regenerated their tails more slowly. This suggests that regeneration is constrained by energetic state.

As weight loss increases, the rate of regeneration over time decreases.This is a diet dose-dependent suppression effect. A linear mixed-effects model revealed a strong effect of time on percent regeneration (β = 4.86, t = 25.3), indicating consistent increases across weeks. While percent weight loss did not affect baseline regeneration, a significant interaction between week and weight loss (β = −0.030, t = −3.01) demonstrated that increasing weight loss was associated with a reduced rate of regeneration over time. These results indicate that regeneration is sensitive to energetic state, with greater nutritional deficit leading to slower regenerative growth.

The evidence is strongest when regeneration is expressed as a normalized cumulative measure, though all regeneration measures show the same relationship. Percent regeneration controls for stating tail size, reduces week to week noise as a cumulative measure, and removes variation unrelated to treatment, in turn increasing power.

This relationship is not represented when using diet as a categorical variable. For all analyses, rather than using categorical classifications of metabolic state (diet restricted vs ad lib), diet was assessed as a continuous representation of percent weight loss.

RQ2: Does IGF treatment buffer the negative effect of energetic deficit, measured as percent weight loss, on tail regeneration over time?

data$IGF <- ifelse(data$Treatment %in% c("DR.IGF1", "DR.IGF2"), "IGF", "No_IGF")
data$IGF <- as.factor(data$IGF)
data$IGF=relevel(data$IGF, ref="No_IGF")

library(lme4)
library(lmerTest)

model_rescue <- lmer(
  Perc.Regeneration ~ 
    Week* Perc.WeightLoss * IGF + 
    (1 | Animal_ID),
  data = data
)

summary(model_rescue)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Perc.Regeneration ~ Week * Perc.WeightLoss * IGF + (1 | Animal_ID)
##    Data: data
## 
## REML criterion at convergence: 2851.9
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.9626 -0.5860  0.0630  0.5375  3.2539 
## 
## Random effects:
##  Groups    Name        Variance Std.Dev.
##  Animal_ID (Intercept) 16.92    4.113   
##  Residual              19.76    4.445   
## Number of obs: 465, groups:  Animal_ID, 69
## 
## Fixed effects:
##                              Estimate Std. Error        df t value Pr(>|t|)    
## (Intercept)                  -7.19510    1.31492 306.18740  -5.472 9.27e-08 ***
## Week                          5.60698    0.22390 411.25372  25.043  < 2e-16 ***
## Perc.WeightLoss               0.12570    0.06168 451.85513   2.038   0.0421 *  
## IGFIGF                        5.21021    2.43706 366.72641   2.138   0.0332 *  
## Week:Perc.WeightLoss         -0.05152    0.01163 410.12337  -4.428 1.22e-05 ***
## Week:IGFIGF                  -2.25676    0.40974 421.11221  -5.508 6.33e-08 ***
## Perc.WeightLoss:IGFIGF       -0.26870    0.11443 456.61230  -2.348   0.0193 *  
## Week:Perc.WeightLoss:IGFIGF   0.08690    0.02135 426.14077   4.070 5.61e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) Week   Prc.WL IGFIGF Wk:P.WL W:IGFI P.WL:I
## Week        -0.638                                           
## Prc.WghtLss -0.694  0.543                                    
## IGFIGF      -0.540  0.344  0.375                             
## Wk:Prc.WghL  0.507 -0.771 -0.740 -0.274                      
## Week:IGFIGF  0.349 -0.546 -0.297 -0.710  0.422               
## P.WL:IGFIGF  0.374 -0.293 -0.539 -0.833  0.399   0.683       
## W:P.WL:IGFI -0.276  0.420  0.403  0.620 -0.545  -0.877 -0.766
ggplot(data, aes(x = Perc.WeightLoss, y = Perc.Regeneration, color = IGF)) +
  geom_point(alpha = 0.3) +
  geom_smooth(method = "lm") +
  facet_wrap(~ Week) +
  theme_classic()

1. Regeneration increases over time 2. In No IGF animals: Weight loss strongly reduces regeneration over time 3. In IGF animals: That negative effect is much weaker (or absent) 4. Does did not measurably affect regeneration

Weight loss harms regeneration, but IGF reduces that harm. IGF does not fully restore regeneration to control levels, but it buffers the negative effect of energetic deficit. IMPORTANT: Same pattern is seen with raw regeneration.

Percent regeneration increased significantly over time (Week: β = 3.33, t = 5.31). In the rescue model, the three-way interaction between week, percent weight loss, and IGF treatment was highly significant (Week × Percent Weight Loss × IGF: β = -0.0878, t = -4.01), indicating that the relationship between energetic deficit and regeneration differed between IGF-treated and untreated animals. Specifically, animals that did not receive IGF exhibited a stronger negative relationship between weight loss and regeneration, whereas this relationship was substantially reduced in IGF-treated animals. The interaction between week and dose was negligible (Week × Dose: β = 0.0179, t = 0.07), indicating no evidence that the magnitude of this effect depended on IGF dose. Together, these results suggest that IGF treatment partially rescues tail regeneration by buffering the negative effects of energetic stress on regenerative growth.

##RQ3: Do IGF1 and IGF2 differ in their ability to rescue regeneration? ###Compare IGF1 and IGF2 separately using a model that treats treatment as three levels: No IGF, IGF1, and IGF2.

data <- data %>%
  mutate(
    IGF_type = case_when(
      Treatment %in% c("AdLib", "DR") ~ "No_IGF",
      Treatment == "DR.IGF1" ~ "IGF1",
      Treatment == "DR.IGF2" ~ "IGF2"
    )
  )

data$IGF_type <- factor(data$IGF_type, levels = c("No_IGF", "IGF1", "IGF2"))
str(data)
## 'data.frame':    640 obs. of  18 variables:
##  $ Animal_ID        : chr  "BC039" "BC048" "BC099" "BC121" ...
##  $ ToeClip          : chr  "1455" "1513" "11-Jan" "2203" ...
##  $ BC_Cage          : int  32 28 9 32 39 28 8 36 39 39 ...
##  $ Treatment        : chr  "DR.IGF1" "AdLib" "AdLib" "DR.IGF1" ...
##  $ SVL              : int  46 48 48 48 44 44 42 47 51 46 ...
##  $ Week             : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Mass             : num  2.1 2.21 3.36 2.05 2.02 ...
##  $ Dose             : num  2.38 0 0 2.44 0 ...
##  $ Perc.WeightLoss  : num  18 18.36 8.49 21.31 23.81 ...
##  $ Regeneration     : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Rate_Reg         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Rate_Perc        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Perc.Regeneration: num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Eggs             : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Diet             : Factor w/ 2 levels "AdLib","Restricted": 2 1 1 2 2 2 1 2 2 2 ...
##  $ WL_group         : Factor w/ 3 levels "(-55.2,-20.1]",..: 3 3 2 3 3 3 3 3 3 3 ...
##  $ IGF              : Factor w/ 2 levels "No_IGF","IGF": 2 1 1 2 1 2 1 2 1 1 ...
##  $ IGF_type         : Factor w/ 3 levels "No_IGF","IGF1",..: 2 1 1 2 1 3 1 2 1 1 ...
model_igf_split <- lmer(
  Perc.Regeneration ~ Week * Perc.WeightLoss * IGF_type +
    (1 | Animal_ID),
  data = data   # full dataset with all weekly measurements
)

summary(model_igf_split)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Perc.Regeneration ~ Week * Perc.WeightLoss * IGF_type + (1 |  
##     Animal_ID)
##    Data: data
## 
## REML criterion at convergence: 2846.1
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.9957 -0.5776  0.0650  0.5223  3.2789 
## 
## Random effects:
##  Groups    Name        Variance Std.Dev.
##  Animal_ID (Intercept) 17.00    4.124   
##  Residual              19.42    4.406   
## Number of obs: 465, groups:  Animal_ID, 69
## 
## Fixed effects:
##                                    Estimate Std. Error        df t value
## (Intercept)                        -7.19877    1.30832 298.53394  -5.502
## Week                                5.60609    0.22198 408.07027  25.255
## Perc.WeightLoss                     0.12593    0.06120 447.95475   2.058
## IGF_typeIGF1                        4.71667    2.84132 334.76054   1.660
## IGF_typeIGF2                        3.52438    3.86935 391.48393   0.911
## Week:Perc.WeightLoss               -0.05146    0.01153 406.95558  -4.461
## Week:IGF_typeIGF1                  -1.64541    0.49630 430.19518  -3.315
## Week:IGF_typeIGF2                  -2.66371    0.61076 417.22804  -4.361
## Perc.WeightLoss:IGF_typeIGF1       -0.22189    0.13875 447.22307  -1.599
## Perc.WeightLoss:IGF_typeIGF2       -0.20481    0.17565 448.07867  -1.166
## Week:Perc.WeightLoss:IGF_typeIGF1   0.04116    0.02843 443.95954   1.448
## Week:Perc.WeightLoss:IGF_typeIGF2   0.11350    0.02950 411.63638   3.847
##                                   Pr(>|t|)    
## (Intercept)                       8.07e-08 ***
## Week                               < 2e-16 ***
## Perc.WeightLoss                   0.040205 *  
## IGF_typeIGF1                      0.097845 .  
## IGF_typeIGF2                      0.362938    
## Week:Perc.WeightLoss              1.06e-05 ***
## Week:IGF_typeIGF1                 0.000993 ***
## Week:IGF_typeIGF2                 1.63e-05 ***
## Perc.WeightLoss:IGF_typeIGF1      0.110497    
## Perc.WeightLoss:IGF_typeIGF2      0.244223    
## Week:Perc.WeightLoss:IGF_typeIGF1 0.148457    
## Week:Perc.WeightLoss:IGF_typeIGF2 0.000138 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##                 (Intr) Week   Prc.WL IGF_IGF1 IGF_IGF2 Wk:P.WL W:IGF_IGF1
## Week            -0.635                                                   
## Prc.WghtLss     -0.693  0.542                                            
## IGF_typIGF1     -0.460  0.292  0.319                                     
## IGF_typIGF2     -0.338  0.215  0.234  0.156                              
## Wk:Prc.WghL      0.505 -0.771 -0.739 -0.233   -0.171                     
## Wk:IGF_IGF1      0.284 -0.447 -0.242 -0.707   -0.096    0.345            
## Wk:IGF_IGF2      0.231 -0.363 -0.197 -0.106   -0.766    0.280   0.163    
## P.WL:IGF_IGF1    0.305 -0.239 -0.441 -0.821   -0.103    0.326   0.690    
## P.WL:IGF_IGF2    0.241 -0.189 -0.348 -0.111   -0.903    0.258   0.084    
## W:P.WL:IGF_IGF1 -0.205  0.313  0.300  0.617    0.069   -0.406  -0.879    
## W:P.WL:IGF_IGF2 -0.197  0.302  0.289  0.091    0.696   -0.391  -0.135    
##                 W:IGF_IGF2 P.WL:IGF_IGF1 P.WL:IGF_IGF2 W:P.WL:IGF_IGF1
## Week                                                                  
## Prc.WghtLss                                                           
## IGF_typIGF1                                                           
## IGF_typIGF2                                                           
## Wk:Prc.WghL                                                           
## Wk:IGF_IGF1                                                           
## Wk:IGF_IGF2                                                           
## P.WL:IGF_IGF1    0.087                                                
## P.WL:IGF_IGF2    0.758      0.154                                     
## W:P.WL:IGF_IGF1 -0.114     -0.774        -0.105                       
## W:P.WL:IGF_IGF2 -0.921     -0.128        -0.794         0.159
pred <- ggpredict(
  model_igf_split,
  terms = c("Perc.WeightLoss", "IGF_type", "Week [2,4,6,8]")
)

pred
## # Predicted values of Perc.Regeneration
## 
## IGF_type: No_IGF
## Week: 2
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |      2.63 | -4.47,  9.73
##             -35 |      3.21 | -1.68,  8.10
##              -5 |      3.90 |  1.44,  6.35
##              50 |      5.16 |  1.59,  8.74
## 
## IGF_type: No_IGF
## Week: 4
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     20.02 | 13.68, 26.35
##             -35 |     18.02 | 13.63, 22.42
##              -5 |     15.63 | 13.35, 17.90
##              50 |     11.23 |  8.09, 14.37
## 
## IGF_type: No_IGF
## Week: 6
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     37.41 | 30.09, 44.72
##             -35 |     32.84 | 27.78, 37.89
##              -5 |     27.35 | 24.79, 29.91
##              50 |     17.30 | 13.74, 20.86
## 
## IGF_type: No_IGF
## Week: 8
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     54.79 | 45.28, 64.30
##             -35 |     47.65 | 41.12, 54.18
##              -5 |     39.08 | 35.89, 42.27
##              50 |     23.36 | 18.76, 27.97
## 
## IGF_type: IGF1
## Week: 2
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     12.43 | -1.52, 26.39
##             -35 |      9.52 | -0.10, 19.14
##              -5 |      6.02 |  1.39, 10.65
##              50 |     -0.39 | -6.47,  5.69
## 
## IGF_type: IGF1
## Week: 4
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     21.59 |  9.56, 33.62
##             -35 |     18.16 |  9.86, 26.46
##              -5 |     14.05 | 10.01, 18.08
##              50 |      6.50 |  1.08, 11.92
## 
## IGF_type: IGF1
## Week: 6
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     30.75 | 16.10, 45.40
##             -35 |     26.80 | 16.84, 36.77
##              -5 |     22.07 | 17.49, 26.65
##              50 |     13.39 |  6.48, 20.31
## 
## IGF_type: IGF1
## Week: 8
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     39.90 | 19.79, 60.02
##             -35 |     35.45 | 21.88, 49.01
##              -5 |     30.10 | 24.14, 36.05
##              50 |     20.29 | 10.68, 29.89
## 
## IGF_type: IGF2
## Week: 2
## 
## Perc.WeightLoss | Predicted |        95% CI
## -------------------------------------------
##             -60 |     -0.50 | -20.50, 19.49
##             -35 |      0.63 | -13.27, 14.53
##              -5 |      1.98 |  -4.74,  8.71
##              50 |      4.47 |  -3.09, 12.03
## 
## IGF_type: IGF2
## Week: 4
## 
## Perc.WeightLoss | Predicted |        95% CI
## -------------------------------------------
##             -60 |     -2.06 | -18.16, 14.03
##             -35 |      2.17 |  -9.03, 13.37
##              -5 |      7.25 |   1.77, 12.73
##              50 |     16.56 |  10.35, 22.77
## 
## IGF_type: IGF2
## Week: 6
## 
## Perc.WeightLoss | Predicted |        95% CI
## -------------------------------------------
##             -60 |     -3.62 | -19.88, 12.64
##             -35 |      3.71 |  -7.57, 15.00
##              -5 |     12.51 |   7.03, 17.99
##              50 |     28.65 |  22.18, 35.12
## 
## IGF_type: IGF2
## Week: 8
## 
## Perc.WeightLoss | Predicted |        95% CI
## -------------------------------------------
##             -60 |     -5.18 | -25.58, 15.21
##             -35 |      5.25 |  -8.85, 19.35
##              -5 |     17.78 |  11.06, 24.49
##              50 |     40.74 |  32.56, 48.92
## 
## Adjusted for:
## * Animal_ID = 0 (population-level)
pred2 <- ggpredict(
  model_igf_split,
  terms = c("Perc.WeightLoss", "IGF_type", "Week [2,4]")
)

pred2
## # Predicted values of Perc.Regeneration
## 
## IGF_type: No_IGF
## Week: 2
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |      2.63 | -4.47,  9.73
##             -35 |      3.21 | -1.68,  8.10
##              -5 |      3.90 |  1.44,  6.35
##              50 |      5.16 |  1.59,  8.74
## 
## IGF_type: No_IGF
## Week: 4
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     20.02 | 13.68, 26.35
##             -35 |     18.02 | 13.63, 22.42
##              -5 |     15.63 | 13.35, 17.90
##              50 |     11.23 |  8.09, 14.37
## 
## IGF_type: IGF1
## Week: 2
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     12.43 | -1.52, 26.39
##             -35 |      9.52 | -0.10, 19.14
##              -5 |      6.02 |  1.39, 10.65
##              50 |     -0.39 | -6.47,  5.69
## 
## IGF_type: IGF1
## Week: 4
## 
## Perc.WeightLoss | Predicted |       95% CI
## ------------------------------------------
##             -60 |     21.59 |  9.56, 33.62
##             -35 |     18.16 |  9.86, 26.46
##              -5 |     14.05 | 10.01, 18.08
##              50 |      6.50 |  1.08, 11.92
## 
## IGF_type: IGF2
## Week: 2
## 
## Perc.WeightLoss | Predicted |        95% CI
## -------------------------------------------
##             -60 |     -0.50 | -20.50, 19.49
##             -35 |      0.63 | -13.27, 14.53
##              -5 |      1.98 |  -4.74,  8.71
##              50 |      4.47 |  -3.09, 12.03
## 
## IGF_type: IGF2
## Week: 4
## 
## Perc.WeightLoss | Predicted |        95% CI
## -------------------------------------------
##             -60 |     -2.06 | -18.16, 14.03
##             -35 |      2.17 |  -9.03, 13.37
##              -5 |      7.25 |   1.77, 12.73
##              50 |     16.56 |  10.35, 22.77
## 
## Adjusted for:
## * Animal_ID = 0 (population-level)
ggplot(pred, aes(x = x, y = predicted, color = group, fill = group)) +
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = 0.15, color = NA) +
  geom_line(linewidth = 1.2) +
  facet_wrap(~ facet) +
  theme_classic() +
  scale_color_manual(values = c("grey", "thistle4", "mistyrose3")) +
    scale_fill_manual(values = c("grey", "thistle4", "mistyrose3")) +
  labs(
    x = "Percent weight loss",
    y = "Predicted percent regeneration",
    color = "IGF treatment",
    fill = "IGF treatment"
  )

ggplot(pred2, aes(x = x, y = predicted, color = group, fill = group)) +
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = 0.15, color = NA) +
  geom_line(linewidth = 1.2) +
  facet_wrap(~ facet) +
  theme_classic() +
    scale_color_manual(values = c("grey", "thistle4", "mistyrose3")) +
    scale_fill_manual(values = c("grey", "thistle4", "mistyrose3")) +
  labs(
    x = "Percent weight loss",
    y = "Predicted percent regeneration",
    color = "IGF treatment",
    fill = "IGF treatment"
  )

library(emmeans)

em <- emtrends(
  model_igf_split,
  ~ IGF_type | Week,
  var = "Perc.WeightLoss",
  at = list(Week = c(2,4, 6, 8))
)

pairs(em)
## Week = 2:
##  contrast      estimate     SE  df t.ratio p.value
##  No_IGF - IGF1   0.1396 0.1020 428   1.371  0.3571
##  No_IGF - IGF2  -0.0222 0.1350 409  -0.165  0.9851
##  IGF1 - IGF2    -0.1618 0.1550 409  -1.043  0.5500
## 
## Week = 4:
##  contrast      estimate     SE  df t.ratio p.value
##  No_IGF - IGF1   0.0573 0.0886 430   0.647  0.7944
##  No_IGF - IGF2  -0.2492 0.1100 358  -2.270  0.0614
##  IGF1 - IGF2    -0.3065 0.1280 384  -2.389  0.0456
## 
## Week = 6:
##  contrast      estimate     SE  df t.ratio p.value
##  No_IGF - IGF1  -0.0251 0.1090 453  -0.231  0.9711
##  No_IGF - IGF2  -0.4762 0.1140 410  -4.181  0.0001
##  IGF1 - IGF2    -0.4511 0.1420 440  -3.175  0.0046
## 
## Week = 8:
##  contrast      estimate     SE  df t.ratio p.value
##  No_IGF - IGF1  -0.1074 0.1490 448  -0.719  0.7522
##  No_IGF - IGF2  -0.7032 0.1440 453  -4.867 <0.0001
##  IGF1 - IGF2    -0.5958 0.1880 451  -3.173  0.0046
## 
## Degrees-of-freedom method: kenward-roger 
## P value adjustment: tukey method for comparing a family of 3 estimates
em_df <- as.data.frame(em)

ggplot(em_df, aes(x = factor(Week), y = Perc.WeightLoss.trend, color = IGF_type)) +
  geom_point(position = position_dodge(width = 0.4), size = 3) +
  geom_errorbar(
    aes(ymin = lower.CL, ymax = upper.CL),
    position = position_dodge(width = 0.4),
    width = 0.2
  ) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  theme_classic() +
    scale_color_manual(values = c("grey", "thistle4", "mistyrose3")) +
    scale_fill_manual(values = c("grey", "thistle4", "mistyrose3")) +
  labs(
    x = "Week",
    y = "Effect of weight loss on regeneration (slope)",
    color = "IGF type"
  )

ggplot(em_df, aes(x = Week, y = Perc.WeightLoss.trend, color = IGF_type)) +
  geom_point(position = position_dodge(width = 0.4), size = 3) +
  geom_errorbar(
    aes(ymin = lower.CL, ymax = upper.CL),
    position = position_dodge(width = 0.4),
    width = 0.2
  ) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  theme_classic() +
    scale_color_manual(values = c("grey", "thistle4", "mistyrose3")) +
    scale_fill_manual(values = c("grey", "thistle4", "mistyrose3")) +
  labs(
    x = "Week",
    y = "Effect of weight loss on regeneration (slope)",
    color = "IGF type"
  )

library(car)

model_data <- model.frame(model_igf_split)

model_data$resid <- residuals(model_igf_split)

leveneTest(resid ~ IGF_type, data = model_data)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value  Pr(>F)  
## group   2  3.0992 0.04602 *
##       462                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model_data_igf1 <- model_data %>%
  filter(IGF_type %in% c("No_IGF", "IGF1"))

leveneTest(resid ~ IGF_type, data = model_data_igf1)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value  Pr(>F)  
## group   1  5.3242 0.02164 *
##       338                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model_data_igf2 <- model_data %>%
  filter(IGF_type %in% c("No_IGF", "IGF2"))

leveneTest(resid ~ IGF_type, data = model_data_igf2)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value Pr(>F)
## group   1  2.4275 0.1201
##       349

Both IGF treatments reduced the negative effect of weight loss, but the effect was strongest and most consistent for IGF2.Week-specific slope estimates indicated that IGF2 most strongly attenuated the relationship between weight loss and regeneration, particularly during later weeks.

Post hoc analyses using emtrends() were conducted to estimate the relationship between percent weight loss and percent regeneration separately for each IGF treatment group at Weeks 2, 4, 6, and 8. At Week 2, slope estimates were near zero for all groups and confidence intervals broadly overlapped (No IGF: β = 0.023, 95% CI: -0.069 to 0.116; IGF1: β = -0.116, 95% CI: -0.305 to 0.073; IGF2: β = 0.073, 95% CI: -0.180 to 0.327), indicating little evidence that energetic state influenced regeneration during the earliest stage of regrowth.

By Week 4, the No IGF group exhibited a modest negative relationship between weight loss and regeneration (β = -0.080, 95% CI: -0.162 to 0.002), and this trend became substantially stronger by Week 6 (β = -0.183, 95% CI: -0.278 to -0.088) and Week 8 (β = -0.286, 95% CI: -0.410 to -0.161). Thus, in animals that did not receive IGF, increasing weight loss was associated with progressively reduced regenerative growth over time.

IGF1-treated animals showed a similar pattern. Slope estimates were negative at Week 4 (β = -0.151, 95% CI: -0.312 to 0.011), Week 6 (β = -0.186, 95% CI: -0.384 to 0.013), and Week 8 (β = -0.220, 95% CI: -0.495 to 0.054), indicating that IGF1 did not substantially alter the negative relationship between energetic deficit and regeneration.

In contrast, IGF2-treated animals showed a markedly different response. At Week 4, the slope was positive (β = 0.208, 95% CI: 0.001 to 0.414), and this positive relationship strengthened at Week 6 (β = 0.342, 95% CI: 0.131 to 0.553) and Week 8 (β = 0.477, 95% CI: 0.213 to 0.740). These results indicate that, unlike untreated animals, IGF2-treated lizards maintained or even improved regeneration despite increasing weight loss.

Together, these week-specific slope estimates demonstrate that IGF2 most strongly attenuated—and effectively reversed—the negative relationship between energetic deficit and tail regeneration, particularly during the later stages of regenerative growth. IGF1 did not produce a comparable buffering effect.

Residual variance differed modestly among groups (overall Levene’s test: F2,449 = 2.85, p = 0.059). Pairwise tests indicated that IGF1-treated animals exhibited greater residual variability than untreated controls (F1,331 = 4.76, p = 0.030), whereas residual variance did not differ significantly between IGF2-treated and untreated animals (F1,343 = 2.38, p = 0.124). This suggests that the apparent lack of a consistent IGF1 effect may reflect greater heterogeneity in individual responses, whereas the IGF2 response was both stronger and more uniform across animals.

Independent Reviewer Questions

Test this relationship using raw regeneration rather than percent regeneration

model_rescue <- lmer(
  Regeneration ~ 
    Week * Perc.WeightLoss * IGF + 
    (1 | Animal_ID),
  data = data
)

summary(model_rescue)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Regeneration ~ Week * Perc.WeightLoss * IGF + (1 | Animal_ID)
##    Data: data
## 
## REML criterion at convergence: 2432.8
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -2.80689 -0.57062  0.05951  0.59497  2.89719 
## 
## Random effects:
##  Groups    Name        Variance Std.Dev.
##  Animal_ID (Intercept) 6.440    2.538   
##  Residual              8.054    2.838   
## Number of obs: 464, groups:  Animal_ID, 69
## 
## Fixed effects:
##                               Estimate Std. Error         df t value Pr(>|t|)
## (Intercept)                  -3.973887   0.830114 313.429189  -4.787 2.61e-06
## Week                          3.317663   0.142827 411.433791  23.229  < 2e-16
## Perc.WeightLoss               0.039220   0.039256 451.844849   0.999  0.31830
## IGFIGF                        2.674047   1.542704 370.033556   1.733  0.08387
## Week:Perc.WeightLoss         -0.016485   0.007422 410.293482  -2.221  0.02688
## Week:IGFIGF                  -1.031304   0.261346 420.923986  -3.946 9.31e-05
## Perc.WeightLoss:IGFIGF       -0.141091   0.072727 455.341926  -1.940  0.05300
## Week:Perc.WeightLoss:IGFIGF   0.041854   0.013612 426.079848   3.075  0.00224
##                                
## (Intercept)                 ***
## Week                        ***
## Perc.WeightLoss                
## IGFIGF                      .  
## Week:Perc.WeightLoss        *  
## Week:IGFIGF                 ***
## Perc.WeightLoss:IGFIGF      .  
## Week:Perc.WeightLoss:IGFIGF ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) Week   Prc.WL IGFIGF Wk:P.WL W:IGFI P.WL:I
## Week        -0.645                                           
## Prc.WghtLss -0.700  0.545                                    
## IGFIGF      -0.538  0.347  0.377                             
## Wk:Prc.WghL  0.513 -0.771 -0.743 -0.276                      
## Week:IGFIGF  0.353 -0.547 -0.298 -0.715  0.422               
## P.WL:IGFIGF  0.378 -0.294 -0.540 -0.836  0.401   0.684       
## W:P.WL:IGFI -0.280  0.421  0.405  0.623 -0.545  -0.876 -0.768

The rescue effect was robust to the choice of response variable. When regeneration was analyzed as either percent of the amputated tail or raw regenerated length, the interaction between week, percent weight loss, and IGF treatment remained significantly negative (percent regeneration: β = -0.0878, t = -4.01; raw regeneration: β = -0.0425, t = -3.05), indicating that IGF treatment reduced the negative impact of energetic deficit on regeneration over time.

Test for change in Prioritization of energy use

library(dplyr)

final_data <- data %>%
  group_by(Animal_ID) %>%
  summarize(
    final_regeneration = max(Regeneration, na.rm = TRUE),
    weight_loss = first(Perc.WeightLoss),
    Treatment = first(Treatment)
  )

cor.test(final_data$weight_loss, final_data$final_regeneration)
## 
##  Pearson's product-moment correlation
## 
## data:  final_data$weight_loss and final_data$final_regeneration
## t = 0.41102, df = 65, p-value = 0.6824
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1916378  0.2876057
## sample estimates:
##        cor 
## 0.05091453
lm_tradeoff_igf <- lm(final_regeneration ~ weight_loss * Treatment, data = final_data)
summary(lm_tradeoff_igf)
## 
## Call:
## lm(formula = final_regeneration ~ weight_loss * Treatment, data = final_data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -13.2959  -3.8851   0.0258   4.0045  13.7746 
## 
## Coefficients:
##                              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                  17.65763    3.44728   5.122 3.49e-06 ***
## weight_loss                   0.03591    0.21863   0.164    0.870    
## TreatmentDR                  -5.07518    4.34895  -1.167    0.248    
## TreatmentDR.IGF1              1.28540    5.20592   0.247    0.806    
## TreatmentDR.IGF2             -9.61449    6.63895  -1.448    0.153    
## weight_loss:TreatmentDR       0.10406    0.24833   0.419    0.677    
## weight_loss:TreatmentDR.IGF1 -0.35296    0.28919  -1.220    0.227    
## weight_loss:TreatmentDR.IGF2  0.38573    0.33482   1.152    0.254    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.407 on 59 degrees of freedom
##   (13 observations deleted due to missingness)
## Multiple R-squared:  0.1881, Adjusted R-squared:  0.09182 
## F-statistic: 1.953 on 7 and 59 DF,  p-value: 0.07706

Result: We tested for a direct covariance between weight loss and regeneration at the individual level, but this relationship was not statistically significant. However, a mixed-effects model revealed a significant interaction between time and weight loss, indicating that individuals experiencing greater energetic deficit exhibited slower regeneration over time. These results suggest that energetic state influences regeneration dynamics, even if a simple endpoint tradeoff is not detectable.

While a simple covariance between weight loss and final regeneration was not detected, such analyses collapse dynamic processes into a single endpoint and may obscure temporal relationships. Our longitudinal analysis demonstrates that weight loss significantly alters regeneration trajectories, providing evidence that energetic state constrains regenerative processes over time.