全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6117 7
2015-04-02
dmst <- function(x, mu=0, sigma=1, v, alpha, log=FALSE)
{       
        t <- (x-mu)/sigma
        logf <- log(gamma((v+1)/2)) - log(gamma(v/2)) - 1/2*log(v*pi) -log(sigma) - (v+1)/2*log(1+t^2/v)
        F <- pt(t,v)
        logg <- log(alpha) + logf - 2*log(F+alpha-alpha*F)

        if(log)  logg else exp(logg)
}
##这是一个密度函数------------------------------------------
rmst <- function(n, mu=0, sigma=1, v, alpha)
{        
        u <- runif(n, 0, 1)
        t <-  alpha * u /( alpha*u-u+1)
        x <- qt(t, v)        
        x <- mu + sigma*x
        x
}
### 产生某分布的随机数----------------------------

library(stats)
n <- 1
set.seed(0)
x <- rmst(n, mu=0, sigma=1, v=3, alpha=0.1)
ll <- function( dp)
{
        ll <- sum( dmst(x, dp[1], dp[2], dp[3], dp[4], log=TRUE))
-ll
}
p.start = c(0,1,3,1)
nlminb(p.start, ll)
## 相对产生的随机数进行极大似然估计得到分布的参数估计,但总会出现警告,是nlminb使用有错误吗?


##还是其他什么问题?
##求帮助,先谢过

二维码

扫码加我 拉你入群

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

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

全部回复
2015-4-11 13:48:19
Lnydi 发表于 2015-4-2 11:03
ll
我知道问题在哪了
参数要求非负,因此只要增加非负的限定就可以了
二维码

扫码加我 拉你入群

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

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

2015-4-11 13:48:11
Lnydi 发表于 2015-4-2 11:03
ll
我知道问题在哪了
参数要求非负,因此只要增加非负的限定就可以了
二维码

扫码加我 拉你入群

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

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

2015-4-2 20:45:12
感谢邀请我来解答这个问题,但非常抱歉R我没接触过,所以没法给你解答。上面大神的解答希望能够帮到你。同时,有兴趣请关照我的帖子https://bbs.pinggu.org/thread-3641714-1-1.html,关注经管代码库的成长。经管代码库才成立不久,迫切需要人才来协助发展。
二维码

扫码加我 拉你入群

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

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

2015-4-2 11:03:12
fantuanxiaot 发表于 2015-4-2 10:51
II函数的写法
ll
ll <- function(dp,x)
{
        ll <- sum( dmst(x, dp[1], dp[2], dp[3], dp[4], log=TRUE))
-ll
}
p.start = c(0,1,3,1)
nlminb(p.start, ll, data=FALSE)

提示说:参数没有用(data = FALSE)
没有data=FALSE的参数呀



二维码

扫码加我 拉你入群

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

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

2015-4-2 10:51:00
Lnydi 发表于 2015-4-2 10:46
数据是我产生的随机数,在ll函数的上面
II函数的写法
ll <- function( 参数,数据)
{
   log求和
}
否则nlminb难以识别nlminb(p.start, ll,data=FALSE)就行


我原来是这么用的
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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