## Not run:
# options(knots=4, poly.degree=2)
# # To get the old behavior of rcspline.eval knot placement (which didnt' handle
# # clumping at the lowest or highest value of the predictor very well):
# # options(fractied = 1.0) # see rcspline.eval for details
# country <- factor(country.codes)
# blood.pressure <- cbind(sbp=systolic.bp, dbp=diastolic.bp)
# fit <- lrm(Y ~ sqrt(x1)*rcs(x2) + rcs(x3,c(5,10,15)) +
# lsp(x4,c(10,20)) + country + blood.pressure + poly(age,2))
# # sqrt(x1) is an implicit asis variable, but limits of x1, not sqrt(x1)
# # are used for later plotting and effect estimation
# # x2 fitted with restricted cubic spline with 4 default knots
# # x3 fitted with r.c.s. with 3 specified knots
# # x4 fitted with linear spline with 2 specified knots
# # country is an implied catg variable
# # blood.pressure is an implied matrx variable
# # since poly is not an rms function (pol is), it creates a
# # matrx type variable with no automatic linearity testing
# # or plotting
# f1 <- lrm(y ~ rcs(x1) + rcs(x2) + rcs(x1) %ia% rcs(x2))
# # %ia% restricts interactions. Here it removes terms nonlinear in
# # both x1 and x2
# f2 <- lrm(y ~ rcs(x1) + rcs(x2) + x1 %ia% rcs(x2))
# # interaction linear in x1
# f3 <- lrm(y ~ rcs(x1) + rcs(x2) + x1 %ia% x2)
# # simple product interaction (doubly linear)
# # Use x1 %ia% x2 instead of x1:x2 because x1 %ia% x2 triggers
# # anova to pool x1*x2 term into x1 terms to test total effect
# # of x1
# ## End(Not run)
Run the code above in your browser using DataLab