library(dplyr)
#data1:応募をよくするひと,data2:応募をあまりしない人
data1=data2=data.frame(num=1:100,monday=0,tuesday=0,wednesday=0,thursday=0,friday=0,saturday=0,sunday=0)
#だいたい2か月分
N=9;
sample_data=data.frame(num=1:N,monday=0,tuesday=0,wednesday=0,thursday=0,friday=0,saturday=0,sunday=0)
for(j in 2:ncol(data1)){
value=sample(1:9,1);p=value/10;q=1-p
data1[,(j)]=sample(0:1,nrow(data1),replace=TRUE,prob=c(p,q))
value=sample(1:9,1);p=value/10;q=1-p
data2[,(j)]=sample(0:1,nrow(data2),replace=TRUE,prob=c(p,q))
value=sample(1:9,1);p=value/10;q=1-p
sample_data[,(j)]=sample(0:1,N,replace=TRUE,prob=c(p,q))
}
p2=apply(data1[,2:ncol(data1)],2,sum)/nrow(data1);q2=1-p2
p1=apply(data2[,2:ncol(data2)],2,sum)/nrow(data2);q1=1-p1
#epsilon=q;1-epsilon=p;x1=0;x2=1;S=0;F=1;
P_y_x1=data.frame(monday=0,tuesday=0,wednesday=0,thursday=0,friday=0,saturday=0,sunday=0)
P_y_x2=data.frame(monday=0,tuesday=0,wednesday=0,thursday=0,friday=0,saturday=0,sunday=0)
P_y_x1[1,]=((1-q1)^apply(sample_data[,2:ncol(sample_data)],2,sum))*(q1^(N-apply(sample_data[,2:ncol(sample_data)],2,sum)))
P_y_x2[1,]=(p2^apply(sample_data[,2:ncol(sample_data)],2,sum))*((1-p2)^(N-apply(sample_data[,2:ncol(sample_data)],2,sum)))
P_F_y=P_y_x1/(P_y_x1+P_y_x2);P_S_y=P_y_x2/(P_y_x1+P_y_x2)
P_y_x1>P_y_x2
func=function(k){
z<-((1-q1)^k)*q1^(N-k)-(p2^k)*(1-p2)^(N-k)
return(z)
}
#p_y_x1=p_y_x2となる頻度
k_vec=c()
func_data=data.frame(terms=colnames(sample_data[,2:ncol(sample_data)]),upper=0,under=0)
for(l in 1:length(p1)){
times=100
newton_raphson=data.frame(times=1:times,value=0,f=0,df=0)
value=0
for(j in 1:nrow(newton_raphson)){
f<-func(value)[l];h=0.0001
df<-(func(value+h)[l]-func(value)[l])/h
newton_raphson$f[j]=f
newton_raphson$df[j]=df
value=-f/df+value
newton_raphson$value[j]=value
}
solution=min(newton_raphson$value[!(is.na(newton_raphson$value)>0)])
k_vec=c(k_vec,solution)
h=0.1
plot_data=data.frame(k=seq(0,N,0.1),p_y_x1=0,p_y_x2=0)
for(j in 1:nrow(plot_data)){
plot_data$p_y_x1[j]=((1-q1[l])^plot_data$k[j])*q1[l]^(N-plot_data$k[j])
plot_data$p_y_x2[j]=(p2[l]^plot_data$k[j])*(1-p2[l])^(N-plot_data$k[j])
}
func_data$upper[l]=func(solution+h)[l]
func_data$under[l]=func(solution-h)[l]
plot(plot_data$k,plot_data$p_y_x1,col=2,type="o",xlim=c(0,N),ylim=c(0,max(plot_data[,2:ncol(plot_data)])),xlab="k",ylab="prob",main=paste0(colnames(sample_data[,2:ncol(sample_data)][l])))
par(new=T)
plot(plot_data$k,plot_data$p_y_x2,col=3,type="o",xlim=c(0,N),ylim=c(0,max(plot_data[,2:ncol(plot_data)])),xlab="k",ylab="prob",main=paste0(colnames(sample_data[,2:ncol(sample_data)][l])))
}
k_vec
P_e_F=P_e_S=data.frame(terms=colnames(sample_data[,2:ncol(sample_data)]),prob=0)
pbinom=function(p,q,r){
z<-0
for(n in p:q){
z<-z+(factorial(N)/(factorial(N-n)*factorial(n)))*(r^n)*((1-r)^(N-n))
}
return(z)
}
for(l in 1:nrow(P_e_F)){
if(k_vec[l]>=0 & k_vec[l]<=N){
if(func_data$upper[l]>func_data$under[l]){
P_e_S$prob[l]=pbinom(0,floor(k_vec[l]),1-q1[l])
P_e_F$prob[l]=pbinom(floor(k_vec[l])+1,N,p2[l])
}else{
P_e_S$prob[l]=pbinom(floor(k_vec[l])+1,N,1-q1[l])
P_e_F$prob[l]=pbinom(0,floor(k_vec[l]),p2[l])
}
}else{
if(k_vec[l]<0){
if(func_data$upper[l]>func_data$under[l]){
P_e_F$prob[l]=pbinom(0,N,1-q1[l])
}else{
P_e_S$prob[l]=pbinom(0,N,p2[l])
}
}else{
if(func_data$upper[l]>func_data$under[l]){
P_e_S$prob[l]=pbinom(0,N,p2[l])
}else{
P_e_F$prob[l]=pbinom(0,N,1-q1[l])
}
}
}
}
colnames(P_e_S)=c("terms","prob_S");colnames(P_e_F)=c("terms","prob_F");
P_e_F_S=left_join(P_e_S,P_e_F)
P_e_F_S=P_e_F_S %>% dplyr::mutate(P_e=(1/2)*(prob_S+prob_F))