100% found this document useful (5 votes)
22 views

Download full Data Analysis and Graphics Using R An Example based Approach 2nd Edition John Maindonald ebook all chapters

The document provides information about the book 'Data Analysis and Graphics Using R: An Example-Based Approach, 2nd Edition' by John Maindonald and John Braun, which covers practical tools for data analysis using R. It includes topics such as regression methods, survival analysis, and high-dimensional data handling, with a focus on hands-on analysis and graphical interpretation. The book is suitable for research scientists and students with basic statistical knowledge, and it offers downloadable resources for further learning.

Uploaded by

kadoyamtheku
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (5 votes)
22 views

Download full Data Analysis and Graphics Using R An Example based Approach 2nd Edition John Maindonald ebook all chapters

The document provides information about the book 'Data Analysis and Graphics Using R: An Example-Based Approach, 2nd Edition' by John Maindonald and John Braun, which covers practical tools for data analysis using R. It includes topics such as regression methods, survival analysis, and high-dimensional data handling, with a focus on hands-on analysis and graphical interpretation. The book is suitable for research scientists and students with basic statistical knowledge, and it offers downloadable resources for further learning.

Uploaded by

kadoyamtheku
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 79

Visit https://ebookultra.

com to download the full version and


explore more ebooks

Data Analysis and Graphics Using R An Example


based Approach 2nd Edition John Maindonald

_____ Click the link below to download _____


https://ebookultra.com/download/data-analysis-and-
graphics-using-r-an-example-based-approach-2nd-edition-
john-maindonald/

Explore and download more ebooks at ebookultra.com


Here are some suggested products you might be interested in.
Click the link to download

Data Analysis and Graphics Using R An Example based


Approach 1st Edition John Maindonald

https://ebookultra.com/download/data-analysis-and-graphics-using-r-an-
example-based-approach-1st-edition-john-maindonald/

Data Analysis and Graphics Using R An Example Based


Approach Third Edition John Maindonald

https://ebookultra.com/download/data-analysis-and-graphics-using-r-an-
example-based-approach-third-edition-john-maindonald/

Data Analysis and Graphics Using R 1st Edition Matthew


Norman

https://ebookultra.com/download/data-analysis-and-graphics-
using-r-1st-edition-matthew-norman/

Using R for Data Management Statistical Analysis and


Graphics 1st Edition Nicholas J. Horton

https://ebookultra.com/download/using-r-for-data-management-
statistical-analysis-and-graphics-1st-edition-nicholas-j-horton/
Statistics and Data Analysis for Microarrays Using R and
Bioconductor 2nd Edition Sorin Draghici

https://ebookultra.com/download/statistics-and-data-analysis-for-
microarrays-using-r-and-bioconductor-2nd-edition-sorin-draghici/

IBM SPSS by Example A Practical Guide to Statistical Data


Analysis 2nd Edition Alan C. Elliott

https://ebookultra.com/download/ibm-spss-by-example-a-practical-guide-
to-statistical-data-analysis-2nd-edition-alan-c-elliott/

Qualitative Data Analysis An Introduction 2nd Edition


Carol Grbich

https://ebookultra.com/download/qualitative-data-analysis-an-
introduction-2nd-edition-carol-grbich/

Clinical Trial Data Analysis Using R Chapman Hall CRC


Biostatistics Series 1st Edition Din Chen

https://ebookultra.com/download/clinical-trial-data-analysis-using-r-
chapman-hall-crc-biostatistics-series-1st-edition-din-chen/

Statistics 2nd Edition An Introduction Using R Michael J.


Crawley

https://ebookultra.com/download/statistics-2nd-edition-an-
introduction-using-r-michael-j-crawley/
Data Analysis and Graphics Using R An Example based
Approach 2nd Edition John Maindonald Digital Instant
Download
Author(s): John Maindonald, John Braun
ISBN(s): 9780521861168, 0511250592
Edition: 2
File Details: PDF, 4.75 MB
Year: 2006
Language: english
This page intentionally left blank
Data Analysis and Graphics Using R, Second Edition

Join the revolution ignited by the ground-breaking R system! Starting with an introduction
to R, covering standard regression methods, then presenting more advanced topics, this
book guides users through the practical and powerful tools that the R system provides. The
emphasis is on hands-on analysis, graphical display and interpretation of data. The many
worked examples, taken from real-world research, are accompanied by commentary on
what is done and why. A website provides computer code and data sets, allowing readers
to reproduce all analyses. Updates and solutions to selected exercises are also available.
Assuming basic statistical knowledge and some experience of data analysis, the book is
ideal for research scientists, final-year undergraduate or graduate level students of applied
statistics, and practicing statisticians. It is both for learning and for reference.
This second edition reflects changes in R since 2003. There is new material on
survival analysis, random coefficient models and the handling of high-dimensional data.
The treatment of regression methods has been extended, including a brief discussion
of errors in predictor variables. Both text and code have been revised throughout, and
where possible simplified. New graphs have been added.
John Maindonald is Visiting Fellow at the Centre for Mathematics and its
Applications, Australian National University. He has collaborated extensively with
scientists in a wide range of application areas, from medicine and public health to
population genetics, machine learning, economic history and forensic linguistics.
John Braun is Associate Professor of Statistical and Actuarial Sciences, University of
Western Ontario. He has collaborated with biostatisticians, biologists, psychologists and
most recently has become involved with a network of forestry researchers.
Data Analysis and Graphics
Using R – an Example-Based Approach
Second Edition
CAMBRIDGE SERIES IN STATISTICAL AND PROBABILISTIC
MATHEMATICS

Editorial Board

R. Gill (Department of Mathematics, Utrecht University)


B. D. Ripley (Department of Statistics, University of Oxford)
S. Ross (Department of Industrial & Systems Engineering, University of Southern
California)
B. W. Silverman (St. Peter’s College, Oxford)
M. Stein (Department of Statistics, University of Chicago)

This series of high-quality upper-division textbooks and expository monographs covers


all aspects of stochastic applicable mathematics. The topics range from pure and applied
statistics to probability theory, operations research, optimization, and mathematical pro-
gramming. The books contain clear presentations of new developments in the field and
also of the state of the art in classical methods. While emphasizing rigorous treatment of
theoretical methods, the books also contain applications and discussions of new techniques
made possible by advances in computational practice.

Already published
1. Bootstrap Methods and Their Application, by A. C. Davison and D. V. Hinkley
2. Markov Chains, by J. Norris
3. Asymptotic Statistics, by A. W. van der Vaart
4. Wavelet Methods for Time Series Analysis, by Donald B. Percival and Andrew
T. Walden
5. Bayesian Methods, by Thomas Leonard and John S. J. Hsu
6. Empirical Processes in M-Estimation, by Sara van de Geer
7. Numerical Methods of Statistics, by John F. Monahan
8. A User’s Guide to Measure Theoretic Probability, by David Pollard
9. The Estimation and Tracking of Frequency, by B. G. Quinn and E. J. Hannan
10. Data Analysis and Graphics using R, by John Maindonald and W. John Braun
11. Statistical Models, by A. C. Davison
12. Semiparametric Regression, by D. Ruppert, M. P. Wand, R. J. Carroll
13. Exercises in Probability, by Loic Chaumont and Marc Yor
14. Statistical Analysis of Stochastic Processes in Time, by J. K. Lindsey
15. Measure Theory and Filtering, by Lakhdar Aggoun and Robert Elliott
16. Essentials of Statistical Inference, by G. A. Young and R. L. Smith
17. Elements of Distribution Theory, by Thomas A. Severini
18. Statistical Mechanics of Disordered Systems, by Anton Bovier
19. The Coordinate-Free Approach to Linear Models, by Michael J. Wichura
20. Random Graph Dynamics, by Rick Durrett
Data Analysis and Graphics
Using R – an Example-Based Approach
Second Edition

John Maindonald
Centre for Mathematics and its Applications, Australian National University

and
W. John Braun
Department of Statistical and Actuarial Science, University of Western Ontario
CAMBRIDGE UNIVERSITY PRESS
Cambridge, New York, Melbourne, Madrid, Cape Town, Singapore, São Paulo

Cambridge University Press


The Edinburgh Building, Cambridge CB2 8RU, UK
Published in the United States of America by Cambridge University Press, New York
www.cambridge.org
Information on this title: www.cambridge.org/9780521861168

© Cambridge University Press 2003, 2006

This publication is in copyright. Subject to statutory exception and to the provision of


relevant collective licensing agreements, no reproduction of any part may take place
without the written permission of Cambridge University Press.

First published in print format 2006

ISBN-13 978-0-511-24957-0 eBook (EBL)


ISBN-10 0-511-24957-8 eBook (EBL)

ISBN-13 978-0-521-86116-8 hardback


ISBN-10 0-521-86116-0 hardback

Cambridge University Press has no responsibility for the persistence or accuracy of urls
for external or third-party internet websites referred to in this publication, and does not
guarantee that any content on such websites is, or will remain, accurate or appropriate.
It is easy to lie with statistics. It is hard to tell the truth without statistics.
[Andrejs Dunkels]

   technology tends to overwhelm common sense.


[D. A. Freedman]
For Amelia and Luke
also Shireen, Peter, Lorraine, Evan and Winifred

For Susan, Matthew and Phillip


Contents

Preface page xix

1 A brief introduction to R 1
1.1 An overview of R 1
1.1.1 A short R session 1
1.1.2 The uses of R 5
1.1.3 Online help 6
1.1.4 Further steps in learning R 8
1.2 Data input, packages and the search list 8
1.2.1 Reading data from a file 8
1.2.2 R packages 9
1.3 Vectors, factors and univariate time series 10
1.3.1 Vectors in R 10
1.3.2 Concatenation – joining vector objects 10
1.3.3 Subsets of vectors 11
1.3.4 Patterned data 11
1.3.5 Missing values 12
1.3.6 Factors 13
1.3.7 Time series 14
1.4 Data frames and matrices 14
1.4.1 The attaching of data frames 16
1.4.2 Aggregation, stacking and unstacking 17
1.4.3∗ Data frames and matrices 17
1.5 Functions, operators and loops 18
1.5.1 Built-in functions 18
1.5.2 Generic functions and the class of an object 20
1.5.3 User-written functions 21
1.5.4 Relational and logical operators and operations 22
1.5.5 Selection and matching 23
1.5.6 Functions for working with missing values 23
1.5.7∗ Looping 24
1.6 Graphics in R 24
1.6.1 The function plot( ) and allied functions 25
1.6.2 The use of color 27
x Contents

1.6.3 The importance of aspect ratio 27


1.6.4 Dimensions and other settings for graphics devices 28
1.6.5 The plotting of expressions and mathematical symbols 28
1.6.6 Identification and location on the figure region 29
1.6.7 Plot methods for objects other than vectors 29
1.6.8 Lattice graphics versus base graphics – xyplot() versus plot() 30
1.6.9 Further information on graphics 30
1.6.10 Good and bad graphs 30
1.7 Lattice (trellis) graphics 31
1.8 Additional points on the use of R 33
1.9 Recap 36
1.10 Further reading 36
1.10.1 References for further reading 37
1.11 Exercises 37

2 Styles of data analysis 43


2.1 Revealing views of the data 43
2.1.1 Views of a single sample 44
2.1.2 Patterns in univariate time series 48
2.1.3 Patterns in bivariate data 50
2.1.4 Patterns in grouped data 52

2.1.5 Multiple variables and times 54
2.1.6 Scatterplots, broken down by multiple factors 56
2.1.7 What to look for in plots 58
2.2 Data summary 59
2.2.1 Counts 60
2.2.2 Summaries of information from data frames 63
2.2.3 Standard deviation and inter-quartile range 66
2.2.4 Correlation 68
2.3 Statistical analysis questions, aims and strategies 69
2.3.1 How relevant and how reliable are the data? 70
2.3.2 Helpful and unhelpful questions 70
2.3.3 How will results be used? 71
2.3.4 Formal and informal assessments 72
2.3.5 Statistical analysis strategies 73
2.3.6 Planning the formal analysis 73
2.3.7 Changes to the intended plan of analysis 74
2.4 Recap 74
2.5 Further reading 75
2.5.1 References for further reading 75
2.6 Exercises 75

3 Statistical models 78
3.1 Regularities 79
3.1.1 Deterministic models 79
Contents xi

3.1.2 Models that include a random component 79


3.1.3 Fitting models – the model formula 82
3.2 Distributions: models for the random component 83
3.2.1 Discrete distributions 84
3.2.2 Continuous distributions 86
3.3 The uses of random numbers 88
3.3.1 Simulation 88
3.3.2 Sampling from populations 89
3.4 Model assumptions 90
3.4.1 Random sampling assumptions – independence 91
3.4.2 Checks for normality 92
3.4.3 Checking other model assumptions 95
3.4.4 Are non-parametric methods the answer? 95
3.4.5 Why models matter – adding across contingency tables 95
3.5 Recap 96
3.6 Further reading 97
3.6.1 References for further reading 97
3.7 Exercises 97

4 An introduction to formal inference 101


4.1 Basic concepts of estimation 101
4.1.1 Population parameters and sample statistics 101
4.1.2 Sampling distributions 102
4.1.3 Assessing accuracy – the standard error 102
4.1.4 The standard error for the difference of means 103
4.1.5∗ The standard error of the median 104
4.1.6 The sampling distribution of the t-statistic 104
4.2 Confidence intervals and hypothesis tests 107
4.2.1 One- and two-sample intervals and tests for means 107
4.2.2 Confidence intervals and tests for proportions 113
4.2.3 Confidence intervals for the correlation 113
4.2.4 Confidence intervals versus hypothesis tests 114
4.3 Contingency tables 115
4.3.1 Rare and endangered plant species 117
4.3.2 Additional notes 119
4.4 One-way unstructured comparisons 120
4.4.1 Displaying means for the one-way layout 123
4.4.2 Multiple comparisons 124
4.4.3 Data with a two-way structure, that is, two factors 125
4.4.4 Presentation issues 126
4.5 Response curves 126
4.6 Data with a nested variation structure 127
4.6.1 Degrees of freedom considerations 128
4.6.2 General multi-way analysis of variance designs 129
xii Contents

4.7 Resampling methods for standard errors, tests and confidence


intervals 129
4.7.1 The one-sample permutation test 129
4.7.2 The two-sample permutation test 130
4.7.3∗ Estimating the standard error of the median: bootstrapping 131
4.7.4 Bootstrap estimates of confidence intervals 133

4.8 Theories of inference 134
4.8.1 Maximum likelihood estimation 135
4.8.2 Bayesian estimation 136
4.8.3 If there is strong prior information, use it! 136
4.9 Recap 137
4.10 Further reading 138
4.10.1 References for further reading 138
4.11 Exercises 139

5 Regression with a single predictor 144


5.1 Fitting a line to data 144
5.1.1 Lawn roller example 145
5.1.2 Calculating fitted values and residuals 146
5.1.3 Residual plots 147
5.1.4 Iron slag example: is there a pattern in the residuals? 148
5.1.5 The analysis of variance table 150
5.2 Outliers, influence and robust regression 151
5.3 Standard errors and confidence intervals 153
5.3.1 Confidence intervals and tests for the slope 153
5.3.2 SEs and confidence intervals for predicted values 154
5.3.3∗ Implications for design 155
5.4 Regression versus qualitative anova comparisons 157
5.4.1 Issues of power 157
5.4.2 The pattern of change 158
5.5 Assessing predictive accuracy 158
5.5.1 Training/test sets and cross-validation 158
5.5.2 Cross-validation – an example 159
5.5.3∗ Bootstrapping 161

5.6 A note on power transformations 164
5.6.1∗ General power transformations 164
5.7 Size and shape data 165
5.7.1 Allometric growth 166
5.7.2 There are two regression lines! 167
5.8 The model matrix in regression 168
5.9 Recap 169
5.10 Methodological references 170
5.11 Exercises 170
Contents xiii

6 Multiple linear regression 173


6.1 Basic ideas: book weight and brain weight examples 173
6.1.1 Omission of the intercept term 176
6.1.2 Diagnostic plots 176
6.1.3 Example: brain weight 178
6.1.4 Plots that show the contribution of individual terms 180
6.2 Multiple regression assumptions and diagnostics 182
6.2.1 Influential outliers and Cook’s distance 183
6.2.2 Influence on the regression coefficients 184
6.2.3∗ Additional diagnostic plots 185
6.2.4 Robust and resistant methods 185
6.2.5 The uses of model diagnostics 185
6.3 A strategy for fitting multiple regression models 186
6.3.1 Preliminaries 186
6.3.2 Model fitting 187
6.3.3 An example – the Scottish hill race data 187
6.4 Measures for the assessment and comparison of regression
models 193
6.4.1 R2 and adjusted R2 193
6.4.2 AIC and related statistics 194
6.4.3 How accurately does the equation predict? 194
6.5 Interpreting regression coefficients 196
6.5.1 Book dimensions and book weight 196
6.6 Problems with many explanatory variables 199
6.6.1 Variable selection issues 200
6.7 Multicollinearity 202
6.7.1 A contrived example 202
6.7.2 The variance inflation factor 206
6.7.3 Remedies for multicollinearity 206
6.8 Multiple regression models – additional points 207
6.8.1 Errors in x 207
6.8.2 Confusion between explanatory and response variables 210
6.8.3 Missing explanatory variables 210
6.8.4∗ The use of transformations 212
6.8.5∗ Non-linear methods – an alternative to transformation? 212
6.9 Recap 214
6.10 Further reading 214
6.10.1 References for further reading 215
6.11 Exercises 216

7 Exploiting the linear model framework 219


7.1 Levels of a factor – using indicator variables 220
7.1.1 Example – sugar weight 220
7.1.2 Different choices for the model matrix when there are
factors 223
xiv Contents

7.2 Block designs and balanced incomplete block designs 224


7.2.1 Analysis of the rice data, allowing for block effects 224
7.2.2 A balanced incomplete block design 226
7.3 Fitting multiple lines 227
7.4 Polynomial regression 231
7.4.1 Issues in the choice of model 233
7.5∗ Methods for passing smooth curves through data 234
7.5.1 Scatterplot smoothing – regression splines 235
7.5.2∗ Penalized splines and generalized additive models 239
7.5.3 Other smoothing methods 239
7.6 Smoothing terms in additive models 241
7.6.1∗ The fitting of penalized spline terms 243
7.7 Further reading 243
7.7.1 References for further reading 243
7.8 Exercises 243

8 Generalized linear models and survival analysis 246


8.1 Generalized linear models 246
8.1.1 Transformation of the expected value on the left 246
8.1.2 Noise terms need not be normal 247
8.1.3 Log odds in contingency tables 247
8.1.4 Logistic regression with a continuous explanatory variable 248
8.2 Logistic multiple regression 251
8.2.1 Selection of model terms and fitting the model 253
8.2.2 A plot of contributions of explanatory variables 256
8.2.3 Cross-validation estimates of predictive accuracy 257
8.3 Logistic models for categorical data – an example 258
8.4 Poisson and quasi-Poisson regression 260
8.4.1 Data on aberrant crypt foci 260
8.4.2 Moth habitat example 263
8.5 Additional notes on generalized linear models 269
8.5.1∗ Residuals, and estimating the dispersion 269
8.5.2 Standard errors and z- or t-statistics for binomial models 270
8.5.3 Leverage for binomial models 270
8.6 Models with an ordered categorical or categorical response 271
8.6.1 Ordinal regression models 271
8.6.2∗ Loglinear models 274
8.7 Survival analysis 275
8.7.1 Analysis of the Aids2 data 276
8.7.2 Right censoring prior to the termination of the study 278
8.7.3 The survival curve for male homosexuals 279
8.7.4 Hazard rates 279
8.7.5 The Cox proportional hazards model 280
8.8 Transformations for count data 282
8.9 Further reading 283
Contents xv

8.9.1 References for further reading 283


8.10 Exercises 284

9 Time series models 286


9.1 Time series – some basic ideas 286
9.1.1 Preliminary graphical explorations 286
9.1.2 The autocorrelation function 287
9.1.3 Autoregressive models 288
9.1.4∗ Autoregressive moving average models – theory 290
9.2∗ Regression modeling with moving average errors 291

9.3 Non-linear time series 297
9.4 Other time series packages 298
9.5 Further reading 298
9.5.1 Spatial statistics 299
9.5.2 References for further reading 299
9.6 Exercises 299

10 Multi-level models and repeated measures 301


10.1 A one-way random effects model 302
10.1.1 Analysis with aov() 303
10.1.2 A more formal approach 306
10.1.3 Analysis using lmer() 308
10.2 Survey data, with clustering 311
10.2.1 Alternative models 311
10.2.2 Instructive, though faulty, analyses 316
10.2.3 Predictive accuracy 317
10.3 A multi-level experimental design 317
10.3.1 The anova table 319
10.3.2 Expected values of mean squares 320
10.3.3∗ The sums of squares breakdown 321
10.3.4 The variance components 324
10.3.5 The mixed model analysis 325
10.3.6 Predictive accuracy 327
10.3.7 Different sources of variance – complication or focus
of interest? 327
10.4 Within- and between-subject effects 328
10.4.1 Model selection 329
10.4.2 Estimates of model parameters 330
10.5 Repeated measures in time 332
10.5.1 Example – random variation between profiles 334
10.5.2 Orthodontic measurements on children 339
10.6 Error structure considerations 343
10.6.1 Predictions from models with a complex error
structure 343
10.6.2 Error structure in explanatory variables 344
xvi Contents

10.7 Further notes on multi-level and other models with correlated


errors 344
10.7.1 An historical perspective on multi-level models 344
10.7.2 Meta-analysis 346
10.7.3 Functional data analysis 346
10.8 Recap 346
10.9 Further reading 347
10.9.1 References for further reading 347
10.10 Exercises 348

11 Tree-based classification and regression 350


11.1 The uses of tree-based methods 351
11.1.1 Problems for which tree-based regression may be used 351
11.2 Detecting email spam – an example 352
11.2.1 Choosing the number of splits 355
11.3 Terminology and methodology 355
11.3.1 Choosing the split – regression trees 355
11.3.2 Within and between sums of squares 356
11.3.3 Choosing the split – classification trees 357
11.3.4 Tree-based regression versus loess regression smoothing 358
11.4 Predictive accuracy and the cost–complexity tradeoff 360
11.4.1 Cross-validation 361
11.4.2 The cost–complexity parameter 361
11.4.3 Prediction error versus tree size 362
11.5 Data for female heart attack patients 363
11.5.1 The one-standard-deviation rule 365
11.5.2 Printed information on each split 365
11.6 Detecting email spam – the optimal tree 366
11.7 The randomForest package 368
11.8 Additional notes on tree-based methods 371
11.8.1 The combining of tree-based methods with other approaches 371
11.8.2 Models with a complex error structure 372
11.8.3 Pruning as variable selection 372
11.8.4 Other types of tree 372
11.8.5 Factors as predictors 372
11.8.6 Summary of pluses and minuses of tree-based methods 372
11.9 Further reading 373
11.9.1 References for further reading 373
11.10 Exercises 374

12 Multivariate data exploration and discrimination 375


12.1 Multivariate exploratory data analysis 376
12.1.1 Scatterplot matrices 376
12.1.2 Principal components analysis 377
12.1.3 Multi-dimensional scaling 383
Contents xvii

12.2 Discriminant analysis 384


12.2.1 Example – plant architecture 384
12.2.2 Logistic discriminant analysis 386
12.2.3 Linear discriminant analysis 387
12.2.4 An example with more than two groups 388
12.3∗ High-dimensional data, classification and plots 390
12.3.1 Classifications and associated graphs 392
12.3.2 Flawed graphs 393
12.3.3 Accuracies and scores for test data 397
12.3.4 Graphs derived from the cross-validation process 403
12.4 Further reading 405
12.4.1 References for further reading 406
12.5 Exercises 406

13 Regression on principal component or discriminant scores 408


13.1 Principal component scores in regression 408
13.2∗ Propensity scores in regression comparisons – labor
training data 412
13.2.1 Regression analysis, using all covariates 415
13.2.2 The use of propensity scores 417
13.3 Further reading 419
13.3.1 References for further reading 419
13.4 Exercises 420

14 The R system – additional topics 421


14.1 Working directories, workspaces and the search list 421
14.1.1∗ The search path 421
14.1.2 Workspace management 421
14.1.3 Utility functions 423
14.2 Data input and output 423
14.2.1 Input of data 424
14.2.2 Data output 428
14.3 Functions and operators – some further details 429
14.3.1 Function arguments 430
14.3.2 Character string and vector functions 431
14.3.3 Anonymous functions 431
14.3.4 Functions for working with dates (and times) 432
14.3.5 Creating groups 433
14.3.6 Logical operators 434
14.4 Factors 434
14.5 Missing values 437
14.6∗ Matrices and arrays 439
14.6.1 Matrix arithmetic 440
14.6.2 Outer products 441
14.6.3 Arrays 442
xviii Contents

14.7 Manipulations with lists, data frames and matrices 443


14.7.1 Lists – an extension of the notion of “vector” 443
14.7.2 Changing the shape of data frames 445
14.7.3∗ Merging data frames – merge() 445
14.7.4 Joining data frames, matrices and vectors – cbind() 446
14.7.5 The apply family of functions 446
14.7.6 Splitting vectors and data frames into lists – split() 448
14.7.7 Multivariate time series 448
14.8 Classes and methods 449
14.8.1 Printing and summarizing model objects 449
14.8.2 Extracting information from model objects 450
14.8.3 S4 classes and methods 450
14.9 Manipulation of language constructs 451
14.9.1 Model and graphics formulae 451
14.9.2 The use of a list to pass parameter values 452
14.9.3 Expressions 453
14.9.4 Environments 453
14.9.5 Function environments and lazy evaluation 455
14.10 Document preparation — Sweave() 456
14.11 Graphs in R 457
14.11.1 Hardcopy graphics devices 457
14.11.2 Multiple graphs on a single graphics page 457
14.11.3 Plotting characters, symbols, line types and colors 457
14.12 Lattice graphics and the grid package 462
14.12.1 Interaction with plots 464
14.12.2∗ Use of grid.text() to label points 464
14.12.3∗ Multiple lattice graphs on a graphics page 465
14.13 Further reading 466
14.13.1 Vignettes 466
14.13.2 References for further reading 466
14.14 Exercises 467

Epilogue – models 470

References 474

Index of R Symbols and Functions 485

Index of Terms 491

Index of Authors 501

Color Plates after Page 502


Preface

This book is an exposition of statistical methodology that focuses on ideas and concepts,
and makes extensive use of graphical presentation. It avoids, as much as possible, the
use of mathematical symbolism. It is particularly aimed at scientists who wish to do sta-
tistical analyses on their own data, preferably with reference as necessary to professional
statistical advice. It is intended to complement more mathematically oriented accounts of
statistical methodology. It may be used to give students with a more specialist statistical
interest exposure to practical data analysis.
While no prior knowledge of specific statistical methods or theory is assumed, there is
a demand that readers bring with them, or quickly acquire, some modest level of statistical
sophistication. Readers should have some prior exposure to statistical methodology, some
prior experience of working with real data, and be comfortable with the typing of analysis
commands into the computer console. Some prior familiarity with regression and with
analysis of variance will be helpful.
We cover a range of topics that are important for many different areas of statistical
application. As is inevitable in a book that has this broad focus, there will be investiga-
tors working in specific areas – perhaps epidemiology, or psychology, or sociology, or
ecology – who will regret the omission of some methodologies that they find important.
We comment extensively on analysis results, noting inferences that seem well-founded,
and noting limitations on inferences that can be drawn. We emphasize the use of graphs
for gaining insight into data – in advance of any formal analysis, for understanding the
analysis, and for presenting analysis results.
The data sets that we use as a vehicle for demonstrating statistical methodology have
been generated by researchers in many different fields, and have in many cases featured
in published papers. As far as possible, our account of statistical methodology comes
from the coalface, where the quirks of real data must be faced and addressed. Features
that may challenge the novice data analyst have been retained. The diversity of examples
has benefits, even for those whose interest is in a specific application area. Ideas and
applications that are useful in one area often find use elsewhere, even to the extent
of stimulating new lines of investigation. We hope that our book will stimulate such
cross-fertilization.
To summarize: the strengths of this book include the directness of its encounter with
research data, its advice on practical data analysis issues, the inclusion of code that
reproduces analyses, careful critiques of analysis results, attention to graphical and other
xx Preface

presentation issues, and the use of examples drawn from across the range of statistical
applications.
John Braun wrote the initial drafts of Subsections 4.7.3, 4.7.4, 5.5.3, 6.8.5, 8.4.1
and Section 9.3. Initial drafts of remaining material were, mostly, from John Maindon-
ald’s hand. A substantial part was derived, intially, from the lecture notes of courses
for researchers, at the University of Newcastle (Australia) over 1996–1997 and at The
Australian National University over 1998–2001. Both of us have worked extensively
over the material in these chapters. John Braun has taken primary responsibility for
maintenance of the DAAG package.

The R system
We use the R system for the computations. The R system implements a dialect of the
influential S language, developed at AT&T Bell Laboratories by Rick Becker, John
Chambers and Allan Wilks, which is the basis for the commercial S-PLUS system.
It follows S in its close linkage between data analysis and graphics. Versions of R
are available, at no charge, for 32-bit versions of Microsoft Windows, for Linux and
other Unix systems, and for the Macintosh. It is available through the Comprehensive
R Archive Network (CRAN). Go to http://cran.r-project.org/, and find the
nearest mirror site.
The development model used for R has proved highly effective in marshalling high
levels of computing expertise for continuing improvement, for identifying and fixing
bugs, and for responding quickly to the evolving needs and interests of the statistical
community. Oversight of “base R” is handled by the R Core Team, whose members are
widely drawn internationally. Use is made of code, bug fixes and documentation from
the wider R user community. Especially important are the large number of packages that
supplement base R, and that anyone is free to contribute. Once installed, these attach
seamlessly into the base system.
Many of the analyses offered by R’s packages were not, 10 years ago, available in
any of the standard statistical packages. What did data analysts do before we had such
packages? Basically, they adapted more simplistic (but not necessarily simpler) analyses
as best they could. Those whose skills were unequal to the task did unsatisfactory
analyses. Those with more adequate skills carried out analyses that, even if not elegant
and insightful by current standards, were often adequate. Tools such as are available
in R have reduced the need for the adaptations that were formerly necessary. We can
often do analyses that better reflect the underlying science. There have been challenging
and exciting changes from the methodology that was typically encountered in statistics
courses 10 or 15 years ago.
In the ongoing development of R, priorities have been: the provision of good data
manipulation abilities; flexible and high-quality graphics; the provision of data analysis
methods that are both insightful and adequate for the whole range of application area
demands; seamless integration of the different components of R; and the provision of
interfaces to other systems (editors, databases, the web, etc.) that R users may require.
Preface xxi

Ease of use is important, but not at the expense of power, flexibility and checks against
answers that are potentially misleading.
Depending on the user’s level of skill with R, there will be some relatively routine
tasks where another system may seem simpler to use. Note however the availability of
interfaces, notably John Fox’s Rcmdr, that give a graphical user interface (GUI) to a
limited part of R. Such interfaces will develop and improve as time progresses. They may
in due course, for many users, be the preferred means of access to R. Be aware that the
demand for simple tools will commonly place limitations on the tasks that can, without
professional assistance, be satisfactorily undertaken.
Primarily, R is designed for scientific computing and for graphics. Among the packages
that have been added are many that are not obviously statistical – for drawing and coloring
maps, for map projections, for plotting data collected by balloon-born weather instruments,
for creating color palettes, for working with bitmap images, for solving sudoko puzzles,
for creating magic squares, for reading and handling shapefiles, for solving ordinary
differential equations, for processing various types of genomic data, and so on. Check
through the list of R packages that can be found on any of the CRAN sites, and you may
be surprised at what you find!
The citation for John Chambers’ 1998 Association for Computing Machinery Software
award stated that S has “forever altered how people analyze, visualize and manipu-
late data.” The R project enlarges on the ideas and insights that generated the S lan-
guage. We are grateful to the R Core Team, and to the creators of the various R
packages, for bringing into being the R system – this marvellous tool for scientific
and statistical computing, and for graphical presentation. We list at the end of the
reference section the authors and compilers of packages that have been used in this
book.

Influences on the modern practice of statistics


The development of statistics has been motivated by the demands of scientists for a
methodology that will extract patterns from their data. The methodology has developed
in a synergy with the relevant supporting mathematical theory and, more recently, with
computing. This has led to methodologies and supporting theory that are a radical depar-
ture from the methodologies of the pre-computer era.
Statistics is a young discipline. Only in the 1920s and 1930s did the modern framework
of statistical theory, including ideas of hypothesis testing and estimation, begin to take
shape. Different areas of statistical application have taken these ideas up in different
ways, some of them starting their own separate streams of statistical tradition. Gigerenzer
et al. (1989, “The Empire of Statistics”) examine the history, commenting on the different
streams of development that have influenced practice in different research areas.
Separation from the statistical mainstream, and an emphasis on “black box” approaches,
have contributed to a widespread exaggerated emphasis on tests of hypotheses, to a neglect
of pattern, to the policy of some journal editors of publishing only those studies that show
a statistically significant effect, and to an undue focus on the individual study. Anyone
xxii Preface

who joins the R community can expect to witness, and/or engage in, lively debate that
addresses these and related issues. Such debate can help ensure that the demands of
scientific rationality do in due course win out over influences from accidents of historical
development.

New tools for effective data analysis


We have drawn attention to advances in statistical computing methodology. These have led
to new powerful tools for exploratory analysis of regression data, for choosing between
alternative models, for diagnostic checks, for handling non-linearity, for assessing the
predictive power of models, and for graphical presentation. In addition, we have new
computing tools that make it straightforward to move data between different systems, to
keep a record of calculations, to retrace or adapt earlier calculations, and to edit output
and graphics into a form that can be incorporated into published documents.
The best any analysis can do is to highlight the information in the data. No amount of
statistical or computing technology can be a substitute for good design of data collection,
for understanding the context in which data are to be interpreted, or for skill in the
use of statistical analysis methodology. Statistical software systems are one of several
components of effective data analysis.
The questions that statistical analysis is designed to answer can often be stated simply.
This may encourage the layperson to believe that the answers are similarly simple. Often,
they are not. Be prepared for unexpected subtleties. Effective statistical analysis requires
appropriate skills, beyond those gained from taking one or two undergraduate courses in
statistics. There is no good substitute for professional training in modern tools for data
analysis, and experience in using those tools with a wide range of data sets. No-one
should be embarrassed that they have difficulty with analyses that involve ideas that
professional statisticians may take 7 or 8 years of professional training and experience to
master.

Changes in this second edition


This new edition takes account of changes in R since 2003. There is new material
on survival analysis, random coefficient models and the handling of high-dimensional
data. The treatment of regression methods has been extended, including in particular a
brief discussion of errors in predictor variables. Both the text and R code have been
extensively revised. Code has, wherever possible, been simplified. Some examples have
been reworked. There are changes to some graphs, and new graphs have been added.

Acknowledgments
Many different people have helped us with this project. Winfried Theis (University
of Dortmund, Germany) and Detlef Steuer (University of the Federal Armed Forces,
Hamburg, Germany) helped with technical aspects of working with LATEX, with setting
up a cvs server to manage the LATEX files, and with helpful comments. Lynne Billard
Preface xxiii

(University of Georgia, USA), Murray Jorgensen (University of Waikato, NZ) and Berwin
Turlach (University of Western Australia) gave valuable help in the identification of errors
and text that required clarification. Susan Wilson (Australian National University) gave
welcome encouragement. Duncan Murdoch (University of Western Ontario) helped set
up the DAAG package, and has supplied valuable technical advice. Thanks also to Cath
Lawrence (Australian National University) for her Python program that allowed us to
extract the R code, as and when required, from our LATEX files; this has now at length
become an R function. Many of the tables in this book were generated, in first draft form,
using the xtable() function from the xtable package for R.
For this second edition, Brian Ripley (University of Oxford) has gone through the
manuscript and made extensive comments, leading to important corrections and improve-
ments. We are most grateful to him, and to others who have commented on the manuscript.
Alan Welsh (Australian National University) has been helpful in working through points
where it has seemed difficult to get the emphasis right. Once again, Duncan Murdoch
has given much useful technical advice. Others who have made helpful comments and/or
pointed out errors include Jeff Wood (Australian National University), Nader Tajvidi
(University of Lund), Paul Murrell (University of Auckland, on Section 14.11), Graham
Williams (http://www.togaware.com, on Chapter 1) and Yang Yang (University of
Western Ontario, on Chapter 10). The failings that remain are, naturally, our responsibility.
A strength of this book is the extent to which it has drawn on data from many different
sources. We give a list, following the list of references for the data near the end of the
book, of individuals and/or organizations to whom we are grateful for allowing use of
data. We are grateful to those who have allowed us to use their data. At least these
data will not, as often happens once data have become the basis for a published paper,
gather dust in a long-forgotten folder! We are grateful, also, to the many researchers who,
in their discussions with us, have helped stimulate our thinking and understanding. We
apologize if there is anyone that we have inadvertently failed to acknowledge.
Diana Gillooly of Cambridge University Press, taking over from David Tranah for this
new edition, has been a marvellous source of advice and encouragement throughout the
revision process.

Conventions
Text that is R code, or output from R, is printed in a verbatim text style. For example,
in Chapter 1 we will enter data into an R object that we call austpop. We will use the
plot() function to plot these data. The names of R packages, including our own DAAG
package, are printed in italics.
Starred exercises and sections identify more technical items that can be skipped at a
first reading.

Solutions to exercises
Solutions to selected exercises, R scripts that have all the code from the book and other
supplementary materials are available via the link given at http://www.maths.anu.
edu.au/˜johnm/r-book
1

A brief introduction to R

This first chapter introduces readers to the basics of R. It provides the minimum of
information that is needed for running the calculations that are described in later chapters.
The first section may cover most of what is immediately necessary. The rest of the chapter
may be used as a reference. Chapter 14 extends this material considerably.
Most of the R commands will run without change in S-PLUS.

1.1 An overview of R
1.1.1 A short R session
R must be installed!
An up-to-date version of R may be downloaded from a Comprehensive R Archive
Network (CRAN) mirror site. There are links at http://cran.r-project.org/.
Installation instructions are provided at the web site for installing R in Windows, Unix,
Linux, and version 10 of the Macintosh operating system. Various contributed packages
are now a part of the standard R distribution, but a number are not; any of these may be
installed as required. Data sets that are mentioned in this book, and that are not (in most
cases) available in other packages, have been collected into our DAAG package that is
available from CRAN sites.
For most Windows users, R can be installed by clicking on the icon that appears on
the desktop once the Windows binary has been downloaded from CRAN. An installation
program will then guide the user through the process. By default, an R icon will be placed
on the user’s desktop. The R system can be started by double-clicking on that icon.
The DAAG package can be installed under Windows by starting R and clicking on the
Packages Menu. From that menu, choose Install Packages. If a mirror site has not been
set earlier, this gives a pop-up menu from which a site must be chosen. Once this choice
is made, a new pop-up window appears with the entire list of available R packages.
Clicking on DAAG will cause it to be downloaded and installed.

Using the console (or command line) window


The command line prompt (>) is an invitation to start typing in commands or expressions.
R evaluates and prints out the result of any expression that is typed in at the command
line in the console window (multiple commands may appear on the one line, with the
2 A brief introduction to R

Table 1.1 Estimated worldwide


annual totals of carbon emissions from
fossil fuel use, in millions of tonnes.
Data are due to Marland et al. (2003).

Year Carbon

1 1800 8
2 1850 54
3 1900 534
4 1950 1630
5 2000 6611

semicolon (;) as the separator). This allows the use of R as a calculator. For example,
type 2+2 and press the Enter key. Here is what appears on the screen:
> 2+2
[1] 4
>

The first element is labeled [1] even when, as here, there is just one element! The final
> prompt indicates that R is ready for another command.
In a sense this chapter, and much of the rest of the book, is a discussion of what
is possible by typing in statements at the command line. Practice in the evaluation of
arithmetic expressions will help develop the needed conceptual and keyboard skills. Here
are simple examples:
> 2*3*4*5 # * denotes ’multiply’
[1] 120
> sqrt(10) # the square root of 10
[1] 3.162278
> pi # R knows about pi
[1] 3.141593
> 2*pi*6378 # Circumference of earth at equator (km)
# (radius at equator is 6378 km)
[1] 40074.16

Anything that follows a # on the command line is taken as comment and ignored by R.
A continuation prompt, by default +, appears following a carriage return when the
command is not yet complete. (In this book we will omit both the prompt (>) and the
continuation prompt (+), whenever command line statements are given separately from
output.)

Entry of data at the command line


Table 1.1 gives, for each of the years 1800, 1850, … , 2000, estimated worldwide totals
of carbon emissions that resulted from fossil fuel use. We can enter these columns of
data, then plot Carbon against Year to give Figure 1.1, thus:
1.1 An overview of R 3

50
Carbon

20
0
180 190 20

Year

Figure 1.1 Plot of Carbon against Year, for the data in Table 1.1.

Year <- c(1800, 1850, 1900, 1950, 2000)


Carbon <- c(8, 54, 534, 1630, 6611)
## Now plot Carbon as a function of Year
plot(Carbon ˜ Year, pch=16)

Note the following:

• The <- is a left angle bracket (<) followed by a minus sign (-). It means “the values
on the right are assigned to the name on the left.”
• The objects Year and Carbon are vectors which were each formed by joining
(concatenating) separate numbers together. Thus c(8, 54, 534, 1630, 6611)
joined the numbers 8, 54, 534, 1630, 6611 together to form the vector Carbon. See
Subsection 1.3.2 for further details on this.
• The construct Carbon ∼ Year is a graphics formula. The plot() function inter-
prets this formula to mean “Plot Carbon as a function of Year” or “Plot Carbon
on the y-axis against Year on the x-axis.”
• The setting pch=16 (where pch is “plot character”) gives a solid black dot.
• Case is significant for names of R objects or commands. Thus, Carbon is different
from carbon.

We can make various modifications to this basic plot. We can specify more informative
axis labels, change the sizes of the text and of the plotting symbol, add a title, and so on.
More information is given in Section 1.6.

Collection of vectors into a data frame


The two vectors Year and Carbon are matched, element for element. It is convenient
to group the two vectors together into an object that is called a data frame, thus:
> fossilfuel <- data.frame(year=Year, carbon=Carbon)
> fossilfuel # Display the contents of the data frame.
year carbon
1 1800 8
2 1850 54
3 1900 534
4 A brief introduction to R

4 1950 1630
5 2000 6611
> rm(Year, Carbon) # These are no longer required

The vector objects year and carbon become columns in the data frame.
An alternative to the plotting command that gave Figure 1.1 is then:
plot(carbon ˜ year, data=fossilfuel, pch=16)

The data=fossilfuel argument instructs plot() to start its search for each of
carbon and year by looking among the columns of fossilfuel.
There are several ways to identify columns by name. Here, note that the second column
can be referred to as fossilfuel[, 2], or as fossilfuel[, "carbon"], or as
fossilfuel$carbon.
Data frames are the preferred way for organizing data sets that are of modest size. For
now, think of data frames as a rectangular row by column layout, where the rows are
observations and the columns are variables. More information about data frames can be
found in Section 1.4. Subsection 1.2.1 will demonstrate the reading of data from a file,
entering them into a data frame.

Checks on the working directory and the contents of the workspace


Each R session has a working directory. This is the default place where R looks for files
that are read from disk, or written to disk. For a session that is started from a Windows
icon, the initial working directory is the Start in directory that can be determined by
right clicking on the icon and clicking on Properties. Users of the GUI-based application
for the Macintosh can change the default startup directory from within an R session by
clicking on the R menu item, then on Preferences and making the necessary change in
the panel Initial working directory. On Unix or Linux sessions that are started from the
command line, the working directory is the directory in which R was started. In the event
that there is any uncertainty, use the command getwd() to give the name of the working
directory:
getwd()

Objects that the user creates or copies from elsewhere go into the user workspace. In
order to list the contents of the workspace, type:
ls()

The only object left over from the current session should be fossilfuel. There may
additionally be objects that are left over from previous sessions (if any) in the same
directory, and that were loaded when the session started.

Quitting R
Use the q() function to quit (exit) from R:
q()
1.1 An overview of R 5

There will be a message asking whether to save the workspace image. Clicking Yes has the
effect that, before quitting, all the objects that remain in the working directory are saved
in an “image” file that has the name .RData. This file is an “image” of the workspace
immediately before quitting the session, and will be used to restore the workspace when
a new session is again started in that directory. (Note that while delaying the saving of
important objects till the end of the session is acceptable when working in a learning
mode, it is not a good strategy when using R in production mode. Advice on saving and
backing up through the course of the session will be given in Section 1.8 and, in more
detail, in Subsection 14.1.2.)
Depending on the implementation, alternatives to typing q() may be to click on the
File menu and then on Exit, or to click on the × in the top right-hand corner of the R
window. (Under Linux, depending on the window manager that is used, clicking on ×
may exit from the program, but without asking whether to save the workshop image.
Check the behavior on your installation.)
Note: In order to quit the R session we had to type q(). The round brackets are
necessary because q is a function. Typing q on its own, without the brackets, displays
the text of the function on the screen. Try it!

1.1.2 The uses of R


R has extensive capabilities for statistical analysis, that will be used throughout this book.
These are embedded in an interactive computing environment that is suited to many
different uses. Here we draw attention to abilities, beyond simple one-line calculations,
that may not be primarily statistical.

R offers an extensive collection of functions


Most of the calculations that users may wish to carry out, beyond simple command
line computations, involve explicit use of functions. There are of course functions for
calculating the sum (sum()), mean (mean()), range (range()), length of a vector
(length()), for sorting values into order (sort()) and so on. For example, the
following calculates the range of the values in the vector carbon:

> range(fossilfuel$carbon)
[1] 8 6611

By no means are R’s abilities limited to numerical calculation. Here are examples that
involve character strings:

> ## 4 cities
> fourcities <- c("Toronto", "Canberra", "New York", "London")
> ## display in alphabetical order
> sort(fourcities)
[1] "Canberra" "London" "New York" "Toronto"
> ## Find the number of characters in "Toronto"
> nchar("Toronto")
6 A brief introduction to R

[1] 7
>
> ## Find the number of characters in all four city names at once
> nchar(fourcities)
[1] 7 8 8 6

R will give numerical or graphical data summaries


The data frame cars that is in the datasets package has two columns (variables), with
the names speed and dist. Typing summary(cars) gives summary information on
these variables:
> summary(cars)
speed dist
Min. : 4.0 Min. : 2.00
1st Qu.:12.0 1st Qu.: 26.00
Median :15.0 Median : 36.00
Mean :15.4 Mean : 42.98
3rd Qu.:19.0 3rd Qu.: 56.00
Max. :25.0 Max. :120.00

Thus, we can immediately see that the range of speeds (first column) is from 4 mph to
25 mph, and that the range of distances (second column) is from 2 feet to 120 feet.
Graphical alternatives to summary(), including histograms and boxplots, are dis-
cussed and demonstrated in Sections 1.7 and 2.1. Try for example:
hist(cars$speed)

R is an interactive programming language


Suppose we want to calculate the Fahrenheit temperatures that correspond to Celsius
temperatures 0, 10    , 40. Here is a good way to do this in R:
> celsius <- (0:4)*10
> fahrenheit <- 9/5*celsius+32
> conversion <- data.frame(Celsius=celsius, Fahrenheit=fahrenheit)
> print(conversion)
Celsius Fahrenheit
1 0 32
2 10 50
3 20 68
4 30 86
5 40 104

1.1.3 Online help


Before getting deeply into the use of R, it is well to take time to master the help facilities.
Such an investment of time will pay dividends. R’s help files are comprehensive, and are
1.1 An overview of R 7

frequently upgraded. Type help(help) to get information on the help features of the
system that is in use. To get help on, for example, plot(), type:

help(plot)

The functions apropos() and help.search() offer means for searching for
functions that perform a desired task. Specific examples seem the best way to explain
their use. Thus try:

apropos("sort") # Try, also, apropos ("sor")


# This lists all functions whose names include the
# character string "sort".
help.search("sort") # Note that the argument is ’sort’
# This lists all functions that have the word ’sort’ as
# an alias or in their title.

The function help.start() is designed to start up a browser window that gives


access to a variety of help information and documentation.
Users are encouraged to experiment with R functions, perhaps starting by using
example() to run the examples that are included in the help file. Be warned that
some of the examples may illustrate relatively advanced aspects of the use of the func-
tion. This can be the case even for such basic functions as mean(). To run the examples
that are included in the help file for the function image(), type:

example(image)
# for a 2 by 2 layout of the last 4 plots, precede with
# par(mfrow=c(2,2))
# To prompt for each new graph, precede with par(ask=TRUE)
# When finished, turn off the prompts with par(ask=FALSE)

In learning to use a new function, it may be helpful to create a simple artificial data
set, or to create a small subset from a larger data set, and use this for experimentation.
For extensive experimentation, consider moving to a new working directory and working
with copies of any user data sets and functions.
The help pages, while not an encyclopedia on statistical methodology, have much
helpful information on the methods whose implementation they document. Some of
the abilities that they document will bring pleasant surprises. There are many in-
sightful and helpful examples, there are references to related functions, and there
are references to papers and books that give the relevant theory. It can help enor-
mously, before launching into the use of an R function, to check the relevant help
page!

Wide-ranging searches
The function RSiteSearch()makes it possible (assuming a live internet connection)
to search R manuals and help pages, and the R-help mailing list archives, for key words or
phrases. It has a parameter restrict that allows some limited targeting of the search.
See help(RSiteSearch) for details.
8 A brief introduction to R

1.1.4 Further steps in learning R


Readers who have followed the discussion thus far and worked through the examples
may at this point have learned enough to start on Chapter 2, referring as necessary to later
sections of this chapter, to R’s help pages, and to Chapter 14. Before progressing far,
it will however be wise to work through the remaining sections of the present chapter.
Topics that will be covered in the remaining sections of this chapter, and that readers will
encounter as they work through Chapter 2 and later chapters, include:

• The function read.table(), demonstrated in Subsection 1.2.1, reads data from a


file into a data frame.
• Vectors are a fundamental data structure. Possible modes include numeric, character,
logical and complex. See Subsection 1.3.1.
• Factors, not so far discussed, use integer values 1, 2, …, as indices into a look-up
table that holds unique character strings. They are used to represent categorical data,
and are fundamental to much of the use of R’s graphics and modeling functions. See
Subsection 1.3.6.
• Later chapters will make extensive use both of base graphics (using plot(), etc.) and
of the more stylized graphs provided by lattice graphics. Lattice graphics (Sections
1.7 and 14.12) allows the layout of panels on the page, and point and line settings, to
reflect meaningful aspects of the data structure.
• The R system has a variety of functions that calculate summary statistics, create tables,
do cross-tabulations, obtain information on data sets, and so on. Some of these are
listed in Section 1.5. Others will be encountered in later chapters.

1.2 Data input, packages and the search list


1.2.1 Reading data from a file
The function read.table() offers a straightforward way to read into an R data frame
a file in which each row has the same number of fields of data. For simplicity, assume
that the data from Table 1.1 are in a file called fuel.txt in the working directory, with
fields separated by one or more spaces and/or tabs. (On Microsoft Windows systems, the
Windows conventions apply to file names, and it is immaterial whether this file is called
fuel.txt or Fuel.txt. Unix file systems may, depending on the specific file system in use,
treat letters that have a different case as different.)
Code that will take data from the file fuel.txt, entering them into the data frame
fossilfuel in the workspace is:

fossilfuel <- read.table("fuel.txt", header=TRUE)

Note the use of header=TRUE to ensure that R uses the first line to get header infor-
mation for the columns.
Type fossilfuel at the command line prompt, and the data will be displayed almost
as they appear in Table 1.1 (the only difference is the introduction of row labels in the R
output). Data read into R with the read.table() function are automatically converted
to a data frame.
1.2 Data input, packages and the search list 9

We have assumed that the fields in fuel.txt are separated by spaces and/or tabs, as
allowed by the default setting (sep=") for read.table(). Other parameter settings
are sometimes required; note in particular:

fossilfuel <- read.table("fuel.csv", header=TRUE, sep=",")

reads data from a file fuel.csv where the fields have been separated by commas.
Consult the help page for read.table() for other options.

1.2.2 R packages
The recommended R distribution includes a number of packages in its library. These
are collections of functions and data. We will make frequent use both of the MASS
package (Venables and Ripley, 2002) and of our own DAAG package. DAAG, and other
packages that are not included with the default distribution, can be readily downloaded
and installed.
The base package, the stats package, the datasets package and several other packages,
are automatically attached at the beginning of a session. Other installed packages must
be explicity attached prior to use. Use sessionInfo() to see which packages are
currently attached. To attach any further installed package, use the library() function.
For example:
> library(DAAG)
> sessionInfo()
R version 2.0.1, 2004-11-15, powerpc-apple-darwin6.8

attached base packages:


[1] "methods" "stats" "graphics" "grDevices" "utils"
[6] "datasets" "base"

other attached packages:


DAAG
"0.5.2"

Data sets that accompany R packages


Type data() to get a list of data sets (mostly data frames) in all packages that are in the
current search path. To get information on the data sets that are included in the datasets
package, specify:
data(package="datasets") # Specify ’package’, not ’library’.

Replace "datasets" by the name of any other installed package, as required (type
library() to get the names of the installed packages). In most packages that
are intended for recent versions of R (2.0.0 or later), these data sets become avail-
able automatically once the package has been attached. They will be brought into
the workspace when and if required. (In older versions of R, or in packages that
have not implemented the lazy data mechanism, explicit use of a command of the
10 A brief introduction to R

form data(airquality) may be necessary, bringing the data object into the user’s
workspace.)

Installation of additional packages


The install.packages() function can be used, from within an R session, to install
new packages as required, from an internet connection or from a local repository or file.
Under Windows and other systems that have a menu, packages can alternatively be
installed using the Install Packages option in the Packages menu.

1.3 Vectors, factors and univariate time series


Vectors, factors and univariate time series are all univariate objects that can be included
as columns in a data frame.

1.3.1 Vectors in R
The vector modes that will be described here (there are others) are “numeric,” “logical,”
and “character.” Examples of vectors are:
> c(2, 3, 5, 2, 7, 1)
[1] 2 3 5 2 7 1

> 3:10 # The numbers 3, 4,..., 10


[1] 3 4 5 6 7 8 9 10

> c(T, F, F, F, T, T, F)
[1] TRUE FALSE FALSE FALSE TRUE TRUE FALSE

> c("Canberra", "Sydney", "Canberra", "Sydney")


[1] "Canberra" "Sydney" "Canberra" "Sydney"

The first two vectors above are numeric, the third is logical, and the fourth is a character
vector. Note the use of the global variables F(=FALSE) and T(=TRUE) as a convenient
shorthand when logical values are entered.

1.3.2 Concatenation – joining vector objects


The function c(), used in Subsection 1.1.1 to join numbers together to form a vector, is
more widely useful. It may be used to concatenate any combination of vectors and vector
elements. In the following, we form numeric vectors x and y, that we then concatenate
to form a vector z:
> x <- c(2, 3, 5, 2, 7, 1)
> x
[1] 2 3 5 2 7 1
> y <- c(10, 15, 12)
1.3 Vectors, factors and univariate time series 11

> y
[1] 10 15 12
> z <- c(x, y)
> z
[1] 2 3 5 2 7 1 10 15 12

1.3.3 Subsets of vectors


Note three common ways to extract subsets of vectors:

1. Specify the indices of the elements that are to be extracted, for example:
> x <- c(3, 11, 8, 15, 12) # Assign to x the values 3,
# 11, 8, 15, 12
> x[c(2,4)] # Elements in positions 2
[1] 11 15 # and 4 only
2. Use negative subscripts to omit the elements in nominated subscript positions (take
care not to mix positive and negative subscripts):
> x[-c(2,3)] # Remove the elements in positions 2 and 3
[1] 3 15 12
3. Specify a vector of logical values. The elements that are extracted are those for which
the logical value is TRUE. Thus, suppose we want to extract values of x that are
greater than 10:
> x > 10
[1] FALSE TRUE FALSE TRUE TRUE
> x[x > 10]
[1] 11 15 12

Elements of vectors can be given names. In that case, elements can be extracted by
name:

> heights <- c(Andreas=178, John=185, Jeff=183)


> heights[c("John","Jeff")]
John Jeff
185 183

1.3.4 Patterned data


Use, for example, 5:15 to generate all integers in a range, here between 5 and 15
inclusive:
> 5:15
[1] 5 6 7 8 9 10 11 12 13 14 15

Conversely, 15:5 will generate the sequence in the reverse order.


The function seq() is more general. For example:

> seq(from=5, to=22, by=3) # The first value is 5. The final


# value is <= 22
[1] 5 8 11 14 17 20
12 A brief introduction to R

The function call can be abbreviated to:


seq(5, 22, 3)
To repeat the sequence (2, 3, 5) four times over, enter:
> rep(c(2,3,5), 4)
[1] 2 3 5 2 3 5 2 3 5 2 3 5

Patterned character vectors are also possible:


> c(rep("female", 3), rep("male", 2))
[1] "female" "female" "female" "male" "male"

1.3.5 Missing values


The missing value symbol is NA. As an example, consider the lung variable of the Cape
Fur Seal data (which will be studied in more detail in Chapter 5):
> seal.lung <- cfseal$lung # Weights (gm)
> seal.lung
[1] 605.0 436.0 380.0 493.9 NA 550.0 470.0 592.5 605.0
[10] 799.9 995.0 785.0 910.0 1115.0 1142.6 1465.0 1250.0 1580.0
[19] 2000.0 1474.4 NA 1220.0 1790.0 1510.0 NA NA 2735.0
[28] NA 2380.0 NA

Any arithmetic expression that involves an NA generates NA as its result. Functions


such as mean() allow the parameter setting na.rm=TRUE, so that NAs are omitted
before proceeding with the calculation. For example:
> seal.lung <- cfseal$lung
> mean(seal.lung)
[1] NA
> mean(seal.lung, na.rm=TRUE)
[1] 1137

Logically, if a value is unknown, it is impossible say whether or not it equals some


other value, whether known or unknown. Arithmetic and logical expressions in which
NAs appear generate NA as the result. Thus, consider:
> seal.lung == NA
< [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
< [22] NA NA NA NA NA NA NA NA NA NA

To replace all NAs by -999 (in most circumstances a bad idea) use the function
is.na(), thus:
> ## Replace all NAs by -999 (in general, a bad idea)
> seal.lung[is.na(seal.lung)] <- -999
> seal.lung
[1] 605.0 436.0 380.0 493.9 -999.0 550.0 470.0 592.5 605.0
[10] 799.9 995.0 785.0 910.0 1115.0 1142.6 1465.0 1250.0 1580.0
[19] 2000.0 1474.4 -999.0 1220.0 1790.0 1510.0 -999.0 -999.0 2735.0
[28] -999.0 2380.0 -999.0
1.3 Vectors, factors and univariate time series 13

> ## There is now no protection against use of the -999 values as


> ## if they were legitimate numeric values
> mean(seal.lung) # Illegitimate calculation
[1] 709.7

Using a code such as -999 for missing values requires continual watchfulness to ensure
that it is never treated as a legitimate numeric value.
Missing values are discussed further in Subsection 1.5.6 and Section 14.5. For vectors
of mode numeric, other legal values that may require special attention are NaN (not a
number; try, e.g., by 0/0), Inf (e.g., 1/0) and -Inf.

1.3.6 Factors
A factor is stored internally as a numeric vector with values 1, 2, 3,    , k. The value k is
the number of levels. The levels are character strings.
Consider a survey that has data on 691 females and 692 males. If the first 691 are
females and the next 692 males, we can create a vector of strings that holds the values thus:
gender <- c(rep("female",691), rep("male",692))

We can change this vector to a factor, by entering:

gender <- factor(gender)

Internally, the factor gender is stored as 691 1s, followed by 692 2s. It has stored with
it a table that holds the information:

1 female
2 male

In most contexts that seem to demand a character string, the 1 is translated into female
and the 2 into male. The values female and male are the levels of the factor. By
default, the levels are in sorted order for the data type from which the factor was formed,
so that female precedes male. Hence:

> levels(gender)
[1] "female" "male"

Note that if gender had been an ordinary character vector, the outcome of the above
levels command would have been NULL.
The order of the factor levels determines the order of appearance of the levels in graphs
and tables that use this information. To cause male to come before female, use:

gender <- factor(gender, levels=c("male", "female"))

This syntax is available both when the factor is first created, and later to change the order
in an existing factor. Take care that the level names are correctly spelled. For example,
14 A brief introduction to R

specifying "Male" in place of "male" in the levels argument will cause all values
that were "male" to be coded as missing.
Note finally the function ordered(), which generates factors whose values can be
compared using the relational operators <, <=, >, >=, == and =!. Ordered factors are
appropriate for use with ordered categorical data. See Section 14.4 for further details.

1.3.7 Time series


The following are the numbers of workers (in 1000s) in the Canadian prairies for each
month from January 1995 through December 1996:1
numjobs <- c(982,981,984,982,981,983,983,983,983,979,973,979,
974,981,985,987,986,980,983,983,988,994,990,999)

The function ts() converts numeric vectors into time series objects. Frequently used
arguments of ts() are start, frequency and end. The following turns numjobs
into a time series, which can then be plotted:
numjobs <- ts(numjobs, start=1995, frequency = 12)
plot(numjobs)

Use the function window() to extract a subset of the time series. For example, the
following extracts the first 15 months of the series:
first15 <- window(numjobs, end=1996.25)

Multivariate time series are also possible. See Subsections 2.1.5 and 14.7.7.

1.4 Data frames and matrices


Data frames are fundamental to the use of the R modeling and graphics functions. A data
frame is a more general object than a matrix, in the sense that different columns may
have different modes. All elements of any column must, however, have the same mode,
that is, all numeric, or all factor, or all character, or all logical.
Included in the DAAG package is Cars93.summary, created from the Cars93 data
set in the MASS package. Its contents are:

> Cars93.summary
Min.passengers Max.passengers No.of.cars abbrev
Compact 4 6 16 C
Large 6 6 11 L
Midsize 4 6 22 M
Small 4 5 21 Sm
Sporty 2 4 14 Sp
Van 7 8 9 V

1
## Alternatively, obtain from data frame jobs (DAAG)
library(DAAG) numjobs <- jobs$Prairies
1.4 Data frames and matrices 15

The first three columns are numeric, and the fourth is a factor. Use the function class()
to check this, for example, enter class(Cars93.summary$abbrev). (The classifi-
cation of objects into classes is discussed in Subsection 1.5.2.)
On most systems, use of edit() allows access to a spreadsheet-like display of a data
frame or of a vector, where entries can be edited or new data added. For example:

Cars93.summary <- edit(Cars93.summary)

To close the spreadsheet, click on the File menu and then on Close. On Linux systems,
click on Quit to exit.

Display of the first few, or last few, rows of a data frame


Useful functions are head() and tail(). To display the first three rows of the
Cars93.summary data frame, type:

> head(Cars93.summary, n=3)


Min.passengers Max.passengers No.of.cars abbrev
Compact 4 6 16 C
Large 6 6 11 L
Midsize 4 6 22 M
> # . . .

Similarly, the tail() function displays the last few rows of a data frame. The default
for the second argument (number of rows to display) is 6.
The functions head() and tail() are available also for use with objects other than
data frames.
The square bracket notation offers a more flexible alternative (any subset of rows can
be extracted):

> Cars93.summary[1:3, ]
Min.passengers Max.passengers No.of.cars abbrev
Compact 4 6 16 C
Large 6 6 11 L
Midsize 4 6 22 M

Data frames are a specialized type of list


A list is an arbitrary collection of R objects, brought together into a single data structure.
Most of R’s modeling functions return their output as a list.
Lists can be joined using the function c(); in this and in several other respects they
are “vectors.” Important aspects of the syntax for working with data frames apply also
to lists. Obviously, however, notions of “row” and “column” have no relevance to lists.
See Subsection 14.7.1 for further commentary.
16 A brief introduction to R

1.4.1 The attaching of data frames


In repeated computations with the same data frame, it is tiresome to keep repeating the
name of the data frame. By attaching a data frame, its columns can be referred to by
name, without further need to give the name of the data frame. For example:
> Min.passengers
Error: Object "Min.passengers" not found
> attach(Cars93.summary) # Attach data frame Cars93.summary
> Min.passengers
[1] 4 6 4 4 2 7
> detach(Cars93.summary) # Detach data frame

Detaching data frames that are no longer in use reduces the risk of a clash of variable
names, for example, two different attached data frames that have a column with the name
Min.passengers, or a Min.passengers both in the workspace and in an attached
data frame.
The attaching of a data frame extends the search list, which is the list of “databases”
where R looks for objects. See Subsection 14.1 for more details on this and other uses of
attach().

Column and row names


Use for example rownames(Cars93.summary) to extract the names of rows, here
Compact, Large, Midsize,    . Use for example names(Cars93. summary) or
colnames(Cars93. summary) to extract column names, here Min.passengers
(i.e., the minimum number of passengers for cars in this category), Max.passengers,
No.of.cars, and abbrev.

Subsets of data frames


Data frames are indexed by row and column number. Thus to extract the element in
the 4th row and 2nd column, specify Cars93.summary[4, 2]. Here are additional
examples:
Cars93.summary[1:3, 2:3] # Rows 1-3 and columns 2-3
Cars93.summary[, 2:3] # Columns 2-3 (all rows)
Cars93.summary[, c("No.of.cars","abbrev")] # cols 2-3, by name
Cars93.summary[, -c(2,3)] # omit columns 2 and 3

The subset() function offers an alternative way to extract rows and columns. For
example, the following extracts the first two rows:
subset(Cars93.summary, subset=1:2) # see help(subset) for details

Note that Cars93.summary[1,] is a data frame. To obtain the vector of values in


row 1, specify unlist(Cars93.summary[1, ]).
Avoid Cars93.summary[4], at least until the subtleties of its use are understood.
See Subsection 14.7.1. If used where Cars93.summary[, 4] was intended, the
calculation may fail or give an erroneous result.
1.4 Data frames and matrices 17

Assignment of (new) names to the columns of a data frame


The functions names() (or colnames()) and rownames()) can be used to assign
new names, perhaps shortening them. For example:
names(Cars93.summary)[3] <- "numCars"
names(Cars93.summary) <- c("minPass","maxPass","numCars","code")

1.4.2 Aggregation, stacking and unstacking


The aggregate() function yields a data frame that has the mean or value of another
specified function for each combination of factor levels. There is an example in Subsection
2.2.2. See also Subsection 14.7.5.
For stacking columns of a data frame, that is, placing successive columns one under
the other, the function stack() is available. The following use of stack(), with data
from the data frame jobs, will be required for the use of these data in Subsection 2.1.5:
> library(DAAG)
> head(jobs,3)
BC Alberta Prairies Ontario Quebec Atlantic Date
1 1752 1366 982 5239 3196 947 95.00000
2 1737 1369 981 5233 3205 946 95.08333
3 1765 1380 984 5212 3191 954 95.16667
> # . . .
> Jobs <- stack(jobs, select = 1:6)
> # stack() concatenates selected data frame columns into a
> # single column named "values", & adds a factor named "ind"
> # that has the names of the concatenated columns as levels.
> head(Jobs,3)
values ind
1 1752 BC
2 1737 BC
3 1765 BC
> # . . .

For a further example, see Exercise 19.


The unstack() function reverses the stacking operation. For example,
unstack(Jobs) (or more generally, unstack(Jobs, values ˜ ind))
recovers the original data frame.

1.4.3∗ Data frames and matrices


The numeric values in the data frame fossilfuel might alternatively be stored in a
matrix with the same dimensions, that is, 5 rows × 2 columns. The following enters these
same data as a matrix:
fossilfuelmat <- matrix(c(1800, 1850, 1900, 1950, 2000,
8, 54, 534, 1630, 6611), nrow=5)
colnames(fossilfuel) <- c("year", "carbon")
18 A brief introduction to R

Another possibility is the use of the function cbind() to combine two or more vectors
of the same length and type together into a matrix, thus:
fossilfuelmat <- cbind(year=c(1800, 1850, 1900, 1950, 2000),
carbon=c(8, 54, 534, 1630, 6611))

More generally, any data frame where all columns hold data that is all of the same
type, that is, all numeric or all character or all logical, can alternatively be stored as a
matrix. Storage of numeric data in matrix rather than data frame format can speed up some
mathematical and other manipulations when the number of elements is large, for example,
of the order of several hundreds of thousands. For further details, see Section 14.6.
Note that:
• Matrix elements are stored in column order in one long vector, that is, columns
are stacked one above the other, with the first column first. It is straightforward, as
explained in Section 14.6, to change between a matrix with m rows and n columns,
and a vector of length mn.
• The extraction of submatrices has the same syntax as for data frames. Thus
fossilfuelmat[2:3,] extracts rows 2 and 3 of the matrix fossilfuelmat.
(Be careful not to omit the comma, causing the matrix to be treated as one long vector.)
• The names() function returns NULL when the argument is a matrix. Note however
the functions rownames() and colnames(), which can be used either with data
frames or matrices.

1.5 Functions, operators and loops


Functions are integral to the use of the R language. User-written functions are used in
exactly the same way as built-in functions. Examples will appear from time to time
through the book. An incidental advantage of putting code into functions is that the
workspace is not then cluttered with objects that are local to the function.

1.5.1 Built-in functions


Common useful functions are:

all() # returns TRUE if all values are TRUE


any() # returns TRUE if any values are TRUE
args() # information on the arguments to a function
cat() # prints multiple objects, one after the other
cumprod() # cumulative product
cumsum() # cumulative sum
diff() # form vector of first differences
# N. B. diff(x) has one less element than x
history() # displays previous commands used
is.factor() # returns TRUE if the argument is a factor
is.na() # returns TRUE if the argument is an NA
# NB also is.logical(), is.matrix(), etc.
length() # number of elements in a vector or of a list
1.5 Functions, operators and loops 19

ls() # list names of objects in the workspace


mean() # mean of the elements of a vector
median() # median of the elements of a vector
order() # x[order(x)] sorts x (by default, NAs are last)
print() # prints a single R object
range() # minimum and maximum value elements of vector
sort() # sort elements into order, by default omitting NAs
rev() # reverse the order of vector elements
str() # information on an R object
unique() # form the vector of distinct values
which() # locates ’TRUE’ indices of logical vectors
which.max() # locates (first) maximum of a numeric vector
which.min() # locates (first) minimum of a numeric vector
with() # do computation using columns of specified data frame

Calculations in parallel across all elements of a vector


Subsection 1.1.2 gave an example in which arithmetic was carried out in parallel across
all elements of a vector. Many of R’s functions likewise operate in parallel on all elements
of arrays, matrices and data frames.

The handling of missing values


By default, the functions mean(), sum(), median(), range(), and a number of
other such functions, return NA when applied to vectors in which one or more values is
NA. Note however the parameter setting na.rm=TRUE; that is, remove NAs, then proceed
with the calculation. For example:

> mean(c(1, NA, 3, 0, NA), na.rm=T)


[1] 1.3

When using a function for the first time, consult its help page for information on how it
handles missing values.

Data summary functions – table() and sapply()


Data summary functions that are useful in working with tables of counts are:

table() # Form a table of counts


xtabs() # Form a table of totals

A simple example of the use of table() is:

> library(DAAG) # tinting is from DAAG


> table(Sex=tinting$sex, AgeGroup=tinting$agegp)
AgeGroup
Another Random Scribd Document
with Unrelated Content
yhtä myöntyväinen kuin hänkin siirtämään jatkon tuonnemmaksi.
Kolme tahi neljä tuntia aamu- ja saman verran iltapäivällä käytettiin
opiskeluun, intoni ollenkaan laimenematta. Noin kuuden viikon
kuluttua voin lukea raamattua ja rukouskirjaa melkein mistä paikasta
tahansa. Jackson'in ei tarvinnut minua enää opettaa. Hänestä sain
sen sijaan tarkkaavaisen kuulijan lukiessani joka aamu ja ilta
paikkoja evankeliumista ja jonkun rukouksen.

Lintujen paluuaika lähestyi nyt ja elintarvevarastomme oli


vähäinen. Minun täytyi jättää kirjani ja tehdä ankarasti työtä
toimeentuloksemme. Niin pian kuin linnunpoikaset olivat kasvaneet
tarpeeksi suuriksi, aloin työni. Ja nyt vasta oikein näin, miten
arvokkaita arkusta löytämäni veitset olivatkaan. Solmiamalla kiinni
muutaman puseron kauluksen ja hihat, sain pussin, jolla minun oli
hyvin mukava kantaa lintuja, ja veitsellä nyljin ja paloittelin linnut
neljäsosaa lyhemmässä ajassa kuin ennen. Siimojeni avulla sain
kuivatuksikin niitä paljon enemmän yhdellä kertaa kuin ennen, niin
että yksinäni, apulaisetta, sain kootuksi ja kuivatuksi paljon
enemmän lintuja kuin Jackson'in kanssa yhdessä. Työssä meni
kumminkin noin kolme viikkoa aamusta iltaan. Suurin osa
varastostani pinottiin majan perälle.

Lukutaitoani en kumminkaan saattanut unohtaa, sillä Jackson ei


päästänyt minua aamulla eikä antanut minun panna nukkumaankaan
illalla, ennenkuin olin lukenut hänelle palasen raamatusta; hän näytti
todellakin tulevan hyvin pahoilleen, jos jätin sen tekemättä.

Kun työni vihdoinkin oli lopussa, tunsin vastustamatonta halua


kuulla lopun Jackson'in kertomuksesta, mikä koski isääni ja äitiäni, ja
sanoin sen hänelle. Hän ei näyttänyt pitävän pyynnöstäni, eikä olisi
ruvennut jatkamaan, mutta kun kovasti häntä siihen pakotin, enkä
antanut perään, niin täytyi hänen, vaikka vastahakoisestikin, ruveta
kertomaan.

8. Jackson jatkaa kertomustaan.

Toivoisin sinun ymmärtävän, sanoi hän, minkävuoksi en ole


tahtonut jatkaa kertomustani. Syy on siinä, että minun nyt täytyy
tunnustaa sinulle se viha, joka on isäsi ja minun välillä. Mutta jos
muistanet, olimme molemmat nuoruudessamme koettaneet voittaa
saman henkilön suosiota, nim. äitisi, ja että hän oli ottanut sen
paikan, joka muissa olosuhteissa olisi kuulunut minulle, ja että hän
oli menestynyt elämässään, kun minä sitävastoin olin joutunut
onnettomuuteen; näin ollen ei sinusta vihani voine tuntua
kummalliseltakaan.

— En ymmärrä ollenkaan tunteitanne, vastasin, ja kuinka hän voi


loukata teitä menemällä naimisiin äitini kanssa, on käsittämätöntä
mielestäni.

— Mutta minähän rakastin häntä!

— Otaksukaamme, että sen teitte, mutta kun en tiedä, mitä


rakkaus on, en sentähden voi sitä ymmärtääkään; jatkakaa siis vain
kertomustanne.

— No hyvä; kun viimeksi lopetin, kerroin sinulle että koetimme


päästä maihin tällä saarella ohjaamalla veneemme kylpylahteen,
mutta siinä särkyikin veneemme kappaleiksi. Meitä pelastui kaikkiaan
kahdeksan henkilöä, nimittäin kapteeni, isäsi, kirvesmies, perämies,
kolme laivamiestä ja äitisi. Meillä ei ollut veneessä mitään muuta
kuin kolme kirvestä, kaksi ruoka-astiaa, ja nuo kaksi kasaria, jotka
vieläkin ovat tallella, mutta ei ollut ruokaa eikä vettä. Tarkastimme
sentähden ensi töiksemme saaren, saadaksemme vettä, ja pian
löysimmekin puron, joka vieläkin lirisee majamme vieressä.
Onneksemme tulimme saarelle siihen aikaan, jolloin linnut olivat
juuri tulleet ja munineet; jos ei niin olisi ollut, olisimme kuolleet
nälkään, koska meillä ei ollut minkäänlaisia kalastusneuvojakaan.

Kokosimme joukon munia ja saimme hyvän aterian, vaikkakin


söimme munat raakana. Meidän muitten käyskennellessä tahi
paremmin sanoen kiipeillessä saarella tutkimassa, minkälaiset
elämän mahdollisuudet meillä siellä voisivat olla, jäivät kapteeni ja
isäsi äitisi luo, joka istui suojaisessa paikassa kylpylahden luona.
Palattuamme illalla, kutsui kapteeni meidät kokoon ja sanoi, että
voidaksemme onnistua täytyisi meidän toimia yksimielisinä ja
yhdessä. Sentähden olisi välttämätöntä, että joku ottaisi
päällikkyyden ja johtaisi toisia, sillä ilman sitä ei mikään menestyisi;
hän kysyi, pidimmekö hänen ehdotustaan oikeana? Myönsimme sen
kaikki, vaikka minä puolestani en ollut halukas siihen suostumaan,
mutta kun kaikki muutkin suostuivat, en viitsinyt vastustella.
Kapteeni käski sitten meitä, koska kerran olimme yksimielisiä,
valitsemaan itsellemme johtajan. "Jos olisimme olleet laivalla", sanoi
hän, "olisin tietysti ruvennut siksi itse, mutta koska olemmekin
maalla, pidän herra Henniker'iä siihen toimeen paljon sopivampana
henkilönä"; hän ehdotti, että johto annettaisiin hänelle ja hän tulisi
itsekin mielellään alistumaan herra Henniker'in käskettäväksi.
Kirvesmies ja perämies suostuivat heti tähän ehdotukseen ja lopulta
myös nuo kaksi laivamiestäkin. Tein yksinäni vastarintaa ja sanoin,
etten antaisi minkään "maakravun" komentaa itseäni. Jos kerran
minun täytyy elää muiden komennossa, niin täytyisi käskijänä
ainakin olla jonkun aito merimiehen. Olin varma siitä, että nuo
toisetkin laivamiehet olivat samaa mieltä kanssani, vaikka olivat
antaneetkin suostumuksensa, ja toivoin heidän sitten yhtyvän minun
mielipiteeseeni, johon heillä näytti olevan haluakin. Isäsi vastasi
puheeseeni hyvin tyynesti, vaatimattomasti ja varovasti. Hän sanoi,
ettei hän ollenkaan halunnut ruveta johtajaksi ja että hän mielellään
totteli kapteenia, jos se vain enemmän tyydyttäisi kaikkia. Mutta
kapteeni ja nuo toiset pysyivät lujina päätöksessään ja sanoivat,
ettei semmoisen "juopporatin" kuin minun tarvitse tulla heitä
vastustelemaan ja että saan mennä mihin saaren osaan haluan, jos
en kerran tahdo jäädä heidän luokseen. Kokous loppui siten, että
suutuin ja selitin, etten tahtonut palvella isääsi. Sieppasin yhden
kirveistä mennäkseni tieheni, mutta kapteeni otti sen pois, sanoen
sen olevan hänen omaisuuttaan ja lisäten, että saan mennä, mihin
haluan.

Poistuin heidän luotaan mennäkseni lintujen pesimispaikalle


kokoamaan munia. — Yön tullessa panin maata guanokentälle, eikä
minulle tullut ollenkaan kylmä, sillä myrsky oli nyt lakannut ja ilma oli
hyvin lämmin.

Herätessäni seuraavana aamuna näin, että aurinko oli jo korkealla


taivaalla. Katselin tovereitani, joista olin eronnut, ja huomasin heidän
työskentelevän ahkerasti. Meri oli aivan tyyni ja paljon tavaraa oli
ajautunut maihin uponneesta laivasta. Muutamat miehistä kokosivat
salkoja ja lautoja kallioiden juurelta, haalaten niitä kekseillä
kylpylahteen, jossa ne vedettiin maalle. Isäsi, äitisi ja kirvesmies
olivat juuri tällä paikalla, jossa nyt olemme. He olivat valinneet sen,
rakentaakseen siihen jonkunlaisen majan ja näyttivät olevan hyvin
kiireissään. Kapteeni ja laivamiehet kuljettivat ylös kokoomiaan
salkoja ja lautoja; kaikki olivat toimessa ja tekivät työtä yhtynein
voimin. Tunnustan, että nähdessäni heidän noin työskentelevän, kävi
se minulle kateeksi ja aioin jo mennä mukaan, jollei ajatus, että
minun olisi pitänyt totella isääsi, olisi minua pidättänyt. Söin vielä
muutamia munia raakana, istuen auringon paisteessa ja katsoen,
kun toiset työskentelivät.

Pian huomasin kirvesmiehen alottavan hankkeensa. Ennen kello


yhdeksää oli tämän majan kehys isäsi avulla pystytetty, jonka jälkeen
he kaikki menivät uimarantaan, jossa veneemme oli pohja
rikkinäisenä. He hajoittivat sen, pannen talteen kaikki rautanaulat ja
kantaen veneen kappaleet paikalle, mihin majan kehys oli pystytetty.
Tarvinnen tuskin mainita, mitä he sitten tekivät, sillä onhan sinulla
maja edessäsi. Katto, kuten näet, on suurimmaksi osaksi rakennettu
venelaudoista, kun sitävastoin seinät ovat vahvemmista laudoista;
täytyy sanoa, että he tekivät työnsä hyvin. Ennen aamua oli yksi
majan seinistä valmis ja näin heidän sitten sytyttävän tulen lastuista,
joita he hakkasivat kirveillään, ja paistavan munia ja lintuja, joita he
olivat koonneet ensimmäisenä päivänä.

Yhden asian olin kokonaan unohtanut tehdessäni kapinan ja


jättäessäni toverini, nimittäin juomaveden, ja se paikka, jonka he
olivat ottaneet haltuunsa, näytti olevan ainoa semmoinen, josta sitä
oli saatavissa. Olin kuolla janoon jo ennen iltaa ja lähdin sentähden
rotkoon kiipeilemään tarkastaakseni, olisiko siellä mahdollisesti vettä.
Illansuussa löysinkin lähteen, jonka tiedät, sillä olethan siitä niin
usein juonut puunhakumatkoillasi. Tästä sain uutta rohkeutta, sillä
pelkäsin, että veden puute pakottaisi minut alistumaan. Kiusalla
taittelin veitselläni rotkosta niin paljon oksia matkaani kuin vain voin
kantaa, ja seuraavana aamuna tein niistä risumajan itselleni,
näyttääkseni, että minullakin oli katto pääni päällä, yhtä hyvin kuin
heilläkin. Rakensin sen jonkun matkan päähän guanokentän
yläpuolelle, ettei minun tarvitsisi olla missään tekemisissä heidän
kanssaan, kun he tulivat hakemaan munia ja lintuja jokapäiväiseksi
tarpeekseen.

Ennen seuraavaa yötä oli maja aivan valmis.

Ilma lämpeni yhä enemmän päivä päivältä ja koska minulla ei ollut


minkäänlaista astiaa, jossa olisin säilyttänyt vettä, täytyi minun joka
kerta juomaa halutessani kiivetä rotkoon, joka oli hyvin vaikeata.
Sentähden päätinkin tehdä itselleni uuden majan rotkoon lähteen
reunalle, päästäkseni noista monista päivittäisistä juomamatkoistani.
Tiesin, että voin hatussani ja nenäliinassani tuoda sinne munia
pariksi kolmeksi päiväksi ja päätin heti panna aikeeni täytäntöön.
Seuraavana päivänä kiipesin siis rotkoon, ruvetakseni siellä asumaan
ja otin munia mukaani niin paljon kuin voin kantaa. Parin päivän
kuluttua sain majani valmiiksi ja sisustin sen jotenkin mukavaksi.
Kolmantena päivänä palasin hakemaan uutta munavarastoa,
mukanani kori, jonka olin kutonut hienoista oksista ja jolla tiesin
voivani tuoda muonaa koko viikoksi kerrallaan. Olin nyt täydellisesti
tyytyväinen olooni ja päätin elää erakkona saarella olo-aikanani, niin
kauan kuin se tulisi ehkä kestämäänkin, sillä kärsin mieluummin
vaikka mitä, ennenkuin kuuntelin niin suuresti vihaamani henkilön
käskyjä kuin isäsi oli.

Mutta pian selveni, miten viisaasti he olivatkaan tehneet,


valitessaan isäsi johtajakseen. He otaksuivat lintujen alituisesti
asustavan saarella ja luulivat niin ollen aina olevansa tilaisuudessa
saamaan elatuksensa. Isäsi, joka oli kauan asunut Chilessä, tiesi
kumminkin niitten muutamien viikkojen kuluttua hylkäävän
pesimispaikkansa. Hän sanoi heille tämän ja todisti, miten onnellisia
he olivatkaan joutuessaan haaksirikkoon juuri tähän aikaan ja miten
välttämätöntä oli, että he koettavat nyt koota elintarpeita koko
vuodeksi. He eivät voineet käsittää, miten lintuja voi säilyttää
suolaamatta, mutta hän tiesi, miten se oli mahdollista, ja näytti
heille, kuinka lintuja kuivataan auringon paisteessa. Minun
oleskellessani rotkossa tekivät he siis ahkerasti työtä, kooten ja
kuivaten suuret määrät lintuja, niin että heillä ennen lintujen
poismuuttoa oli jo tarpeelliset varastot. Hän se oli, joka keksi senkin,
että lintujen jalkajänteistä voi tehdä kalastussiimoja ja opetti äitisi
niitä soimaamaan. Ensi alussa pyytivät he kaloja muutamilla
nauloista tehdyillä koukuilla, mutta isäsi opetti heidät sitten
pyytämään niitä koukutta niinkuin intiaanit mantereella tekivät, joilta
hän oli taidon oppinut.

Isäsi ansiota oli, että he olivat niin hyvin varustettuja silloin kuin
linnut lähtivät poikineen; minä sitä vastoin olin jäänyt oman onneni
nojaan. Ennen lintujen lähtöäkin olin joutunut jo hyvin vaikeaan
asemaan; sillä munissa oli jo viime aikoina aivan täysinkehittyneitä
poikasia, niin etten voinut niitä syödä ja kun minulla ei ollut tulta,
enkä osannut niitä kuivata, ei minulle jäänyt muu neuvoksi, kuin
syödä ne raakana, joka oli kaikkea muuta kuin miellyttävää. Minua
lohdutti kumminkin se ajatus, ettei vanhemmillasi eikä noilla
muillakaan ollut sen paremmasti ja toivoin aikaa, jolloin linnut taasen
alkaisivat munia, voidakseni niiden vielä ollessa tuoreena, koota niitä
paljon suuremman varaston. Mutta kaikki suunnitelmani menivät
myttyyn, kun linnut, sekä vanhat, että nuoret, paria päivää
myöhemmin lähtivät pois, jättäen minut vaille kaikkia
toimeentulomahdollisuuksia.

Se oli kauhea huomio, enkä ymmärtänyt, mitä olisin tehnyt.


Kävelin sinne tänne guanokentällä ja kolmantena päivänä tulin jo
iloiseksi löytäessäni muutaman kuolleen linnun, jolla voin tyydyttää
nälkääni. Samalla halusin tietää, miten entiset toverini menettelivät,
sillä otaksuin, että he olivat yhtä huonossa asemassa kuin minäkin.
Kallioiden suojasta vakoilin heitä, mutta en voinut huomata heissä
mitään epätoivon merkkejä. Siinä istui äitisi niin tyynenä majan
seinustalla, keskustellen isäsi ja kapteenin kanssa. Kaksi muuta näkyi
istuvan kallioilla onkimassa ja kummastelin, mistä he olivat saaneet
siimoja, samalla kuin otaksuin heidän sillä tavalla saavan
elatuksensa. Mutta se ei auttanut minua, sillä olin nälkään
kuolemassa ja nälkä masentaa ihmisen ylpeyden. Viidentenä päivänä
menin kallioille missä muudan laivamiehistä oli onkimassa. Tervehdin
häntä ja sanoin, että olin nälkään kuolemaisillani ja pyysin häneltä
jotain syötävää.

— En voi auttaa sinua, vastasi hän, minulla ei ole oikeutta antaa


pois mitään. Sinun täytyy puhutella herra Henniker'iä, joka nyt on
päällikkönä. Kuinka olitkaan tyhmä tehdessäsi kapinan, katso nyt,
mitä se on sinua hyödyttänyt.

— Äh, vastasin, jos ette saisi kaloja, ette olisi paremmassa


asemassa kuin minäkään.

— Kyllä varmasti ja siitä on meidän kiittäminen häntä; ilman häntä


olisimme nyt huutavassa hukassa, sen tunnustan. Meillä on
ruokavaroja vaikka kuinka paljon, ja kalastamme ainoastaan
saadaksemme vaihtelua.

Tämä kummastutti minua suuresti, mutta ei ollut enää


autettavissa. Koska en voinut nähdä nälkää, niin menin kentälle,
jossa isäsi oli kapteenin seurassa, ja sanoin röyhkeästi, että olin
tullut takaisin ja halusin liittyä tovereihini. Kapteeni katsahti minuun
ja käski minun kysyä sitä isältäsi, joka vastasi, että hän neuvottelisi
siitä muitten kanssa, heidän tultuaan päivälliselle, koska hän ei
voinut tehdä mitään heidän suostumuksettaan, jonka jälkeen he
poistuivat. Olin kauheasti nälissäni, joka lisääntyi vaan katsoessani,
miten äitisi paistoi kahta suurta kalaa nuotiossa. Sitä en nyt
kumminkaan voinut auttaa ja istahdin vähän syrjemmäksi kiihkeästi
odottamaan muitten paluuta, jolloin kohtaloni ratkaistaisiin. Olin nyt
niin masentunut, että päätin suostua vaikka mihin, kunhan vain
pääsisin takaisin. Parin tunnin kuluttua olivat he kaikki kokoontuneet
päivälliselle ja kadehdin heiltä joka suupalaa, jonka he nauttivat. Sen
jälkeen vähän aikaa neuvoteltuaan käski isäsi minun tulla
lähemmäksi ja sanoi:

— Jackson, hylkäsitte meidät silloin, kun olisitte voineet olla meille


suureksi avuksi kovassa työssämme; nyt kun olemme saaneet kaikki
kuntoon ja jotenkin mukavasti, tahdotte palata takaisin jakamaan
kanssamme työmme hedelmät ja saavutukset. Te ette ole hankkinut
itsellenne mitään, niinkuin me, josta seuraa, että me tulemme nyt
jotenkin hyvin toimeen, kun te sitä vastoin näette nälkää. Olen nyt
puhutellut tovereitani ja he ovat kaikki sitä mieltä, että teidän, koska
ette ole auttaneet meitä, täytyy, jos mielitte liittyä seuraamme, ja
tulla muiden asemaan, työskennellä paljon enemmän kuin heidän.
On sentähden ehdotettu, että saatte liittyä, meihin ehdolla, että
siihen asti, kunnes linnut taasen tulevat takaisin saarelle, hankitte
meille rotkosta tarvitsemamme puumäärän. Jos suostutte tähän, niin
saatte tulla, kuitenkin sillä nimenomaisella ehdolla, että noudatatte
niitä lakeja ja sääntöjä, jotka olemme laatineet ohjeeksemme.
Semmoiset ovat ehtomme ja nyt saatte päättää, miten hyväksi
näette. Tarvitsee tuskin mainita, että suostuin niihin ilolla, jota vielä
lisäsivät ne päivällisen jäännökset, jotka sain syödäkseni. Ahmin niin
että olin tukehtua, kunnes olin saanut tarpeekseni.
Syötyäni rupesin punnitsemaan ehtoja, joihin olin suostunut, ja
vereni kiehui ajatellessani tulevani jollakin tavalla toisten orjaksi,
koska minun täytyisi työskennellä niin ankarasti joka päivä. Unhotin,
että se oli oikeus ja kohtuus ja että sillä tavalla ansaitsisin osani
vuosivarastosta, jonka kokoamisessa en ollut ollut apuna. Rupesin
vihaamaan isääsi yhä enemmän ja lupasin mielessäni kostaa, jos
vain joskus saisin siihen tilaisuutta, mutta nyt ei asiaa voinut auttaa.
Joka päivä kiipesin tuonne ylös, mukanani nuoran palanen ja kirves.
Hakkasin suuren kantamuksen puita ja toin ne majalle. Se oli kovaa
työtä, jossa meni aina koko päivärupeama ja sain olla hyvin
hanakkana, ehtiäkseni päivälliseksi takaisin. Kapteeni tarkasti aina
kantamukseni, vakuuttautuakseen, että puut riittäisivät päivän
tarpeeksi.

9. Veres kokemus ja uusi aarre.

Kului vuosi ja koko ajan työskentelin tällä tavalla. Vihdoinkin tulivat


linnut takaisin ja sittenkuin olimme koonneet vuosivarastomme,
vapauduin erikoistehtävästäni ja sain jakaa työt muitten kanssa.

Alituisena miettimisen aiheenamme oli se, kuinka kauan


todennäköisesti tulisimme saarella viipymään. Joka päivä
tähystelimme huolissamme jotakin laivaa, mutta emme koskaan
sellaista nähneet. Vihdoin aloimme jokainen menettää kaiken
toivomme ja kun niin kävi, muuttuivat useimmat meistä synkiksi ja
surullisiksi. Luulen, että toisetkin nyt olisivat tehneet kapinan,
niinkuin minä, jos heillä olisi ollut siihen jotakin syytä. Vanhempasi
koettivat rohkaista meitä niin paljon kuin osasivat. He keksivät jos
jonkinlaisia huvituksia ja illoilla he kertoivat monta jännittävää
tarinaa poistaaksensa ikäväämme. Kaikki kunnioittivat äitiäsi, ja sen
hän hyvin ansaitsikin. Lähestyin häntä harvoin, koska hän näytti
tuntevan minua kohtaan suurta vastenmielisyyttä, luultavasti
käytökseni johdosta isääsi kohtaan, sillä nyt, kun olin taasen
samassa asemassa kuin muutkin olin hänelle niin röyhkeä kuin vain
uskalsin, tekemättä itseäni kumminkaan syypääksi rangaistukseen
tottelemattomuudesta. Vastustin joka ehdotusta, jonka hän teki, niin
paljon kuin voin, mutta isäsi pysyi aina tyynenä, eikä suuttunut
niinkuin minä.

Ensimmäinen vähän merkitsevämpi tapaus oli kahden miehen


kadottaminen, nimittäin kirvesmiehen ja toisen laivamiehen, jotka
olivat isäsi luvalla, otettuaan mukaansa viikon evään, lähteneet
kiertämään saarta, tutkiakseen sen tarkoin. Ollessaan paluumatkalla
ja saavuttuaan eräälle korkealle vuoren harjanteelle, oli heitä
nähtävästi kovasti janottanut, ja kun he eivät olleet voineet löytää
vettä, olivat he koettaneet virkistää itseään joillakin marjoilla, joita
siellä kasvoi. Nuo marjat sattuivatkin olemaan myrkyllisiä, sillä jo
palatessaan olivat miehet hyvin kipeitä ja muutamain päivien perästä
kuolivat he molemmat.

Tämä tapaus pelästytti meitä kovasti ja toi vähän vaihtelua


yksitoikkoiseen elämäämme, vaikkakaan ei juuri mitään hauskaa
sellaista. Minä kumminkin melkein iloitsin tapauksesta, enemmän
kuin surin, sillä huomasin nyt näet olevani suuremman arvoinen kuin
ennen. Hautasimme ruumiit guanoon tuon ensimmäisen korkean
kallion juurelle, jonne sitten kaikki muutkin ovat haudatut. Kului
sitten kolme kuukautta, kun toinen laivamiehistä katosi. Löysimme
etsiessämme häntä hänen housunsa kallion juurelta. Hän oli
nähtävästi mennyt uimaan, sillä sinä päivänä, jolloin hän katosi, oli
meri rasvatyyni. Oliko hän nähnyt jotakin kelluvan merellä ja
tahtonut hakea sen maihin, tai oliko hän vain huvikseen uinut
etemmäksi, hyvä uimari kun oli, emme voineet koskaan saada
selville, niinkuin emme sitäkään, oliko hän saanut suonenvedon ja
uponnut, vai olivatko hait hänet tappaneet. Hän katosi jäljettömiin ja
hänen todellinen kohtalonsa on yhä vieläkin salaisuus.
Lukumäärämme oli siten vähentynyt neljään mieheen, isääsi,
kapteeniin, perämieheen ja minuun.

Mutta olet kai väsynyt, lopetan nyt ja kerron sinulle lopun toisella
kertaa. —

Vaikka en ollutkaan väsynyt, en viitsinyt ruveta vastustelemaan,


koska Jackson näytti uupuneelta, ja niin panimme molemmat
nukkumaan.

Lukiessani raamattua Jackson'ille olivat eri luvut minua monesti


kummastuttaneet, enkä voinut koskaan ymmärtää, mitä niillä
tarkoitettiin. Minkälaista määrää jotakin tarkoitettiin esim. luvuilla
kuusikymmentä — seitsemänkymmentä y.m., en voinut käsittää ja
kysyin sitä Jackson'ilta.

— Oh, hän vastasi, ne merkitsevät aika paljon ja olen sen sinulle


vähitellen selittävä, mutta meillä ei ole millä laskea, ja koska olen
sokea, täytyy minulla olla kädessäni jotakin, jolla voin sinua opettaa.

Muistin silloin että uimarannassa oli kallioilla pieniä


herneenkokoisia simpukoita, jotka luultavasti sopisivat tarkoitukseen.
Kokosin niitä aikamoisen läjän ja pyysin Jackson'ia käyttämään niitä
opetusvälineenään. Hän teki niin ja laski tuhanteen, jolloin hän sanoi
sen olevan tarpeeksi. Useina päivinä opettelin minä sitten laskemaan
sataan, kunnes olin täysin varma, jolloin Jackson rupesi opettamaan
minulle vähän yhteen- ja vähennyslaskua, antamalla minun lisätä tai
poistaa simpukoita ja laskea summan tahi jäännöksen. Vihdoinkin
voin muistaa, mitä olin oppinut näillä käsitempuilla, jos saan käyttää
sitä sanaa, mutta etemmäksi en päässyt, vaikka yhteenlaskusta
opinkin jossakin määrin käsittämään kertolaskua ja vähennyslaskusta
hyvästi ymmärtämään jakolaskua.

Sain tästä uutta huvitusta pariksi kolmeksi viikoksi, ja kun vihdoin


luulin oppineeni kaiken, mitä hän sokeana voi minulle opettaa, heitin
simpukat menemään ja halusin tehdä jotakin muuta.

Silloin juolahti mieleeni, etten vielä milloinkaan ollut nähnyt majan


laudakolla olevaa kirjaa ja kun en tiennyt mitään syytä siihen, miksi
en saisi sitä katsella, puhuin Jackson'ille asiasta ja kysyin, enkö saisi
sitä lukea.

— Tietysti, vastasi hän, mutta et ole sitä ennen pyytänytkään ja ja


minä olin sen kokonaan unhottanut.

— Mutta kun ennen pyysin sitä, ette tahtonut mitenkään antaa.


Mikä syy teillä silloin oli kieltoonne?

— Minulla ei ollut mitään muuta syytä kuin vihani ja luulo, että


kirjan katseleminen toisi sinulle huvia. Se kuului tuolle hukkuneelle
poikaraukalle ja hän oli jättänyt sen veneeseen, kun olimme
Valdiviassa ja unhottanut sen sinne. Sysimme sen sitten sattumalta,
kun nousimme maihin tälle saarelle. Ota se esille, luullakseni on se
sinua suuresti huvittava.

Otin kirjan ja aukaisin sen. Sen nimi oli muistaakseni: "Mavorin


luonnonkirja". Kaikissa tapauksissa oli se kuvilla ja selityksillä
varustettu oppikirja petoeläimistä ja linnuista. Lukijan on
mahdotonta käsittää kummastustani ja ihastustani. En ollut
milloinkaan ennen elämässäni nähnyt minkäänlaista maalausta tahi
piirustusta, enkä tiennyt, että semmoisia oli olemassakaan. Olin
oikein raivoissani ihastuksesta, kun kääntelin lehtiä, ja tuskin maltoin
katsella yhtä kuvaa hetkeäkään, ennenkuin siirryin toiseen. Kaksi tahi
kolme tuntia katselin kirjaa sillä tavalla, ennenkuin aloin tyyntyä ja
voin ruveta lukemaan. Mikä huvinlähde tästä tulisikaan ja miten
moneen kysymykseen toverini saisikaan vastata. Hänen täytyi kertoa
minulle kaikki, mitä hän tiesi niistä maista, joista eläimet olivat
kotoisin, ja kuvat selityksineen antoivat näin paljon puheenainetta.
Maalatut maisemat kehittivät uusia ajatuksia. Kysyin Jakson'ilta
palmusta, ja siitä tultiin uusiin kysymyksiin. leijonasta yksinään riitti
meille puhumista koko iltapäiväksi ja alkoi olla jo pimeä, ennenkuin
menin nukkumaan uusine aarteineni. Olin lukenut leijonasta
raamatusta ja muistelin nyt kaikkia niitä paikkoja, ja ennenkuin
nukuin ajattelin karhua, joka oli repinyt profeetta Elisaa pilkkaavat
lapset ja päätin, että huomenna kaikista ensimmäiseksi lukisin
karhusta.

Luulen, että tämä kirja antoi minulle tekemistä pariksi


kuukaudeksi, jona aikana raamattu ja rukouskirja tulivat melkein
kokonaan syrjäytetyiksi; luin sentään Jackson'ille palasen
kummastakin joka ilta ja aamu. Joskus ajattelin, että kirja valehtelee,
mutta kun luin linnuista, niin tunsin ne, jotka kävivät saarellamme, ja
huomasin niitten elämäntavat niin oikein kerrotuiksi, että epäilykseni
katosivat. Kuvista kiinnittivät mieltäni kaikista enimmän ne, joissa oli
aiheina kesyjä lintuja ja riikinkukkoja, sillä eräässä niistä oli muudan
talo ja ihmisiä, esittäen maalaiselämää Englannissa, omassa
isänmaassani; muutamassa näkyi komea herraskartano, jonka
portaitten edessä seisoi upea nelivaljakko. Mahdotonta on lukijan
saada käsitystä siitä ajatusten paljoudesta, jonka piirtäjän heikot
ponnistukset kohottaa maalauksensa vaikutusta, aivoissani
synnyttivät. Piirtäminen ihmetytti minua myöskin suuresti ja Jackson
sai monesti minulle sitä selittää. Tästä kirjasta tuli aarteeni ja
luettuani sen läpi kerta toisensa perästä, niin että osasin sen melkein
ulkoa, palasin vasta raamattuuni. Koko aikana en ollut pyytänyt
Jackson'ia jatkamaan kertomustaan, mutta nyt, kun uteliaisuuteni oli
tyydytetty, uudistin pyyntöni. Kuten ennenkin, näytti hän nytkin
vastahakoiselta, mutta kun en antanut perään, täytyi hänen suostua
ja hän rupesi jatkamaan:

— Niin, meitä oli siis enää jäljellä vain neljä miestä ja äitisi.
Perämies oli hyvin sairaalloinen. Hän ikävöi kovin, mies parka, nuorta
vaimoaan, joka oli jäänyt Englantiin, ja mikä häntä näytti enimmän
pelottavan oli se, että vaimo menisi uusiin naimisiin, ennenkuin hän
pääsisi kotiin. Se päättyi maksatautiin, joka teki hänestä lopun
yhdeksässä kuukaudessa, ja niin oli taasen yksi tovereistamme
poissa. Hän kuoli hyvin rauhallisesti ja antoi minulle hianappinsa ja
kellonsa annettavaksi hänen vaimolleen, jos joskus sattuisin
pelastumaan saarelta. Luulen, että vaimolla on hyvin pienet
mahdollisuudet niitä milloinkaan saada.

— Missä ne ovat? kysyin, muistaen hänen kohottaneen


laudanpalasta makuusijansa pohjalla.

— Minulla on ne kyllä tallessa, vastasi Jackson, ja jos näyttää


tarpeelliselta, näytän sinulle, missä ne ovat.

Tyydyin tähän vastaukseen ja annoin hänen jatkaa.

— Hautasimme hänet guanoon toisten viereen, ja meitä oli siis


enää jäljellä ainoastaan kolme. Siihen aikaan synnyit sinä, eli
tarkemmin määriteltynä, noin kolmen kuukauden kuluttua
perämiehen kuolemasta. Olimme juuri lopettaneet lintujen
kokoamisen, kun äitisi sairastui. Hän suoriutui onnellisesti ja isäsi oli
hyvin iloissaan saadessaan pojan, sillä hän oli ollut naimisissa jo viisi
vuotta. Sinun on huomattava että toveriemme kuoleminen vei
meidät jäljellä olevat lähemmäksi toisiamme. Vanhempasi ja
kapteeni kohtelivat minua ystävällisemmin ja minäkin koetin
puolestani osoittaa samaa, vaikka en kokonaan voinut
tukehduttaakaan vihaani isääsi kohtaan. Varmaa on kumminkin, että
luotimme enemmän toisiimme ja kaikki pitivät minua vertaisenaan.

Vähän enemmän kuin vuoden kuluttua — sinusta oli tullut jo


vankka poika — sattui eräs ikävä tapaus… Jackson kätki kasvonsa
käsiinsä ja oli vaiti vähän aikaa.

— Jatkakaa, Jackson, tiedän, että he kuolivat kaikki, mikä milläkin


tavalla.

— Se on totta, vastasi hän tointuen. No, isäsi katosi. Hän oli


mennyt kallioille kalastamaan ja kun minun käskettiin mennä
hakemaan hänet kotiin päivälliselle, en voinut löytää häntä mistään.
Otaksuimme, että joku tavallista suurempi kala oli tarttunut
koukkuun ja vetänyt hänet syvyyteen, jossa haikalat olivat hänet
tappaneet. Se oli kauhea tapaus, sanoi Jackson, peittäen uudestaan
kasvonsa.

— Arvelen, että jokainen, tervejärkinen ihminen olisi mieluummin


antanut kalan viedä siiman, kuin seurannut sitä veteen. En luule
tuon olleen syynä hänen kuolemaansa.

— Ehkä ei, vastasi Jackson; ehkä hän luiskahti, kuka sen tietää,
voimme ainoastaan arvailla. Koska siimakin oli poissa, ajattelimme
kaiken tapahtuneen kuten kerroin. Haimme kaikkialta, nimittäin
kapteeni ja minä, sillä äitisi jäi epätoivoissaan kotiin pitäen sinua
sylissään. Emme kumminkaan onnistuneet löytämään isäsi ruumista
ja tämä etsiminen koitui meille suureksi onnettomuudeksi, sillä
kapteeni kuoli pian sen johdosta. Sanotaan ettei "vahinko tule kello
kaulassa", ja nyt saimme todistuksen tähän sananlaskuun.

— Kuinka hän kuoli? kysyin vakavasti, sillä aloin epäillä hänen


puhettaan. Jackson ei vastannut ennenkuin vähän ajan kuluttua,
jolloin hän sanoi:

— Hän oli kanssani ylhäällä rotkossa keräämässä puita ja putosi


jyrkänteeltä. Hän vahingoittui niin pahasti, että hän kuoli puolen
tunnin kuluttua.

— Mitä te silloin teitte?

— Mitäkö tein? Mitäpä minä muuta voin tehdä kuin mennä kotiin
ja kertoa onnettomuudesta äidillesi, joka tuli aivan pois suunniltaan
sen kuullessaan; kapteeni oli hänen ystävänsä ja minua hän ei
voinut sietää.

Hyvä on, jatkakaa, sanoin.

— Koetin kaikkeni, ollakseni äidillesi mieliksi, koska enää


ainoastaan hän, sinä ja minä olimme jäljellä saarella. Olit silloin noin
kahden vuoden vanha, mutta äitisi oli vihannut minua aina ja näytti
nyt vihaavan minua yhä enemmän. Hän ei toipunut koskaan isäsi
kuoleman jälkeen, sillä hän oli rakastanut häntä äärettömästi. Hän
kuihtui vain pois ja kuoli kuuden kuukauden kuluttua, jättäen sinut ja
minut yksiksemme tänne saarelle. — Nyt tunnet kertomuksen ja
minä pyydän, ettet siitä minulta enää mitään kysele.
10. Grogia ja laulua.

Jackson heittäytyi takaisin vuoteelleen ja vaikeni. Niin minäkin ja


rupesin muistelemaan kaikkea, mitä hän oli kertonut. Epäilin sen
todenperäisyyttä. En pitänyt hänen tavastaan kiiruhtaa sillä tavalla
kertomuksen lopulla, ja se mitä hän oli puhunut äidistäni, ei minua
tyydyttänyt. Olin viime aikoina tullut häntä lähemmäksi, en
ainoastaan näön vuoksi, vaan tunsin myötätuntoni häntä kohtaan
suuresti kasvaneenkin, mutta nyt olin alkanut taasen epäillä häntä,
ja tunsin entisen vihani häntä kohtaan palaavan. Nukuttuani yön ja
tarkemmin asiaa ajateltuani tulin kumminkin siihen lopputulokseen,
että ehkä tuomitsinkin häntä liian ankarasti, ja kun en voinut ruveta
hänen kanssaan riitelemäänkään, niin säilyivät keskustelumme yhtä
sovinnollisina, semminkin kun hän tuli minua kohtaan yhä
ystävällisemmäksi ja teki kaikkensa mitä suinkin voi, huvittaakseen
ja miellyttääkseen minua. Muutamana päivänä luin hänelle
luonnonkirjasta apinasta; siinä kerrottiin, että tämä eläin piti
väkijuomista ja mielellään joi itsensä juovuksiin. Jackson'in kertoessa
kaskuja apinoista, joita hän oli nähnyt laivoissa, johtui mieleeni,
etten koskaan ollut kertonut hänelle uimarantaan arkun mukana
ajautuneesta tynnyristä, enkä tutkinut sen sisältöä. Kerroin siitä nyt
Jackson'ille, ihmetellen, mitä se mahtoikaan sisältää ja miten
saisimme sisällön haltuumme.

Jackson innostui asiaan kovasti, selittäen minulle, mihin kohtiin


tynnyrissä minun pitäisi porata reiät, ja teki minulle kaksi tulppaa
niihin pantaviksi. Tämän jälkeen menin uteliaisuudesta rantaan
katsomaan tynnyriä, joka oli maannut siellä niin kauan noin puolen
metrin syvyisessä vedessä. Jackson'in kehoituksesta olin ottanut
mukaani kasarin, voidakseni tuoda hänelle näytteen tynnyrin
sisällyksestä, jos se olisi muuta kuin vettä. Porasin pian reiät
Jackson'in osoittamiin paikkoihin ylhäälle ja alhaalle, ja neste, joka
hienona suihkuna virtasi kasariin, oli ruskeaa väriltään ja niin
väkevän hajuista, että horjuin kiivetessäni jälleen kallioille kasarineni,
jonka olin laskenut täyteen. Minun täytyi istuutua ja kun hetken
kuluttua maistoin nestettä, luulin nieleväni tulta, sillä ryyppäsin sitä
kokolailla.

— Tämä nyt ei voi olla sitä Jackson'in puhumaa "väkiviinaa", sillä


ei suinkaan tämmöistä voi kukaan juoda, — mitä lieneekään.

Vaikka en ollut nauttinut sitä enempää kuin noin ruokalusikallisen


verran, vaikutti se kumminkin hajuineen sen, että kaikki rupesi
pyörimään silmissäni ja minun täytyi heittäytyä pitkäkseni kalliolle ja
sulkea silmäni tointuakseni. Siinä olin sitten nukkunut useita tunteja,
koska oli jo melkein ilta kun heräsin kovaan päänkipuun; olin
lähtenyt tynnyriä tarkastamaan heti päivällisen jälkeen. Viipyi vähän
aikaa ennen kuin voin muistaa, missä olin ja mitä oli tapahtunut,
mutta täysi kasari vieressäni ilmaisi minulle pian kaikki ja kun näin,
miten myöhäinen oli ja miten kauan olin nukkunut, nousin, otin
kasarin käteeni ja kiiruhdin majaan.

Lähestyessäni kuulin Jackson'in äänen; hänen kuulonsa oli, sen


olin huomannut, tullut hyvin tarkaksi sen jälkeen kuin hän oli tullut
sokeaksi.

— Oletko se sinä, Frank?

— Olen, vastasin.

— Ja missä olet ollut näin kauan? Kuinka minut pelästytitkään!


Jumala antakoon minulle anteeksi, mutta luulin sinun jo minut
hylänneen tänne nälkään kuolemaan.

— Miten voitte luulla semmoista? kysyin.

— Koska otaksuin sinun tavalla tai toisella joutuneen


onnettomuuteen ja niin olisi minunkin luonnollisesti täytynyt kuolla.
En milloinkaan elämässäni ole pelännyt niin hirveästi; ajatus, että
saisin kuolla täällä yksinäni, oli kauhea.

Huomasin, että koko hänen levottomuutensa johtui vain hänen


omasta turvallisuudestaan, sillä hän ei sanallakaan maininnut, että
olisi tullut pahoilleen, jos joku onnettomuus olisi minua kohdannut,
mutta en viitsinyt siitä huomauttaa, kerroin vain yksinkertaisesti,
mitä oli tapahtunut ja lausuen vakaumukseni, että tynnyrin sisältöä
ei voinut juoda.

— Toitko mitään mukanasi? kysyi hän kiihkeästi.

— Toin, tässä sitä on, sanoin ja ojensin hänelle kasarin.

Hän haistoi sitä, ja vei sen sitten huulilleen, ottaen siitä aika
kulauksen. Huokaisten tyytyväisyydestä, laski hän sen sitten takaisin
viereensä.

— Se on mainiota, sanoi hän, parasta vanhaa rommia, mitä ikinä


olen maistanut. Kuinka suuren sanoitkaan tynnyrin olevan?

Koetin selittää sitä hänelle.

— Sehän on sitten kokonainen aami, — siitä riittää pitkäksi aikaa.

— Mutta ettehän tahtone sanoa, että todellakin pidätte tuosta


roskasta?
— Pidänkö? Se on miesten juomaa, mutta pikkupojille voi se
tuottaa kuoleman, Se tappaisi sinut. Älä rupea siitä pitämään. Lupaa
minulle, ettet koskaan juo sitä tippaakaan. Et saa sitä tehdä, sillä
silloin voi minulle käydä onnettomasti.

— En luule teidän tarvitsevan pelätä, että rupeaisin sitä juomaan,


vastasin. Otin siitä yhden kulauksen, niinkuin kerroin ja olin polttaa
suuni. En juo sitä enää milloinkaan.

— Se on oikein, vastasi Jackson, ja otti taasen ryypyn. Et ole vielä


tarpeeksi vanha siihen; myöhemmin, kun tulet niin vanhaksi kuin
minäkin, voit juoda sitä ja tuntea, miten se tekee sinulle hyvää. —
Nyt menen sänkyyni, sillä on jo aika panna nukkumaan. Tuo kasari
tänne ja aseta se viereeni lattialle, mutta varo sitä läikyttämästä.

Jackson ryömi vuoteelleen, minun seuratessa häntä kasarineni,


jonka asetin hänen viereensä niinkuin hän oli pyytänyt. Palasin sitten
omalle makuupaikalleni, mutta en saanut unta, koska olin nukkunut
päivällä niin kauan.

Jackson'kin oli alussa vaiti, mutta minä kuulin hänen tuon


tuostakin ryyppäävän kasarista, joka luullakseni sisälsi noin puoli
pulloa. Vihdoin hän rupesi laulamaan muudatta merimieslaulua; tulin
hyvin kummiini, koska en ennen milloinkaan ollut kuullut hänen
laulavan. Se huvitti minua myöskin suuresti, sillä kuulinhan nyt ensi
kerran elämässäni laulua. Hänellä oli hyvä ääni ja lauloi hän melko
puhtaasti. Lopetettuaan, pyysin häntä jatkamaan.

— Ahaa, vastasi hän iloisemmasti, kuin koskaan ennen. Pidätkö


lauluista, pikku vekkuli? Hyvä, voin kestitä sinua paljon semmoisilla.
Siitä on jo aikaa kun viimeksi lauloin, ja ihmisen täytyy olla hyvin
jöröluontoinen, jos ei joskus iloitse. Muistan ajan, jolloin ei kukaan
joukostamme osannut laulaa niinkuin minä, ja nyt osaan taaskin, kun
minulla on jotakin, joka voi ilahduttaa mieltäni. — Nyt saat kuulla
toisen. Muistan kyllä vähitellen ne kaikki, kunhan vain saan silloin
tällöin pienen naukun, ja sehän on varmaa, koska tiedät tavaran ja
minä osaan lauluja.

Tulin ensiksi kummiini hänen tavattomasta iloisuudestaan, mutta


kun muistin, mitä hän oli kertonut kohtuuttomuudestaan, niin
arvasin, että hänen, voidakseen olla iloinen, täytyikin juoda paljon;
en voinut ruveta häntä siitä moittimaankaan. Kaikissa tapauksissa
huvittivat minua laulut kovasti. Hän laulaa loilotteli niitä minulle
yhden toisensa perään noin kolme tahi neljä tuntia, kunnes ääni
sortui ja hän, mumistuaan ja kiroiltuaan vähän aikaa, vaikeni
kokonaan ja hetken päästä kuului kovasti kuorsaavan. — Makasin
vielä jonkun hetken valveillani, mutta nukahdin sitten vihdoin
minäkin.

Herätessäni seuraavana aamuna, näin Jackson'in vielä raskaasti


nukkuvan. Odotin häntä aamiaiselle, mutta kun hän ei näyttänyt
heräävän, söin sen yksinäni. Menin sitten istumaan tavalliselle
paikalleni kalliolle, tarkastellen taivaanrantaa, jos jotakin sattuisin
näkemään. Kiikaria en voinut käyttää, sillä merivesi oli sen pilannut,
eikä Jackson'kaan ollut näyttänyt minulle, miten sen voisin korjata.
Tunnin kuluttua palasin takaisin majaan, ja kun Jackson vielä nukkui,
päätin herättää hänet. Puistelin häntä vähän aikaa tuloksettomasti,
ennenkuin hän avasi silmänsä ja sanoi:

— Nytkö jo vahtiin?

— Eikö mitä, vastasin, mutta olette nukkunut niin kauan, että


minun täytyi teidät herättää.
Hän vaikeni, kuin ei olisi tuntenut ääntäni ja sanoi sitten:

— Mutta minähän en näe mitään, mistä se johtuu?

— Tehän olette sokea, muistanettehan toki sen, Jackson, sanoin


kummissani.

— Niin, niin, nyt muistan. Onko kasarissa mitään?

— Ei niin tippaakaan, vastasin. Olette nähtävästi juonut kaikki.

— Kyllä, niin tein. Tuo, kiltti poikaseni, minulle vähän vettä, minua
janottaa niin hirveästi.

Menin hakemaan vettä ja hän joi koko kasarin tyhjäksi, pyytäen


lisää.

— Ettekö tahdo mitään syödäksenne? kysyin.

— Syödäkseni, en. En voi syödä mitään. Anna minulle juotavaa,


sanoi hän, ojentaen kätensä ottaakseen kasarin, jolloin huomasin
käden vapisevan. Sanoin sen hänelle.

— Niin, sanoi hän, aina se on semmoista juopottelun jälkeen. Sain


aika humalan viime yönä, ensimmäisen moneen vuoteen. Mutta
sitähän on vielä paljon jäljellä. Käypäs Frank hakemassa minulle pari
kolme ryypyllistä, että pääsisin taasen elämään; sitten illalla saat
tuoda enemmän yöksi. Pidinkö eilen illalla hyvin pahaa elämää?

— Lauloitte useita lauluja, jotka ilahduttivat minua, vastasin.

— Se on hauskaa, että pidit niistä. Minua pidettiin aikomani


hyvänä laulajana, ja jos en olisi ollut niin "hauska toveri", kuten
sanotaan, niin ei minusta olisi tullutkaan juoppoa. Mene, poikaseni,
hakemaan kasarin pohjaan noin tuuman verran, se riittää minulle
hyvin tällä kertaa.

Menin aamille ja laskin kasariin sen määrän, jonka hän oli pyytänyt
ja toin sen hänelle. Hän joi sen ja näytti hetken kuluttua olevan
entisellään. Sitten pyysi hän syötävää ja alkoi kertoa minulle
hauskoja kaskuja, niinkuin hän sanoi, "menneiltä ajoilta", ja päivä
kului siten hyvin hupaisesti. — Illalla sanoi hän:

— No Frank, luultavasti tahdot kuulla taasen uusia lauluja.


Meneppäs ja nouda täysi kasarillinen, niin lauleskelen sinulle.

Suostuin hänen pyyntöönsä, sillä halusin saada taasen yhtä


hauskaa kuin eilen illallakin. Seurauksena oli, että alkuyö vietettiin
samalla tavalla kuin eilenkin. Jackson menetteli yhtä varovaisesti ja
ryömi vuoteelleen, ennenkuin alkoi juoda, mutta otettuaan
muutamia ryyppyjä, kysyi hän, minkälaisia lauluja haluaisin kuulla.
Vastasin luonnollisesti, että koska en milloinkaan ollut kuullut
muitten kuin hänen laulavan, en voinut sitä sanoa.

— Mitä lauloin sinulle eilen illalla? Vastasin niin hyvin, kuin osasin.

— Vai niin, sanoi hän, ne olivat kaikki merimieslauluja. Mutta nyt


saat kuulla jotakin parempaa.

Ajateltuaan vähäsen, alkoi hän laulaa erästä hyvin kaunista ja


surullista laulua. Hän lauloi paljon paremmin kuin eilen illalla, sillä
hän oli nyt selvä. Ihastuin yhä enemmän ja pyynnöstäni lauloi hän
useita semmoisia. Vihdoin alkoi hän sitten sammaltaa ja puhua
roskaa, eikä ruvennut enää laulamaan, vaan vastasi minulle äreästi,
kun pyysin. Hän makasi hiljaa ja luulin hänen nukkuvan. —
Muistellessani kaikkia noita erilaisia päähänpistoja, joita rommi näytti
hänessä synnyttävän, kuulin hänen puhuvan ja mutisevan. —
Rupesin kuuntelemaan.

— Sillä ei ole mitään merkitystä, miten olen ne saanut, sanoi hän.


Aivan yhtä kunniallisella tavalla, kuin jotkut muutkin, vanha Moses.
Tuossa ne ovat, onko teillä halua ostaa ne?

Sitten oli vähän aikaa hiljaista, jonka jälkeen hän jatkoi:

— Ne ovat yhtä puhtaita timantteja kuin mitä milloinkaan on tuotu


kaivoksista. Sen tiedän ja älkää koettakokaan valehdella, vanha
juutalainen. Mistäkö olen ne saanut? Se ei kuulu teihin, kysymys on
vain siitä, tahdotteko ostaa ne minulta täydestä arvosta, vai ei. —
No, sitten lähden. — En, en aio tulla takaisin, te vanha varas.

Hän kirosi kauheasti ja vaikeni sitten, mutta jatkoi vähän ajan


perästä:

— Kuka voi koskaan todistaa, että ne olivat Henniker'in timantteja?

Säpsähdin kuullessani isäni nimen, ja jäin, nojaten käsiini,


hengähtämättä kuuntelemaan, mitä sitten seuraisi.

— Ei, ei, jatkoi Jackson. Hän on kuollut ja kalojen ruokana.


Kuolleet ihmiset eivät juorua ja rouvakin on kuollut ja kapteeni on
kuollut — niin, kaikki ovat kuolleet, kaikki, jonka jälkeen hän huokasi
raskaasti ja vaikeni.

Päivä alkoi sarastaa ja voin hänet juuri nähdä siinä vuoteellaan


makaamassa, mutta hän ei puhunut enää mitään vaan näytti
nukkuvan. Auringon noustessa nousin vuoteeltani katsomaan
Jackson'ia. Hän makasi selällään; hiki virtasi hänen otsaltaan ja
kädet olivat nyrkkiin puristettuina. Vaikka hän nukkui, näyttivät
suonenvedontapaiset nykähdykset hänen kasvoissaan, että hän kärsi
ja oli suuressa tuskassa. Silloin tällöin huokasi hän syvään, ja hänen
huulensa näyttivät liikkuvan, vaikka ei kuulunutkaan mitään ääntä.
— Huomasin, että kasarissa on jäljellä vielä noin kolmasosa.

11. Epäluuloni vahvistuvat.

Menin majasta tavalliselle paikalleni ja rupesin miettimään, mitä


olin kuullut. Hän oli puhunut timanteista ja koska raamatusta olin
lukenut niistä, tiesin niitten olevan hyvin arvokkaita kalliita kiviä, sillä
Jackson oli selittänyt minulle sellaisten arvon. — Sitten hän sanoi
niitten olevan Henniker'in omaisuutta, tarkoittaen sillä nähtävästi
isääni, ja ettei kukaan voisi todistaa niitten kuuluneen isälleni, joka
tietysti oli ymmärrettävä niin, ettei Jackson'illa ollut niihin mitään
oikeutta; niin, mitenkä hänellä olisi sitä voinut ollakaan. Sitten
muistin hänen salaisen kätkönsä vuoteen alla ja otaksuin, että
timantit olivat siellä piilossa. Harkitsin mielessäni kertomusta isäni,
äitini ja kapteenin kuolemasta, kuinka hämmennyksissä hän oli ja
kuinka iloiseksi hän tuli päästessään loppuun, ja muistin jo silloin
epäilleeni hänen puhettaan. Lopuksi tulin siihen johtopäätökseen,
että Jackson oli valehdellut ja että oli olemassa joku salaisuus, josta
minun täytyisi saada selvä, mutta miten, sitä en ensin voinut tietää.
— Niin, löytyihän eräs keino, — juoma panisi hänet puhumaan.
Antaisin hänelle rommia niin paljon kuin, hän vaan haluaisi ja
houkuttelisin vähitellen häneltä koko totuuden. Mutta samalla en
tahtonut hänen huomaavan, että hän oli sanonut jotakin, joka voisi
paljastaa hänet, tahi että epäilin häntä.
Kuinka pian voikaan oman sydämemme pahuus tehdä meistä
viekkaita ja petollisia, meidän saamatta maailmalta — siihen mitään
oppia!

Palasin majaan ja herätin Jackson'in ilman suurempia vaikeuksia,


koska hän ei ollut juonut niin paljon kuin edellisenä iltana.

— Kuinka voitte tänään?

— En oikein hyvin, olen nähnyt pahoja unia.

— Mutta tehän lauloitte niin kauniita lauluja.

— Niin, kyllä muistan, sanoi hän, mutta nukahdin sitten.

— Ensin kumminkin kieltäysitte laulamasta enempää ja aloitte pian


kuorsata.

Jackson nousi vuoteeltaan ja minä annoin hänelle ruokaa.


Puhuimme koko päivän lauluista ja minä hyräilin muuatta, joka oli
minua enimmän miellyttänyt.

— Sinä olet oppinut tuon nuotin aivan oikein, sanoi hän, sinulla
täytyy olla nuottikorvaa. Oletko koskaan koettanut laulaa?

— En koskaan, jonka hyvin tiedätte.

— Olisit koettanut, silloin kuin en ollut kanssasi. Koetappas nyt.


Minä laulan muutaman säkeen ja sinä sen sitten kertaat.

Hän teki niin ja minä lauloin perässä.

— Hyvin, oikein hyvin, sanoi hän. Koettakaamme äänesi laajuutta.


Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookultra.com

You might also like