我正在尝试通过模拟重现表格,该表格由两列组成:日期和成功次数。
---------------------
| Day | successes |
---------------------
| 2 | 12500 |
| 3 | 15900 |
| 4 | 18450 |
| 5 | 21000 |
| 6 | 23450 |
| 7 | 24000 |
| 8 | 25000 |
| 9 | 26050 |
| 10 | 26550 |
| 11 | 27500 |
| 12 | 27600 |
| 13 | 27600 |
| 14 | 28150 |
| 15 | 28500 |
---------------------
人口由两组组成,n.group1= 38700 and n.group2=11300
我正在等待时间,直到成功以指数方式分配,其中group1为the1,group2为theta2。并且出于某些理论原因theta1>theta2
我在r中使用rexp
生成时间,然后我将时间分类为日类别
对于这个porpuse,我使用两个不同的功能:
#cut function
c.fun <- function(m){
c <- cut(m, breaks = c(-Inf, 2:15, Inf), right = FALSE)
c <-as.data.frame(table(c))
c<- as.data.frame(c[-15,-1])
row.names(c) <- c(2:15)
colnames(c)="Freq"
return(c)
}
,第二个是
# using findInterval
find.int <- function(d){
d<-as.data.frame(table(findInterval(d, c(1:cat.end))))
d[2,2] <- sum(d[1:2,2]) # adding category 1 and 2 together
d <- d[-c(1, 16:cat.end),]
d$Var1<-NULL
return(d)
}
然后将它们总结为看起来像观察到的数据
get.total <- function(theta){
#group1
group1 <-rexp(n.group1, rate=theta[1])
#group2
group2 <-rexp(n.group2, rate=theta[2])
#Classifying
#group1
group1<-find.int(group1)
#or group1<-c.fun(group1)
#group2
group2<-find.int(group2)
#or group2<-c.fun(group2)
total <- data.frame(group1, group2)
colnames(total)<- c("group1", "group2")
total$group1 <- cumsum(total$group1)
total$group2 <- cumsum(total$group2)
total$total <- total$group1+total$group2
#total$total <- cumsum(total$total)
return(total$total)
}
然后计算均方误差并使用3d图来决定我应该选择哪个。
mse.fn <- function(theta){
mse(get.total(theta),observed.data$successes)
}
我从这两个功能得到不同的结果,我想知道哪一个是正确的?
另外,我正在使用optim
内置函数来找到最佳的theta组合,但是它给了我一个负面的theta2值,这是不现实的吗?
optim(theta<-c(0.1,0.1), mse.fn)$par
与optimx
optimx(theta<-c(0.1,0.1, mse.fn)
如果有人能看到我犯了错误的地方,我将不胜感激。