This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
neuroimagen:adni_cusp [2015/12/14 13:33] osotolongo [Composite scores] |
neuroimagen:adni_cusp [2020/08/04 10:58] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Using ADNI data for Cusp model fitting ====== | ====== Using ADNI data for Cusp model fitting ====== | ||
+ | [[neuroimagen: | ||
===== Simple way ===== | ===== Simple way ===== | ||
Line 87: | Line 87: | ||
datac$zEduc = (datac$mt2fa.PTEDUCAT - mean(datac$mt2fa.PTEDUCAT))/ | datac$zEduc = (datac$mt2fa.PTEDUCAT - mean(datac$mt2fa.PTEDUCAT))/ | ||
datac$zAVD = (datac$mt2fa.AVDEL30MIN - mean(datac$mt2fa.AVDEL30MIN))/ | datac$zAVD = (datac$mt2fa.AVDEL30MIN - mean(datac$mt2fa.AVDEL30MIN))/ | ||
- | fit_avd_z <- cusp(y ~ zAVD, alpha ~ WB + zAge + mt2fa.PTGENDER + zEduc, beta ~ zWB +zAge + mt2fa.PTGENDER + zEduc, datac) | + | fit_avd_z <- cusp(y ~ zAVD, alpha ~ zWB + zAge + mt2fa.PTGENDER + zEduc, beta ~ zWB +zAge + mt2fa.PTGENDER + zEduc, datac) |
summary(fit_avd_z) | summary(fit_avd_z) | ||
</ | </ | ||
Line 95: | Line 95: | ||
Coefficients: | Coefficients: | ||
| | ||
- | a[(Intercept)] | + | a[(Intercept)] |
- | a[WB] 5.365145 | + | a[zWB] 0.290456 |
a[zAge] | a[zAge] | ||
a[mt2fa.PTGENDERFemale] | a[mt2fa.PTGENDERFemale] | ||
Line 180: | Line 180: | ||
</ | </ | ||
- | ++++ And we get a not so good fit | | + | ++++ And we get a very bad fit result |
< | < | ||
> summary(fit_cs) | > summary(fit_cs) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ cs, alpha = alpha ~ zWB + zAge + mt2fa.PTGENDER + | ||
+ | zEduc, beta = beta ~ zWB + zAge + mt2fa.PTGENDER + zEduc, | ||
+ | data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | Min | ||
+ | -2.9864 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | a[(Intercept)] | ||
+ | a[zWB] | ||
+ | a[zAge] | ||
+ | a[mt2fa.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zWB] | ||
+ | b[zAge] | ||
+ | b[mt2fa.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[cs] 1.012113 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 5487.3 | ||
+ | Linear deviance: 4490.5 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 5324.3 | ||
+ | |||
+ | R.Squared | ||
+ | Linear model 0.16171127 -8205.808 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 723, df = 6, p-value = 0 | ||
+ | |||
+ | Number of optimization iterations: 106 | ||
</ | </ | ||
++++ | ++++ | ||
+ | //That is, the composite score is not related through a cusp model to the independent variable analyzed here // | ||
+ | |||
+ | ===== A try for ADAS-Cog ===== | ||
+ | < | ||
+ | data <- data.frame(mt2fa$WholeBrain, | ||
+ | datac <- data[complete.cases(data), | ||
+ | datac$WB = datac$mt2fa.WholeBrain/ | ||
+ | datac$zWB = (datac$WB - mean(datac$WB))/ | ||
+ | datac$zAge = (datac$mt2fa.vAGE - mean(datac$mt2fa.vAGE))/ | ||
+ | datac$zEduc = (datac$mt2fa.PTEDUCAT - mean(datac$mt2fa.PTEDUCAT))/ | ||
+ | datac$dr = (mean(datac$mt2fa.Q4SCORE) - datac$mt2fa.Q4SCORE)/ | ||
+ | datac$r = (mean(datac$mt2fa.Q8SCORE) - datac$mt2fa.Q8SCORE)/ | ||
+ | fit_dr <- cusp(y ~ dr, alpha ~ zWB + zAge + mt2fa.PTGENDER + zEduc, beta ~ zWB +zAge + mt2fa.PTGENDER + zEduc, datac) | ||
+ | fit_r <- cusp(y ~ r, alpha ~ zWB + zAge + mt2fa.PTGENDER + zEduc, beta ~ zWB +zAge + mt2fa.PTGENDER + zEduc, datac) | ||
+ | </ | ||
+ | |||
+ | ++++ not bad at all for Delay Recall | | ||
+ | < | ||
+ | > summary(fit_dr) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ dr, alpha = alpha ~ zWB + zAge + mt2fa.PTGENDER + | ||
+ | zEduc, beta = beta ~ zWB + zAge + mt2fa.PTGENDER + zEduc, | ||
+ | data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | Min | ||
+ | -3.1117 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | a[(Intercept)] | ||
+ | a[zWB] | ||
+ | a[zAge] | ||
+ | a[mt2fa.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zWB] | ||
+ | b[zAge] | ||
+ | b[mt2fa.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[dr] 1.118457 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 8511.4 | ||
+ | Linear deviance: 5443.0 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 4560.9 | ||
+ | |||
+ | | ||
+ | Linear model 0.2000289 -8896.008 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 1965, df = 6, p-value = 0 | ||
+ | |||
+ | Number of optimization iterations: 38 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ but worst for Recognition | | ||
+ | < | ||
+ | > summary(r) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ r, alpha = alpha ~ zWB + zAge + mt2fa.PTGENDER + | ||
+ | zEduc, beta = beta ~ zWB + zAge + mt2fa.PTGENDER + zEduc, | ||
+ | data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | Min | ||
+ | -3.1343 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | a[(Intercept)] | ||
+ | a[zWB] | ||
+ | a[zAge] | ||
+ | a[mt2fa.PTGENDERFemale] -0.138675 | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zWB] | ||
+ | b[zAge] | ||
+ | b[mt2fa.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[r] | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 6279.2 | ||
+ | Linear deviance: 5963.7 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 5578.1 | ||
+ | |||
+ | | ||
+ | Linear model 0.1235032 -9206.852 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 1913, df = 6, p-value = 0 | ||
+ | |||
+ | Number of optimization iterations: 44 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ===== Notas para Composite Scores ===== | ||
+ | |||
+ | Lo ideal seria hacer script con todos los composites posibles y mirarlo contra los biomarcadores disponibles en // | ||
+ | |||
+ | ++++ Hay varios biomarcadores en la tabla adnimerge que pueden estar relacionados con los composites neuropsicologicos | | ||
+ | |||
+ | <code R> | ||
+ | > names(adnimerge) | ||
+ | [1] " | ||
+ | [5] " | ||
+ | [9] " | ||
+ | [13] " | ||
+ | [17] " | ||
+ | [21] " | ||
+ | [25] " | ||
+ | [29] " | ||
+ | [33] " | ||
+ | [37] " | ||
+ | [41] " | ||
+ | [45] " | ||
+ | [49] " | ||
+ | [53] " | ||
+ | [57] " | ||
+ | [61] " | ||
+ | [65] " | ||
+ | [69] " | ||
+ | [73] " | ||
+ | [77] " | ||
+ | [81] " | ||
+ | [85] " | ||
+ | [89] " | ||
+ | [93] " | ||
+ | </ | ||
+ | ++++ | ||
+ | El problema es que cada uno debe ser analizado de manera distinta. Las variables // | ||
+ | |||
+ | < | ||
+ | library(" | ||
+ | library(cusp) | ||
+ | library(psych) #for composite scores | ||
+ | # Let's get the data | ||
+ | tmp_np <- merge(adas, neurobat, by=c(" | ||
+ | m <- merge(tmp_np, | ||
+ | rm(tmp_np) | ||
+ | # Select data | ||
+ | m$cAGE = m$AGE + m$Years | ||
+ | data <- data.frame(m$WholeBrain, | ||
+ | datac <- data[complete.cases(data), | ||
+ | #Z-scores and Composite Scores | ||
+ | datac$zavd = (datac$m.AVDEL30MIN - mean(datac$m.AVDEL30MIN))/ | ||
+ | datac$zdr = (mean(datac$m.Q4SCORE) - datac$m.Q4SCORE)/ | ||
+ | datac$zAge = (datac$m.cAGE - mean(datac$m.cAGE))/ | ||
+ | datac$zEduc = (datac$m.PTEDUCAT - mean(datac$m.PTEDUCAT))/ | ||
+ | gfam <- data.frame(datac$zavd, | ||
+ | famod <- fa(gfam, scores=" | ||
+ | datac$drcs <- famod$scores | ||
+ | # NI biomarker | ||
+ | datac$wb = datac$m.WholeBrain/ | ||
+ | datac$zwb = (datac$wb - mean(datac$wb))/ | ||
+ | #fit to Cusp model | ||
+ | fit <- cusp(y ~ drcs, alpha ~ zwb + zAge + m.PTGENDER + zEduc, beta ~ zwb +zAge + m.PTGENDER + zEduc, datac) | ||
+ | summary(fit) | ||
+ | </ | ||
+ | |||
+ | ++++ El resultado no es demasiado bueno para la materia gris | | ||
+ | |||
+ | < | ||
+ | > summary(fit) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ drcs, alpha = alpha ~ zwb + zAge + m.PTGENDER + | ||
+ | zEduc, beta = beta ~ zwb + zAge + m.PTGENDER + zEduc, data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | | ||
+ | -3.03128 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | a[(Intercept)] | ||
+ | a[zwb] | ||
+ | a[zAge] | ||
+ | a[m.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zwb] | ||
+ | b[zAge] | ||
+ | b[m.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[drcs] | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 7603.1 | ||
+ | Linear deviance: 4650.8 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 5097.1 | ||
+ | |||
+ | | ||
+ | Linear model 0.1983602 -8324.282 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 893.6, df = 6, p-value = 0 | ||
+ | |||
+ | Number of optimization iterations: 52 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Un poco mejor (no mucho) para los Ventriculos | | ||
+ | < | ||
+ | > summary(fit) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ drcs, alpha = alpha ~ zwb + zAge + m.PTGENDER + | ||
+ | zEduc, beta = beta ~ zwb + zAge + m.PTGENDER + zEduc, data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | | ||
+ | -1.96597 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(> | ||
+ | a[(Intercept)] | ||
+ | a[zwb] | ||
+ | a[zAge] | ||
+ | a[m.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zwb] | ||
+ | b[zAge] | ||
+ | b[m.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[drcs] | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 7186.9 | ||
+ | Linear deviance: 4853.0 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 4458.2 | ||
+ | |||
+ | | ||
+ | Linear model 0.1386990 -8315.823 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 712.8, df = 6, p-value = 0 | ||
+ | |||
+ | Number of optimization iterations: 40 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Para el hipocampo el lineal es tan bueno como el no lineal| | ||
+ | < | ||
+ | > summary(fit) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ drcs, alpha = alpha ~ zwb + zAge + m.PTGENDER + | ||
+ | zEduc, beta = beta ~ zwb + zAge + m.PTGENDER + zEduc, data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | Min | ||
+ | -3.0590 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(> | ||
+ | a[(Intercept)] | ||
+ | a[zwb] | ||
+ | a[zAge] | ||
+ | a[m.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zwb] | ||
+ | b[zAge] | ||
+ | b[m.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[drcs] | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 6826.7 | ||
+ | Linear deviance: 3140.1 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 4303.2 | ||
+ | |||
+ | | ||
+ | Linear model 0.3836286 -6535.252 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 885, df = 6, p-value = 0 | ||
+ | |||
+ | Number of optimization iterations: 65 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Malo para el FDG | | ||
+ | < | ||
+ | > summary(fit) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ drcs, alpha = alpha ~ zwb + zAge + m.PTGENDER + | ||
+ | zEduc, beta = beta ~ zwb + zAge + m.PTGENDER + zEduc, data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | | ||
+ | -3.02185 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | a[(Intercept)] | ||
+ | a[zwb] | ||
+ | a[zAge] | ||
+ | a[m.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zwb] | ||
+ | b[zAge] | ||
+ | b[m.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[drcs] | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 3895.6 | ||
+ | Linear deviance: 2026.9 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 2475.7 | ||
+ | |||
+ | | ||
+ | Linear model 0.2880251 -3890.378 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 534.8, df = 6, p-value = 0 | ||
+ | |||
+ | Number of optimization iterations: 43 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Pesimo para el AV45 | | ||
+ | < | ||
+ | > summary(fit) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ drcs, alpha = alpha ~ zwb + zAge + m.PTGENDER + | ||
+ | zEduc, beta = beta ~ zwb + zAge + m.PTGENDER + zEduc, data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | | ||
+ | -2.77918 | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | a[(Intercept)] | ||
+ | a[zwb] | ||
+ | a[zAge] | ||
+ | a[m.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zwb] | ||
+ | b[zAge] | ||
+ | b[m.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[drcs] | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 1649.6 | ||
+ | Linear deviance: 1051.9 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 1403.4 | ||
+ | |||
+ | | ||
+ | Linear model 0.2448373 -1998.714 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 34.08, df = 6, p-value = 6.494e-06 | ||
+ | |||
+ | Number of optimization iterations: 68 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Pero bastante bueno para el PiB | | ||
+ | < | ||
+ | > summary(fit) | ||
+ | |||
+ | Call: | ||
+ | cusp(formula = y ~ drcs, alpha = alpha ~ zwb + zAge + m.PTGENDER + | ||
+ | zEduc, beta = beta ~ zwb + zAge + m.PTGENDER + zEduc, data = datac) | ||
+ | |||
+ | Deviance Residuals: | ||
+ | | ||
+ | -1.39747 | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(> | ||
+ | a[(Intercept)] | ||
+ | a[zwb] | ||
+ | a[zAge] | ||
+ | a[m.PTGENDERFemale] | ||
+ | a[zEduc] | ||
+ | b[(Intercept)] | ||
+ | b[zwb] | ||
+ | b[zAge] | ||
+ | b[m.PTGENDERFemale] | ||
+ | b[zEduc] | ||
+ | w[(Intercept)] | ||
+ | w[drcs] | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | |||
+ | Null deviance: 297.20 | ||
+ | Linear deviance: 154.46 | ||
+ | Logist deviance: | ||
+ | Delay deviance: 152.70 | ||
+ | |||
+ | | ||
+ | Linear model 0.2060384 -271.7741 | ||
+ | Cusp model | ||
+ | --- | ||
+ | Note: R.Squared for cusp model is Cobb's pseudo-R^2. This value | ||
+ | can become negative. | ||
+ | |||
+ | Chi-square test of linear vs. cusp model | ||
+ | |||
+ | X-squared = 72.71, df = 6, p-value = 1.135e-13 | ||
+ | |||
+ | Number of optimization iterations: 34 | ||
+ | </ | ||
+ | ++++ | ||
+ |