#+TITLE: Quantitative Methods #+PROPERTY: header-args:R :session acj :eval never-export #+STARTUP: hideall inlineimages hideblocks #+HTML_HEAD: * 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 [[file:bsample2.png]] #+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{mean}}$ | 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: #+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: + Here we test if the mean wages of men and women are equal. #+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 - Welch Two Sample t-test - data: wage by sex - t = 79.02, df = 13483, p-value < 0.00000000000000022 - alternative hypothesis: true difference in means is not equal to 0 - 95 percent confidence interval: - 104.6563 109.9805 - sample estimates: - mean in group 1 mean in group 2 - 310.8974 203.5790 #+end_src ** Testing for equality of proportions :slide: + Here we test if proportion of person who have passed high school is different for men and women #+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