全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
14787 1
2010-11-30
R的似然估计 nlm 怎么使用吖  谢谢O(∩_∩)O哈!


例如下面这个题



某分布的密度函数如下:

X

1

2

>2


Probability

2
q
2
q2

1 - 2
q - 2q2


(0 (0<θ< 0.365)

先抽取样本如下:

X
数量





1


630



2

200




>2


170

利用nlm对参数θ进行极大似然估计。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-30 15:49:17
nlm函数的表达式是——
nlm(f, p, ..., hessian = FALSE, typsize = rep(1, length(p)),
    fscale = 1, print.level = 0, ndigit = 12, gradtol = 1e-6,
    stepmax = max(1000 * sqrt(sum((p/typsize)^2)), 1000),
    steptol = 1e-6, iterlim = 100, check.analyticals = TRUE)


给你找了一个例子

该例子引自:

http://www.unc.edu/courses/2010fall/ecol/563/001/docs/lectures/lecture10.htm#Rcode


## 实例: 假设有以下数据, 记录每个枝条上蚜虫的数量,该数据出自

##Krebs, Charles. 1999. Ecological Methodology.

## Menlo Park, CA: Addison-Wesley. 130页

###########################################################

#######################原始数据############################

###########################################################

### 数据导入

num.stems <- c(6,8,9,6,6,2,5,3,1,4)

aphids_count <- c(0,1,2,3,4,5,6,7,8,9)

aphids <- data.frame(aphids_count, num.stems)

### Raw Data,整理出二项分布拟合所需要的格式

aphids_raw <- rep(aphids_count, num.stems)

###########################################################

####################写出对数似然函数#######################

###########################################################

## 二项分布的对数似然函数,用来绘制对数似然曲线和趋势面

nnominb.loglik <- function(p) {

res <- sum(log(dnbinom(aphids_raw, mu = p[1], size = p[2])))

return(res)

}

## 二项分布的负对数似然函数,nlm()函数只能求最小值,因此极大

## 似然值时必须用到此函数

neg.nnominb.loglik <- function(p) {

res <- sum(log(dnbinom(aphids_raw, mu = p[1], size = p[2])))

return(-res)

}

###########################################################

###################估计对数似然函数极值####################

###########################################################

#利用nlm估计极值

out.NB <- nlm(neg.nnominb.loglik, c(4,4))

# estimate 是对两个参数的估计,即对neg.nnominb.loglik函数参数p的估计

out.NB

###########################################################

###################图 1 ##绘制似然曲线#####################

###########################################################

### x 序列

x <- seq(0.1, 10, by = 0.1)

### 计算y

y_max <- sapply(x, function(x) nnominb.loglik(p = c(out.NB$estimate[1], x)))

plot(y_max ~ x, type = "l", ylab = "Log Likelihood", xlab = "Size")

### 当mu = 2时

y_2 <- sapply(x, function(x) nnominb.loglik(p = c(2, x)))

lines(y_2 ~ x, col = 2)

### 当mu = 5时

y_5 <- sapply(x, function(x) nnominb.loglik(p = c(5, x)))

lines(y_5 ~ x, col = 3)

### 添加图例


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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