楼主: Lnydi
6227 7

[问答] R语言nlminb运行总是出错,是我用错了吗? [推广有奖]

  • 2关注
  • 0粉丝

大专生

25%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
1.0656
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
588 点
帖子
33
精华
0
在线时间
34 小时
注册时间
2011-9-24
最后登录
2015-9-23

楼主
Lnydi 发表于 2015-4-2 10:18:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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使用有错误吗?


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

二维码

扫码加我 拉你入群

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

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

关键词:nlminb nlm Min R语言 DMS

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

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

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

报纸
Lnydi 发表于 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的参数呀



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


我原来是这么用的

藤椅
Lnydi 发表于 2015-4-2 10:46:55
fantuanxiaot 发表于 2015-4-2 10:42
ll 这个函数连数据都木有。。。。。
nlminb的极大似然估计那个函数的数据在那
数据是我产生的随机数,在ll函数的上面

沙发
fantuanxiaot 发表于 2015-4-2 10:42:54
ll 这个函数连数据都木有。。。。。
nlminb的极大似然估计那个函数的数据在那

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-20 07:16