-
Notifications
You must be signed in to change notification settings - Fork 0
/
Method_exp2.R
59 lines (31 loc) · 1.18 KB
/
Method_exp2.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Method_exp2<- function(SimData){
Y<-SimData$Y
A<-SimData$A
X1<-SimData$X1
X2<-SimData$X2
X3<-SimData$X3
PS <- glm(A ~ X1 , family = binomial(link = "probit"), data = SimData)
PS <- PS$fitted.values
quintiles<-quantile(PS, probs = seq(0,1,0.2), names = F)
#Method 1: Stratification
strata<-list()
EEstrata<-c()
for (i in 1:5) {
rows<-which(PS>=quintiles[i] & PS<quintiles[i+1])
strata[[i]]<-SimData[rows,]
model<-glm(formula = Y ~ 1 + A, family=poisson(link=log), data = strata[[i]])
EEstrata[i]<-model$coefficients[length(model$coefficients)]
}
gamma0<-mean(EEstrata)
#Method 2 Spline
bPS<-splines2::bSpline(PS, knots = quantile(PS, names = F)[2:4] ) #bs(PS, knots=quantile(PS, names = F)[2,4])
k<-NCOL(bPS)
colnames(bPS)<- paste0("B",1:k)
SimData<-cbind(SimData,bPS)
model2<-glm(formula = Y ~ 1 + B1 + B2 + B3 + B4 +B5 +B6 + A, family=poisson(link=log), data = SimData)
gamma1<-model2$coefficients[length(model2$coefficients)]
c<-0 #DescTools::Cstat(model2)
output<-c(gamma0, gamma1, c=c)
return(output)
}
#=======