You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
399 lines
12 KiB
399 lines
12 KiB
#+TITLE: Introduction to Statistical Inference
|
|
#+PROPERTY: header-args:R :session acj :eval never-export
|
|
#+STARTUP: hideall inlineimages hideblocks
|
|
#+HTML_HEAD: <style>#content{max-width:1200px;} </style>
|
|
|
|
* Title slide :slide:
|
|
#+BEGIN_SRC emacs-lisp-slide
|
|
(org-show-animate '("Quantitative Methods, Part-II" "Introduction to Statistical Inference" "Vikas Rawal" "Prachi Bansal" "" "" ""))
|
|
#+END_SRC
|
|
|
|
* Sampling Distributions
|
|
|
|
** Sampling Distributions :slide:
|
|
|
|
# #+RESULTS: sampling2
|
|
|
|
|
|
#+NAME: sampling2
|
|
#+BEGIN_SRC R :results output graphics :exports results :file bsample2.png :width 2500 :height 1500 :res 300
|
|
library(data.table)
|
|
readRDS("plfsdata/plfsacjdata.rds")->worker
|
|
worker$standardwage->worker$wage
|
|
#read.table("~/ssercloud/acj2018/worker.csv",sep=",",header=T)->worker
|
|
c(1:nrow(worker))->worker$SamplingFrameOrder
|
|
worker[sex!=3,]->worker
|
|
library(ggplot2)
|
|
ggplot(worker,aes(wage))+geom_density(colour="black",size=1)+scale_y_continuous(limits=c(0,0.05))+scale_x_continuous(limits=c(0,600),breaks=c(0,mean(worker$wage),1000))->p
|
|
# p+facet_wrap(~sex)->p
|
|
p+annotate("text",x=380,y=0.045,
|
|
label=paste("Population mean = ",round(mean(worker$wage)),sep=""))->p
|
|
p+annotate("text",x=400,y=0.042,
|
|
label="Distribution of sample means:")->p
|
|
p+theme_bw()->p
|
|
p
|
|
|
|
|
|
|
|
sample(1:nrow(worker),5, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t1
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),5, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t1,mean(s1$wage))->t1
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=t1)->t1
|
|
p+geom_density(data=t1,aes(meancol),colour="blue",size=1)-> p
|
|
paste("Sample size 5: mean = ",
|
|
round(mean(t1$meancol)),
|
|
"; stdev = ",
|
|
round(sd(t1$meancol)),sep="")->lab
|
|
p+annotate("text",x=450,y=0.030,label=lab,colour="blue")->p
|
|
p
|
|
|
|
sample(1:nrow(worker),20, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t0
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),20, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t0,mean(s1$wage))->t0
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=t0)->t0
|
|
p+geom_density(data=t0,aes(meancol),colour="darkolivegreen",size=1)-> p
|
|
paste("Sample size 20: mean = ",
|
|
round(mean(t0$meancol)),
|
|
"; stdev = ",
|
|
round(sd(t0$meancol)),sep="")->lab
|
|
p+annotate("text",x=450,y=0.033,label=lab,colour="darkolivegreen")->p
|
|
p
|
|
|
|
sample(1:nrow(worker),50, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),50, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t,mean(s1$wage))->t
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=t)->t
|
|
p+geom_density(data=t,aes(meancol),colour="red",size=1)-> p
|
|
paste("Sample size 50: mean = ",
|
|
round(mean(t$meancol)),
|
|
"; stdev = ",
|
|
round(sd(t$meancol)),sep="")->lab
|
|
p+annotate("text",x=450,y=0.036,label=lab,colour="red")->p
|
|
p
|
|
|
|
sample(1:nrow(worker),200, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t4
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),200, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t4,mean(s1$wage))->t4
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=t4)->t4
|
|
p+geom_density(data=t4,aes(meancol),colour="pink",size=1)-> p
|
|
paste("Sample size 200: mean = ",
|
|
round(mean(t4$meancol)),
|
|
"; stdev = ",
|
|
round(sd(t4$meancol)),sep="")->lab
|
|
p+annotate("text",x=450,y=0.039,label=lab,colour="pink")->p
|
|
p
|
|
#+end_src
|
|
|
|
** Sampling Distributions :slide:
|
|
+ $Standard.error = \frac{\sigma}{\sqrt{n}}$
|
|
|
|
|
|
| Variable | Value |
|
|
|---------------------------------------------+-------|
|
|
| Standard deviation of population ($\sigma$) | 130 |
|
|
| Standard errors of samples of size | |
|
|
| 5 | 58 |
|
|
| 20 | 29 |
|
|
| 50 | 18 |
|
|
| 200 | 9 |
|
|
|
|
|
|
|
|
* Introduction to Hypothesis Testing
|
|
** Transforming the Distribution to Standard Normal :slide:
|
|
|
|
#+RESULTS: sampling3
|
|
[[file:bsample3.png]]
|
|
|
|
#+NAME: sampling3
|
|
#+BEGIN_SRC R :results output graphics :exports results :file bsample3.png :width 2500 :height 2000 :res 300
|
|
library(data.table)
|
|
readRDS("plfsdata/plfsacjdata.rds")->worker
|
|
worker$standardwage->worker$wage
|
|
c(1:nrow(worker))->worker$SamplingFrameOrder
|
|
worker[sex!=3,]->worker
|
|
library(ggplot2)
|
|
|
|
worker->t9
|
|
(t9$wage-mean(t9$wage))/sd(t9$wage)->t9$wage
|
|
ggplot(t9,aes(wage))+geom_density(colour="black",size=1)->p
|
|
p+scale_y_continuous(limits=c(0,0.75))->p
|
|
p+scale_x_continuous(limits=c(-15,15)
|
|
,breaks=c(-5,0,mean(worker$wage),10,15))->p
|
|
p+theme_bw()->p
|
|
p
|
|
|
|
|
|
|
|
sample(1:nrow(worker),5, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t1
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),5, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t1,mean(s1$wage))->t1
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=(t1-mean(worker$wage))/sd(t1))->t1
|
|
p+geom_density(data=t1,aes(meancol),colour="blue",size=1)-> p
|
|
p
|
|
|
|
sample(1:nrow(worker),20, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t0
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),20, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t0,mean(s1$wage))->t0
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=(t0-mean(worker$wage))/sd(t0))->t0
|
|
p+geom_density(data=t0,aes(meancol),colour="darkolivegreen",size=1)-> p
|
|
p
|
|
|
|
sample(1:nrow(worker),50, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),50, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t,mean(s1$wage))->t
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=(t-mean(worker$wage))/sd(t))->t
|
|
p+geom_density(data=t,aes(meancol),colour="red",size=1)-> p
|
|
p
|
|
|
|
sample(1:nrow(worker),200, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
mean(s1$wage)->t4
|
|
for (i in c(1:9999)) {
|
|
sample(1:nrow(worker),200, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
c(t4,mean(s1$wage))->t4
|
|
}
|
|
|
|
data.frame(sno=c(1:10000),meancol=(t4-mean(worker$wage))/sd(t4))->t4
|
|
p+geom_density(data=t4,aes(meancol),colour="pink",size=1)-> p
|
|
p
|
|
#+end_src
|
|
|
|
|
|
** Distribution of sample mean with unknown population variance :slide:
|
|
|
|
#+RESULTS: sampling5
|
|
[[file:bsample5.png]]
|
|
|
|
#+NAME: sampling5
|
|
#+BEGIN_SRC R :results output graphics :exports results :file bsample5.png :width 3500 :height 2000 :res 300
|
|
library(data.table)
|
|
library(ggplot2)
|
|
options(scipen=9999)
|
|
readRDS("plfsdata/plfsacjdata.rds")->worker
|
|
worker$standardwage->worker$wage
|
|
c(1:nrow(worker))->worker$SamplingFrameOrder
|
|
worker[sex!=3,]->worker
|
|
|
|
worker->t9
|
|
(t9$wage-mean(t9$wage))/sd(t9$wage)->t9$wage
|
|
ggplot(t9,aes(wage))+geom_density(colour="black",size=1)->p
|
|
p+scale_y_continuous(limits=c(0,0.75))->p
|
|
p+scale_x_continuous(limits=c(-15,15)
|
|
,breaks=c(-15,0,round(mean(worker$wage)),15))->p
|
|
p+theme_bw()->p
|
|
p
|
|
|
|
data.frame(sno=c(),meancol=c(),sterr=c())->t4
|
|
samplesize=10
|
|
for (i in c(1:20000)) {
|
|
sample(1:nrow(worker),samplesize, replace=FALSE)->a1
|
|
worker[a1,]->s1
|
|
rbind(t4,data.frame(
|
|
sno=i,
|
|
meancol=mean(s1$wage),
|
|
sterr=sd(s1$wage)/sqrt(samplesize)
|
|
)
|
|
)->t4
|
|
}
|
|
|
|
(t4$meancol)/t4$sterr->t4$teststat
|
|
(t4$meancol)/sd(t4$meancol)->t4$teststat2
|
|
data.frame(modelt=rt(200000,samplesize-1,ncp=mean(t4$teststat)),modelnorm=rnorm(200000,mean=mean(t4$teststat2)))->m
|
|
|
|
sd(t4$teststat)
|
|
sd(m$modelt)
|
|
sd(m$modelnorm)
|
|
sd(t4$teststat2)
|
|
mean(t4$teststat)
|
|
mean(m$modelt)
|
|
mean(m$modelnorm)
|
|
mean(t4$teststat2)
|
|
|
|
ggplot()->p
|
|
p+geom_density(data=t4,aes(teststat2),colour="red",size=1)-> p
|
|
p+geom_density(data=m,aes(modelnorm),colour="black",size=1)->p
|
|
p+geom_density(data=t4,aes(teststat),colour="blue",size=1)-> p
|
|
p+geom_density(data=m,aes(modelt),colour="darkolivegreen",size=1)->p
|
|
p+annotate("text",x=-30,y=0.42,
|
|
label=paste("Normal distribution, with standard deviation",round(sd(m$modelnorm),2)),
|
|
colour="black",hjust=0)->p
|
|
p+annotate("text",x=-30,y=0.40,
|
|
label=paste("Statistic with known population variance, standard error =",
|
|
round(sd(t4$teststat2),2)),
|
|
colour="red",hjust=0)->p
|
|
p+annotate("text",x=-30,y=0.38,
|
|
label=paste("t distribution, with standard deviation =",round(sd(m$modelt),2)),
|
|
colour="darkolivegreen",hjust=0)->p
|
|
p+annotate("text",x=-30,y=0.36,
|
|
label=paste("Statistic with unknown population variance, standard error =",
|
|
round(sd(t4$teststat),2)),
|
|
colour="blue",hjust=0)->p
|
|
p+scale_x_continuous(limits=c(-30,30))+theme_bw()->p
|
|
p
|
|
#+end_src
|
|
|
|
** T Test for means :slide:
|
|
|
|
*** Testing if the mean is different from a specified value (say zero) :slide:
|
|
|
|
$H_{0}: \mu = 0$
|
|
|
|
$H_{a}: \mu \neq 0$
|
|
|
|
#+name: ttest1
|
|
#+begin_src R :results output list org
|
|
readRDS("plfsdata/plfsacjdata.rds")->worker
|
|
worker$standardwage->worker$wage
|
|
worker->t9
|
|
t.test(t9$wage)
|
|
#+end_src
|
|
|
|
#+RESULTS: ttest1
|
|
#+begin_src org
|
|
- One Sample t-test
|
|
- data: t9$wage
|
|
- t = 432.99, df = 37634, p-value < 0.00000000000000022
|
|
- alternative hypothesis: true mean is not equal to 0
|
|
- 95 percent confidence interval:
|
|
- 289.7136 292.3484
|
|
- sample estimates:
|
|
- mean of x
|
|
- 291.031
|
|
#+end_src
|
|
|
|
|
|
*** Testing equality of means :slide:
|
|
|
|
|
|
|
|
$H_{0}: \mu_{women} = \mu_{men}$
|
|
|
|
$H_{a}: \mu_{women} \neq \mu_{men}$
|
|
|
|
|
|
#+name: ttest2
|
|
#+begin_src R :results output list org
|
|
subset(worker,sex!=3)->t9
|
|
factor(t9$sex)->t9$sex
|
|
t.test(wage~sex,data=t9)
|
|
#+end_src
|
|
|
|
#+RESULTS: ttest2
|
|
#+begin_src org
|
|
- Error in subset(worker, sex != 3) : object 'worker' not found
|
|
- Error in factor(t9$sex) : object 't9' not found
|
|
- Error in eval(m$data, parent.frame()) : object 't9' not found
|
|
#+end_src
|
|
|
|
|
|
** Z Test for equality of proportions :slide:
|
|
|
|
|
|
|
|
$H_{0}: p_{women} = p_{men}$
|
|
|
|
$H_{a}: p_{women} \neq p_{men}$
|
|
|
|
|
|
#+name: proptest1
|
|
#+begin_src R :results output list org
|
|
subset(worker,sex!=3)->t9
|
|
as.numeric(t9$gen_edu_level)->t9$gen_edu_level
|
|
factor(t9$sex)->t9$sex
|
|
t9[gen_edu_level>=8,.(schooled=length(fsu)),.(sex)]->a
|
|
t9[,.(all=length(fsu)),.(sex)]->b
|
|
prop.test(a$schooled,b$all)
|
|
#+end_src
|
|
|
|
|
|
#+CAPTION: Results of test for equality of proportions of men and women who have passed secondary school
|
|
#+RESULTS: proptest1
|
|
#+begin_src org
|
|
- 2-sample test for equality of proportions with continuity correction
|
|
- data: a$schooled out of b$all
|
|
- X-squared = 847.73, df = 1, p-value < 0.00000000000000022
|
|
- alternative hypothesis: two.sided
|
|
- 95 percent confidence interval:
|
|
- -0.1694726 -0.1525728
|
|
- sample estimates:
|
|
- prop 1 prop 2
|
|
- 0.09245986 0.25348253
|
|
#+end_src
|
|
|
|
|
|
** F Test for equality of variances :slide:
|
|
|
|
|
|
|
|
$H_{0}: \sigma_{women}^{2} = \sigma_{men}^{2}$
|
|
|
|
$H_{a}: \sigma_{women}^{2} \neq \sigma_{men}^{2}$
|
|
|
|
|
|
#+name: ftest1
|
|
#+begin_src R :results output list org
|
|
subset(worker,sex!=3)->t9
|
|
factor(t9$sex)->t9$sex
|
|
var.test(wage~sex,data=t9)
|
|
#+end_src
|
|
|
|
#+RESULTS: ftest1
|
|
#+begin_src org
|
|
- F test to compare two variances
|
|
- data: wage by sex
|
|
- F = 1.8352, num df = 30652, denom df = 6975, p-value <
|
|
- 0.00000000000000022
|
|
- alternative hypothesis: true ratio of variances is not equal to 1
|
|
- 95 percent confidence interval:
|
|
- 1.768532 1.903506
|
|
- sample estimates:
|
|
- ratio of variances
|
|
- 1.835174
|
|
#+end_src
|
|
|