@ MarcoSandri прав, что цензура путается с LowerBSize
, но я не уверен, что это все решение. Это могло бы объяснить, почему модель настолько нестабильна, но сама по себе не должна (AFAICT) сделать модель некорректной. Если я заменю LowerBSize+ I(LowerBSize^2) + I(LowerBSize^3)
на ортогональный полином (poly(LowerBSize,3)
), я получу более разумные ответы:
ss3 <- survreg(formula = Surv(RelDistance, Status) ~ Backshore +
poly(LowerBSize,3) + State, data = DataLong,
dist = "exponential")
Call:
survreg(formula = Surv(RelDistance, Status) ~ Backshore + poly(LowerBSize,
3) + State, data = DataLong, dist = "exponential")
Value Std. Error z p
(Intercept) 2.18e+00 1.34e-01 16.28 < 2e-16
BackshoreDune -1.56e-01 1.06e-01 -1.47 0.14257
BackshoreForest / Tree (>3m) -2.24e-01 2.01e-01 -1.11 0.26549
BackshoreGrass - pasture -8.63e-01 1.74e-01 -4.97 6.7e-07
BackshoreGrass - tussock -2.14e-01 1.13e-01 -1.89 0.05829
BackshoreMangrove 3.66e-01 4.59e-01 0.80 0.42519
BackshoreSeawall -5.37e-01 1.53e-01 -3.51 0.00045
BackshoreShrub (<3m) -2.08e-01 1.08e-01 -1.92 0.05480
BackshoreUrban / Building -1.17e+00 3.22e-01 -3.64 0.00028
poly(LowerBSize, 3)1 -6.58e+01 1.41e+00 -46.63 < 2e-16
poly(LowerBSize, 3)2 5.09e+01 1.19e+00 42.72 < 2e-16
poly(LowerBSize, 3)3 -4.05e+01 1.41e+00 -28.73 < 2e-16
StateNT 2.61e-01 1.93e-01 1.35 0.17557
StateQLD 9.72e-02 1.12e-01 0.87 0.38452
StateSA -4.11e-04 1.15e-01 0.00 0.99715
StateTAS 1.91e-01 1.35e-01 1.42 0.15581
StateVIC -9.55e-02 1.35e-01 -0.71 0.47866
StateWA 2.46e-01 1.01e-01 2.44 0.01463
Если я подхожу к той же модели, но с poly(LowerBSize,3,raw=TRUE)
(вызывающий результат ss4
, см. Ниже), я снова получу ваши патологии. Кроме того, модель с ортогональными полиномами на самом деле подходит лучше (имеет более высокое логарифмическое правдоподобие):
logLik(ss4)
## 'log Lik.' -1423.382 (df=18)
logLik(ss3)
## 'log Lik.' -1417.671 (df=18)
В идеальном математическом / вычислительном мире это не должно быть правдой - это еще один признак того, что что-то нестабильно в определении эффектов LowerBSize
таким образом. Я немного удивлен, что это происходит - число уникальных значений LowerBSize
мало, но не должно быть патологическим, а диапазон значений не огромен или далек от нуля ...
Я до сих пор не могу сказать, что на самом деле вызывает это, но проксимальная проблема, вероятно, заключается в сильной корреляции между линейными / квадратичными / кубическими терминами: для чего-то более простого, например, линейной регрессии, корреляция 0,993 (между квадратическими и кубическими терминами) не Это не вызывает серьезных проблем, но чем сложнее численная проблема (например, анализ выживаемости или линейная регрессия), тем больше корреляции может быть проблемой ...
X <- model.matrix( ~ Backshore + LowerBSize +
I(LowerBSize^2) + I(LowerBSize^3) + State,
data=DataLong)
print(cor(X[,grep("LowerBSize",colnames(X))]),digits=3)
library(corrplot)
png("survcorr.png")
corrplot.mixed(cor(X[,-1]),lower="ellipse",upper="number",
tl.cex=0.4)
dev.off()