Site icon R-bloggers

Making predictions from GAMs in R explained by an 18th century author

[This article was first published on Bluecology blog, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Making predictions from GAMs in R explained by an 18th century author

As explained by ChatGPT with some minor edits by me. This post is an example for my post “Tips for using chatGPT to learn R”

Pray, let us first summon the mgcv package, that we may avail ourselves of its functions in our quest to fashion a GAM. Hark! Let us summon the ‘mgcv’ package

library(mgcv)

Verily, let us now create a simulated ‘horse’ dataset

# define the sample size
n <- 100

# simulate age data from a normal distribution
age <- rnorm(n, mean = 10, sd = 3)

# simulate rectal temperature data from a normal distribution
temp <- rnorm(n, mean = 101, sd = 1)

# Create a function for the mean heat rate
# with a linear effect of age and a polynomial
# effect of temp. 
hr_mean <- -0.1*age + 10*temp - 0.05*(temp^2) - 430

# simulate heart rate data from a normal distribution
# using the function above as the mean heart rate
hr <- rnorm(n, mean = hr_mean, sd = 8)

# combine the simulated data into a dataframe
horse <- data.frame(age, temp, hr)

Withal, we shall construct a GAM model, with heart rate (hr) as the response variable, and age and rectal temperature (temp) as the predictors, fashioned with the ‘s’ function to impart smoothness onto these predictors

model <- gam(hr ~ s(age) + s(temp), data = horse)

Verily, let us now display the summary of the GAM model

summary(model)

Hark! Let us now appreciate the beauty of the GAM model through a visual representation

plot(model)

Behold, the GAM model has been crafted with the utmost care and precision.

But hold, we must not overlook the most crucial task – to predict the heart rate values for a new horse. Let us accomplish this mission with the aid of the predict function, and relay the news unto the equine owner!

new_horse <- data.frame(age = c(5, 10, 15), temp = c(99, 101, 103))
predicted_hr <- predict(model, new_horse)

Thus, we have fulfilled our obligations, and have relayed the good tidings of the predicted heart rate value unto the horse owner. May their new companion serve them well, and gallop with vigor and grace!

To leave a comment for the author, please follow the link and comment on their blog: Bluecology blog.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Exit mobile version