# rm(list = is())
mtcars
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
ncol(mtcars)
## [1] 11
length(mtcars)
## [1] 11
typeof(mtcars)
## [1] "list"
typeof(x=5)
## [1] "double"
f3<-function(x,y){
r<- 3*x + x*y + log(x = x,base = exp(1))
return(r)
}
f3(x = 2, y = 2)
## [1] 10.69315
x<-2
typeof(x)
## [1] "double"
y<-1L
typeof(y)
## [1] "integer"
y2<-"5"
typeof(y2)
## [1] "character"
xv<-c(11,9,8,10,5)
xc<-c("boy","boy","girl","boy","girl")
#table(gender)
# prop.table(gender)
#genf<- as.factor(gender)
#as.numeric(gender)
#as.numeric(genf)
ind <- c(T, T, F, F, T)
xd<- data.frame(age=xv,gender=xc)
xd$gender=="boy"
## [1] TRUE TRUE FALSE TRUE FALSE
xd[xd$gender=="boy",]
## age gender
## 1 11 boy
## 2 9 boy
## 4 10 boy
rm(xv)
rm(xc)
xd[xd$gender=="boy",]
## age gender
## 1 11 boy
## 2 9 boy
## 4 10 boy
xm<-c(1:5,NA)
is.na(xm)
## [1] FALSE FALSE FALSE FALSE FALSE TRUE
sum (is.na(xm))
## [1] 1
sum (!is.na(xm))
## [1] 5
na.omit(xm)
## [1] 1 2 3 4 5
## attr(,"na.action")
## [1] 6
## attr(,"class")
## [1] "omit"
xv<-c(11,9,8,10,5)
xc<-c("boy","boy","girl","boy",NA)
xd<- data.frame(x=xv,y=xc)
xd[!is.na(xd$y),]
## x y
## 1 11 boy
## 2 9 boy
## 3 8 girl
## 4 10 boy
Advanced R
R for data Science
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(gapminder)
d <- gapminder
dim(d)
## [1] 1704 6
str(d)
## tibble [1,704 × 6] (S3: tbl_df/tbl/data.frame)
## $ country : Factor w/ 142 levels "Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ continent: Factor w/ 5 levels "Africa","Americas",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ year : int [1:1704] 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
## $ lifeExp : num [1:1704] 28.8 30.3 32 34 36.1 ...
## $ pop : int [1:1704] 8425333 9240934 10267083 11537966 13079460 14880372 12881816 13867957 16317921 22227415 ...
## $ gdpPercap: num [1:1704] 779 821 853 836 740 ...
library(palmerpenguins)
penguins
## # A tibble: 344 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Adelie Torgersen 39.1 18.7 181 3750
## 2 Adelie Torgersen 39.5 17.4 186 3800
## 3 Adelie Torgersen 40.3 18 195 3250
## 4 Adelie Torgersen NA NA NA NA
## 5 Adelie Torgersen 36.7 19.3 193 3450
## 6 Adelie Torgersen 39.3 20.6 190 3650
## 7 Adelie Torgersen 38.9 17.8 181 3625
## 8 Adelie Torgersen 39.2 19.6 195 4675
## 9 Adelie Torgersen 34.1 18.1 193 3475
## 10 Adelie Torgersen 42 20.2 190 4250
## # ℹ 334 more rows
## # ℹ 2 more variables: sex <fct>, year <int>
str(penguins)
## tibble [344 × 8] (S3: tbl_df/tbl/data.frame)
## $ species : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ island : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ bill_length_mm : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
## $ bill_depth_mm : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
## $ flipper_length_mm: int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
## $ body_mass_g : int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
## $ sex : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
## $ year : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
glimpse(penguins)
## Rows: 344
## Columns: 8
## $ species <fct> Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adel…
## $ island <fct> Torgersen, Torgersen, Torgersen, Torgersen, Torgerse…
## $ bill_length_mm <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, …
## $ bill_depth_mm <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, …
## $ flipper_length_mm <int> 181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 186…
## $ body_mass_g <int> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, …
## $ sex <fct> male, female, female, NA, female, male, female, male…
## $ year <int> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007…
typeof(mtcars)
## [1] "list"
typeof(penguins)
## [1] "list"
is_tibble(mtcars)
## [1] FALSE
is_tibble(penguins)
## [1] TRUE
mtcars
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
penguins
## # A tibble: 344 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Adelie Torgersen 39.1 18.7 181 3750
## 2 Adelie Torgersen 39.5 17.4 186 3800
## 3 Adelie Torgersen 40.3 18 195 3250
## 4 Adelie Torgersen NA NA NA NA
## 5 Adelie Torgersen 36.7 19.3 193 3450
## 6 Adelie Torgersen 39.3 20.6 190 3650
## 7 Adelie Torgersen 38.9 17.8 181 3625
## 8 Adelie Torgersen 39.2 19.6 195 4675
## 9 Adelie Torgersen 34.1 18.1 193 3475
## 10 Adelie Torgersen 42 20.2 190 4250
## # ℹ 334 more rows
## # ℹ 2 more variables: sex <fct>, year <int>
## tidy
filter(penguins,species=="Chinstrap")
## # A tibble: 68 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Chinstrap Dream 46.5 17.9 192 3500
## 2 Chinstrap Dream 50 19.5 196 3900
## 3 Chinstrap Dream 51.3 19.2 193 3650
## 4 Chinstrap Dream 45.4 18.7 188 3525
## 5 Chinstrap Dream 52.7 19.8 197 3725
## 6 Chinstrap Dream 45.2 17.8 198 3950
## 7 Chinstrap Dream 46.1 18.2 178 3250
## 8 Chinstrap Dream 51.3 18.2 197 3750
## 9 Chinstrap Dream 46 18.9 195 4150
## 10 Chinstrap Dream 51.3 19.9 198 3700
## # ℹ 58 more rows
## # ℹ 2 more variables: sex <fct>, year <int>
## base r
penguins[penguins$species=="Chinstrap",]
## # A tibble: 68 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Chinstrap Dream 46.5 17.9 192 3500
## 2 Chinstrap Dream 50 19.5 196 3900
## 3 Chinstrap Dream 51.3 19.2 193 3650
## 4 Chinstrap Dream 45.4 18.7 188 3525
## 5 Chinstrap Dream 52.7 19.8 197 3725
## 6 Chinstrap Dream 45.2 17.8 198 3950
## 7 Chinstrap Dream 46.1 18.2 178 3250
## 8 Chinstrap Dream 51.3 18.2 197 3750
## 9 Chinstrap Dream 46 18.9 195 4150
## 10 Chinstrap Dream 51.3 19.9 198 3700
## # ℹ 58 more rows
## # ℹ 2 more variables: sex <fct>, year <int>
penguins %>%
filter(species=="Chinstrap")
## # A tibble: 68 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Chinstrap Dream 46.5 17.9 192 3500
## 2 Chinstrap Dream 50 19.5 196 3900
## 3 Chinstrap Dream 51.3 19.2 193 3650
## 4 Chinstrap Dream 45.4 18.7 188 3525
## 5 Chinstrap Dream 52.7 19.8 197 3725
## 6 Chinstrap Dream 45.2 17.8 198 3950
## 7 Chinstrap Dream 46.1 18.2 178 3250
## 8 Chinstrap Dream 51.3 18.2 197 3750
## 9 Chinstrap Dream 46 18.9 195 4150
## 10 Chinstrap Dream 51.3 19.9 198 3700
## # ℹ 58 more rows
## # ℹ 2 more variables: sex <fct>, year <int>
filter(penguins,species=="Chinstrap",bill_length_mm>57)
## # A tibble: 1 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Chinstrap Dream 58 17.8 181 3700
## # ℹ 2 more variables: sex <fct>, year <int>
filter(penguins,
species %in% c("Chinstrap","Adelie"))
## # A tibble: 220 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Adelie Torgersen 39.1 18.7 181 3750
## 2 Adelie Torgersen 39.5 17.4 186 3800
## 3 Adelie Torgersen 40.3 18 195 3250
## 4 Adelie Torgersen NA NA NA NA
## 5 Adelie Torgersen 36.7 19.3 193 3450
## 6 Adelie Torgersen 39.3 20.6 190 3650
## 7 Adelie Torgersen 38.9 17.8 181 3625
## 8 Adelie Torgersen 39.2 19.6 195 4675
## 9 Adelie Torgersen 34.1 18.1 193 3475
## 10 Adelie Torgersen 42 20.2 190 4250
## # ℹ 210 more rows
## # ℹ 2 more variables: sex <fct>, year <int>
gapminder %>%
filter(year ==2007,lifeExp>80) %>%
select(country)
## # A tibble: 13 × 1
## country
## <fct>
## 1 Australia
## 2 Canada
## 3 France
## 4 Hong Kong, China
## 5 Iceland
## 6 Israel
## 7 Italy
## 8 Japan
## 9 New Zealand
## 10 Norway
## 11 Spain
## 12 Sweden
## 13 Switzerland
gapminder %>%
filter(country %in% c("Bangladesh","India")) %>%
select(year,country,lifeExp) %>%
summarise(lifeExp)
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
## always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## # A tibble: 24 × 1
## lifeExp
## <dbl>
## 1 37.5
## 2 39.3
## 3 41.2
## 4 43.5
## 5 45.3
## 6 46.9
## 7 50.0
## 8 52.8
## 9 56.0
## 10 59.4
## # ℹ 14 more rows
gapminder %>%
select()
## # A tibble: 1,704 × 0
penguins %>%
mutate(
mass_c= case_when(body_mass_g <= 3000 ~"small",
body_mass_g <= 4500 &
body_mass_g > 3000 ~"mediam",
body_mass_g > 4500 ~"lerge")
)
## # A tibble: 344 × 9
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Adelie Torgersen 39.1 18.7 181 3750
## 2 Adelie Torgersen 39.5 17.4 186 3800
## 3 Adelie Torgersen 40.3 18 195 3250
## 4 Adelie Torgersen NA NA NA NA
## 5 Adelie Torgersen 36.7 19.3 193 3450
## 6 Adelie Torgersen 39.3 20.6 190 3650
## 7 Adelie Torgersen 38.9 17.8 181 3625
## 8 Adelie Torgersen 39.2 19.6 195 4675
## 9 Adelie Torgersen 34.1 18.1 193 3475
## 10 Adelie Torgersen 42 20.2 190 4250
## # ℹ 334 more rows
## # ℹ 3 more variables: sex <fct>, year <int>, mass_c <chr>
penguins %>%
mutate(
mass_c= case_when(body_mass_g <= 3000 ~"small",
body_mass_g <= 4500 &
body_mass_g > 3000 ~"mediam",
body_mass_g > 4500 ~"lerge")
) %>%
count()
## # A tibble: 1 × 1
## n
## <int>
## 1 344
penguins %>%
group_by(sex) %>%
reframe(mean_mass=mean(body_mass_g,na.rm=T),
n=n())
## # A tibble: 3 × 3
## sex mean_mass n
## <fct> <dbl> <int>
## 1 female 3862. 165
## 2 male 4546. 168
## 3 <NA> 4006. 11
penguins %>%
group_by(sex) %>%
reframe(mean_mass=mean(body_mass_g,na.rm=T),
n=n()) %>%
reframe(mean(mean_mass))
## # A tibble: 1 × 1
## `mean(mean_mass)`
## <dbl>
## 1 4138.
penguins %>%
reframe(mean_mass=mean(body_mass_g,na.rm=T),
n=n(),.by=sex)
## # A tibble: 3 × 3
## sex mean_mass n
## <fct> <dbl> <int>
## 1 male 4546. 168
## 2 female 3862. 165
## 3 <NA> 4006. 11
penguins %>%
group_by(sex) %>%
reframe(mean_mass=mean(body_mass_g,na.rm=T),
n=n()) %>%
pull(mean_mass)
## [1] 3862.273 4545.685 4005.556
wdat<-penguins %>%
count(year,species) %>%
pivot_wider(names_from = "species",values_from = n)
wdat %>%
pivot_longer(cols = -year,names_to = "penguins",values_to = "feq")
## # A tibble: 9 × 3
## year penguins feq
## <int> <chr> <int>
## 1 2007 Adelie 50
## 2 2007 Chinstrap 26
## 3 2007 Gentoo 34
## 4 2008 Adelie 50
## 5 2008 Chinstrap 18
## 6 2008 Gentoo 46
## 7 2009 Adelie 52
## 8 2009 Chinstrap 24
## 9 2009 Gentoo 44
dat_ex<-penguins %>%
count(year,species)
dat_ex %>%
mutate(joint= n/sum(n))
## # A tibble: 9 × 4
## year species n joint
## <int> <fct> <int> <dbl>
## 1 2007 Adelie 50 0.145
## 2 2007 Chinstrap 26 0.0756
## 3 2007 Gentoo 34 0.0988
## 4 2008 Adelie 50 0.145
## 5 2008 Chinstrap 18 0.0523
## 6 2008 Gentoo 46 0.134
## 7 2009 Adelie 52 0.151
## 8 2009 Chinstrap 24 0.0698
## 9 2009 Gentoo 44 0.128
dat_ex %>%
mutate(joint= n/sum(n)) %>%
mutate(year_1= n/sum(n),.by=year) %>% ##wrong
mutate(species_1= n/sum(n),.by=species) ##wrong
## # A tibble: 9 × 6
## year species n joint year_1 species_1
## <int> <fct> <int> <dbl> <dbl> <dbl>
## 1 2007 Adelie 50 0.145 0.455 0.329
## 2 2007 Chinstrap 26 0.0756 0.236 0.382
## 3 2007 Gentoo 34 0.0988 0.309 0.274
## 4 2008 Adelie 50 0.145 0.439 0.329
## 5 2008 Chinstrap 18 0.0523 0.158 0.265
## 6 2008 Gentoo 46 0.134 0.404 0.371
## 7 2009 Adelie 52 0.151 0.433 0.342
## 8 2009 Chinstrap 24 0.0698 0.2 0.353
## 9 2009 Gentoo 44 0.128 0.367 0.355
# correct
dat<-dat_ex %>%
mutate(n_s=sum(n),.by= species) %>%
mutate(n_y=sum(n),.by= year ) %>%
mutate(p_s=n_s/sum(n),p_y=n_y/sum(n),p_j=n/sum(n))
out<-dat %>%
select(species,year,p_j) %>%
pivot_wider(names_from = year,values_from = p_j)
out
## # A tibble: 3 × 4
## species `2007` `2008` `2009`
## <fct> <dbl> <dbl> <dbl>
## 1 Adelie 0.145 0.145 0.151
## 2 Chinstrap 0.0756 0.0523 0.0698
## 3 Gentoo 0.0988 0.134 0.128
dat %>%
filter(year==2007) %>%
select(species,p_s)
## # A tibble: 3 × 2
## species p_s
## <fct> <dbl>
## 1 Adelie 0.442
## 2 Chinstrap 0.198
## 3 Gentoo 0.360
dat %>%
filter(species=="Adelie") %>%
select(year,p_y)
## # A tibble: 3 × 2
## year p_y
## <int> <dbl>
## 1 2007 0.320
## 2 2008 0.331
## 3 2009 0.349
dat %>%
mutate(np= paste(n, "(",round(p_j,3),")") )
## # A tibble: 9 × 9
## year species n n_s n_y p_s p_y p_j np
## <int> <fct> <int> <int> <int> <dbl> <dbl> <dbl> <chr>
## 1 2007 Adelie 50 152 110 0.442 0.320 0.145 50 ( 0.145 )
## 2 2007 Chinstrap 26 68 110 0.198 0.320 0.0756 26 ( 0.076 )
## 3 2007 Gentoo 34 124 110 0.360 0.320 0.0988 34 ( 0.099 )
## 4 2008 Adelie 50 152 114 0.442 0.331 0.145 50 ( 0.145 )
## 5 2008 Chinstrap 18 68 114 0.198 0.331 0.0523 18 ( 0.052 )
## 6 2008 Gentoo 46 124 114 0.360 0.331 0.134 46 ( 0.134 )
## 7 2009 Adelie 52 152 120 0.442 0.349 0.151 52 ( 0.151 )
## 8 2009 Chinstrap 24 68 120 0.198 0.349 0.0698 24 ( 0.07 )
## 9 2009 Gentoo 44 124 120 0.360 0.349 0.128 44 ( 0.128 )
\[ E[Y(0)] = -\frac{\phi(0.5)}{\Phi(0.5)} \]
\[ E[Y(1)] = \frac{2 \phi(0.5)}{1 - \Phi(0.5)} - 0.5 \]
library(tidyverse)
set.seed(1000)
n<- 1000
df<-tibble(id= 1:n,
y0= rnorm(n),
tau= -0.5+y0,
y1= tau+y0)
df
## # A tibble: 1,000 × 4
## id y0 tau y1
## <int> <dbl> <dbl> <dbl>
## 1 1 -0.446 -0.946 -1.39
## 2 2 -1.21 -1.71 -2.91
## 3 3 0.0411 -0.459 -0.418
## 4 4 0.639 0.139 0.779
## 5 5 -0.787 -1.29 -2.07
## 6 6 -0.385 -0.885 -1.27
## 7 7 -0.476 -0.976 -1.45
## 8 8 0.720 0.220 0.940
## 9 9 -0.0185 -0.519 -0.537
## 10 10 -1.37 -1.87 -3.25
## # ℹ 990 more rows
## true value
y0mean<- mean(df$y0-df$y1)
eya1 <- (2*dnorm(.5)/pnorm(0.5,lower.tail = F))-.5
eya0<- -dnorm(.5)/pnorm(0.5,lower.tail = T)
tau_true <- eya1 - eya0
tau_true
## [1] 2.291316
## prefect doctor
dat1 <- df %>%
mutate(A1 = if_else(tau > 0, 1,0),
Y = A1*y1 + (1-A1)*y0)
dat1
## # A tibble: 1,000 × 6
## id y0 tau y1 A1 Y
## <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 -0.446 -0.946 -1.39 0 -0.446
## 2 2 -1.21 -1.71 -2.91 0 -1.21
## 3 3 0.0411 -0.459 -0.418 0 0.0411
## 4 4 0.639 0.139 0.779 1 0.779
## 5 5 -0.787 -1.29 -2.07 0 -0.787
## 6 6 -0.385 -0.885 -1.27 0 -0.385
## 7 7 -0.476 -0.976 -1.45 0 -0.476
## 8 8 0.720 0.220 0.940 1 0.940
## 9 9 -0.0185 -0.519 -0.537 0 -0.0185
## 10 10 -1.37 -1.87 -3.25 0 -1.37
## # ℹ 990 more rows
dat1 %>%
reframe(EY1 = mean(Y), .by = A1) %>%
mutate(tau <- EY1-EY1[1])
## # A tibble: 2 × 3
## A1 EY1 `tau <- EY1 - EY1[1]`
## <dbl> <dbl> <dbl>
## 1 0 -0.501 0
## 2 1 1.70 2.20
## clueless doctor
dat2<- df %>%
mutate(A2= rbinom(n = nrow(df),size = 1,prob = 0.5),Y= A2*y1+(1-A2)*y0)
dat2
## # A tibble: 1,000 × 6
## id y0 tau y1 A2 Y
## <int> <dbl> <dbl> <dbl> <int> <dbl>
## 1 1 -0.446 -0.946 -1.39 1 -1.39
## 2 2 -1.21 -1.71 -2.91 0 -1.21
## 3 3 0.0411 -0.459 -0.418 0 0.0411
## 4 4 0.639 0.139 0.779 0 0.639
## 5 5 -0.787 -1.29 -2.07 1 -2.07
## 6 6 -0.385 -0.885 -1.27 1 -1.27
## 7 7 -0.476 -0.976 -1.45 1 -1.45
## 8 8 0.720 0.220 0.940 1 0.940
## 9 9 -0.0185 -0.519 -0.537 0 -0.0185
## 10 10 -1.37 -1.87 -3.25 1 -3.25
## # ℹ 990 more rows
dat2 %>%
reframe(EY1 = mean(Y), .by=A2) %>%
mutate(tau= EY1-EY1[2])
## # A tibble: 2 × 3
## A2 EY1 tau
## <int> <dbl> <dbl>
## 1 1 -0.524 -0.512
## 2 0 -0.0128 0
set.seed(1000)
y0 <- rnorm(1000)
tao <- -0.5 + y0
y1 <- tao + y0
library(tidyverse)
dat <- data.frame(c(1:1000) , y0, tao, y1)
dat8 <- tibble(id = 1:1000, y0, tao, y1)
mean(y1) - mean(y0)
## [1] -0.5124759
ey1 <- (2*dnorm(0.5)/(1- pnorm(0.5))) - 0.5
ey0 <- -dnorm(0.5)/pnorm(0.5)
tau_true <- ey1 - ey0
tau_true
## [1] 2.291316
dat8 <- dat8 %>%
mutate(A1 = if_else(tao > 0, 1,0),
Y = A1*y1 + (1-A1)*y0)
dat8 %>%
reframe(EY1 = mean(Y),
.by = A1) %>%
mutate(tau <- EY1-EY1[1])
## # A tibble: 2 × 3
## A1 EY1 `tau <- EY1 - EY1[1]`
## <dbl> <dbl> <dbl>
## 1 0 -0.501 0
## 2 1 1.70 2.20
EY0<-mean(dat8$Y[dat8$A1 == 0])
EY1<-mean(dat8$Y[dat8$A1 == 1])
t<-EY1-EY0
t
## [1] 2.200073
library(Matching) # contains lalonde
## Warning: package 'Matching' was built under R version 4.4.3
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## ##
## ## Matching (Version 4.10-15, Build Date: 2024-10-14)
## ## See https://www.jsekhon.com for additional documentation.
## ## Please cite software as:
## ## Jasjeet S. Sekhon. 2011. ``Multivariate and Propensity Score Matching
## ## Software with Automated Balance Optimization: The Matching package for R.''
## ## Journal of Statistical Software, 42(7): 1-52.
## ##
data(lalonde)
# Look at structure
str(lalonde)
## 'data.frame': 445 obs. of 12 variables:
## $ age : int 37 22 30 27 33 22 23 32 22 33 ...
## $ educ : int 11 9 12 11 8 9 12 11 16 12 ...
## $ black : int 1 0 1 1 1 1 1 1 1 0 ...
## $ hisp : int 0 1 0 0 0 0 0 0 0 0 ...
## $ married: int 1 0 0 0 0 0 0 0 0 1 ...
## $ nodegr : int 1 1 0 1 1 1 0 1 0 0 ...
## $ re74 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ re75 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ re78 : num 9930 3596 24910 7506 290 ...
## $ u74 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ u75 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ treat : int 1 1 1 1 1 1 1 1 1 1 ...
# Fit linear regression of re78 on treat + covariates (associational adjustment)
fit.lm <- lm(re78 ~ factor(treat) + age + educ + factor(black) + factor(hisp )+ factor(married) + factor(nodegr) + factor(u74) + factor(u75),
data = lalonde)
summary(fit.lm)
##
## Call:
## lm(formula = re78 ~ factor(treat) + age + educ + factor(black) +
## factor(hisp) + factor(married) + factor(nodegr) + factor(u74) +
## factor(u75), data = lalonde)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9703 -4478 -1537 3066 53184
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1720.83 3414.38 0.504 0.6145
## factor(treat)1 1600.87 640.02 2.501 0.0127 *
## age 57.81 45.59 1.268 0.2055
## educ 367.43 228.05 1.611 0.1079
## factor(black)1 -2103.41 1173.28 -1.793 0.0737 .
## factor(hisp)1 218.67 1559.72 0.140 0.8886
## factor(married)1 43.61 855.51 0.051 0.9594
## factor(nodegr)1 -135.06 995.50 -0.136 0.8921
## factor(u74)1 380.77 1025.37 0.371 0.7106
## factor(u75)1 -1146.33 955.70 -1.199 0.2310
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6523 on 435 degrees of freedom
## Multiple R-squared: 0.05213, Adjusted R-squared: 0.03252
## F-statistic: 2.658 on 9 and 435 DF, p-value: 0.005212
library(tidyverse)
library(dplyr)
d<-datasets::UCBAdmissions %>% as.tibble()
## Warning: `as.tibble()` was deprecated in tibble 2.0.0.
## ℹ Please use `as_tibble()` instead.
## ℹ The signature and semantics have changed, see `?as_tibble`.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
d
## # A tibble: 24 × 4
## Admit Gender Dept n
## <chr> <chr> <chr> <dbl>
## 1 Admitted Male A 512
## 2 Rejected Male A 313
## 3 Admitted Female A 89
## 4 Rejected Female A 19
## 5 Admitted Male B 353
## 6 Rejected Male B 207
## 7 Admitted Female B 17
## 8 Rejected Female B 8
## 9 Admitted Male C 120
## 10 Rejected Male C 205
## # ℹ 14 more rows
d1<-d %>%
reframe(n=sum(n),.by= c(Gender,Admit)) %>%
mutate(n_g= sum(n),.by= Gender) %>%
mutate(n_a= sum(n),.by= Admit) %>%
mutate(p_g = n_g / sum(n), # Proportion by gender
p_a = n_a / sum(n), # Proportion by admission status
p_j = n / sum(n) # Joint proportion
)
d1
## # A tibble: 4 × 8
## Gender Admit n n_g n_a p_g p_a p_j
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Male Admitted 1198 2691 1755 0.595 0.388 0.265
## 2 Male Rejected 1493 2691 2771 0.595 0.612 0.330
## 3 Female Admitted 557 1835 1755 0.405 0.388 0.123
## 4 Female Rejected 1278 1835 2771 0.405 0.612 0.282
result<-function(data){
p_ma<-(data$p_j[1]/(data$p_j[1]+data$p_j[2]))
p_fe<- (data$p_j[3]/(data$p_j[3]+data$p_j[4]))
RD<- p_ma-p_fe
RR<- p_ma/p_fe
OR<- (p_ma/(1-p_ma))/(p_fe/(1-p_fe))
var_Or<- ((p_ma*(1-p_ma))/(data$n[2]+data$n[4]))+((p_fe*(1-p_fe))/(data$n[1]+data$n[3]))
# Output results
cat("RD:", RD, "\n")
cat("RR", RR, "\n")
cat("OR", OR, "\n")
cat("Variance-OR", var_Or, "\n")
}
result(d1)
## RD: 0.1416454
## RR 1.466642
## OR 1.84108
## Variance-OR 0.0002095942
fun_data<-function(dept){
d %>%
filter(Dept==dept) %>%
reframe(n=sum(n),.by= c(Gender,Admit)) %>%
mutate(n_g= sum(n),.by= Gender) %>%
mutate(n_a= sum(n),.by= Admit) %>%
mutate(p_g = n_g / sum(n), # Proportion by gender
p_a = n_a / sum(n), # Proportion by admission status
p_j = n / sum(n) # Joint proportion
)
}
d1<-fun_data("A")
d2<-fun_data("B")
d3<-fun_data("C")
d4<-fun_data("D")
d5<-fun_data("E")
d6<-fun_data("F")
result(d1)
## RD: -0.203468
## RR 0.753095
## OR 0.349212
## Variance-OR 0.0009504239
result(d2)
## RD: -0.04964286
## RR 0.9269958
## OR 0.8025007
## Variance-OR 0.001671862
result(d3)
## RD: 0.02858996
## RR 1.08393
## OR 1.13306
## Variance-OR 0.001088301
result(d4)
## RD: -0.01839808
## RR 0.9473337
## OR 0.9212838
## Variance-OR 0.001268339
result(d5)
## RD: 0.03830116
## RR 1.160131
## OR 1.221631
## Variance-OR 0.001696714
result(d6)
## RD: -0.0114
## RR 0.838025
## OR 0.8278727
## Variance-OR 0.001505429
library(tidyverse)
set.seed(1000)
n<- 1000
df<-tibble(id= 1:n,
y0= rnorm(n),
tau= -0.5+y0,
y1= tau+y0)
df
## # A tibble: 1,000 × 4
## id y0 tau y1
## <int> <dbl> <dbl> <dbl>
## 1 1 -0.446 -0.946 -1.39
## 2 2 -1.21 -1.71 -2.91
## 3 3 0.0411 -0.459 -0.418
## 4 4 0.639 0.139 0.779
## 5 5 -0.787 -1.29 -2.07
## 6 6 -0.385 -0.885 -1.27
## 7 7 -0.476 -0.976 -1.45
## 8 8 0.720 0.220 0.940
## 9 9 -0.0185 -0.519 -0.537
## 10 10 -1.37 -1.87 -3.25
## # ℹ 990 more rows
df1<-df %>%
mutate(A1=if_else(tau>0,1,0)) %>%
mutate(Y=A1*y1+(1-A1)*y0)
df1 %>%
reframe(Ey1=mean(Y), .by=A1) %>%
mutate(tau<- Ey1-Ey1[1])
## # A tibble: 2 × 3
## A1 Ey1 `tau <- Ey1 - Ey1[1]`
## <dbl> <dbl> <dbl>
## 1 0 -0.501 0
## 2 1 1.70 2.20
df2<-df1 %>%
mutate(A2=rbinom(1000,size = 1,prob = 0.5)) %>%
mutate(Y_new=A2*y1+(1-A2)*y0)
df2
## # A tibble: 1,000 × 8
## id y0 tau y1 A1 Y A2 Y_new
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl>
## 1 1 -0.446 -0.946 -1.39 0 -0.446 1 -1.39
## 2 2 -1.21 -1.71 -2.91 0 -1.21 0 -1.21
## 3 3 0.0411 -0.459 -0.418 0 0.0411 0 0.0411
## 4 4 0.639 0.139 0.779 1 0.779 0 0.639
## 5 5 -0.787 -1.29 -2.07 0 -0.787 1 -2.07
## 6 6 -0.385 -0.885 -1.27 0 -0.385 1 -1.27
## 7 7 -0.476 -0.976 -1.45 0 -0.476 1 -1.45
## 8 8 0.720 0.220 0.940 1 0.940 1 0.940
## 9 9 -0.0185 -0.519 -0.537 0 -0.0185 0 -0.0185
## 10 10 -1.37 -1.87 -3.25 0 -1.37 1 -3.25
## # ℹ 990 more rows
df2 %>%
reframe(Ey2=mean(Y_new), .by=A2) %>%
mutate(tau<- Ey2-Ey2[2])
## # A tibble: 2 × 3
## A2 Ey2 `tau <- Ey2 - Ey2[2]`
## <int> <dbl> <dbl>
## 1 1 -0.524 -0.512
## 2 0 -0.0128 0
d<-datasets::UCBAdmissions %>% as.tibble()
d
## # A tibble: 24 × 4
## Admit Gender Dept n
## <chr> <chr> <chr> <dbl>
## 1 Admitted Male A 512
## 2 Rejected Male A 313
## 3 Admitted Female A 89
## 4 Rejected Female A 19
## 5 Admitted Male B 353
## 6 Rejected Male B 207
## 7 Admitted Female B 17
## 8 Rejected Female B 8
## 9 Admitted Male C 120
## 10 Rejected Male C 205
## # ℹ 14 more rows
result1<-function(data){
data<-data %>%
reframe(n=sum(n),.by= c(Gender,Admit)) %>%
mutate(n_g= sum(n),.by= Gender) %>%
mutate(n_a= sum(n),.by= Admit) %>%
mutate(p_g = n_g / sum(n), # Proportion by gender
p_a = n_a / sum(n), # Proportion by admission status
p_j = n / sum(n) # Joint proportion
)
p_ma<-(data$p_j[1]/(data$p_j[1]+data$p_j[2]))
p_fe<- (data$p_j[3]/(data$p_j[3]+data$p_j[4]))
RD<- p_ma-p_fe
RR<- p_ma/p_fe
OR<- (p_ma/(1-p_ma))/(p_fe/(1-p_fe))
# Output results
cat("RD:", RD, "\n")
cat("RR", RR, "\n")
cat("OR", OR, "\n")
}
result1(d)
## RD: 0.1416454
## RR 1.466642
## OR 1.84108
## for group by department
fun_data<-function(dept){
d %>%
filter(Dept==dept) %>%
reframe(n=sum(n),.by= c(Gender,Admit)) %>%
mutate(n_g= sum(n),.by= Gender) %>%
mutate(n_a= sum(n),.by= Admit) %>%
mutate(p_g = n_g / sum(n), # Proportion by gender
p_a = n_a / sum(n), # Proportion by admission status
p_j = n / sum(n) # Joint proportion
)
}
d1<-fun_data("A")
d2<-fun_data("B")
d3<-fun_data("C")
d4<-fun_data("D")
d5<-fun_data("E")
d6<-fun_data("F")
result1(d1)
## RD: -0.203468
## RR 0.753095
## OR 0.349212
result1(d2)
## RD: -0.04964286
## RR 0.9269958
## OR 0.8025007
result1(d3)
## RD: 0.02858996
## RR 1.08393
## OR 1.13306
result1(d4)
## RD: -0.01839808
## RR 0.9473337
## OR 0.9212838
result1(d5)
## RD: 0.03830116
## RR 1.160131
## OR 1.221631
result1(d6)
## RD: -0.0114
## RR 0.838025
## OR 0.8278727
d<-datasets::UCBAdmissions %>% as.tibble()
d
## # A tibble: 24 × 4
## Admit Gender Dept n
## <chr> <chr> <chr> <dbl>
## 1 Admitted Male A 512
## 2 Rejected Male A 313
## 3 Admitted Female A 89
## 4 Rejected Female A 19
## 5 Admitted Male B 353
## 6 Rejected Male B 207
## 7 Admitted Female B 17
## 8 Rejected Female B 8
## 9 Admitted Male C 120
## 10 Rejected Male C 205
## # ℹ 14 more rows
d %>% count(Dept)
## # A tibble: 6 × 2
## Dept n
## <chr> <int>
## 1 A 4
## 2 B 4
## 3 C 4
## 4 D 4
## 5 E 4
## 6 F 4
sum(d$n)
## [1] 4526
d %>%
reframe(n=sum(n))
## # A tibble: 1 × 1
## n
## <dbl>
## 1 4526
d %>%
reframe(n=sum(n),.by= Gender)
## # A tibble: 2 × 2
## Gender n
## <chr> <dbl>
## 1 Male 2691
## 2 Female 1835
d %>%
reframe(n=sum(n),.by= Admit)
## # A tibble: 2 × 2
## Admit n
## <chr> <dbl>
## 1 Admitted 1755
## 2 Rejected 2771
d %>%
reframe(n=sum(n),.by= c(Gender,Admit))
## # A tibble: 4 × 3
## Gender Admit n
## <chr> <chr> <dbl>
## 1 Male Admitted 1198
## 2 Male Rejected 1493
## 3 Female Admitted 557
## 4 Female Rejected 1278
d %>%
reframe(n=sum(n),.by= c(Gender,Admit))%>%
mutate(total= sum(n),.by= Gender)
## # A tibble: 4 × 4
## Gender Admit n total
## <chr> <chr> <dbl> <dbl>
## 1 Male Admitted 1198 2691
## 2 Male Rejected 1493 2691
## 3 Female Admitted 557 1835
## 4 Female Rejected 1278 1835
library(Matching)
data("lalonde")
FRT_f <- function(Y, A) {
y1 <- Y[A == 1]
y0 <- Y[A == 0]
selc <- c("statistic", "p.value")
m_d <- broom::tidy(t.test(x = y1, y = y0, var.equal = T))[selc]
m_t <- broom::tidy(t.test(x = y1, y = y0, var.equal = F))[selc]
m_W <- broom::tidy(wilcox.test(x = y1, y = y0))[selc]
#
return(tibble(method = c("D", "S", "W"), bind_rows(m_d, m_t,
m_W)))
}
out_appx <- FRT_f(A = lalonde$treat, Y = lalonde$re78)
out_appx
## # A tibble: 3 × 3
## method statistic p.value
## <chr> <dbl> <dbl>
## 1 D 2.84 0.00479
## 2 S 2.67 0.00789
## 3 W 27402. 0.0109
res <- list()
#
for (i in 1:100) {
a_perm <- sample(lalonde$treat, replace = F)
res[[i]] <- FRT_f(Y = lalonde$re78, A = a_perm)
}
out <- bind_rows(res) |>
left_join(out_appx |>
dplyr :: select(method, est = statistic))
## Joining with `by = join_by(method)`
out
## # A tibble: 300 × 4
## method statistic p.value est
## <chr> <dbl> <dbl> <dbl>
## 1 D -0.651 0.515 2.84
## 2 S -0.636 0.525 2.67
## 3 W 22008. 0.121 27402.
## 4 D 0.0637 0.949 2.84
## 5 S 0.0659 0.947 2.67
## 6 W 25078. 0.436 27402.
## 7 D -0.745 0.457 2.84
## 8 S -0.765 0.445 2.67
## 9 W 23103 0.472 27402.
## 10 D 0.407 0.684 2.84
## # ℹ 290 more rows
#save(out, file = here::here("data/FRT-perm.Rdata"))
library(Matching)
library(tidyverse)
library(broom)
data("lalonde")
lalonde %>%
count(treat)
## treat n
## 1 0 260
## 2 1 185
## 1st way for t-test
t1 <- t.test(re78 ~ treat, var.equal = T, data = lalonde)
t1
##
## Two Sample t-test
##
## data: re78 by treat
## t = -2.8353, df = 443, p-value = 0.004788
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -3038.1113 -550.5749
## sample estimates:
## mean in group 0 mean in group 1
## 4554.802 6349.145
## 2nd way for t-test
t1a <- t.test(lalonde$re78[lalonde$treat == 1],lalonde$re78[lalonde$treat == 0],
var.equal = T)
t1a
##
## Two Sample t-test
##
## data: lalonde$re78[lalonde$treat == 1] and lalonde$re78[lalonde$treat == 0]
## t = 2.8353, df = 443, p-value = 0.004788
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 550.5749 3038.1113
## sample estimates:
## mean of x mean of y
## 6349.145 4554.802
names(t1)
## [1] "statistic" "parameter" "p.value" "conf.int" "estimate"
## [6] "null.value" "stderr" "alternative" "method" "data.name"
res <- list()
n <- dim(lalonde)[1]
for (i in 1:1000) {
A <- sample(x = lalonde$treat, size = n, replace = F)
Y <- lalonde$re78
res[[i]] <- t.test(Y ~ A, var.equal = T)$statistic
}
tibble(stat = unlist(res)) %>%
reframe(p = mean(abs(stat) > abs(t1$statistic)))
## # A tibble: 1 × 1
## p
## <dbl>
## 1 0.003
fun_FRT <- function(Y, A, nsim = 1000) {
#
res <- list()
n <- length(A)
t1 <- t.test(Y ~ A, var.equal = T)
for (i in 1:nsim) {
A <- sample(x = A, size = n, replace = F)
res[[i]] <- t.test(Y ~ A, var.equal = T)$statistic
}
out <- tibble(stat = unlist(res))
p <- out %>%
reframe(p = mean(abs(stat) > abs(t1$statistic)))
## p <- mean(abs(out$stat) > abs(t1$stat))
##
return(list(out, p))
}
res <- fun_FRT(Y =lalonde$re78, A=lalonde$treat)
res
## [[1]]
## # A tibble: 1,000 × 1
## stat
## <dbl>
## 1 -0.228
## 2 0.837
## 3 0.950
## 4 -1.35
## 5 0.334
## 6 0.332
## 7 -0.502
## 8 0.206
## 9 -0.327
## 10 1.45
## # ℹ 990 more rows
##
## [[2]]
## # A tibble: 1 × 1
## p
## <dbl>
## 1 0.004
res[[1]] %>%
ggplot() +
geom_histogram(aes(stat, after_stat(density))) +
geom_density(aes(stat), col = "red", bw = .75)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## 2nd way
res[[1]] %>%
ggplot(aes(stat))+
geom_histogram(aes(stat, after_stat(density)))+
geom_density(col = "red", bw = .75)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
mod <- lm(re78 ~ . - treat, data = lalonde)
mod
##
## Call:
## lm(formula = re78 ~ . - treat, data = lalonde)
##
## Coefficients:
## (Intercept) age educ black hisp married
## 1.738e+03 5.681e+01 3.677e+02 -2.126e+03 1.051e+02 -6.883e+01
## nodegr re74 re75 u74 u75
## -3.762e+02 1.068e-01 3.048e-02 1.309e+03 -1.205e+03
## 1st way
Yhat <- residuals(mod, newdata = lalonde)
Yhat
## 1 2 3 4 5 6
## 4514.01596 -2532.72942 19078.41076 2589.39797 -3864.77974 159.15601
## 7 8 9 10 11 12
## -5433.41417 3271.35435 -4683.31230 4359.26090 4447.00818 11407.12506
## 13 14 15 16 17 18
## -3302.40888 14259.65541 145.96405 -866.08403 8553.56072 3371.57308
## 19 20 21 22 23 24
## 4405.10352 5143.55365 -4689.50914 -4168.01455 -523.49849 -2754.91986
## 25 26 27 28 29 30
## 7125.42670 4681.45175 5093.91942 4362.54475 12237.03742 -3750.61986
## 31 32 33 34 35 36
## -3980.96258 3015.58825 -3159.88535 -5262.98200 -2355.28562 13257.71765
## 37 38 39 40 41 42
## 3584.84269 546.96106 -1730.12392 -4378.63765 -4065.21273 7335.75527
## 43 44 45 46 47 48
## 4815.89184 -2676.90908 -546.53696 -4734.30535 -3245.59816 -3613.28037
## 49 50 51 52 53 54
## 9590.36269 -590.23417 -3870.51612 3012.32031 -4405.45552 -3198.06562
## 55 56 57 58 59 60
## -4427.57697 -3980.96258 -3681.98485 4215.48855 5988.14288 -5710.41133
## 61 62 63 64 65 66
## -3245.59816 -2003.38684 -337.31561 -4367.45403 -1693.68300 6456.10167
## 67 68 69 70 71 72
## -4916.75203 -5344.92321 4882.29344 1337.69927 -4181.38761 -6460.53804
## 73 74 75 76 77 78
## -2567.04446 6418.76438 2778.02557 11854.12650 13301.49655 -3840.52326
## 79 80 81 82 83 84
## 17350.30856 1824.00159 -5547.03562 -2828.25055 -3469.86795 -6028.33928
## 85 86 87 88 89 90
## -3813.70540 -5541.66999 -1936.46793 12371.05869 602.66436 -3700.08395
## 91 92 93 94 95 96
## 9434.73031 -3980.96258 -4803.13058 4663.98727 -5882.53434 -2085.67854
## 97 98 99 100 101 102
## 812.75891 -4056.66793 -4435.44837 20177.68406 -4378.63765 4773.53090
## 103 104 105 106 107 108
## -4317.90058 409.17448 2995.84376 -5090.35919 28070.96072 -1660.01037
## 109 110 111 112 113 114
## -5087.18420 -3331.45853 5756.62463 419.49414 -5270.48824 -3470.58554
## 115 116 117 118 119 120
## -5890.96386 4812.93233 16365.96357 -4827.26518 2812.97796 -5262.38774
## 121 122 123 124 125 126
## 10079.22663 4469.61234 12728.53383 -9010.71072 -2527.65134 -3573.03750
## 127 128 129 130 131 132
## -5900.80371 5746.34241 -8038.79317 -3756.23080 1713.55480 54089.78627
## 133 134 135 136 137 138
## -4578.62204 738.87565 -680.41966 4697.48486 -2669.09795 6923.47729
## 139 140 141 142 143 144
## -6888.98141 5126.54961 -105.94557 -7058.48820 -3142.80492 -5207.16737
## 145 146 147 148 149 150
## -6814.49119 -538.40853 5325.06502 -5130.56923 20291.81429 947.59296
## 151 152 153 154 155 156
## -2701.17503 -776.59325 3908.76963 2391.62670 -4968.94424 -7226.44944
## 157 158 159 160 161 162
## 34.64323 3361.30515 -4661.00640 691.65758 -682.76924 3882.98056
## 163 164 165 166 167 168
## -5581.16084 -6002.17434 4115.30294 6241.19382 -479.08036 3940.00094
## 169 170 171 172 173 174
## 8808.13077 -3854.34718 1330.49195 -5081.79839 -6042.03997 -4616.31681
## 175 176 177 178 179 180
## -6693.18873 -5285.86440 2389.32743 -421.39347 4211.28779 -3257.21656
## 181 182 183 184 185 186
## 7623.10986 26441.64522 6465.48267 -2324.40691 -3236.12462 -4321.82692
## 187 188 189 190 191 192
## 4653.71074 -3897.33399 7070.00891 5857.15494 5556.95891 4799.88386
## 193 194 195 196 197 198
## 794.73813 -522.99981 -5060.36634 -280.09715 -4238.19833 -3377.19795
## 199 200 201 202 203 204
## -6588.40916 -3416.03033 -3944.61214 3240.00235 4160.01279 -606.75058
## 205 206 207 208 209 210
## -4863.11630 13000.22342 4574.83009 -30.04540 -184.15395 12238.28728
## 211 212 213 214 215 216
## -4877.91965 -5336.44427 -31.26141 -4409.88874 656.91889 1396.49003
## 217 218 219 220 221 222
## -4557.72461 -5262.98200 -4803.13058 2931.59163 -5371.23782 -2135.89475
## 223 224 225 226 227 228
## 9492.04841 -3413.59982 -371.64240 2316.24869 -4438.62336 3005.79511
## 229 230 231 232 233 234
## -5206.17128 3054.37098 2314.82203 -4321.82692 7255.91222 -4746.31986
## 235 236 237 238 239 240
## 399.25086 -905.59355 -3022.59769 -4435.44837 -2865.57318 -4689.50914
## 241 242 243 244 245 246
## 3678.23218 -5030.37348 9880.08014 9001.06601 793.56724 258.86126
## 247 248 249 250 251 252
## -561.01910 16506.75163 -4378.63765 -2653.84804 9630.03366 -4632.69841
## 253 254 255 256 257 258
## -2128.93562 6280.54797 -3927.32684 -5490.22490 -4265.01620 -1819.90101
## 259 260 261 262 263 264
## -3883.33852 -2479.97078 7782.31076 -2139.14178 2277.80539 4447.12525
## 265 266 267 268 269 270
## -2394.22710 -5376.60345 -1371.85089 -4776.31272 -3670.09109 -8087.00190
## 271 272 273 274 275 276
## -4689.54985 -4253.00169 -5173.98778 -664.81314 1529.10932 -2477.76052
## 277 278 279 280 281 282
## -1163.93912 -1082.06101 5919.69435 1581.18072 -2323.22910 -5882.53434
## 283 284 285 286 287 288
## -3538.90058 -5547.03562 -5648.64256 -4833.12344 -4265.01620 1985.73818
## 289 290 291 292 293 294
## -4707.48748 -4689.50914 -5257.61637 -3364.18982 5264.35175 -4321.82692
## 295 296 297 298 299 300
## 716.42907 -4145.65837 -4378.63765 2193.76096 1791.51975 847.05157
## 301 302 303 304 305 306
## -4366.62314 -4961.54825 -5478.21039 -6085.15001 -338.59914 1361.87842
## 307 308 309 310 311 312
## -5282.80854 228.62967 -359.18064 -3760.06966 -5603.84635 -4321.82692
## 313 314 315 316 317 318
## 7006.10001 -6684.71215 -4366.62314 160.23750 -1734.25888 3764.84184
## 319 320 321 322 323 324
## -2146.50725 5264.90569 251.81448 4202.88521 215.29597 1191.81597
## 325 326 327 328 329 330
## 8816.10891 7207.30891 -3835.48830 -1323.25258 1197.85333 6897.64448
## 331 332 333 334 335 336
## -6325.86946 -3670.09109 -3980.96258 -1791.53258 -4462.26624 4839.25893
## 337 338 339 340 341 342
## 7010.32670 -3670.09109 5748.27184 216.65939 -3026.71695 -6474.78771
## 343 344 345 346 347 348
## 1409.37746 -3613.28037 -3705.39658 -22.58037 -4462.26624 8771.94121
## 349 350 351 352 353 354
## -1747.80254 -1280.41109 -4405.45552 2257.03199 -4462.26624 -2837.57258
## 355 356 357 358 359 360
## -729.75580 -3256.54930 748.13586 6706.29204 -3327.41081 13461.37441
## 361 362 363 364 365 366
## 573.20596 -4058.70537 5604.16083 -6806.44732 -7381.70941 -6700.51371
## 367 368 369 370 371 372
## -105.02103 -1152.81112 262.84362 187.84289 -3810.20309 -9234.53414
## 373 374 375 376 377 378
## -4513.98480 8530.30963 -4993.23561 281.79516 -5285.82875 -2326.51477
## 379 380 381 382 383 384
## -5318.41286 1061.93877 -5206.63268 -6820.17846 -5164.35197 7403.48977
## 385 386 387 388 389 390
## -5156.47440 34631.47103 4637.61917 1377.37785 3841.53606 -1186.40800
## 391 392 393 394 395 396
## -2775.95445 3503.69092 15631.95367 -6397.61236 3262.48757 -4490.57655
## 397 398 399 400 401 402
## -5241.56754 -6985.58986 38.16774 2594.70641 -379.16025 -5362.69260
## 403 404 405 406 407 408
## 8793.42898 -192.69858 -3459.20673 5261.63126 -4897.79257 -4199.68041
## 409 410 411 412 413 414
## -4367.01800 -3306.05516 12492.84451 -6906.52083 -6133.81604 6362.37062
## 415 416 417 418 419 420
## -4412.16151 -4797.07386 1817.23406 -6124.07035 -6190.24210 -5173.33694
## 421 422 423 424 425 426
## -909.34539 5934.55534 -419.95587 -7264.41145 4700.51018 -1330.37195
## 427 428 429 430 431 432
## 11471.80504 -7986.18281 -4714.85245 -1974.52058 2154.06110 13562.27414
## 433 434 435 436 437 438
## -1367.65961 -5461.20233 -4199.10263 -2524.77555 -5991.80246 -5195.39823
## 439 440 441 442 443 444
## -2492.84267 5743.43202 -7520.39769 -7146.51284 8954.21155 289.63240
## 445
## -4220.07425
## 2nd and best way
estData <- broom::augment(mod, newdata = lalonde)
estData
## # A tibble: 445 × 14
## age educ black hisp married nodegr re74 re75 re78 u74 u75 treat
## <int> <int> <int> <int> <int> <int> <dbl> <dbl> <dbl> <int> <int> <int>
## 1 37 11 1 0 1 1 0 0 9930. 1 1 1
## 2 22 9 0 1 0 1 0 0 3596. 1 1 1
## 3 30 12 1 0 0 0 0 0 24910. 1 1 1
## 4 27 11 1 0 0 1 0 0 7506. 1 1 1
## 5 33 8 1 0 0 1 0 0 290. 1 1 1
## 6 22 9 1 0 0 1 0 0 4056. 1 1 1
## 7 23 12 1 0 0 0 0 0 0 1 1 1
## 8 32 11 1 0 0 1 0 0 8472. 1 1 1
## 9 22 16 1 0 0 0 0 0 2164. 1 1 1
## 10 33 12 0 0 1 0 0 0 12418. 1 1 1
## # ℹ 435 more rows
## # ℹ 2 more variables: .fitted <dbl>, .resid <dbl>
res1 <- fun_FRT(Y = estData$.resid, A = estData$treat)
res1
## [[1]]
## # A tibble: 1,000 × 1
## stat
## <dbl>
## 1 1.24
## 2 0.0172
## 3 -1.13
## 4 0.963
## 5 -0.184
## 6 0.455
## 7 -0.827
## 8 -0.762
## 9 0.563
## 10 2.44
## # ℹ 990 more rows
##
## [[2]]
## # A tibble: 1 × 1
## p
## <dbl>
## 1 0.007
res1 <- list()
set.seed(100)
for(i in 1:500) {
lalonde_n <- lalonde %>%
mutate(A = sample(treat, size = n(), replace = F))
mod_s <- lm(re78 ~ . - treat, data = lalonde_n)
res1[[i]] <- coefficients(mod_s)["A"]
}
res1
## [[1]]
## A
## 66.05447
##
## [[2]]
## A
## -113.6653
##
## [[3]]
## A
## -91.76918
##
## [[4]]
## A
## -213.1234
##
## [[5]]
## A
## 140.9742
##
## [[6]]
## A
## 471.3521
##
## [[7]]
## A
## -605.5254
##
## [[8]]
## A
## -659.8794
##
## [[9]]
## A
## 690.5737
##
## [[10]]
## A
## -785.3561
##
## [[11]]
## A
## 63.14889
##
## [[12]]
## A
## 182.8178
##
## [[13]]
## A
## -281.2834
##
## [[14]]
## A
## -308.2917
##
## [[15]]
## A
## 1697.68
##
## [[16]]
## A
## 867.248
##
## [[17]]
## A
## -32.24963
##
## [[18]]
## A
## 942.6121
##
## [[19]]
## A
## -578.9598
##
## [[20]]
## A
## 446.4653
##
## [[21]]
## A
## -1158.553
##
## [[22]]
## A
## -632.3341
##
## [[23]]
## A
## 502.7908
##
## [[24]]
## A
## 141.4948
##
## [[25]]
## A
## -286.6895
##
## [[26]]
## A
## 409.3248
##
## [[27]]
## A
## 8.636311
##
## [[28]]
## A
## -721.3419
##
## [[29]]
## A
## -469.6626
##
## [[30]]
## A
## -63.14419
##
## [[31]]
## A
## -148.132
##
## [[32]]
## A
## 2054.757
##
## [[33]]
## A
## 775.0675
##
## [[34]]
## A
## -1075.856
##
## [[35]]
## A
## -220.0048
##
## [[36]]
## A
## 242.3467
##
## [[37]]
## A
## 926.9163
##
## [[38]]
## A
## 209.3311
##
## [[39]]
## A
## -633.595
##
## [[40]]
## A
## -490.8118
##
## [[41]]
## A
## -129.6891
##
## [[42]]
## A
## 263.329
##
## [[43]]
## A
## 155.1403
##
## [[44]]
## A
## -605.3427
##
## [[45]]
## A
## 97.80531
##
## [[46]]
## A
## 1122.096
##
## [[47]]
## A
## 784.3197
##
## [[48]]
## A
## -64.32241
##
## [[49]]
## A
## 1381.973
##
## [[50]]
## A
## 374.3534
##
## [[51]]
## A
## 258.5779
##
## [[52]]
## A
## 509.2898
##
## [[53]]
## A
## 680.1677
##
## [[54]]
## A
## 944.2358
##
## [[55]]
## A
## 112.1028
##
## [[56]]
## A
## 1165.506
##
## [[57]]
## A
## -661.4141
##
## [[58]]
## A
## 672.6627
##
## [[59]]
## A
## 359.6226
##
## [[60]]
## A
## -156.6569
##
## [[61]]
## A
## -553.7129
##
## [[62]]
## A
## 16.24596
##
## [[63]]
## A
## -106.0356
##
## [[64]]
## A
## 148.4261
##
## [[65]]
## A
## -46.31572
##
## [[66]]
## A
## -908.4822
##
## [[67]]
## A
## 324.5564
##
## [[68]]
## A
## -562.3346
##
## [[69]]
## A
## 1473.534
##
## [[70]]
## A
## -16.56955
##
## [[71]]
## A
## -281.8012
##
## [[72]]
## A
## 1415.02
##
## [[73]]
## A
## -1850.082
##
## [[74]]
## A
## 72.11073
##
## [[75]]
## A
## 390.2092
##
## [[76]]
## A
## 1614.478
##
## [[77]]
## A
## -268.7432
##
## [[78]]
## A
## -612.8481
##
## [[79]]
## A
## -123.4329
##
## [[80]]
## A
## 434.6072
##
## [[81]]
## A
## -641.3223
##
## [[82]]
## A
## 334.6059
##
## [[83]]
## A
## -102.0074
##
## [[84]]
## A
## 487.94
##
## [[85]]
## A
## -188.2482
##
## [[86]]
## A
## -405.0941
##
## [[87]]
## A
## -823.0153
##
## [[88]]
## A
## 10.50086
##
## [[89]]
## A
## 201.977
##
## [[90]]
## A
## 292.9196
##
## [[91]]
## A
## -77.75123
##
## [[92]]
## A
## 247.2636
##
## [[93]]
## A
## -1015.611
##
## [[94]]
## A
## -943.2803
##
## [[95]]
## A
## 28.45914
##
## [[96]]
## A
## -957.4054
##
## [[97]]
## A
## -25.3347
##
## [[98]]
## A
## 130.4186
##
## [[99]]
## A
## 121.7164
##
## [[100]]
## A
## -187.3322
##
## [[101]]
## A
## 293.4802
##
## [[102]]
## A
## -530.9342
##
## [[103]]
## A
## 287.3895
##
## [[104]]
## A
## 206.9525
##
## [[105]]
## A
## -329.4872
##
## [[106]]
## A
## 386.0107
##
## [[107]]
## A
## 637.5518
##
## [[108]]
## A
## 944.7741
##
## [[109]]
## A
## -380.1261
##
## [[110]]
## A
## 330.8401
##
## [[111]]
## A
## 172.5047
##
## [[112]]
## A
## -739.2983
##
## [[113]]
## A
## 264.5795
##
## [[114]]
## A
## -517.9332
##
## [[115]]
## A
## 736.8732
##
## [[116]]
## A
## -959.3757
##
## [[117]]
## A
## 116.9961
##
## [[118]]
## A
## -237.7446
##
## [[119]]
## A
## -6.531052
##
## [[120]]
## A
## -57.80981
##
## [[121]]
## A
## 159.7923
##
## [[122]]
## A
## -705.1892
##
## [[123]]
## A
## 300.3208
##
## [[124]]
## A
## 555.6338
##
## [[125]]
## A
## 419.6932
##
## [[126]]
## A
## -398.6607
##
## [[127]]
## A
## -579.5169
##
## [[128]]
## A
## 1987.144
##
## [[129]]
## A
## 565.9161
##
## [[130]]
## A
## 213.81
##
## [[131]]
## A
## -589.8423
##
## [[132]]
## A
## -1029.885
##
## [[133]]
## A
## -642.6676
##
## [[134]]
## A
## -612.6775
##
## [[135]]
## A
## 462.7963
##
## [[136]]
## A
## 224.2919
##
## [[137]]
## A
## -428.5049
##
## [[138]]
## A
## -287.9008
##
## [[139]]
## A
## 192.9521
##
## [[140]]
## A
## 146.507
##
## [[141]]
## A
## 119.2881
##
## [[142]]
## A
## -663.9189
##
## [[143]]
## A
## 87.06965
##
## [[144]]
## A
## -399.5818
##
## [[145]]
## A
## -99.58102
##
## [[146]]
## A
## 13.17562
##
## [[147]]
## A
## 144.1305
##
## [[148]]
## A
## -240.6245
##
## [[149]]
## A
## -843.9004
##
## [[150]]
## A
## 965.8031
##
## [[151]]
## A
## 13.31286
##
## [[152]]
## A
## 317.2717
##
## [[153]]
## A
## -155.1309
##
## [[154]]
## A
## 700.8803
##
## [[155]]
## A
## -892.4155
##
## [[156]]
## A
## -454.5984
##
## [[157]]
## A
## -140.4079
##
## [[158]]
## A
## -195.5335
##
## [[159]]
## A
## 202.2339
##
## [[160]]
## A
## 225.7401
##
## [[161]]
## A
## 39.25384
##
## [[162]]
## A
## -257.3205
##
## [[163]]
## A
## 557.8326
##
## [[164]]
## A
## 804.1909
##
## [[165]]
## A
## 252.1739
##
## [[166]]
## A
## 921.0727
##
## [[167]]
## A
## 1036.484
##
## [[168]]
## A
## 487.0155
##
## [[169]]
## A
## 674.3787
##
## [[170]]
## A
## -415.4164
##
## [[171]]
## A
## 84.36327
##
## [[172]]
## A
## -713.5484
##
## [[173]]
## A
## -330.2761
##
## [[174]]
## A
## -913.1129
##
## [[175]]
## A
## 1206.603
##
## [[176]]
## A
## -807.1853
##
## [[177]]
## A
## -58.32316
##
## [[178]]
## A
## 271.5442
##
## [[179]]
## A
## 361.367
##
## [[180]]
## A
## -738.2631
##
## [[181]]
## A
## 1247.94
##
## [[182]]
## A
## 85.59053
##
## [[183]]
## A
## 1018.023
##
## [[184]]
## A
## -96.12453
##
## [[185]]
## A
## 416.7309
##
## [[186]]
## A
## -711.209
##
## [[187]]
## A
## 29.17745
##
## [[188]]
## A
## -209.9639
##
## [[189]]
## A
## -1719.571
##
## [[190]]
## A
## 558.0898
##
## [[191]]
## A
## 19.94923
##
## [[192]]
## A
## -398.5289
##
## [[193]]
## A
## -834.6078
##
## [[194]]
## A
## 1313.749
##
## [[195]]
## A
## 271.4056
##
## [[196]]
## A
## -145.501
##
## [[197]]
## A
## 46.06664
##
## [[198]]
## A
## 1231.735
##
## [[199]]
## A
## 468.4947
##
## [[200]]
## A
## 528.1817
##
## [[201]]
## A
## -1229.222
##
## [[202]]
## A
## 56.62934
##
## [[203]]
## A
## 217.5864
##
## [[204]]
## A
## -162.1189
##
## [[205]]
## A
## 914.5572
##
## [[206]]
## A
## 181.757
##
## [[207]]
## A
## -24.50433
##
## [[208]]
## A
## 43.62679
##
## [[209]]
## A
## 720.8048
##
## [[210]]
## A
## -684.8425
##
## [[211]]
## A
## 518.7947
##
## [[212]]
## A
## -712.324
##
## [[213]]
## A
## 942.0825
##
## [[214]]
## A
## 158.0256
##
## [[215]]
## A
## -379.8432
##
## [[216]]
## A
## 842.2654
##
## [[217]]
## A
## 1287.246
##
## [[218]]
## A
## -248.7993
##
## [[219]]
## A
## -198.0328
##
## [[220]]
## A
## -685.9907
##
## [[221]]
## A
## -46.28095
##
## [[222]]
## A
## 943.0708
##
## [[223]]
## A
## -90.52343
##
## [[224]]
## A
## 134.2142
##
## [[225]]
## A
## -824.1603
##
## [[226]]
## A
## 73.05398
##
## [[227]]
## A
## 27.51404
##
## [[228]]
## A
## 912.8358
##
## [[229]]
## A
## -729.1544
##
## [[230]]
## A
## 1165.121
##
## [[231]]
## A
## -586.1886
##
## [[232]]
## A
## 228.2474
##
## [[233]]
## A
## 86.01514
##
## [[234]]
## A
## -324.1238
##
## [[235]]
## A
## 141.2199
##
## [[236]]
## A
## -590.2103
##
## [[237]]
## A
## -418.7175
##
## [[238]]
## A
## 117.8619
##
## [[239]]
## A
## 57.4512
##
## [[240]]
## A
## -453.403
##
## [[241]]
## A
## 632.974
##
## [[242]]
## A
## 784.3844
##
## [[243]]
## A
## 897.4997
##
## [[244]]
## A
## -339.5268
##
## [[245]]
## A
## -498.7917
##
## [[246]]
## A
## -95.13365
##
## [[247]]
## A
## 288.3894
##
## [[248]]
## A
## -296.5924
##
## [[249]]
## A
## 1551.619
##
## [[250]]
## A
## -980.7171
##
## [[251]]
## A
## 129.2284
##
## [[252]]
## A
## 249.9609
##
## [[253]]
## A
## -1180.206
##
## [[254]]
## A
## -697.4946
##
## [[255]]
## A
## 738.189
##
## [[256]]
## A
## -16.72748
##
## [[257]]
## A
## -12.70111
##
## [[258]]
## A
## -5.668872
##
## [[259]]
## A
## 440.1413
##
## [[260]]
## A
## -15.11824
##
## [[261]]
## A
## 264.5417
##
## [[262]]
## A
## 1414.8
##
## [[263]]
## A
## -187.4039
##
## [[264]]
## A
## 163.7146
##
## [[265]]
## A
## -202.8112
##
## [[266]]
## A
## 603.3834
##
## [[267]]
## A
## 8.265526
##
## [[268]]
## A
## 432.2541
##
## [[269]]
## A
## -84.72551
##
## [[270]]
## A
## -120.1497
##
## [[271]]
## A
## 1097.676
##
## [[272]]
## A
## -595.4002
##
## [[273]]
## A
## 489.9777
##
## [[274]]
## A
## -527.3288
##
## [[275]]
## A
## 831.3689
##
## [[276]]
## A
## 157.6372
##
## [[277]]
## A
## 455.1103
##
## [[278]]
## A
## 73.60286
##
## [[279]]
## A
## -140.5726
##
## [[280]]
## A
## 142.3358
##
## [[281]]
## A
## -145.6653
##
## [[282]]
## A
## 1106.019
##
## [[283]]
## A
## 32.56575
##
## [[284]]
## A
## -239.2024
##
## [[285]]
## A
## -1414.086
##
## [[286]]
## A
## -245.4396
##
## [[287]]
## A
## -999.5688
##
## [[288]]
## A
## 81.89557
##
## [[289]]
## A
## -199.7149
##
## [[290]]
## A
## 1275.157
##
## [[291]]
## A
## 426.3478
##
## [[292]]
## A
## -151.0131
##
## [[293]]
## A
## -328.9937
##
## [[294]]
## A
## 144.1821
##
## [[295]]
## A
## -345.3031
##
## [[296]]
## A
## 442.3834
##
## [[297]]
## A
## -1063.458
##
## [[298]]
## A
## -209.6456
##
## [[299]]
## A
## -235.6239
##
## [[300]]
## A
## -1210.055
##
## [[301]]
## A
## 553.7294
##
## [[302]]
## A
## -978.5225
##
## [[303]]
## A
## -634.8322
##
## [[304]]
## A
## 368.6036
##
## [[305]]
## A
## 650.7982
##
## [[306]]
## A
## 493.24
##
## [[307]]
## A
## -404.9121
##
## [[308]]
## A
## 819.8974
##
## [[309]]
## A
## 820.796
##
## [[310]]
## A
## 994.473
##
## [[311]]
## A
## 524.8135
##
## [[312]]
## A
## -21.9187
##
## [[313]]
## A
## 175.9918
##
## [[314]]
## A
## -1008.33
##
## [[315]]
## A
## -153.9023
##
## [[316]]
## A
## -952.5459
##
## [[317]]
## A
## -165.4528
##
## [[318]]
## A
## -417.8763
##
## [[319]]
## A
## -386.6656
##
## [[320]]
## A
## 41.34154
##
## [[321]]
## A
## -1285.265
##
## [[322]]
## A
## 269.7467
##
## [[323]]
## A
## -433.2725
##
## [[324]]
## A
## -371.9149
##
## [[325]]
## A
## 452.3918
##
## [[326]]
## A
## -511.1743
##
## [[327]]
## A
## 335.7056
##
## [[328]]
## A
## 141.305
##
## [[329]]
## A
## -825.2939
##
## [[330]]
## A
## -147.3167
##
## [[331]]
## A
## -145.6144
##
## [[332]]
## A
## -472.1275
##
## [[333]]
## A
## -300.1277
##
## [[334]]
## A
## 95.24496
##
## [[335]]
## A
## 714.7523
##
## [[336]]
## A
## -419.0102
##
## [[337]]
## A
## 792.1904
##
## [[338]]
## A
## 14.38992
##
## [[339]]
## A
## 481.1871
##
## [[340]]
## A
## 515.5395
##
## [[341]]
## A
## -652.2129
##
## [[342]]
## A
## 625.2532
##
## [[343]]
## A
## 778.7014
##
## [[344]]
## A
## 863.2858
##
## [[345]]
## A
## 861.0631
##
## [[346]]
## A
## -858.7755
##
## [[347]]
## A
## 390.5651
##
## [[348]]
## A
## 305.0473
##
## [[349]]
## A
## -449.9604
##
## [[350]]
## A
## 749.1389
##
## [[351]]
## A
## -170.1839
##
## [[352]]
## A
## -95.74228
##
## [[353]]
## A
## 71.52542
##
## [[354]]
## A
## -1020.475
##
## [[355]]
## A
## 643.4905
##
## [[356]]
## A
## 980.2366
##
## [[357]]
## A
## 787.035
##
## [[358]]
## A
## 731.663
##
## [[359]]
## A
## -353.3338
##
## [[360]]
## A
## -695.3924
##
## [[361]]
## A
## -81.63295
##
## [[362]]
## A
## 73.52
##
## [[363]]
## A
## -276.9304
##
## [[364]]
## A
## 443.5252
##
## [[365]]
## A
## 662.947
##
## [[366]]
## A
## -203.3023
##
## [[367]]
## A
## 149.7133
##
## [[368]]
## A
## 632.9308
##
## [[369]]
## A
## -114.8507
##
## [[370]]
## A
## 74.61184
##
## [[371]]
## A
## 853.7801
##
## [[372]]
## A
## 182.654
##
## [[373]]
## A
## -292.9115
##
## [[374]]
## A
## 698.9286
##
## [[375]]
## A
## 1178.12
##
## [[376]]
## A
## -266.5537
##
## [[377]]
## A
## 830.1311
##
## [[378]]
## A
## -750.274
##
## [[379]]
## A
## -651.7562
##
## [[380]]
## A
## -702.2432
##
## [[381]]
## A
## 582.8539
##
## [[382]]
## A
## -21.63603
##
## [[383]]
## A
## -469.4594
##
## [[384]]
## A
## -1037.074
##
## [[385]]
## A
## -58.97226
##
## [[386]]
## A
## 243.5284
##
## [[387]]
## A
## 164.1771
##
## [[388]]
## A
## 405.4249
##
## [[389]]
## A
## -1344.72
##
## [[390]]
## A
## -623.9568
##
## [[391]]
## A
## 350.0205
##
## [[392]]
## A
## 159.9289
##
## [[393]]
## A
## 155.1457
##
## [[394]]
## A
## -461.1445
##
## [[395]]
## A
## -85.62426
##
## [[396]]
## A
## 832.6441
##
## [[397]]
## A
## -848.382
##
## [[398]]
## A
## -134.2565
##
## [[399]]
## A
## -251.6364
##
## [[400]]
## A
## -664.0964
##
## [[401]]
## A
## -468.1463
##
## [[402]]
## A
## -49.22138
##
## [[403]]
## A
## -76.91984
##
## [[404]]
## A
## -320.3761
##
## [[405]]
## A
## 395.8724
##
## [[406]]
## A
## 109.334
##
## [[407]]
## A
## -337.5135
##
## [[408]]
## A
## 717.1054
##
## [[409]]
## A
## 702.5986
##
## [[410]]
## A
## -564.5642
##
## [[411]]
## A
## -188.9936
##
## [[412]]
## A
## -287.9507
##
## [[413]]
## A
## 1916.55
##
## [[414]]
## A
## 612.6224
##
## [[415]]
## A
## 220.7013
##
## [[416]]
## A
## 12.83211
##
## [[417]]
## A
## -729.4072
##
## [[418]]
## A
## 252.3679
##
## [[419]]
## A
## 838.2812
##
## [[420]]
## A
## 211.7105
##
## [[421]]
## A
## 717.9222
##
## [[422]]
## A
## -151.6067
##
## [[423]]
## A
## -175.5331
##
## [[424]]
## A
## 887.9908
##
## [[425]]
## A
## -136.5684
##
## [[426]]
## A
## 423.5403
##
## [[427]]
## A
## 1200.387
##
## [[428]]
## A
## -665.3687
##
## [[429]]
## A
## 328.4249
##
## [[430]]
## A
## -459.6049
##
## [[431]]
## A
## 176.7189
##
## [[432]]
## A
## -647.8855
##
## [[433]]
## A
## -317.3965
##
## [[434]]
## A
## 355.2094
##
## [[435]]
## A
## -1210.897
##
## [[436]]
## A
## -533.5167
##
## [[437]]
## A
## 57.23258
##
## [[438]]
## A
## 152.2181
##
## [[439]]
## A
## 331.2241
##
## [[440]]
## A
## 607.1667
##
## [[441]]
## A
## 102.6747
##
## [[442]]
## A
## 577.6833
##
## [[443]]
## A
## -720.8701
##
## [[444]]
## A
## 182.8281
##
## [[445]]
## A
## 52.55657
##
## [[446]]
## A
## 444.1893
##
## [[447]]
## A
## 79.18336
##
## [[448]]
## A
## -1254.47
##
## [[449]]
## A
## -269.49
##
## [[450]]
## A
## 516.5715
##
## [[451]]
## A
## -246.9689
##
## [[452]]
## A
## -23.1056
##
## [[453]]
## A
## 40.16826
##
## [[454]]
## A
## 2197.291
##
## [[455]]
## A
## 10.69798
##
## [[456]]
## A
## -1555.684
##
## [[457]]
## A
## -325.8166
##
## [[458]]
## A
## -609.9764
##
## [[459]]
## A
## 379.6217
##
## [[460]]
## A
## 877.076
##
## [[461]]
## A
## 253.9645
##
## [[462]]
## A
## -530.1104
##
## [[463]]
## A
## -860.3629
##
## [[464]]
## A
## 432.7825
##
## [[465]]
## A
## -409.7336
##
## [[466]]
## A
## 247.6428
##
## [[467]]
## A
## -337.4301
##
## [[468]]
## A
## -1238.336
##
## [[469]]
## A
## 159.4662
##
## [[470]]
## A
## -66.93999
##
## [[471]]
## A
## 670.3898
##
## [[472]]
## A
## -786.3889
##
## [[473]]
## A
## 457.482
##
## [[474]]
## A
## -212.3561
##
## [[475]]
## A
## 788.2473
##
## [[476]]
## A
## -388.0646
##
## [[477]]
## A
## -227.1111
##
## [[478]]
## A
## 276.6012
##
## [[479]]
## A
## -287.2339
##
## [[480]]
## A
## 867.4942
##
## [[481]]
## A
## 295.174
##
## [[482]]
## A
## -1481.751
##
## [[483]]
## A
## -63.01531
##
## [[484]]
## A
## 512.7197
##
## [[485]]
## A
## 1257.141
##
## [[486]]
## A
## 959.0657
##
## [[487]]
## A
## -1086.602
##
## [[488]]
## A
## 890.4503
##
## [[489]]
## A
## -42.45197
##
## [[490]]
## A
## 560.5719
##
## [[491]]
## A
## -1414.248
##
## [[492]]
## A
## 292.9131
##
## [[493]]
## A
## 1134.361
##
## [[494]]
## A
## 322.6629
##
## [[495]]
## A
## 212.5617
##
## [[496]]
## A
## 420.621
##
## [[497]]
## A
## 169.5224
##
## [[498]]
## A
## -1028.443
##
## [[499]]
## A
## -335.9968
##
## [[500]]
## A
## -197.7704
hist(as.numeric(res1))
abs(as.numeric(res1))>abs(t1$statistic)
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [46] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [61] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [76] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [91] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [106] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [121] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [136] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [151] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [166] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [181] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [196] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [211] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [226] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [241] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [256] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [271] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [286] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [301] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [316] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [331] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [346] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [361] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [376] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [391] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [406] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [421] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [436] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [451] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [466] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [481] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [496] TRUE TRUE TRUE TRUE TRUE
mean(abs(as.numeric(res1))>abs(t1$statistic))
## [1] 1