全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1822 2
2020-05-23
请问一下大佬们,我用的全概率模型求极大似然,但是一直运行出来是NA in the initial gradient,不知道什么原因,公式应该没写错,数据有1000个也不多,都是10-100的数。换了几个初值都不行。
x0 <- read.csv("C:/Users/li--hai/Desktop/WXW/……")
> dat0 <- x0age>n<−length(dat0)>Z0<−x0Covariate
> # 令z1=(1,1)',z2=(1,0)',z3=(0,1)',z4=(0,0)'
> f1 <- function(beta) {
+   # 令β=(β1,β2),构造出m(1),m(2),m(3),m(4)
+   m <- 0
+   for(i in 1:n){
+     if(Z0[i]==1){
+     m[i] <- exp(1)
+     }
+     else if(Z0[i]==2){
+       m[i] <- exp(beta[2])
+     }
+     else if(Z0[i]==3){
+       m[i] <- exp(beta[3])
+     }
+     else{
+       m[i] <- exp(beta[2]+beta[3])
+     }
+   }
+   # 带入pdf,相乘取对数
+   f <- 0
+   for(i in 1:n){
+     f[i] <- beta[1]*m[i]*exp(-beta[1]*dat0[i]*m[i])
+   }
+   return(log(prod(f)))
+ }
> maxLik(f1, start=c(0.001,0,0))$estimate
Error in maxNRCompute(fn = function (theta, fnOrig, gradOrig = NULL, hessOrig = NULL,  :
   NA in the initial gradient

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-5-23 16:07:36
> x0 <- read.csv("C:/Users/li--hai/Desktop/WXW/2020疫情学习/非寿险/作业5/Death data.csv")
> dat0 <- x0$age
> n <- length(dat0)
> Z0 <- x0$Covariate
> # 令z1=(1,1)',z2=(1,0)',z3=(0,1)',z4=(0,0)'
> f1 <- function(beta) {
+   # 令β=(β1,β2),构造出m(1),m(2),m(3),m(4)
+   m <- 0
+   for(i in 1:n){
+     if(Z0[i]==1){
+     m[i] <- exp(1)
+     }
+     else if(Z0[i]==2){
+       m[i] <- exp(beta[2])
+     }
+     else if(Z0[i]==3){
+       m[i] <- exp(beta[3])
+     }
+     else{
+       m[i] <- exp(beta[2]+beta[3])
+     }
+   }
+   # 带入pdf,相乘取对数
+   f <- 0
+   for(i in 1:n){
+     f[i] <- beta[1]*m[i]*exp(-beta[1]*dat0[i]*m[i])
+   }
+   return(log(prod(f)))
+ }
> maxLik(f1, start=c(0.001,0,0))$estimate
Error in maxNRCompute(fn = function (theta, fnOrig, gradOrig = NULL, hessOrig = NULL,  :
  NA in the initial gradient
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-23 16:43:19
把return里面的改成sum(log(f)),就能算出来,可能是量级的问题
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群