data(age.income)
ageIncome <- age.income
knot=c(23,24,25,27,30,32,35,38,40,42,46,49,52,55,59)
nknots = 15
# Create fixed effects matrix
ageIncome <- cbind(ageIncome,row.names(ageIncome))
names(ageIncome)[3] <- "obsn"
ageIncome[,3] <- as.numeric(ageIncome[,3])
ageIncome[,4] <- ageIncome[,1]^2
names(ageIncome)[4] <- "age2"
#Create random effects matrix Z
Z <- matrix(NA,nrow=n,ncol=nknots)
u <- Z
for (i in 1:n)
{
for (k in 1:nknots)
{
u[i,k]<-(covariate[i]-knot[k])*step(covariate[i]-knot[k])
Z[i,k]<-pow(u[i,k],degree)
}
}