Professional Documents
Culture Documents
No part of this book should be referenced or copied without the prior permission of the
company.
Analytics is becoming a popular tool for managerial decision making. Its still not so
widespread in countries like India, but in the west it has become a standard practice.
Previously studying analytics involved an in depth knowledge of statistics and programming languages. But widespread availability of statistical package software has
changed the reality to some extent. Now more emphasis is given on the application of
the techniques to solve the business problems. So there is a need to understand the
meaning of the statistical procedures. This book has been written to cater that need.
In this book, all the necessary concepts have been explained keeping the business
problem in mind. Also, to remove the apathy for statistics, use of mathematical expressions have been limited. That doesnt imply that we dont have to study the mathematics part. The intention is to put the substance over matter. As the students get accustomed to these statistical concepts, they can go for further investigations using various mathematical and statistical techniques. A list of suggested books and links have
been given in the appendix.
This book is directly related to the instructors presentation. So it is highly advised
that students should go through this material at the end of each class. As for general
reading, the reader is advised to go according to the chapters. Chapters have been
arranged in the order of higher complexity. So the initial chapters are very important.
In this book, the statistical procedures have been implemented on SAS. The explanations of the codes have been from the perspective of a data modeler. For the perspective of a programmer, the students are advised to go through the documentation
of the procedures in the SAS website.
In fine, statistical concepts are a way of thinking. The more you recognize the thinking pattern, the quicker you will learn.
Best of Luck!
Team OTG
CONTENTS
PAGE
1.
2.
22
3.
33
4.
41
5.
48
6.
53
7.
57
8.
Cluster Analysis
62
9.
Linear Regression
69
10.
Logistic Regression
81
11.
96
116
Chapter 1
INTRODUCTION TO ANALYTICS AND BASIC STATISTICS
usiness analytics (BA) refers to the skills, technologies, applications and practices for continuous iterative exploration and investigation of past business performance to gain insight and drive business planning.
A
N
A
L
Y
T
I
C
S
D
O
M
A
I
N
S
According to
McKinsey Global
Institute, The
amount of data in
our world has been
exploding and analyzing large data,
so-called big data will become a key basis of
competition, underpinning new waves of
productivity growth, innovation, and consumer
surplus. MGI studied big data in five domains
healthcare in the United States, the public sector in Europe, retail in the United States, and
manufacturing and personal-location data
globally.
Big data can generate value in each. For example, a retailer using big data to the full
could increase its operating margin by more than 60 percent. Harnessing big data in
the public sector has enormous potential, too. If US healthcare were to use big data
creatively and effectively to drive efficiency and quality, the sector could create
more than $300 billion in value every year. Two-thirds of that would be in the form of
reducing US healthcare expenditure by about 8 percent. In the developed economies of Europe, government administrators could save more than 100 billion ($149
billion) in operational efficiency improvements alone by using big data, not including
using big data to reduce fraud and errors and boost the collection of tax revenues.
And users of services enabled by personal-location data could capture $600 billion in
consumer surplus.
Scales of Measurement
Nominal Scale: The nominal scale of measurement only satisfies the identity property
of measurement. Values assigned to variables represent a descriptive category, but
have no inherent numerical value with respect to magnitude. Gender is an example
of a variable that is measured on a nominal scale. Individuals may be classified as
"male" or "female", but neither value represents more or less "gender" than the other.
Religion and political affiliation are other examples of variables that are normally
measured on a nominal scale.
10
17
15
18
16
12
16
16
18
15
15
16
18
13
15
19
17
14
10
13
12
13
16
Cube #
1
2
3
4
5
6
7
8
Touch
Rough
Rough
Slightly Rough
Smooth
Smooth
Smooth
Rough
Smooth
See
Brown
Sliver
Sliver
Gold
Brown
Brown
Brown
Gold
Color
Brown
Gold
Silver
Smell
Wood
Metallic
Metallic
No Smell
No Smell
No Smell
Wood
No Smell
Number of
Items
4
2
2
Frequency
Percent
Cumulative
Frequency
Cumulative
Percent
Chocolate
491
32.73
491
32.73
Fruit
170
11.33
661
44.07
Gum
194
12.93
855
57
Mixed
92
6.13
947
63.13
Soft
365
24.33
1312
87.47
Sweet
188
12.53
1500
100
Graphical Presentation
Simple Bar Chart
Pie Chart
Graphical Presentation
Histogram: Understanding
the Distribution of the Data
10
Undefined: No Clear
Relation
Frequency
4
7
8
10
12
17
Sales (000s)
1300 - 1399
1400 - 1499
1500 - 1599
1600 - 1699
1700 - 1799
1800 - 1899
Frequency
13
10
9
7
2
1
He would be looking at the distribution with an eye toward getting information about
the central tendency to compare the eastern part with other parts of country. Central
tendency is basically the central most value of a distribution. Now how do we know
which one is the central most value?
There are precisely three ways to find the
central value: Arithmetic mean, Median and
Mode.
Arithmetic mean is the simple average of the
data. The problem with arithmetic mean is
that it is influenced by the extreme values.
Suppose, you take a sample of 10 persons
whose monthly incomes are 10k, 12k, 14k,
12.5k, 14.2k, 11k, 12.3k, 13k, 11k, 10k. So the
average income turns out to be 12k. So thats
a good representation of the data. Now if
you replace the last data with 100k, then the
average turns out to be 21k which is very absurd as 9 out of 10 people earns way be-
11
The horizontal data is the central value in both the cases. But for the first case where
the data is less dispersed, the data is really clustered around the central line. Whereas
in the second case, data is so dispersed that central value is not that meaningful, as
you cannot say that the horizontal line is a true representative of the data. So there is a
need to measure the dispersion in the data.
Broadly there are two measures of data, one is absolute measures like Range or Variance and the other is relative measure like Coefficient of Variation.
Range is the simplest measure. It is basically the difference between the maximum
and the minimum value in a data. The other absolute measure Variance is a bit complicated to express in plain words. It basically comes from the sum of squared differ-
12
ence of the each data from the arithmetic mean of the data. Now as you go on increasing the number of data, the sum basically increases. So we take the average.
Now if you take the square root (e.g. square root
of 9 is 3), we get the Standard Deviation of the data. If you like you can memorize the following expression:
Some of you might find difficulties with the denominator being n-1 instead of n. The reason is that
here we are calculating the sample standard deviation. If it had been population standard deviation, we could have used n.
We will discuss about the population and sample in the coming chapters.
Apart from understanding the dispersion in the data, standard deviation can be used
for transforming the data. Suppose, if we want to compare two variables like the amount of money persons
earn and the number of pair of shoes their wives have,
then it is better to express those data in terms of standard deviations. That is, we simply divide the data by
their respective standard deviations. So here the standard deviation acts as a unit or we make the data unit
free.
Now if you want to understand which data is more volatile, personal income or pair of shoes, you better use
Coefficient of Variation. As mentioned earlier, it is a relative measure of dispersion and is expressed by standard deviation per unit of central value, i.e. mean. If you
have income in dollar terms and income in rupee terms, and if the first data has less
coefficient of variation than the second one, use the first data for analysis. You will find
more meaningful information.
Measures of Location
Using Measures of Location, we can get a birds eye view of the data. Measures of
Central Tendency also comes under the Measures of Location. Minimum and maximum are also measures of
location. Other measures
are Percentiles, Deciles,
and Quartiles. For example,
if 90 percentile denotes the
number 86, the it is implied
that 90% of the students
have got marks which are
less than 86. Now the 90
percentile is the 9th Deciles.
13
14
15
outlier. However, this should be done only if you have good reason to believe that
this case is not from the population that you intend to sample. For example, if you
were investigating factors that affected how much babies cry and baby didnt cry
at all, this would likely be an outlier. Upon inspection, if you discovered that this baby was actually a 10 year old boy, then you would have grounds to exclude this
case as it comes from a different population.
Transform the data: If you have a non-normal distribution then this should be done
anyway (and skewed distributions will by their nature generally have outliers because its these outliers that skew the distribution). Such transformation should reduce the impact of these outliers. For transformation we use the compute variable
facility.
Log Transformation (log Xi): Taking the logarithm of a set of numbers squashes
the right tail of the distribution. However, you cannot get a log value of zero or
negative numbers, so if your data tend to zero or produce negative numbers
you need to add a constant to all the data before you do transformation.
Square root transformation (Xi): Taking the square root of large values has more
of an effect than taking the square root of small values. Consequently, taking
the square root of each of your scores will bring large scores closer to the center. So this can be a very useful way to reduce positively skewed data. But we
still have the problems related to negative numbers.
Reciprocal transformation (1/Xi): Dividing 1 by each of the scores reduces the
impact of large scores. The transformed variable will have a lower limit of zero.
One thing to bear in mind with this transformation is that it reverses the scores in
the sense that scores that were originally large in the data set become small
after the transformation, but the scores that were originally small become big
after the transformation.
Change the score: If transformation fails, then you can consider replacing the
score. This on the face of it may seem like cheating (you are changing the data
from what was actually collected); however, if the score youre changing is very
unrepresentative and biases your statistical model anyway then changing the
score is helpful. There are several options for how to change the score. The first one
is next highest value plus one. We can replace our outliers with mean plus three
times standard deviation derived from the rest of the data. A variation of this method is that we can use two instead of three time standard deviation.
16
SAS
IMPLEMENTATION
BAR GRAPH
Proc gchart data = day1.candy_sales_summary;
Vbar subcategory;
run;
gchart is the procedure to generate bar-chart. The data set we use here is the candy_sales_summary. The bar chart is generated using the keyword vbar. This presentation is used to represent the qualitative variable subcategory. This code generates a
bar graph showing the frequency of occurrence of the different subcategory.
proc gchart data = day1.candy_sales_summary;
vbar3d subcategory;
run;
This code generates a 3d bar graph for subcategory. This is a better form of representing a qualitative data. vbar3d is the keyword for generating a three dimensional
bar graph.
proc gchart data = day1.candy_sales_summary;
hbar3d subcategory;
run;
This code generates a horizontal 3d bar graph. The bar graph is generated for the variable subcategory. hbar3d is the keyword for generating the horizontal 3d bar
graph. This form of representing the data is useful when we are representing a spatial
data.
Proc gchart data = day1.candy_sales_summary;
vbar3d subcategory/sum sumvar=sale_amount;
run;
This code generates a 3d vertical bar graph for the variable subcategory. But, corresponding to each vertical bar graph for the subcategory it gives the total sale amount
on top of each of the vertical bar.
proc gchart data = day1.candy_sales_summary;
vbar3d subcategory/sumvar=sale_amount;
run;
This code results in the same output as the code above but does not display the sum
corresponding to each bar at the top. The sum keyword is responsible for the display.
17
SAS
IMPLEMENTATION
This code generates a sub-divided multiple bar diagram. The group generates the bar
diagram corresponding to the fiscal years and show the sales corresponding to each
subcategory for a given fiscal year.
goptions vsize=6in hsize=20in;
This code is run according to the margins specified by the options specified using the
goptions keyword. This is a global statement which holds throughout the rest of the
session. Every graph constructed by the software thereon would have these dimensions.
proc gchart data = day1.candy_sales_summary;
vbar3d subcategory/sum sumvar=sale_amount
group=fiscal_year subgroup=fiscal_quarter;
run;
The multiple bar diagram which is generated as a result of the above code, appears
very shabby on screen. To make them look better, we need to space them out and
this is done through the above code. We specify the margins for the vertical and horizontal axis. This is a global statement, in the sense that, that any graphical representations, here onwards, would take these dimensions as given.
PIE-CHART
proc gchart data= day1.candy_sales_summary;
pie3d subcategory;
run;
This code generates a 3 dimensional pie-chart using the keyword pie-3d. gchart is
the keyword to generate the chart. The pie-chart represents each of the
subcategory on a pie, i.e. as a percentage of 360 degrees.
proc gchart data= day1.candy_sales_summary;
pie3d subcategory/discrete value= inside;
run;
This is a variation of the previous pie chart representation. This would generate a piechart where the discrete value of the respective subcategory would be placed in
the different slices. value=inside keeps the frequency values in the slices along with
18
SAS
IMPLEMENTATION
the names of the subcategory. Each of the subcategory is shown in slices of different
colors.
proc gchart data= day1.candy_sales_summary;
pie3d subcategory/discrete value=inside
percent=inside slice=outside;
run;
This code generates the pie chart such that the name of the frequency value and the
percentage frequency value of the subcategory inside the slice and the name of the
subcategory outside the slice.
proc gchart data= day1.candy_sales_summary;
pie3d subcategory/discrete value=inside
percent=inside slice=outside
freq=sale_amount;
run;
This code for pie-chart puts out the frequency of sale corresponding to the sale subcategory. The percentage frequency of the sale and the discrete value of the sale of
the subcategory are shown outside and the name of the variable is shown outside the
slice.
HISTOGRAM
proc univariate data=day1.candy_sales_summary;
var sale_amount;
histogram sale_amount;
run;
This is the representation of quantitative data. The univariate keyword is used to generate all the key descriptive statistics related to a particular variable. Here, the variable
under consideration is sale_amount. The code to generate histogram is histogram. If
no dimension is mentioned then, it is by default, a two dimensional diagram.
proc univariate data=day1.candy_sales_summary noprint;
var sale_amount;
histogram sale_amount;
class subcategory;
run;
The univariate key-word in the code generates all the descriptive statistics associated
with the variable sale_amount in the data set candy_sales_summary. Another objective of the code is to construct a histogram for the same variable using the keyword
histogram. The total amount of sales is generated for each of the sub- categories,
19
SAS
IMPLEMENTATION
gplot is the procedure to generate a plot of two quantitative variables. The scatter
plot for two variables sale_amount and units is generated using the keyword plot. The
variable on the left-hand-side of the * represents the variable on the y-axis and the
variable on the right-hand-side is the variable on the x-axis.
NORMALITY CHECK
proc univariate data=day1.class;
var height;
run;
The univariate keyword generates all the descriptive statistics associated with the variable height in the data set Class. The descriptive statistics associated with a distribution helps in the identification of normality of a distribution. Normality of a distribution
implies an element of symmetry associated with the distribution. In this data set the
mean, median and the mode are approximately 62. The standard deviation is pretty
low (5) compared to the existent mean. The Skewness and Kurtosis of the data set lies
in the neighborhood of zero. A basic analysis yields the result that the variable height
is normally distributed in the data set Class.
proc univariate data= day1.class normal plot;
var height;
qqplot height/normal (mu=est sigma=est color=green);
run;
20
SAS
IMPLEMENTATION
This is the same code which has been executed for a different data set: candy_sales_summary. The mean of the variable, sale_amount (4951.97) is significantly different from its median (4040.525) and mode (0.00). Also the average fluctuation in the
data set represented by the standard deviation is very high (3986). This means that the
mean is not a good representative value for the data set as there is a very high fluctuation in the data set. It is easy to conclude that the variable sale_amount is not normally distributed.
BOXPLOT AND THE EXISTENCE OF OUTLIERS
The quality of the measures of Central tendency and dispersion are affected adversely
in the presence of outliers. Box-plot is widely used to examine the existence of outliers
in the data set. Our reference data set is a hypothetical data set consisting of the
marks and the name of the subject. Two important facts that must be kept in mind for
box plot are:
The number of observations in the data set must be at least as large as five.
If there are more than one category in the data set must be sorted according to
the category.
proc import datafile="C:\Documents and Settings\OrangeTree\Desktop\Tanmoy\Book1.csv"
out=day1.boxplot
dbms=csv replace;
run;
A data set containing the marks of 5 students in the subjects English and Maths exist in
a csv format. The file is imported into the SAS library by using proc import code. The
logic of this code is to import a given file in its existent format, convert it to SAS format
and replace the freshly imported file with any file that would have the same name.
proc boxplot data=day1.boxplot;
plot marks*subject/ boxstyle=schematic;
run;
boxplot is the key word for generating a boxplot. The plot is done between the marks
obtained by the students and the subject. The existence of the outliers in the data set
is observed as points outside the box. The boxstyle is a keyword to generate a particular format of the boxplot.
21
Chapter 2
INTRODUCTION TO PROBABILITY THEORY
uture events are far from certain in the business world. Most managers who use
probabilities are concerned with two conditions:
The case when one event or another will occur
The situation where two or more events will both occur
We are interested in the first case when we ask, What is the probability that todays
demand will exceed our inventory? To illustrate the second situation, we could ask,
What is the probability that todays demand will exceed our inventory and that more
than 10% of our sales force will not report for work? Probability is used throughout business to evaluate financial and decision-making risks. Every decision made by management carries some chance for failure, so probability analysis is conducted formally
("math") and informally (i.e. "I hope").
Consider, for example, a company considering entering a new business line. If the
company needs to generate $500,000 in revenue in order to break even and their
probability distribution tells them that there is a 10 percent chance that revenues will
be less than $500,000, the company knows roughly what level of risk it is facing if it decides to pursue that new business line.
Three Approaches Towards Probability
Classical Approach:
"Probability of an event"
=(Number of outcomes where the event occurs)/(Total number of possible outcomes"
")
Relative Frequency Approach:
Suppose, we are tossing a coin. Initially the ratio of number of heads to number of trials
will remain volatile. As the number of trials increases, the ratio converges to a fixed
number (say 0.5). So probability of getting a head is 0.5; this concept has been shown
in the following chart.
Ratio
1.0
20
0.5
40
60
80
100
120
140
160
180
200
220
240
260
Number of Trials
22
Axiomatic Approach:
A) 0 P(A) 1, for all event A
B) P(A) = 1
Apart from all these, there is a concept of subjective probability. Its basically based
on individuals past experience and intuition. Most higher level social and managerial
decisions are concerned with specific, unique situations. Decision makers at this level
make considerable use of subjective probability.
Concept of Random Variable
Informally, a random variable is the value of a measurement associated with an experiment, e.g. the number of heads in n tosses of a coin. More formally, a random variable is defined as follows:
A random variable over a sample space is a
function that maps every sample point (i.e.
outcome) to a real number.
The picture shown has all the outcomes
when two dice are rolled. We can define a
random variable X which is the sum of points
appeared on the two dices. Then X can assume values from 2 to 12. Each of these
numbers represents a set of outcomes. Elements of such sets have same outer color,
e.g. for X =5, we have the outcomes in the
yellow boxes.
Based on the events that we have, there
can be two types of random variables: Discrete random variable and Continuous random variable. In the previous example, we are basically talking about discrete random variable. Again, John Brower Minnoch had a weight of 635 kg. Lets say this is the
upper limit of human weight. So the weight of a person lies in between 0 and 635. So
here the random variable weight is continuous.
Probability Mass Function
Probability mass function (pmf) is a function that gives the probability that a discrete
random variable is exactly equal to some value. The probability mass function is often
the primary means of defining a discrete probability distribution.
Suppose that S is the sample space of all outcomes of a single toss of a fair coin, and X
is the random variable defined on S assigning 0 to "tails" and 1 to "heads". Since the
coin is fair, the probability mass function is given by:
The probability mass function of a fair die has been show in the
chart. All the numbers on the die have an equal chance of appearing on top when the die is rolled.
23
If you put this concept into a chart, then it will represent the area under the probability
density function curve between a and b.
f(x)
24
Probability Distributions
Probability distributions are related to frequency distributions. We can think of a probability distribution as a theoretical frequency distribution. A theoretical frequency distribution is a probability distribution that describes how outcomes are expected to vary.
These distributions deal with expectations, they are useful models in making inferences
and decisions under conditions of uncertainty. A probability distribution is a listing of
the probabilities of all the possible outcomes that could result if the experiment were
done.
As the Random Variable is of two types, the Probability Distributions, hence, are of two
types, namely, discrete and continuous. The Probability Distribution for the sum of point
on two dice rolled is as follows:
Common Probability Distributions
Related to real-valued quantities that grow linearly (e.g. errors, offsets): Normal Distributions
Related to positive realvalued quantities that grow exponentially (e.g. prices, incomes,
populations): Log-normal Distribution, Pareto Distribution
Related to real-valued quantities that are assumed to be uniformly distributed over a
(possibly unknown) region: Uniform Distribution
Related to Bernoulli trials
(yes/no events, with a given probability): Bernoulli Distribution, Binomial Distribution
Related to events in a Poisson process (events that occur independently with a given rate): Poisson Distribution, Exponential Distribution
Binomial Distribution
The binomial distribution describes discrete data resulting from an experiment known
as Bernoulli process. The tossing of a fair coin a fixed number of times is a Bernoulli process and the outcomes of such tosses can be represented by the binomial probability
distribution. The success or failure of interviewees on an aptitude test may also be described by a Bernoulli process. On the other hand, the frequency distribution of the
lives of fluorescent lights in a factory would be measured on a continuous scale of
hours and would not qualify as a binomial distribution. The probability mass function,
the mean and the variance are as follows:
25
ure
Each Bernoulli process has its
own characteristic probability. Take the situation in which
historically seven tenths of
all people who applied for a
certain type of job passed
the job test. We would say
that the characteristic probability here is 0.7, but we could
describe our testing results as
Bernoulli only if we felt certain
that the proportion of those
passing the test (0.07) remained constant over time.
At the same time, outcome of one test must not affect the outcome of the other
tests.
Poisson Distribution
The Poisson distribution is used to describe a number of processes, including the distribution of telephone calls going through a switchboard system, the demand of patients for service at a health institution, the arrivals of trucks and cars at a tollbooth,
and the number of accidents at an intersection. These examples all have a common
element: They can be described by a discrete random variable that takes on integer
values (0, 1, 2, 3, 4, and so on). The number of patients who arrive at a physicians office in an given interval of time will be 0, 1, 2, 3, 4, 5, or some other whole number. Similarly, if you count the number of cars arriving at a tollbooth on an highway during
some 10 minutes period, the number will be 0, 1, 2, 3, 4, 5, and so on. The probability
mass function, the mean and the variance are as follows:
cles that arrive per rush hour can be estimated from the past traffic data.
If we divide the rush hour into intervals of one second each, we will find the following statements to be true :
The probability that exactly one vehicle will arrive at the single booth per second is
a very small number and is constant for every one second interval.
The probability that two or more vehicles will arrive within one second interval is so
26
Normal Distribution
The normal distribution has applications in many areas of business administration. For
example:
Modern portfolio theory commonly assumes that the returns of a diversified asset
portfolio follow a normal distribution.
In operations management, process variations often are normally distributed.
In human resource management, employee performance sometimes is considered to be normally distributed.
The probability density function, mean, and variance are given by
27
Q - Q Plot
The points in this graph are obtained through inverting the
cumulative distribution function. Here we are comparing the
points of observed distribution to the theoretical distribution
for the same probability level. Here again, if the data are
from the theoretical distribution, the plot will be a straight line.
with
For a normal distribution,
68.2% of the data lies within
the (mean - standard deviation, mean + standard deviation) range.
28
SAS
IMPLEMENTATION
BINOMIAL DISTRIBUTION
data binom;
binom_prob=pdf ('binomial', 50, 0.6, 100);
run;
This code defines the probability of getting fifty successes in 100 trials of a binomial experiment where the probability of getting success in a single trial is 0.6. This code creates a new data set by the name binom in the work library. The data set can also be
opened in the permanent library as well by assigning a library name. binom_prob is the
variable that stores the probability associated with the above-mentioned outcome.
Pdf stands for probability density function. It generates the probability associated
with the given outcome, given the parameters of the distribution. Pdf is the general
command for calculating the probabilities associated with various points of a distribution (be it discrete or continuous) since SAS does not identify pmf (Probability Mass
Function).
data binom_plot;
do x=0 to 20;
binom_prob=pdf ('binomial', x, 0.5, 20);
output; end;
run;
This code generates a schedule of probabilities associated with the various outcomes
or success in the binomial distribution. A loop is created for generating the schedule.
The number of success in the experiment is kept variable and within the loop. The parameters to the distribution, namely the number of trials (20) and the probabilities of
success (0.5) are specified. The loop is terminated using the end keyword. The key
word output is used to print the output at each iteration.
proc gplot data=binom_plot;
plot binom_prob*x;
run;
This command directly plots the binomial probability distribution with probabilities on
the vertical axis and the number of successes on the horizontal axis.
data binom_plot;
do x=0 to 20;
binom_prob=pdf ('binomial', x, 0.3, 20);
output; end;
run;
This is the command to generate the binomial probability distribution for 0 to 20 trials
with a much lower probability of success. Examining the nature of the distribution over
29
SAS
IMPLEMENTATION
changing values of the probabilities of success gives us a fair idea of the Skewness of
the distribution. If the probability of obtaining a success in a particular trial is low then
the chances of getting very high successes is low and that of getting low successes
is very high.The distribution, given the specification of the parameters is a negatively
skewed distribution.
proc gplot data=binom_plot;
plot binom_prob*x;
run;
The command plots the binomial probability distribution for the newly specified parameters with the values of the probability on the vertical axis and the number of success
on the horizontal axis. The graphical representation displays the varying nature of
Skewness in the distribution very distinctly.
POISSON DISTRIBUTION
data day1.poisson;
pois_prob=pdf ('Poisson', 12, 10);
run;
This is a data step where a data set by the name Poisson is created in the permanent
library day1. The syntax defined by the function pdf is as follows:
New variable = pdf (name of the distribution, value of x, value of n). This code calculates the probability of obtaining a particular number of successes in the Poisson experiment where the parameter to the experiment is 10 and the number of trials is 12.
data day1.pois_plot;
do x=0to 25;
pois_prob=pdf ('Poisson', x, 10);
output;
end;
run;
This command plots the poisson probability distribution with probabilities on the vertical
axis and number of successes on the horizontal axis. The output keyword is to print the
output of each iteration.
proc gplot data=day1.pois_plot;
plot pois_prob*x;
run;
This command directly plots the poisson probability distribution with probabilities on the
vertical axis and the number of successes on the horizontal axis. Following set of codes
30
SAS
IMPLEMENTATION
are used for analyzing the Skewness associated with the poisson distribution:
data day1.pois_plot;
do x= 0 to 25;
pois_prob=pdf ('poisson', x, 10.5);
output;
end;
run;
proc gplot data=day1.pois_plot;
plot pois_prob*x;
run;
The last couple of codes can be used to analyse the nature of the Skewness of the
poisson distribution. The Skewness can be analyzed by changing the parameters to
the distribution.
NORMAL DISTRIBUTION
data day1.normal;
do x=-12 to 18 by 0.05;
normal_prob=pdf ('normal', x, 3, 8);
output; end;
run;
This is a data step which creates a new data set normal in the user-defined library
day1. The command generates the normal probability distribution. The values of the
respective probability densities are stored in the variable normal_prob. The syntax of
this function is: Name of the variable = pdf (distribution name, number of trials, mean,
variance). The mean and variance must be specified for a proper characterization of
the normal distribution. The schedule of probabilities corresponding to the different values of x is generated using the do loop. Since, normal distribution is a continuous distribution it assumes continuous values. By default, at every successive step in the loop
function the value is increased at a step of 1, which makes it a discrete loop. To make
it continuous we increase the trials at a step of 0.05. The result of each iteration is displayed using the output keyword.
proc gplot data=day1.normal;
run;
This command directly plots the normal probability distribution with probabilities on the
vertical axis and the number of trials on the horizontal axis. The graph obtained from
the data normal is symmetric in nature.
31
SAS
IMPLEMENTATION
The proc univariate is the procedure for listing out all the descriptive statistics associated with the variable height which is our analysis variable. The keyword histogram
is used for generating a histogram over which a normal curve is super-imposed. The
normal curve here is a green coloured curve, specified by the estimated mean and
the estimated standard deviation. Super imposition of the normal curve over the histogram gives us an idea whether the variable is normally distributed. If the normal
curve fits on nicely to the histogram then we say that the variable is normally distributed. The variable height in the data set class has a normal plot. The normality of the
variable can be clearly observed in the diagram below:
proc univariate data=day1.candy_sales_summary normal plot;
var sale_amount;
histogram sale_amount/normal (mu=est sigma=est color=green);
run;
This is the same code as above which has been used on a separate variable on a different data set. The variable sale_amount is not normally distributed and the normal
curve does not fit symmetrically on the histogram.
32
Chapter 3
SAMPLING THEORY AND ESTIMATION
33
dered list. Suppose you are talking data from every 10th person entering into a
mall.
Stratified Sampling
Where the population embraces a number of distinct categories or "strata, each
stratum is then sampled as an independent sub-population, out of which individual
elements can be randomly selected.
Where the population embraces a number of distinct categories or "strata, each stratum is then sampled as an independent sub-population, out of which individual elements can be randomly selected.
male, full-time: 90
male, part-time: 18
female, full-time: 9
female, part-time: 63
Total: 180
and we are asked to take a sample of 40 staff, stratified according to the above categories.
The first step is to find the total number of staff (180) and calculate the percentage in
each group.
% male, full-time = 90 / 180 = 50%
% male, part-time = 18 / 180 = 10%
% female, full-time = 9 / 180 = 5%
% female, part-time = 63 / 180 = 35%
This tells us that of our sample of 40,
50% should be male, full-time.
10% should be male, part-time.
5% should be female, full-time.
35% should be female, part-time.
50% of 40 is 20.
10% of 40 is 4.
5% of 40 is 2.
35% of 40 is 14.
Another easy way without having to calculate the percentage is to multiply each
group size by the sample size and divide by the total population size (size of entire
staff):
male, full-time = 90 x (40 / 180) = 20
male, part-time = 18 x (40 / 180) = 4
female, full-time = 9 x (40 / 180) = 2
female, part-time = 63 x (40 / 180) = 14
Non-Probability Sampling
In non probability sampling, we cannot assign any probability to the selected sample. Nonprobability sampling techniques cannot be used to infer from the sample to
the general population.
Examples of nonprobability sampling include:
Convenience, Haphazard or Accidental sampling - members of the population are
34
35
mation refers to the process by which one makes inferences about a population,
based on information obtained from a sample. Statisticians use sample statistics to estimate population parameters. For example, sample means are used to estimate population means. So, sample mean is an estimator here and the value of the mean is the
estimate. So as a parameters is to the population, a statistic is to a sample.
Types of Estimator
There are two types of estimator: Point Estimator and
Interval Estimator.
The point estimators yield single-valued results, whereas
an interval estimators results in a range of plausible values.
Properties of Estimator
Unbiased: The estimator is an unbiased estimator of if and only if the expectation
36
or research hypothesis) and the null hypothesis are the two rival hypotheses which are
compared by a statistical hypothesis test. An example might be where water quality in
a stream has been observed over many years and a test is made of the null hypothesis
that there is no change in quality between the first and second halves of the data
against the alternative hypothesis that the quality is poorer in the second half of the
record.
Examples of Statistical Hypotheses
37
Level of Significance
Statistical significance is a statistical assessment of whether observations reflect a pattern rather than just chance, the fundamental challenge being that any partial picture
is subject to observational error. In statistical testing, a result is deemed statistically significant if it is unlikely to have occurred by chance, and hence provides enough evidence to reject the hypothesis of 'no effect'. As used in statistics, significant does not
mean important or meaningful, as it does in everyday speech.
The significance level is usually denoted by the Greek symbol . Popular levels of significance are 10% (0.1), 5% (0.05), 1% (0.01), 0.5% (0.005), and 0.1% (0.001). If a test of significance gives a p-value lower than the significance level , the null hypothesis is rejected.
Confidence Interval
In statistics, a confidence interval (CI) is a kind of interval estimate of a population parameter and is used to indicate the reliability of an estimate. Confidence intervals consist of a range of
values (interval) that act as
good estimates of the unknown population parameter. However, in rare cases,
none of these values may
cover the value of the parameter. The level of confidence of the confidence
interval would indicate the
probability that the confidence range captures this true population parameter given a distribution of samples. If a corresponding hypothesis test is performed, the confidence level corresponds with the level of significance, i.e. a 95% confidence interval reflects an significance level of 0.05, and the confidence interval contains the parameter values that,
when tested, should not be rejected with the same sample. In statistics, a confidence
interval (CI) is a kind of interval estimate of a population parameter and is used to indicate the reliability of an estimate. Confidence intervals consist of a range of values
(interval) that act as good estimates of the unknown population parameter. However,
in rare cases, none of these values may cover the value of the parameter. The level of
confidence of the confidence interval would indicate the probability that the confidence range captures this true population parameter given a distribution of samples. If a corresponding hypothesis test is performed, the confidence level corresponds with the level of significance, i.e. a 95% confidence interval reflects an significance level of 0.05, and the confidence interval contains the parameter values that,
when tested, should not be rejected with the same sample.
38
SAS
IMPLEMENTATION
Surveyselect is the procedure for executing a sampling procedure. The data set that
we consider here is employee_satisfaction. The method of sampling specified here is
simple random sampling without replacement (SRS). We have pre-specified the sample size to be 50. This is a proc step which generates a report. Some important concepts generated in the report are:
Random Number Seed: A integer used to set the starting point for generating a series of random numbers. The seed sets the generator to a random starting point. A
unique seed returns a unique random number sequence. Given the seed a series
of random numbers is generated. If no random number seed is specified, then the
numerical value of the system time is used for generating the subsequent random
numbers.
Selection Probability: This shows the probability of selecting a sample of n observations from a total of N observations (N > n). Each of the observations are equally likely of being drawn from the population and a sample observation once drawn
from a population is not returned back.
Sampling Weight: A sampling weight is a statistical correction factor that compensates for a sample design that tends to over- or under-represent various segments
within a population. In some samples, small subsets of the population, such as religious, ethnic, or racial minorities, may be oversampled in order to have enough
cases to analyze. When these subsamples are combined with the larger sample,
their disproportionately large numbers must be diluted by a sampling weight. This is
just the reciprocal of the selection probability of a sample.
SIMPLE RANDOM SAMPLING WITH REPLACEMENT
proc surveyselect data=day1.employee_satisfaction out=day1.emp2
method=urs n=50;
run;
This code describes an alternate technique of sampling. The method urs or unrestricted sampling refers to the type of random sampling where the sample points are returned to the population once the observations are recorded. This process of sampling
is also called the simple random sampling with replacement. In the final data set that
we get, there might not be 50 unique observations, since repetition may occur in the
selection of the sample observations. In this form of sampling, the report generated
contains, in addition to the concepts introduced in srs, another concept called the expected number of hits.
39
SAS
IMPLEMENTATION
The concept of the expected number of hits is synonymous to the concept of selection probability in the simple random sampling with replacement. This measure represents the average number of times a particular observation is selected in the process
of random sampling without replacement. The sampling weight, in this context, is the
reciprocal of the expected number of hits made in the procedure.
STRATIFIED RANDOM SAMPLING
STEP 1: SORTING THE DATA SET ACCORDING TO THE SUB_CATEGORY
proc sort data=day1.candy_sales_summary
out=day1.candy_sort;
by subcategory;
run;
The command sorts the data set according to the variable subcategory. The sorting
of the data set is important because it divides the data set according to the available
strata. The variable subcategory act as the strata in the given data set.
STEP 2: SAMPLING USING THE STRATIFICATION TECHNIQUE
proc surveyselect data=day1.candy_sort n= (5 7 15 10 12 8)
method=seq
out=day1.candy_seq;
strata subcategory;
run;
The method of sampling applied for each stratum is the sequential random sampling
technique. The observations to be chosen from each stratum are specified using n.
SYSTEMATIC OR ORDERED SAMPLING
The sample, in this technique, is drawn from the population, based on a particular order. For example: If a departmental store wants to know about the level of customer
satisfaction then he needs to survey the customers. If in a day the mall expects a foot
fall of 1000 customers and the number of sample size he requires is 100, then the mall
can question every 10th person walking in through the door.
proc surveyselect data= day1.candy_sort
out=day1.candy_seq
n=30 method=sys;
run;
This command method=sys is used to execute the systematic sampling process. The
systematic number of observations that is to be sampled is calculated using: K = N/n,
where n = size of the sample, N = size of the population. So, for getting a sample size of
30, every 50th observation should be surveyed.
40
Chapter 4
IMPORTANT TESTS OF STATISTICAL SIGNIFICANCE (PART I)
parametric test is one that requires data from one of the large catalogue of
distributions that statisticians have described and for data to be parametric
certain assumptions must be true. If you use a parametric test when your data is not parametric then the results are likely to be inaccurate. Therefore, it is
very important that we check the assumptions before deciding which statistical test is
appropriate.
Assumptions of Parametric Test
Normally Distributed Data: It is assumed that the data are from one or more nor-
mally distributed populations. The rationale behind hypothesis testing relies on normally distributed populations and so if this assumption is not met then the logic behind hypothesis testing is flawed. Most researchers eyeball their sample data using
a histogram and if the sample data look roughly normal, then the researchers assume that the populations are also.
Homogeneity of Variance: The assumption means that the variance should be the
same throughout the data. In designs in which you test several groups of participants, this assumption means that each of these samples comes from populations
with the same variance.
Interval Data: Data should be measured at least at the interval level. This means
that the distance between points of your scale should be equal at all parts along
the scale. For example, if you had a 10 point anxiety scale, then the difference in
anxiety represented by a change in score from 2 to 3 should be the same as that
represented by a change in score from 9 to 10.
Independence: This assumption is that data from different participants are independent, which means that the behavior of one participant does not influence the
behavior of another.
The assumptions of interval data and independent measurement are tested only by
common sense. The assumption of homogeneity of variance is tested in different ways
for different procedures .
Z Test
A Z-test is any statistical test for which the distribution of the test statistic under the null
hypothesis can be approximated by a normal distribution.
41
The parent population from which the sample is drawn should be normal
The sample observations are independent, i.e., the given sample is random
The population standard deviation is known
T Test
A t-test is any statistical hypothesis test in which the test statistic follows a Student's t distribution if the null hypothesis is supported. Among the most frequently used t-tests are:
A one-sample location test of whether the mean of a normally distributed population has a value specified in a null hypothesis.
A two sample location test of the null hypothesis that the means of two normally
distributed populations are equal.
A test of the null hypothesis that the difference between two responses measured
on the same statistical unit has a mean value of zero.
A test of whether the slope of a regression line differs significantly from zero.
Assumptions
Most t statistics have the form t= Zs.
Z follows a standard normal distribution under the null hypothesis or the parent population from which the sample is drawn should be normal
The sample observations are independent, i.e., the given sample is random
The population standard deviation is unknown
Two Independent Samples T Test
Consider you have Conducted a survey that studied the Commitment to Change in
your Organization. Now you require to find out if there are any differences in the Commitment to Change between Male and Female Staff Members or for instance a researcher wants to find out if Middle level employees are more satisfied than top level
employees. In this case the researchers needs the Satisfaction Scores for Middle and
Top Management. Here again we can see that One Variable (Satisfaction) is divided
into two groups (Middle and Top Level). So in summary when we need to compare
42
43
SAS
IMPLEMENTATION
The univariate procedure generates all the vital descriptive statistics associated with
the variable baseline bp. The qq-plot of baseline-bp shows that observations of the
variable lie very close to the hypothetical pink-coloured normal line. Therefore, baselinebp is normally distributed.
STEP 2: TESTING THE SIGNIFICANCE OF THE HYPOTHESIS
proc ttest data=day1.bp h0=96 alpha=0.05;
var baselinebp;
run;
The procedure ttest is used to run the students t-test. The null-hypothesis (h0) is specified to be equal to 96. This implies that any differences observed in the readings of the
average blood pressure are caused due to sampling fluctuations in the data set. The
keyword alpha is used to denote the level of significance which shows the probability
of committing a Type I error.
The t-test generates the following tables:
Statistics: This table generates the vital statistics associated with the variable baselinebp. It displays the sample mean, variance and standard error associated with
the sample.
T-test: This table reports the results associated with the t-test. The most important
component of this table is the p-value which is shown at the end of the table. The p
-value shows a value of 0.2688 which is much higher than the level of significance.
Therefore, an analyst knows that he runs a very high chance of committing a Type-I
error if he rejects the Null-Hypothesis. Thus, it is in the interest of the analyst to accept the Ho. So, in this situation it can be inferred that minor fluctuations observed
in the mean blood pressure are due to sampling fluctuations.
44
SAS
IMPLEMENTATION
The t-test is executed using the procedure ttest. Since this is a t-test to check the difference of mean between two groups, we introduce the class keyword to identify
the two pizza companies. The variable in terms of which the t-test is to be carried out is
the variable waiting_time__in_minutes_. Three important tables are generated once
the code is executed:
STATISTICS: This table describes the vital statistics associated with the two pizza companies. This table gives us a clear idea that the delivery time of the pizza company
ABC is distinctly less than the delivery time of the company XYZ. How can we say
so? This can be said so from the confidence intervals within which the sample
means of the two companies lie.
EQUALITY OF VARIANCES: To compare the means of two different sets it is necessary to check that the variances of the two set. The population variances of the
two data sets must be identical in nature. This implies that the mean-difference test
is executed under the assumption that the variance remains constant across the
two data sets. The equality of variances is tested using the Folded F-test. This is defined as: F = max (s12,s22)/min(s12,s22) where s12 and s22 are variances of category 1
and category 2.
45
SAS
IMPLEMENTATION
the mean delivery time of pizzas. The results are displayed under two sub-headings:
Pooled Variance and Unequal variance. We consider the results corresponding to
the Pooled variance for the t-test analysis. The p-value corresponding to the tstatistic is 0.0003 which is less than the prescribed level of significance. Therefore, it
is easy to conclude that the difference in the mean delivery time of the pizza companies ABC and XYZ are significantly different from one another.
PAIRED SAMPLE T-TEST
To analyze the impact of e-learning on the students, the Ministry of the Human Resource Development of the Government of India performed an exploratory study on
the a sample of 50 students. The students were first taught in the traditional method of
teaching and then through the method of e-learning without the presence of any
teachers. The marks were recorded for the students before the e-learning and after
the e-learning. The marks were then compared to analyze the impact of the elearning on the performance of the students.
STEP1: IMPORTING THE DATA FILE
The first step in this part is to import the required datafile using the proc import keyword. The original file is in the csv format.
proc import datafile="C:\Documents and Settings\OrangeTree\Desktop\Analytics data
sets and case studies\pairedsample.csv"
out=day1.pairedsample
dbms=csv replace;
run;
46
SAS
IMPLEMENTATION
paired before*after;
run;
The keyword paired is used to execute the paired t-test between the marks before
and marks after. The hypothesis set up is:
H0: The ex-post and ex-ante means are not significantly different
v/s
HA: The ex-post and ex-ante means are significantly different
The results for this t-test are displayed through the following tables:
STATISTICS: The statistic table shows that the mean marks of students have increased after incorporating the e-learning process. The question that arises from
the table above is: Is the rise in the mean marks post the e-learning a significant
rise? To test the significance of the change we use the t-test table.
T-TEST: The t-test table details the significance of the difference of the paired
means. The p-value rule is used for deciding whether the null hypothesis is should
be accepted or not. The p-value generated (0.4539) within the model is greater
than the level of significance. This means that the differences in the means are not
statistically significant.
Therefore, the analysis shows that the mean of the performance of the students post
the e-learning process did not change significantly. Hence, e-learning employed by
the ministry of education did not prove to be effective as a strategy.
47
Chapter 5
UNDERSTANDING THE ASSOCIATION BETWEEN THE VARIABLES
Investment
Stock
Bond
Cash
Total
25 - 34
30
10
41
35 - 44
35
25
62
Age 45 - 54
38
35
77
55 - 70
22
30
4
56
categorical variables
Total frequency should
Total
125
100
11
236
be reasonably large,
say greater than 50
The observations of the sample are independent, i.e., the samples are random
The theoretical frequency of any category or class should not be less than 5
Hypotheses of the test are
H0: There is no association between the variables
H1: There is an association between the variables
Calculation of Chi Square Statistic
48
Remember, Chi square test of independence only checks whether there is any association between the attributes, but it does not tell what is the nature of the association.
Correlation Analysis
The simplest way to look at whether two variables are associated is to look at whether
they covary. To understand what covariance is, we first need to think back to the concept of variance.
Variance = (xi - mx)2 / (N 1) = (xi - mx) (xi - mx)/ (N 1)
The mean of the sample is represented by mx, xi is the data point in question and N is
the number of observations. If we are interested in whether two variables are related,
then we are interested in whether
changes in one variable are met with
similar changes in the other variable.
When there are two variables, rather
than squaring each difference, we
can multiply the difference for one variable by the corresponding difference
for the second variable. As with the
variance, if we want an average value
of the combined differences for the
two variables, we must divide by the
number of observations (we actually
divide by N 1). This averaged sum of
combined differences is known as the
covariance: Cov(x,y) = (xi - mx) (yi - my)/ (N 1)
There is, however, one problem with covariance as a measure of the relationship between variables and that is that it depends upon the scales of measurement used. So,
covariance is not a standardized measure. To overcome the problem of dependence
on the measurement scale, we need to convert the covariance into a standard set of
units. This process is known as standardization.
Therefore, we need a unit of measurement into
which any scale of measurement can be converted. The unit of measurement we use is the
standard deviation.
The standardized covariance is known as a correlation coefficient.
r = covxy / sx sy = (xi - mx) (yi - my)/ [(N 1) sx sy]
which always lies in between 1 and 1.
Remember, correlation doesnt necessarily imply
causation.
49
Duration
Salary in
Age of
of Educa- Professional Dollar per the Pertion
Experience
Hour
son
Pearson Cor1
-.308*
.115
-.238
relation
Sig. (2-tailed)
.017
.381
.067
-.308*
.115
.121
.381
.358
-.238
.985**
.180
.067
.000
.169
Age of the
Person
Pearson Correlation
Sig. (2-tailed)
.017
.121
.985**
.358
.000
.180
.169
1
Partial Correlation
A correlation between two variables in which the effects of other variables are held
constant is known as partial correlation. The partial correlation for 1 and 2 with controlling variable 3 is given by:
r12.3 = (r12 r13 r23) / [ (1 r132) (1 r232)]
For example, we might find the ordinary correlation between blood pressure and
blood cholesterol might be a high, strong positive correlation. We could potentially
find a very small partial correlation between these two variables, after we have taken
into account the age of the subject. If this were the case, this might suggest that both
variables are related to age, and the observed correlation is only due to their common relationship to age.
50
SAS
IMPLEMENTATION
CORRELATION
proc corr data=day1.correlation;
var Education Experience Age Wage_dollars_per_hour_;
run;
proc corr is used to calculate correlation between two or more quantitative variables.
The var option identifies the variables whose correlation coefficients are to be quantified. The output to this code generates a 4x4 correlation matrix. Each element in this
matrix shows the correlation coefficient between two variables. Associated with each
correlation coefficient is a p-value which shows the statistical significance of the correlation coefficient.
PARTIAL CORRELATION
proc corr data=day1.correlation;
var Education Experience;
partial Age;
run;
This code produces the correlation between the two variables Education and Experience. The option partial is used to adjust the correlation coefficient value between Education and Experience for the impact of the variable Age. This adjustment is important to find out the extent exactly to which Education and Experience are correlated.
MATRIX PLOT
ods html;
ods graphics on;
proc corr data=day1.correlation noprint plots=matrix;
var Education Experience Wage_dollars_per_hour_ Age;
run;
ods graphics off;
ods html close;
For a matrix view of the correlations we first set the ods (Output Delivery System) to
html. Then we turn on the graphics mode. In the proc corr we use the options noprint
to suppress the output in the output window. At the same time, we set the type of the
plot to matrix. After running the code, we turn off the graphics mode and reset the
output delivery system.
51
SAS
IMPLEMENTATION
52
Chapter 6
IMPORTANT TESTS OF STATISTICAL SIGNIFICANCE (PART II)
Time
Beginner
Intermediate
Advanced
Assumptions
Response variable are normally distributed (or approximately normally distributed)
Samples are independent
Variances of populations are equal
Responses for a given group are independent and identically distributed normal
random variables
The hypotheses for the test are:
H0: The population means are equal
H1: At least one of the population means is different
The name One Way ANOVA implies that the number of independent variable is one.
Here the inter-group variation is basically systematic variation and the intra-group vari
53
ation is unsystematic. Then we are checking whether inter group variation is significantly larger than the intra group variation.
Two Way ANOVA
The two-way analysis of variance (ANOVA) test is an extension of the one-way ANOVA
test that examines the influence of different categorical independent variables on one
dependent variable. While the one-way ANOVA measures the significant effect of one
independent variable (IV), the two-way ANOVA is used when there are more than one
IV and multiple observations for each IV. The two-way ANOVA can not only determine
the main effect of contributions of each IV but also identifies if there is a significant interaction effect between the IVs.
Example
A researcher was interested in whether an individual's interest in politics was influenced
by their level of education and their gender. They recruited a random sample of participants to their study and asked them about their interest in politics, which they
scored from 0 - 100 with higher scores meaning a greater interest. The researcher then
divided the participants by gender (Male/Female) and then again by level of education (School/College/University).
What is Interaction?
When gender and level of education interact, we find 6 different groups, namely,
Male School, Female School, Male College, Female College, Male University
and Female University. Using two way ANOVA, we are trying to understand whether
any of the group is significantly different from the rest. If the interaction levels dont
show any significant differences, nor will the main factors for their levels.
Assumptions
As with other parametric tests, we make the following assumptions when using twoway ANOVA:
The populations from which the samples are obtained must be normally distributed
Sampling is done correctly. Observations for within and between groups must be
independent
The variances among populations must be equal (homogeneity)
Data are interval or nominal
The Hypotheses for the test are:
For each factor and interaction,
H0: Means of all groups are equal
H1: There is one significant difference
54
SAS
IMPLEMENTATION
ONE-WAY ANOVA
We demonstrate one way anova through a case study. The case that we consider is
that of three production plants: Maruti, Hyundai and Tata. The associated processing
time of cars in each of these plants is mentioned along with them. The objective of the
analyst is to find out whether there exists a significant difference between the mean
processing time of the plant.
proc anova data=day1.anova;
class plant;
model processing_time=plant;
run;
anova is the procedure used in analysis of variance when the data is balanced.
Class is the keyword for specifying the different groups in the problem. In this case,
the class variables are the respective production plants of the companies. The model
keyword is used for executing functions which involve an independent and a dependent variable. The left-hand side of the equality is the dependent variable and the righthand side represents the independent variable. The code generates the following tables:
First table shows the statistics associated with the overall goodness of the model.
This table displays the variations across the groups (Mean Model Sum of Squares)
and within the groups (Mean Squares of Errors). The F-statistic is calculated as a ratio of the Explained variation in the model to the unexplained variation. The pvalue rule is employed to check the significance of the F-value. The p-value for the
F-statistic in this study is 0.1447, which is significantly greater than the level of significance. Thus it can be concluded that there is no significant difference in the processing time of cars in the three plants.
The second table generates all the descriptive statistics corresponding to the variable mean_processing_time_of_plant.
The mean processing times of plants of the three companies are not significantly different from each other. One problem with the one-way anova is that it does not include
any interaction effect between the independent variables. This problem is addressed
by two-way anova.
TWO-WAY ANOVA
A survey referred to weight gained by men because of different factors, viz, the
amount of food consumed by the men and the type or nature of diet. By Ten representative men were randomly selected and each of them were fed with each type of
diet in the two specified diet amounts (i.e. High and low respectively). The weight
gained by the men was measured in grams. There are three variables with a total of 60
observations.
55
SAS
IMPLEMENTATION
The numeric variable Weight Gain denotes the weight gained by the men. The two
separate samples of pre and post treatment weight is not taken; rather; a single sample of actual weight gain is considered. The variable Diet Amount denotes the amount
of diet. It is a categorical variable recording two responses; 1 for High and 2 for Low
amounts of diet. Also, the variable Diet Type denotes the type of diet consumed which
is also a categorical variable. It records three responses: 1 for Vegetarian diet, 2 for
non-vegetarian diet and 3 for a mixed diet.
The objective of the study is to locate the factors which most significantly affect the
weight gain in individuals. The code for two-way anova is:
proc glm data=day1.twowayanova;
class Diet_Amount Diet_type;
model Weight_gain=Diet_Amount Diet_type Diet_Amount*Diet_type;
means Diet_amount Diet_type/tukey;
run;
This can also be done using proc anova. But anova works well when the data is balanced, i.e. the interaction groups are equal in size. Also we are more interested about
the type III sum of squares. So we prefer proc glm over proc anova.
56
Chapter 7
EXPLORATORY FACTOR ANALYSIS
57
So, PCA explains the entire variance and EFA explains a part of it. In EFA we are basi-
58
Eigen Value
Scree Plot
Number of Factors
Factor Analysis is an Interdependence technique. In interdependence techniques the
variables are not classified as dependent or independent; rather, the whole set of interdependence relationships is examined.
Problems of Factor Loadings and Solutions
Initially, the weights are distributed across all the variables. So it is not possible to understand the underlying factor of one or more variables. To remove this problem , we apply rotation to the axes.
We mainly deal with two types of rotation:
Orthogonal Rotation: Varimax
Oblique Rotation: Promax
The problem with oblique rotation is that it makes the factors correlated. Varimax rotation is used in principal component analysis so that the axes are rotated to a position in
which the sum of the variances of the loadings is the maximum possible.
59
SAS
IMPLEMENTATION
So apart from the variable employee which is basically the identification of the employee, all the variables contribute to the satisfaction of the employee. Using factor
analysis we are going to find out the underlying factors of the employee satisfaction
and see which variable belongs to which factor.
But first we have to see whether factor analysis is feasible or not.
proc factor data=day1.employee_satisfaction corr msa scree;
var Organization_competitive_place Like_ppl_I_work_with Job_allows_learn_newthngs
Paid_more_than_others I_like_work_culture
Frnds_have_heard_of_this_comp Co_looks_good_on_resume Can_work_from_home cutting_edge_work_done good_perks_incentives Good_pension_plan
I_never_worked_on_weekend Paid_well_for_my_work;
run;
The corr option in the data statement of procedure factor produces the correlation
matrix mentioned in the var statement. If the correlation between the variables are
very near to zero (say within +/- 0.2 ), then the variables are independent. So they
themselves are the factors. The other option msa produces a KMO MSA Check. The
scree option produces a scree plot.
Now suppose we want to produce 4 factors. Then we set the value of n to 4.
proc factor data=day1.employee_satisfaction corr msa scree n = 4 rotate = varimax;
var Organization_competitive_place Like_ppl_I_work_with Job_allows_learn_newthngs
Paid_more_than_others I_like_work_culture
Frnds_have_heard_of_this_comp Co_looks_good_on_resume Can_work_from_home cutting_edge_work_done good_perks_incentives Good_pension_plan
I_never_worked_on_weekend Paid_well_for_my_work;
run;
60
SAS
IMPLEMENTATION
The rotate option specifies the type of rotation that we give. Here we have assigned
Varimax rotation.
If we want to calculate all the scoring coefficients, then we mention the option score.
proc factor data=day1.employee_satisfaction corr msa scree score mineigen = 0.5;
var Organization_competitive_place Like_ppl_I_work_with Job_allows_learn_newthngs
Paid_more_than_others I_like_work_culture
Frnds_have_heard_of_this_comp Co_looks_good_on_resume Can_work_from_home cutting_edge_work_done good_perks_incentives Good_pension_plan
I_never_worked_on_weekend Paid_well_for_my_work;
run;
The mineigen = 0.5 option implies we want to retain those factors only that have eigen
values greater than 0.5.
For individual factor scores, we write specify the option out = day1.factor_scores.
proc factor data=day1.employee_satisfaction out = day1.factor_scores;
var Organization_competitive_place Like_ppl_I_work_with Job_allows_learn_newthngs
Paid_more_than_others I_like_work_culture
Frnds_have_heard_of_this_comp Co_looks_good_on_resume Can_work_from_home cutting_edge_work_done good_perks_incentives Good_pension_plan
I_never_worked_on_weekend Paid_well_for_my_work;
run;
61
Chapter 8
CLUSTER ANALYSIS
luster analysis groups individuals or objects into clusters objects in the same
cluster are more similar to one another than they are to objects in other
clusters. The attempt is to maximize the homogeneity of objects within the
clusters while also maximizing the heterogeneity between the clusters. Like
factor analysis, cluster analysis is also a inter dependence technique.
A Simple Example
Suppose, you have done a pilot marketing of a candy on a randomly selected sample
of consumers. Each of the consumers was given a candy and was asked whether they
liked it and whether they will buy it. Now
the respondents were grouped into following four clusters:
Now the group NOT LIKED, WILL BUY
group is a bit unusual. But people can
buy for others. From a strategy point of
view, the group LIKED, WILL NOT BUY is
important, because they are potential
customers. A possible change in the pricing policy may change the purchasing
decision.
What Exactly Are We Looking for?
From the example, it is very clear that we must have some objective on the basis of
which we want to create clusters. The
following questions need to be answered:
What kind of similarity are we looking for? Is it pattern or proximity?
How do we form the groups?
How many groups should we
form?
Whats the interpretation of each
cluster?
Whats the strategy related to
each of these clusters?
Customer Profiling
62
Cluster analysis does not have a theoretical statistical basis. So no inference can be
made from the sample to the population. Its only an exploratory technique. Nothing guarantees unique solutions.
Cluster analysis will always create clusters, regardless of actual existence of any
structure in the data. Just because clusters can be found doesnt validate their existence.
The Cluster solution cannot be generalized because it is totally dependent upon
the variables used as the basis for similarity measure. This criticism can be made
against any statistical technique. With cluster variate completely specified by the
researcher, the addition of spurious variables or the deletion of relevant variables
can have substantial impact on the resulting solution. As a result, the researcher
must be especially cognizant of the variables used in the analysis, ensuring that
they have a strong conceptual support.
Non-Hierarchical
K Means
Hierarchical
Agglomerative
Divisive
63
Related Statistics
Semi Partial R Squared: The semi-partial R-squared (SPR) measures the loss of homogeneity due to merging two clusters to form a new cluster at a given step. If the value is
small, then it suggests that the cluster solution obtained at a given step is formed by
merging two very homogeneous clusters.
R Square: R-Square (RS) measures the heterogeneity of the cluster solution formed at a
given step. A large value represents that the clusters obtained at a given step are
quite different (i.e. heterogeneous) from each other, whereas a small value would signify that the clusters formed at a given step are not very different from each other.
Related Charts
Dendrogram: Its a chart showing which two clusters are merging at which distance.
Icicle: Its a chart showing which case is being merged into the a cluster at which level.
64
K Means Clustering
In data mining, k-means clustering is a method of cluster analysis which aims to partition n observations into
k clusters in which each observation belongs to the
cluster with the nearest mean. A key limitation of kmeans is its cluster model. The concept is based on
spherical clusters that are separable in a way so that
the mean value converges towards the cluster center.
The clusters are expected to be of similar size, so that
the assignment to the nearest cluster center is the correct assignment. Researchers generally use Hierarchical Methods to find out the optimal number of clusters and then use K Means method to determine the actual clusters.
65
SAS
IMPLEMENTATION
CLUSTER ANALYSIS
proc import datafile="C:\Documents and Settings\Asus\Desktop\SAS MATERIALS\Analytics
data sets and case studies\IPL_Cluster.csv"
out=day1.iplcluster dbms=csv replace;
run;
The original data set IPL_cluster is in the csv format and therefore we need to import it.
We use the proc import code to import this file in the sas library.
proc contents data=day1.iplcluster position short;
run;
/*Player Mat Inns Not_Outs Runs HS Ave BF SR hundreds fifties Ducks fours sixes*/
This data set contains a variety of variables which needs to be used repeatedly for our
analysis. The proc content code helps us to get the list of all the variables in their creation order.
proc standard data=day1.iplcluster out=day1.iplstandard
mean=0 std=1;
var Mat Inns Not_Outs Runs HS Ave BF SR hundreds fifties Ducks fours sixes;
run;
In cluster analysis, the idea is to club together the related observations. In order to club
together the related homogeneous observations, we need some sort of a composite
weight. In this dataset, it does not make any sense to add up the runs scored with the
number of not outs or the number of sixes hit. So the first step towards segmenting
the ipl data set is to standardize the entire data set, so that all the variables become
free of units. This code creates a standardized data set free of units.
proc cluster data=day1.iplstandard outtree=day1.cluster_tree
method=ward;
id player;
var Mat Inns Not_Outs Runs HS Ave BF SR hundreds fifties Ducks fours sixes;
run;
In this code we are applying the cluster procedure on the dataset iplstandard. We
use an outtree command to generate a dataset by the name cluster_tree which
can be used to generate the dendrogram. The method=ward stands for Wards
minimum variance method. It clubs down those observations which would induce the
minimum increase in the error sum of squares or within the group variation. The command id player retains the player variable in the data set without performing any
mathematical function on the variable.
66
SAS
IMPLEMENTATION
This code generates a cluster history. The cluster history contains the following important components which can be explained as follows:
Semi Partial R Squared: The semi-partial R-squared (SPR) measures the loss of homogeneity due to merging two clusters to form a new cluster at a given step. If the
value is small, then it suggests that the cluster solution obtained at a given step is
formed by merging two very homogeneous clusters.
R Square: R-Square (RS) measures the heterogeneity of the cluster solution formed
at a given step. A large value represents that the clusters obtained at a given step
are quite different (i.e. heterogeneous) from each other, whereas a small value
would signify that the clusters formed at a given step are not very different from
each other.
TIED: It implies that the performance of the two observations clustered together is
not unique. There are also other pairs who have performed in a similar manner. It is
to be observed that the pair we choose is going to affect the cluster formation.
Therefore, it is our discretion to choose the pair, which we want. SAS behaves like a
default user where it uses a tiebreaker rule to get the pairs of the cluster.
Proc tree data=day1.cluster_tree;
Run;
This code is used to generate the dendrogram. Proc tree is the procedure to generate
the dendrogram. Now, suppose we want to retain 4 clusters for our analysis. The following code is used to do so:
Proc tree data=day1.cluster_tree nclusters=4 out=day1.cluster_result;
id player;
copy Mat Inns Not_Outs Runs HS Ave BF SR hundreds fifties Ducks fours sixes;
run;
The keyword nclusters is used for specifying the number of clusters that is to be retained. The data set cluster_result has two new variables by the name cluster and
clus_name. The column cluster has observations like 1,2,3,4 representing that which
player belongs to which particular cluster. The variable clus_name has the observations CL4, CL5, CL7 and CL8.
data day1.cluster1;
set day1.cluster_result (keep=player cluster);
run;
We use the keep command to retain only the player and cluster in the data set.
The newly created data set is cluster1. The next following three steps are for arranging
the data to make meaningful decisions:
The first step is to sort the data sets cluster 1 by player and put out the results on the
67
SAS
IMPLEMENTATION
cluster 2. We sort the data by the variable players. Also, we sort the iplcluster data
set by player and display the results in cluster3. We are sorting the dataset as we want
to merge dataset cluster2 and cluster3 together. We are doing this in order to add a
new column to the original data set iplcluster.
proc sort data=day1.cluster1 out=day1.cluster2;
by player;
run;
proc sort data=day1.iplcluster out=day1.cluster3;
by player;
run;
data day1.merge_cluster;
merge day1.cluster2 day1.cluster3;
by player;
run;
This code is to show the properties of the cluster. By examining the descriptive statistics
associated with each of the clusters, we can explain which the best cluster is.
proc print data=day1.merge_cluster;
where cluster=4;
run;
The objective of this code is to print the four major clusters from which we can form our
decision of the best cluster.
68
Chapter 9
LINEAR REGRESSION
n regression analysis we fit a predictive model to our data and use that model to
predict values of the dependent variable from one or more independent variables.
Simple regression seeks to predict an outcome variable from a single predictor variable whereas multiple regression seeks to predict an outcome from several predictors. We can predict any data using the following general equation:
Outcomei = (Model)i + Errori
The model that we fit here is a linear model.
Linear model just means a model based on
a straight line. One can imagine it as trying
to summarize a data set with a straight line.
Some Important Features of a Straight Line
A straight line can be defined by two things:
1)The slope or gradient of the line (b1)
2)The point at which the line crosses the vertical axis of the graph, also known as the intercept of the line (b0). So our general equation becomes: Yi = (b0 + b1Xi) + i
Here Yi is the outcome that we want to predict and Xi is the i-th score on the predictor
variable. The intercept b0 and the slope b1 are the parameters in the model and are
known as regression coefficients. There is a residual term i which represents the difference between the score predicted by the line and the i-th score in reality of the dependent variable. This term is the proof of the fact that our model will not fit perfectly
the data collected. With regression we strive to find the line that best describes the data.
69
ed by a linear regression.
The independent variable must be non-stochastic in nature, i.e. the variable
70
arbitrarily high simply by including more and more predictors in the model. Adjusted R2
takes into account the number of independent variables in the model.
71
Scatter plots should be checked as an exploratory step in regression to identify possible departures from linearity.
The errors are uncorrelated with the independent variables. This assumption is
checked in residuals analysis with scatter plots of the residuals against individual
predictors.
The expected value of residuals is zero. This is not a problem because the least
squares method of estimating regression equations guarantees that the mean is
zero.
The variance of residual is constant. An example of violation is a pattern of residuals
whose scatter (variance) increases over time. Another aspect of this assumption is
that the error variance should not change systematically with the size of the predicted values. For example, the variance of errors should not be greater when the
predicted value is large than when the predicted value is small.
The residuals are random or uncorrelated in time.
The error term is normally distributed. This assumption must be satisfied for conventional tests of significance of coefficients and other statistics of the regression equation to be valid.
Concept of Multicollinearity
The predictors in a regression model are often called
the independent variables, but this term does not
imply that the predictors are themselves independent statistically from one another. In fact, for natural
systems, the predictors can be highly intercorrelated. Multicolinearity is a term reserved to
describe the case when the inter-correlation of predictor variables is high. It has been noted that the
variance of the estimated regression coefficients
depends on the inter-correlation of predictors. However, multicolinearity does not invalidate the regression model in the sense that the predictive value of
the equation may still be good as long as the prediction are based on combinations of predictors
72
within the same multivariate space used to calibrate the equation. But there are several negative effects of multicolinearity. First, the variance of the regression coefficients
can be inflated so much that the individual coefficients are not statistically significant
even though the overall regression equation is strong and the predictive ability good.
Second, the relative magnitudes and even the signs of the coefficients may defy interpretation. Third, the values of the individual regression coefficients may change radically with the removal or addition of a predictor variable in the equation. In fact, the
sign of the coefficient might even switch.
Signs of Multicollinearity
High correlation between pairs of predictor variables
Regression coefficients whose signs or magnitudes do not make good physical
sense
Statistically non-significant regression coefficients on important predictors
Extreme sensitivity of sign or magnitude of regression coefficients to insertion or deletion of a predictor variable
What is VIF?
The Variance Inflation Factor (VIF) is a statistic that can be used to identify multicolinearity in a matrix of predictor variables. Variance Inflation refers here to the mentioned effect of multicolinearity on the variance of estimated regression coefficients.
Multicolinearity depends not just on the bivariate correlations between pairs of predictors, but on the multivariate predictability of any one predictor from the other predictors. Accordingly, the VIF is based on the multiple coefficient of determination in regression of each predictor in multivariate linear regression on all the other predictors:
VIFi = 1/(1 Ri2)
where Ri2 is the multiple coefficient of determination in a regression of the i-th predictor
on all other predictors, and VIFi is the variance inflation factor associated with the i-th
predictor. Note that if the i-th predictor is independent of the other predictors, the variance inflation factor is one, while if the i-th predictor can be almost perfectly predicted from the other predictors, the variance inflation factor approaches infinity. In that
case the variance of the estimated regression coefficients is unbounded. Multicolinearity is said to be a problem when the variance inflation factors of one or more predictors becomes large. How large it appears to be is a subjective judgment. Some researchers use a VIF of 5 and others use a VIF of 10 as a critical threshold. The VIF is
closely related to a statistic call the tolerance, which is 1/VIF.
Analysis of The Residuals
Analysis of residuals consists of examining graphs and statistics of the regression residuals to check that model assumptions are satisfied. Some frequently used residuals tests
are listed below. All these are to check whether the error terms are identically independently distributed.
Time series plot of residuals: The time series plot of residuals can indicate such problems as non-constant variance of residuals, and trend or autocorrelation in residu-
73
als.
Scatter plot of residuals against predicted values: The residuals are assumed to be
74
SAS
IMPLEMENTATION
The simple linear regression model explains the causality relationship between the dependent variable and a single independent variable. We use the Walmart case study
to explain the different important characteristics of the model. The case study analyses
various factors which explain customer satisfaction for the retail giant, Walmart. This is
basically a rating data set where the customers have rated various departments of
Walmart. Based on this data Walmart will try to understand how it can improve its customer satisfaction.
proc import datafile="C:\Documents and Settings\OrangeTree\Desktop\Analytics data
sets and case studies\walmart.csv"
out=day1.walmart dbms=csv replace;
run;
This code is meant for importing the file Walmart from the folder Analytics data sets
and case studies. This file is initially in the csv format and is being imported in order to
convert it to the SAS format. Post importing, we need to make a list of the variables so
that we can use them as and when necessary in our analysis. We make a list of the
variables in the data set using position short keyword.
proc contents data=day1.walmart position short;
run;
/*Advertising Competitive_Pricing Complaint_Resolution Customer_Satisfaction Delivery_Speed E_Commerce Order_Billing Packaging Price_Flexibility Product_Line Product_Quality Salesforce_Image Technical_Support Warranty_Claims*/
Proc reg data=day1.walmart;
model customer_satisfaction=product_quality;
run;
quit;
reg is the procedure used to execute regression analysis. The key word model is
used for creating a model with customer_satisfaction as the dependent variable and
product_quality as the independent variable.
The results generated show the following tables:
The first table shows that the number of observations read in the model is equal to
the number of observations used in the model. The Walmart data set has 200 observations and we are also using 200 observations. Therefore, this data set is free
from the problems of missing observations.
The next table is the ANOVA table. This table gives us an idea about the overall
goodness of fit of the model. The overall fit is defined by the p-value associated
with the F-statistic. Here, the p-value is less than the level of significance so the nullhypothesis is rejected. The hypothesis for testing the significance of the model is:
75
SAS
IMPLEMENTATION
This is a data step whereby we create a new data set walmart1 from the set
Walmart. The newly created dataset Walmart1 has a set of random numbers attached to every observation in the data set. These random numbers are generated
using the ranuni command. This function generates random numbers from a uniform
76
SAS
IMPLEMENTATION
distribution. Now, given these random numbers we would break the data set into two
parts using:
data day1.waltraining day1.walvalidation;
set day1.walmart1;
if rannum<=0.7 then output day1.waltraining;
else output day1.walvalidation;
run;
quit;
Instead of conducting the entire regression analysis on the original Walmart data set
into: Training data set which would contain 70% of the observations and Validation data set which would contain 30% of the total observations. This entire technique of
breaking the data set into two parts is called the Robust regression technique, since
the regression is initially conducted on the training data set and then the result obtained in the training data set is validated in the Validation data set to check for the
robustness of the results. The entire purpose of this check is to ensure the reliability of
this model. In this method of creating the data set each and every observation in the
original data set has an equal probability of being selected in the training or in the validation data set. The observations with corresponding random numbers greater than
0.7 are assigned to the validation data set and those with less than or equal to 0.7 are
assigned to the training data set.
Before proceeding with any predictions using the CLRM we must examine whether the
assumptions to the model are satisfied. The three most important assumptions are:
There should not be any multicollinearity among the explanatory variables
There should not be autocorrelation among the error terms
The variance of the error terms should be constant
The first check that we perform is for checking multicollinearity:
Proc reg data=day1.waltraining;
model customer_satisfaction=Advertising Competitive_Pricing Complaint_Resolution
E_Commerce Order_Billing Packaging Price_Flexibility Product_Line Product_Quality
Salesforce_Image Technical_Support Warranty_Claims/vif;
run;
quit;
We use the Variance Inflation Factor for checking the existence of multicollinearity.
The variance inflation factor is executed through the vif keyword. The VIF is measured
using the auxiliary regression, i.e. the regression of one independent variable on the
other independent variables. If VIF is greater than 10, then there is severe multicollinearity. The variable with the highest value above 10 is dropped. In this case, it is the variable Delivery_Speed which had a vif of 65 approx. Then all other variables except Delivery_Speed are included.
77
SAS
IMPLEMENTATION
The next objective is to choose the best model. This is done by the choosing the model
with the highest Adjusted R-square. The adjusted R2 takes into account the number of
independent variables in the model and adjusts for the loss of degrees of freedom. So,
we need to select the model with the highest adjusted R2. The code for it is as follows:
proc reg data=day1.waltraining;
model customer_satisfaction=Advertising Competitive_Pricing Complaint_Resolution
E_Commerce Order_Billing Packaging Price_Flexibility Product_Line Product_Quality
Salesforce_Image Technical_Support Warranty_Claims/selection=adjrsq;
run;
quit;
The keyword selection=adjrsq is used for selecting the model with the highest adjusted R-square. The model with the highest adjusted R-square is considered to be the
model with the greatest explanatory capacity. The models are listed in the ascending
order of the goodness of fit of the model, i.e. the model with the highest goodness of
fit is listed first and the one with the lowest goodness of fit is the last model in line. Model here comprises of a combination of variables such that it yields an adjusted Rsquare measure. The table adjrsq table displays the number of variables in the model
corresponding to the readings of adjusted R2 model. From now on we use the variables that are prescribed by the model with the highest adjrsq.
/*Competitive_Pricing Complaint_Resolution E_Commerce Packaging Price_Flexibility
Product_Line Product_Quality Salesforce_Image Warranty_Claims*/
The original model contained 13 variables. Among them the variable Delivery_Speed
was dropped to solve the problem of multicollinearity. The model with the highest
adjrsq contains nine variables. This means three more variables have been dropped
to reach the model with the best fit. So, a part of the explanatory capacity of the
model is foregone which might enter the error or the unexplained part. This might create a systematic behavior among the error terms. So, we need to check whether the
error terms are identically independently distributed or not. This check requires us to
check the existence of: (a) Autocorrelation (b) Heteroscedasticity. To check for autocorrelation we use the Durbin-Watson test statistic. The code for checking the autocorrelation is as follows:
proc reg data=day1.waltraining;
model customer_satisfaction=Competitive_Pricing Complaint_Resolution E_Commerce
Packaging Price_Flexibility Product_Line Product_Quality Salesforce_Image Warranty_Claims/dw;
run;
quit;
dw is the key word for generating the Durbin Watson test statistics associated with this
model. The dw test measures the extent of correlation between the error terms.
78
SAS
IMPLEMENTATION
However, the statistic reveals the value of the autocorrelation between the error terms.
It does not talk about the significance of the autocorrelation. For doing so, we need to
use the DW test tables. Since, SAS cannot compute the tables therefore no concrete
conclusions can be formed about the nature of autocorrelation between the error
terms. An alternative method is to use a technique which can test simultaneously for
the existence of autocorrelation and heteroscedasticity. This test is called the Spec test
or the Specification test.
proc reg data=day1.waltraining;
model customer_satisfaction=Competitive_Pricing Complaint_Resolution E_Commerce
Packaging Price_Flexibility Product_Line
Product_Quality Salesforce_Image Warranty_Claims/spec;
run;
quit;
The Specification test is executed using the keyword spec. This test aims to check the
following hypothesis:
H0: The error terms are identically and independently distributed
V/s
HA: The error terms are not identically and independently distributed
The null hypothesis is accepted if the p-value associated with the test is greater than
the level of significance. Since, SAS by default, considers the 5% level of significance,
therefore, if the p-value associated with this test is greater than 0.05, then we accept
the null hypothesis that the error term is random. Once, we are confirmed that the assumptions to the classical linear regression model are satisfied we next obtain the predicted value of the customer satisfaction. The following code is used for this purpose:
proc reg data=day1.waltraining;
model customer_satisfaction= E_commerce Price_Flexibility Product_Quality
uct_Line Salesforce_image;
Output out=day1.reg_final
Predicted=pred_sat
Residual=error;
run;
quit;
Prod-
The command output out is used for creating a new data set where the outputs on
predicted satisfaction and residual are added in addition to the information on the
existing variables. The command predicted is used to generate the predicted customer_satisfaction values and these are saved in pred_sat. Similarly, the command
residual is used to calculate the residual values. These values are stored in the variable name error.
proc corr data=day1.reg_final;
79
SAS
IMPLEMENTATION
In this step, we check the correlation between the predicted and the actual value of
customer satisfaction. The higher the correlation between the two values, the better is
the prediction of customer satisfaction.
Now, our next task is to create the validation data set using the estimates of the parameters from the training data set. Using these estimates we estimate the correlation
between them and compare this with the results obtained in the training data set. If
the difference in the correlation coefficient of the training and the validation data set
is somewhere between 5%-6% then we know that the results we have obtained is robust.
TESTING PARAMETER ESTIMATES USING THE VALIDATION DATA SET
data day1.wal_valid;
set day1.walvalidation;
pred_sat=-3.16541- 0.30252*E_Commerce + 0.34468*Price_Flexibility +
0.45464*Product_Quality + 0.47807*Product_Line + 0.63257*Salesforce_Image;
run;
The estimates in green have been obtained from the parameter estimates table in
the training data set.
CHECKING THE CORRELATION BETWEEN ACTUAL AND PREDICTED SATISFACTION
proc corr data=day1.wal_valid;
var pred_sat customer_satisfaction;
run;
80
Chapter 10
LOGISTIC REGRESSION
81
So, we are basically talking about the probability of occurrence or non occurrence
of something.
The Principles Behind Logistic Regression
In simple linear regression, we saw that the outcome variable Y is predicted from the
equation of a straight line: Yi = b0 + b1 X1 + i in which b0 is the intercept and b1 is the
slope of the straight line, X1 is the value of the predictor variable and i is the residual
term. In multiple regression, in which there are several predictors, a similar equation is
derived in which each predictor has its own coefficient.
In logistic regression, instead of predicting the value of a variable Y from predictor variables, we calculate the probability of Y = Yes given known values of the predictors.
The logistic regression equation bears many similarities to the linear regression equation. In its simplest form, when there is only one predictor variable, the logistic regression equation from which the probability of Y is predicted is given by:
P(Y = Yes) = 1/ [1+ exp{ - (b0 + b1 X1 + i )}]
One of the assumptions of linear regression is that the relationship between variables is
linear. When the outcome variable is dichotomous, this assumption is usually violated.
The logistic regression equation described above expresses the multiple linear regression equation in logarithmic terms and thus overcomes the problem of violating the
assumption of linearity. On the hand, the resulting value from the equation is a probability value that varies between 0 and 1. A value close to 0 means that Y is very unlikely
to have occurred, and a value close to 1 means that Y is very likely to have occurred.
Why Cant We Use Linear Regression?
One of the assumptions of linear regression is that the relationship between variables is
linear. When the outcome variable is dichotomous, this assumption is usually violated.
The logistic regression equation described above expresses the multiple linear regression equation in logarithmic terms and thus overcomes the problem of violating the
assumption of linearity. On the hand, the resulting value from the equation is a probability value that varies between 0 and 1. A value close to 0 means that Y is very unlikely
to have occurred, and a value close to 1 means that Y is very likely to have occurred.
Look at the data points in the following charts. The first one is for Linear Regression and
the second one for Logistic Regression.
82
83
Now if we divide probability of yes by the probability of no, then we get a new measure called ODDS. Odds shouldnt be confused with probability. Odds is simply the ratio
of probability of success to probability of failure. Like we may say, whats the odds of
India winning against Pakistan. Then we are basically comparing the probability of India winning to probability of Pakistan winning.
Now if we divide the 2nd relation by the 1st one, we get e. So if we change X by 1
unit, then odds changes by a multiple of e. So the expression (e- 1)* 100% gives the
percentage change. Remember this kind of understanding is valid only when X is continuous. When X is categorical, we refer to Odds Ratio.
Odds Ratio
Suppose we are comparing the odds for a Poor Vision Person getting hit by a car to
the odds for a Good Vision Person getting hit by a car.
Suppose, the accident is encoded as 1.
Let P(Y =1| Poor Vision) = 0.8
& P(Y =1| Good Vision) = 0.4
84
Complete Separation: No
Estimate
The log-likelihood is therefore based on summing the probabilities associated with the
predicted and actual outcomes. The log likelihood statistic is analogous to the residual sum of squares in multiple regression in the sense that it is an indicator of how much
unexplained information is there after the model has been fitted. Its possible to calculate a log-likelihood for different models and to compare these models by looking at
85
the difference between their log-likelihoods. One use of this is to compare the state of
a logistic regression against some kind of baseline model. The baseline model thats
usually used is the model when only the constant is included. If we then add one or
more predictors to the model, we can compute the improvement of the model as follows:
Now, what we should do with the rest of the variables which are not in the equation.
For that we have a statistic called Residual Chi Square Statistic. This statistic tells us
that the coefficients for the variables not in the model are significantly different from
zero, in other words, that the addition of one or more of these variables to the model
will significantly affect its predictive power.
Testing of Individual Estimated Parameters
The testing of individual estimated parameters or coefficients for significance is similar
to that in multiple regression. In this case, the significance of the estimated coefficients
is based on Walds statistic. The statistic is a test of significance of the logistic regression
coefficient based on the asymptotic normality property of maximum likelihood estimates and is estimated as:
The Wald statistic is chi-square distributed with 1 degrees of freedom if the variable is
metric and the number of categories minus 1 if the variable is non-metric.
The Hosmer-Lemeshow Goodness-of-Fit Test
The Hosmer and Lemeshow goodness of fit (GOF) test is a way to assess whether there
is evidence for lack of fit in a logistic regression model. Simply put, the test compares
the expected and observed number of events in bins defined by the predicted probability of the outcome. The null hypothesis is that the data are generated by the model
developed by the researcher.
Hosmer Lemeshow test statistic:
where Oi is the observed frequency of the i-th bin, Ni is the total frequency of the i-th
bin. i is the average estimated probability of the i-th bin.
Statistics Related to Log-likelihood
AIC (Akaike Information Criterion) = -2log L + 2(k + s), k is the total number of response
level minus 1 and s is the number of explanatory variables.
SC (Schwarz Criterion) = -2log L + (k + s)j fj , fj is the frequency of the j th observation.
Cox and Snell (1989, pp. 208209) propose the following generalization of the coeffi-
86
where n is the sample size and L(0) is the intercept only model,
So,
Nagelkerke (1991) proposes the following adjusted coefficient, which can achieve a
maximum value of one:
All these statistics have similar interpretation as the R2 in Linear Regression. So, in this
part we are trying to assess how much information is reflected through the model.
Understanding the Relation between the Observed and Predicted Outcomes
It is very important to understand the relation between the observed and predicted
outcome. The performance of the model can be benchmarked against this relation.
Simple Concepts
Let us consider the following table.
Observation
Outcome Y =
Yes
No
No
No
P(Y = Yes)
0.59
0.24
0.59
0.72
In this table, we are working with unique observations. The model was developed for Y
= Yes. So it should show high probability for the observation where the real outcome
has been Yes and a low probability for the observation where the real outcome has
been No.
Consider the observations 1 and 2. Here the real outcomes are Yes and No respectively, and the probability of the Yes event is greater than the probability of the No event.
Such pairs of observations are called Concordant Pairs. This is in contrast to the observations 1 and 4. Here we get the probability of the No is greater than the probability of
Yes. But the data was modeled for P(Y = Yes). Such a pair is called a Discordant Pair.
Now consider the pair 1 and 3. The probability values are equal here, although we
have opposite outcomes. This type of pair is called a Tied Pair. For a good model, we
would expect the number of concordant pairs to be fairly high.
Related Measures
Let nc , nd and t be the number of concordant pairs, discordant pairs and unique observations in the dataset of N observations. Then (t - nc - nd ) is the number of tied pairs.
87
88
Specificity
False Positive
False Negative
89
SAS
IMPLEMENTATION
LOGISTIC REGRESSION
This case study is aims to study the credit risk faced by a German bank while extending
loans to borrowers. The credibility of the borrower is entirely private information of the
borrower himself. So, the bank needs to design measures to screen the good credible
borrowers from the bad defaulters. The objective of the analyst is to design a model so
that given any customer who comes up to the bank, the bank is able to predict
whether the customer is good or bad. Since, the type of the customers is dichotomous in nature, the best technique of predictive tools that we can use is: Logistic Regression. The dichotomous situation can be represented as:
Y = 1 if the customer is a good customer
= 0 if the customer is a bad customer
Since, the data set is in a csv format therefore we import the data set using the code
below:
proc import datafile="C:\Documents and Settings\OrangeTree\Desktop\Analytics data
sets and case studies\German Bank data.csv"
out=day1.german_bank
dbms=csv replace;
run;
The new data set in the SAS format is stored in the library day1 by the name
german_bank. The data set is a combination of categorical, character and numerical variables which describe the status of the customers in some way or the other. Let
us explain some of the variables in this data set:
CHK_ACCNT: This is a categorical variable which shows the amount of money that a
customer has with the bank in the check account. This indicates the credibility of the
customer. If a customer belongs to the category 0, then it speaks adversely about the
credibility of the customer as a customer who belongs to this category has negative
CHK_ACCNT balance. A customer who belongs to category 1 is relatively more reliable compared to the later. Therefore, this variable is categorized in an ascending order. The highest category (3) implies that the customer does not have any checking
account with the bank.
HISTORY: This is a categorical variable classified into four categories. The category 0
represents those customers who have a very clean credit history in that they have never taken any loans. Category 4 represents the worst possible case where the customer
having the category implies that he has a critical account.
DURATION: This is a numerical variable which describes the time period for which a
loan has been taken.
Each of these variables explains one or the other side of a borrowers credibility. We
again use the Robust regression technique for executing the logistic regression. The
german_bank data set is decomposed into training and validation data sets using the
90
SAS
IMPLEMENTATION
ranuni function.
data day1.german_bank1;
set day1.german_bank;
rannum= ranuni (0);
run;
This data step is used to create a new data set german_bank1 containing an additional column on random numbers generated by the ranuni code. The random numbers have been stored in the variable rannum. These random numbers would now be
used for splitting the data set into the training and the validation data set using the following code:
data day1.gertraining day1.gervalidation;
set day1.german_bank1;
if rannum<0.7 then output day1.gertraining;
else output day1.gervalidation;
run;
The two data sets formed by splitting the original data set are: gertraining, the training
data sets where all statistical and empirical techniques are applied to derive the primary results and gervalidation where the results obtained in the training data sets are
validated.
proc contents data=day1.german_bank1 position short;
run;
/*AGE AMOUNT CHK_ACCT CO_APPLICANT DURATION EDUCATION EMPLOYMENT FOREIGN FURNITURE
GUARANTOR HISTORY INSTALL_RATE JOB MALE_DIV MALE_MAR_or_WID MALE_SINGLE NEW_CAR
NUM_CREDITS NUM_DEPENDENTS OBS OTHER_INSTALL OWN_RES PRESENT_RESIDENT PROP_UNKN_NONE
RADIO_TV REAL_ESTATE RENT RESPONSE RETRAINING SAV_ACCT TELEPHONE USED_CAR rannum */
The position short statement allows us to make a list of the variables that we need to
use repeatedly for our analysis.
proc reg data=day1.gertraining;
model response= CHK_ACCT DURATION HISTORY NEW_CAR USED_CAR FURNITURE
RADIO_TV EDUCATION RETRAINING AMOUNT SAV_ACCT EMPLOYMENT INSTALL_RATE
MALE_DIV MALE_SINGLE MALE_MAR_or_WID CO_APPLICANT GUARANTOR PRESENT_RESIDENT
REAL_ESTATE PROP_UNKN_NONE AGE OTHER_INSTALL RENT OWN_RES NUM_CREDITS JOB
NUM_DEPENDENTS
TELEPHONE FOREIGN/vif;
run;
quit;
The main objective of this step is to check for the existence of multicollinearity among
the independent variables. The explanation and operation of this step is similar to the
91
SAS
IMPLEMENTATION
The proc logistic is used to generate the logistic regression. The model keyword is
used to generate the logistic regression model where response is treated to be the
dependent variable. The desc keyword is used to model the probability of Y=1 as by
default SAS models for the lowest value (here zero). The selection= stepwise is the technique of selection used for entering the variables. At the first step, the intercept is entered. This acts as the baseline or the reference model. Then at each step an additional variable is added. This allows us to capture the impact of each variable independently. This code also generates the Maximum likelihood Estimation table. This
gives us the log of the odds ratio. This table does not provide us with useful insights to
the model but it is used to form an idea about the parameter estimates when the results are validated using the validation data sets. The more important table from the
interpretation point of view is the Odds ratio.
Estimate table: This table gives us the value e. This gives the percentage of variation in
the dependent variable due to one unit change in an independent variable. This table clearly explains the responsiveness of the dependent variable on the independent
variables. For eg: if the duration of credit increases by 1 unit; then the log of odds of
getting a good credit rating changes by -0.026 times. The odds ratio table for duration
is 0.974. Then if the duration increases by 1 unit then probability of getting a good
credit rating falls by 2.6%.
proc logistic data=day1.gertraining desc;
model response=CHK_ACCT DURATION HISTORY NEW_CAR USED_CAR
FURNITURE RADIO_TV EDUCATION RETRAINING AMOUNT SAV_ACCT EMPLOYMENT
INSTALL_RATE MALE_DIV MALE_SINGLE MALE_MAR_or_WID CO_APPLICANT GUARANTOR
92
SAS
IMPLEMENTATION
The option cable generates the classification table. The keyword pprob generates
the cut off probability levels of a customer being a good customer. For every cut-off
probability level, we have a certain number of correctly and incorrectly classified
event and non-event. For e.g. if the cut-off probability level is 0.1, then any customer
having a probability of being a good customer will be identified as a good customer. So, as the cut-off probability level changes, the number of correctly and incorrectly classified event and non-event will change accordingly.
proc logistic data=day1.gertraining desc;
model response=CHK_ACCT DURATION HISTORY NEW_CAR USED_CAR
FURNITURE RADIO_TV EDUCATION RETRAINING AMOUNT SAV_ACCT EMPLOYMENT
INSTALL_RATE MALE_DIV MALE_SINGLE MALE_MAR_or_WID CO_APPLICANT GUARANTOR
PRESENT_RESIDENT REAL_ESTATE PROP_UNKN_NONE AGE OTHER_INSTALL RENT OWN_RES
NUM_CREDITS
JOB NUM_DEPENDENTS TELEPHONE FOREIGN/selection=stepwise ctable
pprob= (0 to 1 by 0.1) lackfit
outroc=day1.roc;
run;
The keyword lackfit is the keyword to generate the goodness of fit measures. The
goodness-of-fit statistic that we use here is the Hosmer-Lemeshow test statistics.
Outroc is the keyword to generate the ROC measures. The ROC measures are also
known as the Receiver Operating Characteristics. These measures are used to measure the accuracy of our predictions. The ROC measures are: Sensitivity, Specificity,
False Positive and False Negative etc. The two measures that we use extensively uses
are: Sensitivity and 1-Specificity. The Sensitivity measures the goodness or the accuracy
of the model while 1-Specificity reflects the weakness of the model. In the later measure, we are trying to find out that of the total number of non-events, how many nonevents were not identified by the model from before.
proc contents data=day1.roc position short;
run;
/*_STEP_ _PROB_ _POS_ _NEG_ _FALPOS_ _FALNEG_ _SENSIT_ _1MSPEC_ */
proc gplot data= day1.roc;
plot _SENSIT_ *_1MSPEC_;
run;
In this code, we are trying to plot the ROC measures to understand the goodness of fit
93
SAS
IMPLEMENTATION
of the model. The plot of these two measures gives us a concave plot. This means that
as Sensitivity is increasing, 1-Specificity is increasing but at a diminishing rate. Given the
concave curve, the area under the curve will be greater than 0.5. The c-value or the
value of the concordance index gives the measure of the area under the ROC curve.
If c=0.5 then it would have meant that the model cannot perfectly discriminate between 0 and 1 responses. Then it implies that the initial model cannot perfectly say that
who is a good customer and who is a bad customer. If c> 0.5, then the model can
perfectly discriminate between 0 and 1. The c-value for our model is 0.81 which is
far greater than the cut-off value of 0.5. So, we can safely regard our model as a
good model.
The next step in our model construction is to find out the predicted values of the probability associated with a customer for being a good customer. We use the following
code:
proc logistic data=day1.gertraining desc;
model response=CHK_ACCT DURATION HISTORY NEW_CAR USED_CAR
FURNITURE RADIO_TV EDUCATION RETRAINING AMOUNT SAV_ACCT EMPLOYMENT
INSTALL_RATE MALE_DIV MALE_SINGLE MALE_MAR_or_WID CO_APPLICANT GUARANTOR
PRESENT_RESIDENT REAL_ESTATE PROP_UNKN_NONE AGE OTHER_INSTALL RENT OWN_RES
NUM_CREDITS
JOB NUM_DEPENDENTS TELEPHONE FOREIGN/selection=stepwise ctable
pprob= (0 to 1 by 0.1) lackfit
outroc=day1.roc;
output out=day1.logistic p=predicted;
run;
Output out is the keyword that helps to generate a dataset from the proc steps. p will
give the predicted probability of a borrower being a good borrower. In the data set
the last column is the predicted probability values. However, we need a cut-off value
of probability to decide on the really good customers. The next code is used to set a
limit for the borrowers to be a good borrower.
data day1.logistic1;
set day1.logistic;
status= (predicted>0.5);
run;
In essence, this code states that the predicted value of the probability greater than 0.5
then the value of the status is 1 else it is 0. Now we want to understand the percentage
of predictions which match with the initial belief obtained from the data set. We use a
contingency frequency table for this analysis.
proc freq data=day1.logistic1;
94
SAS
IMPLEMENTATION
The proc freq keyword is used to generate the contingency table. Here we compare
the (1-1) and (0-0) pairs. The total percentage of frequency in these two boxes represents the percentage of correct predictions made by the model. This model shows
that approximately 77.1% of the predictions are correct. Now, we need to validate the
results obtained in the training data set. The codes in (a) and (b) are the set of procedures that we follow for validating the data sets:
The parameter estimates in the green color represent the parameter estimates in the
training data set. A regression equation is constructed so that given a value of the variable in the data set, we can obtain a predicted value of the probability Y=1.
(a)
data day1.gervalidation1;
set day1.gervalidation;
z=0.3626+0.5486*CHK_ACCT
-0.0260*DURATION+0.4938*HISTORY
-0.9548*NEW_CAR-1.1585*EDUCATION
-0.00012*AMOUNT+0.3377*SAV_ACCT
-0.3124*INSTALL_RATE+0.4367*MALE_SINGLE
+1.2503*GUARANTOR+0.0269*AGE
-0.6323*OTHER_INSTALL-0.4558*NUM_CREDITS;
predicted=exp (z)/ (1+exp (z));
status= (predicted>0.5);
run;
The predicted value of the probability of Y=1 is obtained using the standard formula
from the logistic regression literature, which has already been discussed.
(b)
proc freq data=day1.gervalidation1;
table Response*Status/norow nocol;
run;
This step is used for creating a contingency table for checking the correctness of prediction. The (1-1) and (0-0) pairs are checked to see the extent of correctness in the
model in accordance with the observations in the data set. This percentage correctness is tallied with those in the training data set. A percentage difference between the
two sets around (5%-6%) is considered to be a good estimate. This code is the final
check of the goodness of fit of the obtained model.
95
Chapter 11
TIME SERIES ANALYSIS
ets consider the following table. The table shows the quarterly sales of a company. Our purpose is to predict the sales figure of the next quarter.
So, in a time series we are trying express the dependent variable (Sales) as a
function of time period.
Year
Quarter
Sales
Chart of the Data: Look at the X and Y axis
2008
I
10.2
2009
Formal Definition
II
12.4
III
14.8
IV
15.0
11.2
II
14.3
III
18.4
IV
18.0
missing values in the training data set( or should be handled using appropriate missing value treatment in the data preparation process).
Time Series Analysis cannot be used to predict effect of random events( ExampleTerrorist Attacks or acts of god such as Tsunami, disaster, etc.).
96
97
98
Since economic cycles are very hard to predict, most time series pattern are described in terms of trend and seasonality. The irregular or the random events can be
smoothed out by using Simple, Weighted, or Exponential Moving Averages.
Formula
Simple Moving Average of n periods
Weighted Moving Average of n
periods
Exponential Moving Average of n
periods
For Exponential Moving Average, a small indicates, we are giving less emphasis on
recent periods and more on the previous periods, as a result, we get a slower moving
average.
Understanding Different Types of Moving Averages: Which One is Faster?
99
Different Approaches
STEPAR (Stepwise Auto-regression)
Here we fit a time trend model to the series and takes the difference between each
value and the estimated trend. This process is called DETRENDING. Then, the remaining
variation is fit using an autoregressive model.
We will learn about the Autoregressive Model in the coming segments.
EXPONENTIAL
Exponential smoothing forecasts are forecasts for an integrated moving-average process; however, the weighting parameter is specified by the user rather than estimated from the
data. As a general rule, smaller smoothing weights
are appropriate for series with a slowly changing
trend, while larger weights are appropriate for volatile series with a rapidly changing trend.
WINTERS METHOD
The WINTERS method uses updating equations
similar to exponential smoothing to fit parameters
for the model.
xt=(a+bt)s(t)+ t
where a and b are trend parameters
and the function s(t) selecting the seasonal parameter.
100
Stochastic Processes
A random or stochastic process is a collection of random variables ordered in time. An
example of the continuous stochastic process is an electrocardiogram and an example of the discrete stochastic process is GDP.
In what sense can we regard GDP as a stochastic process?
Consider for instance the GDP of $2872.8 billion for 1970I. In theory, the GDP figure for
the first quarter of 1970 could have been any number, depending on the economic
and political climate then prevailing. The figure of 2872.8 is a particular realization of all
such possibilities. You can think of the value of $2872.8 billion as the mean value of all
possible values of GDP for the first quarter of 1970. Just as we use sample data to draw
inferences about a population, in time series we use the realization to draw inferences
about the underlying stochastic process.
Stationary Stochastic Processes
A stochastic process is said to be stationary if its mean and variance are constant over
time and the value of the covariance between the two time periods depends only on
the distance or gap or lag between the two
time periods and not the actual time at
which the covariance is computed. Such a
time series will tend to return to its mean
(called mean reversion) and fluctuations
around this mean (measured by its variance)
will have a broadly constant amplitude. If a
time series is not stationary in the sense just defined, it is called a non-stationary time
series.
Why are stationary time series so important?
If the time series is non-stationary, then each set of time set data will have its own characteristics. So we cannot generalize the behavior of one set to other sets.
Non- Stationary Process:
Variance is Changing
101
102
103
104
105
trend. Hence, the simplest way to make such a time series stationary is to regress it
on time and the residuals from this regression will then be stationary.
It should be pointed out that, if a time series is DSP but we treat it as TSP, this is called
Under-Differencing. On the other hand, if a time series is TSP but we treat it as DSP, this
is called Over-Differencing. The consequences of these types of specification errors
can be serious.
Integrated Stochastic Process
If a time series has to be differenced once to make it stationary, we such time series
Integrated of Order 1. Similarly, if a time series has to be differenced twice (i.e., take
the first difference of the first differences) to make it stationary, we call such a time series integrated of order 2. For example, pure random walk is non-stationary, but its first
difference is stationary. So we call random walk without drift integrated of order 1.
In general, if a (non-stationary) time series has to be differenced d times to make it sta-
106
tionary, that time series is said to be integrated of order d and is denoted as YtI(d). If
a time series is stationary at the beginning, then it is said to be integrated of order zero.
Most economic time series are generally I(1); that is, they generally become stationary
only after taking their first differences.
Now How Do We Forecast?
Before forecasting we need to model the time series. If a time series is stationary, we
can model it in a variety of ways.
Autoregressive (AR) Process
Let Yt represents GDP at time t. If we model Yt as
where is the mean of Y and ut is an uncorrelated
random error term with zero mean and constant variance 2 , then we say Yt follows a
first order autoregressive, or AR(1) stochastic process. Here the value of Y at time t depends on its value in the previous time period and a random term; the Y values are expressed as deviations from their mean value. In general, we can have an AR(p) as follows:
Moving Average (MA) Process
Suppose we model Y as:
where is a constant and u, as before, is the white noise stochastic error term. Here Y
at time t is equal to a constant plus a moving average of the current and past error
terms. Thus, in the present case, we say that Y follows a first-order moving average, or
an MA(1) process. More generally, a MA(q) process is expressed as:
In short, a moving average process is simply a linear combination of white noise error
terms.
Autoregressive Moving Average (ARMA) Process
Of course, it is quite likely that Y has characteristics of both AR and MA and is therefore
ARMA. Thus, Yt follows an ARMA(1, 1)process if it can be written as:
where represents a constant term. Again this expression can be generalized for an
ARMA(p, q) process.
107
108
and patternless, then the series does not need a higher order of differencing. If the
lag-1 autocorrelation is -0.5 or more negative, the series may be overdifferenced
The optimal order of differencing is often the order of differencing at which the
standard deviation is lowest
Identifying AR(p)
ACF decays exponentially or with dampened sine wave pattern or both and PACF has
significant spikes through lags p.
Identifying MA(q)
The PACF decays exponentially and the ACF has significant spikes through lags q.
How Do We Estimate The Parameters?
Estimating the parameters for the BoxJenkins models is a quite complicated nonlinear estimation problem. For this reason, the parameter estimation should be left to a
high quality software program that fits BoxJenkins models. The main approaches to
fitting BoxJenkins models are non-linear least squares and maximum likelihood estimation. Maximum likelihood estimation is generally the preferred technique.
How Good Is The Model?
One simple diagnostic is to obtain residuals from the model developed and obtain
the ACF and PACF of these residuals, say, up to lag 25. The correlograms of both autocorrelation and partial autocorrelation give the impression that the residuals estimated
from model are purely random.
109
SAS
IMPLEMENTATION
This code converts the variable date from a character variable to a numeric variable. The input function is used to make this conversion.
proc forecast data=day1.sales_time
out=day1.sales11 lead=10 interval=month;
id date1;
var sales;
run;
The procedure Forecast is used to generate the forecasted output for the following
ten periods. So, date1 would have the upcoming 10 time points. _TYPE_ in Sales11 indicates forecasted value because here we have generated the forecasted values of
Sales. _LEAD_ is talking about the 10 lead points and sales has corresponding predictions on Sales where the point estimation on Sales are being given. However, we want
an interval but not a point estimate. To obtain the interval estimation we use the following code:
proc forecast data=day1.sales_time
out=day1.sales11 lead=10 interval=month outlimit alpha=0.01;
id date1;
var sales;
run;
In this code the tests of confidence intervals are conducted at 99%, i.e. the level of significance is 0.01 which has been specified using the command alpha. The outlimit
option restricts the sales11 data set to show only the forecasted values along with their
limits. But if we use outfull instead of outlimit, then the this output will be accompanied
with the past actual value and their forecasted value from the model.
proc forecast data=day1.sales_time
out=day1.sales11 lead=10 interval=month outfull alpha=0.01;
id date1;
var sales;
run;
data day1.sales12;
set day1.sales11 (obs=50);
run;
110
SAS
IMPLEMENTATION
We use the outfull keyword to generate the forecasted values for the given time period. This would help us to compare the actual sales and forecasted sales figures for the
given time periods, i.e. from July 89 to July 91.
data day1.actual day1.forecast;
set day1.sales12;
if _type_ = "ACTUAL" then output day1.actual;
else output day1.forecast;
run;
Here we split the data set into the actual and forecasted data set. Next we create a
data set merge_time.
data day1.merge_time;
merge day1.actual (rename= (sales=actual_sales))
day1.forecast (rename= (sales=forecasted_sales));
by date1;run;
This code creates a list of the variables in the data set as in the list below:
/*date1 _TYPE_ _LEAD_ actual_sales forecasted_sales */
data day1.merge_time (drop=_type_ _lead_);
set day1.merge_time;
run;
From this data set we want to drop the _TYPE_ and since we want to get the lead, we
drop lead=0. Now to plot the actual and forecasted sales using the Big Legend Code:
legend1 label= (" ") value= ("original" "forecast");
symbol1 c=blue v=dot H=0.7 i=join l=1;
symbol2 c=green v=dot H=0.7 i=join l=1;
axis1 label= (angle=90 "actual vs. forecast");
axis2 label=("date");
This is a global statement, meaning that for the remaining SAS session the measures will
be applied for the other graphs as well. Now, legend 1 is the name of the legend that
we construct here and label refers to the label name that will be applied on the legend. The value= (original forecast) refers to the labels assigned to the legend.
Now, symbol 1 refers to the symbol assigned to the first graph; i.e. graph for actual
111
SAS
IMPLEMENTATION
sales. Here, the color given is blue, and the graph is shown in terms of dots or bubbles.
The size of the bubbles is 0.7 given by H. i=join means that the bubbles are joined by
straight lines l=1 refers to the width of the line. Same goes for the symbol 12 and the
colour of the line is green. axis 1 refers to the vertical axis where label given to it is
actual versus forecasted and the angle is 90 degree. axis 2 refers to the horizontal
axis and the label given to it is date.
proc gplot data=day1.merge_time;
plot actual_sales*date1=1 forecasted_sales*date1=2/overlay vaxis=axis1 haxis=axis2
legend=legend1;
run;
quit;
The given here is merge_time and we are applying the gplot option since we are
plotting numeric variables. Here date 1 is plotted on the horizontal axis and the actual
and forecasted sale values are plotted on the vertical axis. The over-lay keyword has
been used to impose one graph over the other. Axis1 refers to the vertical axis and Axis2 refers to the horizontal axis. Now; legend = legend1 means that we are applying the
pre-specified legend option and the quit statement is given to stop the global statement execution.
At time point of June 90, we have the original sales exceeding the forecasted sales. At
the time point of April 91 we have forecasted sales greater than the actual sales and a
time point of August 1990; we have both the actual and forecasted sales almost equal
to each other. So, whenever there is any difference between the actual and forecasted sales we call it a prediction error, which can be either positive or negative.
STATIONARITY OF TIME SERIES
The case study involves the study of a data set timeseriesairline where there are 144
observations on the number of passengers for different dates. Now, we would like to
see if the time series data on passengers is stationary.
proc contents data=day1.timeseriesairline position short;
run;
/*Date Passengers */
The position short keyword is used to list the variables in their creation order.
proc gplot data=day1.timeseriesairline;
plot Passengers*Date;
run;
quit;
The gplot function is used to plot the variables passengers and date. gplot is used
112
SAS
IMPLEMENTATION
since both the variables plotted are numeric variables. The plot shows that the mean
and variance exhibits an upward rising trend or, in other words it exhibits clear nonstationarity. So now, lets see what adjustment can be made to make the data nonstationary. So, our main objective is to make the data set stationary in terms of mean
and variance. We apply the differencing technique to solve this problem. The techniques of simple differencing and log differencing are used to restore stationarity.
data day1.timeseriesairline1;
set day1.timeseriesairline;
passlog=log (Passengers);
pass1=dif1 (Passengers);
pass2=dif1 (passlog);
run;
In this data step creates a new data set with the variables passlog, pass1, pass2 along
with the other prevalent variables. Passlog is the log of passenger value. Pass1 is the
first difference applied on the number of passengers. That is Pass1 is equal to
(passengers in February 1949- passengers in January 1949). Pass2 is the first order differencing applied on passlog. Therefore, Pass2 equals to (passlog in February 1949passlog in January 1948). Now, we would plot passlog, pass1, pass2 against the variable time to see which of them is stationary.
proc gplot data=day1.timeseriesairline1;
plot Passlog*Date;
run; quit;
In this graph where we are plotting (passlog) with respect to the date we are getting a
non-stationary graph, i.e. where the mean and variance are fluctuating over time and
are not constant.
proc gplot data=day1.t timeseriesairline1;
plot Pass1*Date;
run;
quit;
In this graph where we plot Pass1 with respect to date we get a mean stationary process, where the mean is constant and the variance is not. Though the mean is constant, the variance is increasing over time. Thus, the simple first order differencing is not
sufficient to restore stationarity of the time series. So, we try to apply the log differencing.
proc gplot data=day1.timeseriesairline1;
plot Pass2*Date;
run;
113
SAS
IMPLEMENTATION
In the graph where we plot Pass2 with respect to date, we get a variance stationary
process, where both variance and mean are constant, i.e. they do not change over
time. After checking for stationarity, we come to the time series modeling part:
proc arima data=day1.timeseriesairline;
identify var=passengers stationarity= (adf= (1, 13));
run;
quit;
To solve the problem associated with the stationarity, the technique of simple first order differencing is used on the variable passengers. The (1,1) shows the number of
differencing done in the two models to make them stationary. When the first model,
i.e. where the passengers at time t are assumed to be dependent on the number of
passengers at time t-1 is differenced once, then it becomes stationary, whereas in
the second model, where there are a total of 13 lags, one period differencing does
not remove the seasonal component from the data. Therefore, this model remains non
-stationary.
proc arima data=day1.timeseriesairline;
identify var=passengers (1, 1) minic stationarity= (adf= (1, 13));
run;
quit;
114
SAS
IMPLEMENTATION
The question here is: Can we estimate the time series model in the presence of nonstationarity? To answer this, our first job is to obtain the optimum number of lags in the
model using the Bayesian Minimum Information Criteria (BIC). This gives us the Minimum possible number of lags, which are significantly required to forecast the dependent time-series variable. The keyword minic is used to obtain the optimum number of
lags from all the existent lags. The BIC calculates that the optimum lag for the AR model should be 5 and that of the MA model is 3. The main idea here is that we want to
check whether the existence of optimum lags is sufficient for a proper estimation of a
time series model.
proc arima data=day1.timeseriesairline;
identify var=passengers (1, 1) minic stationarity= (adf= (1, 13));
estimate p=5 q=3;
forecast lead=12 interval=month;
run; quit;
This code estimates the time series model using lags p=5 and q=3. The forecast keyword is used to forecast the value of the time series variable passengers. lead is the
keyword for assigning the number of periods in advance for which forecast is made
and interval is the keyword which specifies the time interval at which forecasting is to
be made . This code tries to forecast the number of passengers that would board the
plane over the next twelve months. The estimation results generate a report whereby
we can see that the parameter estimates calculated by the model are unstable estimates. Therefore, it can be inferred that the model estimation is not possible in the absence of Stationarity. Therefore, the foremost important job is to restore stationarity into
the model.
proc arima data=day1.timeseriesairline;
identify var=passengers (1, 12) minic stationarity= (adf= (1,13));
run;
quit;
Stationarity in this model can be restored by differencing the model with 13 lags
twelve times, so that it becomes a single lag AR process. The optimum number of lags
is calculated using the minic keyword.
proc arima data=day1.timeseriesairline;
identify var=passengers (1, 12) minic stationarity= (adf= (1, 13));
estimate p=1 q=0;
forecast lead=12 interval=month;
run;
quit;
115
Appendix
SUGGESTED BOOKS AND REFERENCES
116
Contact Us:
Orangetree Business Solutions Private Limited,
BD - 36, Salt Lake, Kolkata - 700 064.
Call Us:
033 40041497
09051563222
Mail Us:
info@orangetreeglobal.com
Website:
www.orangetreeglobal.com