Last data update: 2014.03.03
R: Effect of Calcium Chloride on Muscle Contraction in Rat...
Effect of Calcium Chloride on Muscle Contraction in Rat Hearts
Description
The purpose of this experiment was to assess the influence of
calcium in solution on the contraction of heart muscle in rats.
The left auricle of 21 rat hearts was isolated and on several
occasions a constant-length strip of tissue was electrically
stimulated and dipped into various concentrations of calcium
chloride solution, after which the shortening of the strip was
accurately measured as the response.
Usage
muscle
Format
This data frame contains the following columns:
Strip
which heart muscle strip was used?
Conc
concentration of calcium chloride solution, in multiples of 2.2 mM.
Length
the change in length (shortening) of the strip, (allegedly) in mm.
Source
Linder, A., Chakravarti, I. M. and Vuagnat, P. (1964)
Fitting asymptotic regression curves with different asymptotes. In
Contributions to Statistics. Presented to Professor P. C. Mahalanobis
on the occasion of his 70th birthday ,
ed. C. R. Rao, pp. 221–228. Oxford: Pergamon Press.
References
Venables, W. N. and Ripley, B. D. (2002)
Modern Applied Statistics with S. Fourth Edition. Springer.
Examples
A <- model.matrix(~ Strip - 1, data=muscle)
rats.nls1 <- nls(log(Length) ~ cbind(A, rho^Conc),
data = muscle, start = c(rho=0.1), algorithm="plinear")
(B <- coef(rats.nls1))
st <- list(alpha = B[2:22], beta = B[23], rho = B[1])
(rats.nls2 <- nls(log(Length) ~ alpha[Strip] + beta*rho^Conc,
data = muscle, start = st))
Muscle <- with(muscle, {
Muscle <- expand.grid(Conc = sort(unique(Conc)), Strip = levels(Strip))
Muscle$Yhat <- predict(rats.nls2, Muscle)
Muscle <- cbind(Muscle, logLength = rep(as.numeric(NA), 126))
ind <- match(paste(Strip, Conc),
paste(Muscle$Strip, Muscle$Conc))
Muscle$logLength[ind] <- log(Length)
Muscle})
lattice::xyplot(Yhat ~ Conc | Strip, Muscle, as.table = TRUE,
ylim = range(c(Muscle$Yhat, Muscle$logLength), na.rm = TRUE),
subscripts = TRUE, xlab = "Calcium Chloride concentration (mM)",
ylab = "log(Length in mm)", panel =
function(x, y, subscripts, ...) {
panel.xyplot(x, Muscle$logLength[subscripts], ...)
llines(spline(x, y))
})
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (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(MASS)
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/MASS/muscle.Rd_%03d_medium.png", width=480, height=480)
> ### Name: muscle
> ### Title: Effect of Calcium Chloride on Muscle Contraction in Rat Hearts
> ### Aliases: muscle
> ### Keywords: datasets
>
> ### ** Examples
>
> A <- model.matrix(~ Strip - 1, data=muscle)
> rats.nls1 <- nls(log(Length) ~ cbind(A, rho^Conc),
+ data = muscle, start = c(rho=0.1), algorithm="plinear")
> (B <- coef(rats.nls1))
rho .lin.StripS01 .lin.StripS02 .lin.StripS03 .lin.StripS04
0.07776401 3.08304824 3.30137838 3.44562531 2.80464434
.lin.StripS05 .lin.StripS06 .lin.StripS07 .lin.StripS08 .lin.StripS09
2.60835015 3.03357725 3.52301734 3.38711844 3.46709396
.lin.StripS10 .lin.StripS11 .lin.StripS12 .lin.StripS13 .lin.StripS14
3.81438456 3.73878664 3.51332581 3.39741115 3.47088608
.lin.StripS15 .lin.StripS16 .lin.StripS17 .lin.StripS18 .lin.StripS19
3.72895847 3.31863862 3.37938673 2.96452195 3.58468686
.lin.StripS20 .lin.StripS21 .lin22
3.39628029 3.36998872 -2.96015460
>
> st <- list(alpha = B[2:22], beta = B[23], rho = B[1])
> (rats.nls2 <- nls(log(Length) ~ alpha[Strip] + beta*rho^Conc,
+ data = muscle, start = st))
Nonlinear regression model
model: log(Length) ~ alpha[Strip] + beta * rho^Conc
data: muscle
alpha..lin.StripS01 alpha..lin.StripS02 alpha..lin.StripS03 alpha..lin.StripS04
3.08305 3.30138 3.44563 2.80464
alpha..lin.StripS05 alpha..lin.StripS06 alpha..lin.StripS07 alpha..lin.StripS08
2.60835 3.03358 3.52302 3.38712
alpha..lin.StripS09 alpha..lin.StripS10 alpha..lin.StripS11 alpha..lin.StripS12
3.46709 3.81438 3.73879 3.51333
alpha..lin.StripS13 alpha..lin.StripS14 alpha..lin.StripS15 alpha..lin.StripS16
3.39741 3.47089 3.72896 3.31864
alpha..lin.StripS17 alpha..lin.StripS18 alpha..lin.StripS19 alpha..lin.StripS20
3.37939 2.96452 3.58469 3.39628
alpha..lin.StripS21 beta..lin22 rho.rho
3.36999 -2.96015 0.07776
residual sum-of-squares: 1.045
Number of iterations to convergence: 0
Achieved convergence tolerance: 4.923e-06
>
> Muscle <- with(muscle, {
+ Muscle <- expand.grid(Conc = sort(unique(Conc)), Strip = levels(Strip))
+ Muscle$Yhat <- predict(rats.nls2, Muscle)
+ Muscle <- cbind(Muscle, logLength = rep(as.numeric(NA), 126))
+ ind <- match(paste(Strip, Conc),
+ paste(Muscle$Strip, Muscle$Conc))
+ Muscle$logLength[ind] <- log(Length)
+ Muscle})
>
> lattice::xyplot(Yhat ~ Conc | Strip, Muscle, as.table = TRUE,
+ ylim = range(c(Muscle$Yhat, Muscle$logLength), na.rm = TRUE),
+ subscripts = TRUE, xlab = "Calcium Chloride concentration (mM)",
+ ylab = "log(Length in mm)", panel =
+ function(x, y, subscripts, ...) {
+ panel.xyplot(x, Muscle$logLength[subscripts], ...)
+ llines(spline(x, y))
+ })
>
>
>
>
>
> dev.off()
null device
1
>