楼主: bbyyoo
8111 9

R 循环语句的问题,求助! [推广有奖]

  • 0关注
  • 0粉丝

PHD

博士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
3533 个
通用积分
1.8600
学术水平
5 点
热心指数
9 点
信用等级
2 点
经验
7070 点
帖子
336
精华
0
在线时间
151 小时
注册时间
2009-5-14
最后登录
2019-11-22

5论坛币
大侠:

    我的数据框是由256列构成的(名称为bb1,bb2, bb3,..., bb256),我要对每一列分别作极大似然估计,用命令一个一个处理太费时间了,想请教一下怎样用for循环啊,我写个代码,但不知道错在哪里,

for(i in 6:256(bb)){

dd.res<-nlminb(c(4,2),LL,data=bb[i],lower=c(0.0001,-Inf,0.0001,Inf,-Inf,0.0001),upper=c(15,Inf,Inf,Inf,Inf))
+ dd.res$par
+ }
错误: 不适用于非函数


谢谢!

最佳答案

tf2000 查看完整内容

首先要解决一个问题:在循环语句中的那个命令 nlminb(c(4,2),LL,data=bb,lower=c(0.0001,-Inf,0.0001,Inf,-Inf,0.0001),upper=c(15,Inf,Inf,Inf,Inf)) 是不是正确的? 如果是正确的,那就是出现在循环语句中 请检查“bb”,这个似乎不对,应该是bb[,i](如果是用列数据的话) 另外dd.res也应该是个list吧,似乎没有定义
关键词:循环语句 极大似然估计 for循环 似然估计 极大似然 求助 语句

回帖推荐

tf2000 发表于2楼  查看完整内容

首先要解决一个问题:在循环语句中的那个命令 nlminb(c(4,2),LL,data=bb,lower=c(0.0001,-Inf,0.0001,Inf,-Inf,0.0001),upper=c(15,Inf,Inf,Inf,Inf)) 是不是正确的? 如果是正确的,那就是出现在循环语句中 请检查“bb”,这个似乎不对,应该是bb[,i](如果是用列数据的话) 另外dd.res也应该是个list吧,似乎没有定义

tf2000 发表于10楼  查看完整内容

还有一个简单的方法,用apply函数 例如 apply(bb,2,FUNCTION,...) 具体用法参见help

zjj8211 发表于9楼  查看完整内容

# define likelihood function(normal distribution) log.likelihood
沙发
tf2000 发表于 2009-7-28 23:40:35 |只看作者 |坛友微信交流群
首先要解决一个问题:在循环语句中的那个命令
nlminb(c(4,2),LL,data=bb[i],lower=c(0.0001,-Inf,0.0001,Inf,-Inf,0.0001),upper=c(15,Inf,Inf,Inf,Inf))
是不是正确的?
如果是正确的,那就是出现在循环语句中
请检查“bb[i]”,这个似乎不对,应该是bb[,i](如果是用列数据的话)
另外dd.res也应该是个list吧,似乎没有定义
已有 1 人评分论坛币 热心指数 收起 理由
crystal8832 + 10 + 1 热心帮助其他会员

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

不要疑惑,只要信。

使用道具

藤椅
qiuguihua2000 发表于 2009-7-29 00:02:50 |只看作者 |坛友微信交流群
瞅瞅先。好久没有写程序了。
我帅,故,我在。

使用道具

板凳
liyi3344520 发表于 2009-7-29 00:17:32 |只看作者 |坛友微信交流群
关注中!!!!!!!!!
I must be strong and carry on'Cause I know I don't belong here in heaven...

使用道具

报纸
bbyyoo 发表于 2009-7-29 18:02:35 |只看作者 |坛友微信交流群
怎么都不会啊,

使用道具

地板
zjj8211 发表于 2009-7-30 09:37:53 |只看作者 |坛友微信交流群
直接用a[,i]提取每一列试试看呀

使用道具

7
bbyyoo 发表于 2009-7-30 11:18:03 |只看作者 |坛友微信交流群
哈哈,我是刚学R,能不能给个详细的代码啊?那个a[,i]是不是要先定义啊?
漂亮也是固定资产,会折旧的。

使用道具

8
vrooadk 发表于 2009-7-31 03:40:40 |只看作者 |坛友微信交流群
这code写的。
为什么upper和lower不一样长阿?为什么比start长呢? 你的数据到底叫什么阿?这个bb1啥的都是列名字吧?
再改改吧

使用道具

9
zjj8211 发表于 2009-7-31 11:21:36 |只看作者 |坛友微信交流群
# define likelihood function(normal distribution)
       log.likelihood<-function(para,x){
            y<-sum(-log((1/sqrt(2*pi*para[2]))*exp(-(x-para[1])^2/sqrt(2*pi*para[2]))))
      }
vector<-rnorm(1000,2,0.5);
a<-matrix(vector,100,10);
b<-numeric(20);
b<-matrix(b,2,10);
p<-c(1.8,0.6);
for(i in 1:10){
            
            out<-nlm(log.likelihood,p,a[,i])
            parameter<-out$estimate;
            b[1,i]<-parameter[1];b[2,i]=parameter[2];
            }

看看这个希望对你有帮助,另外
你写的没有定义优化的目标函数,故无法运行

使用道具

10
tf2000 发表于 2009-7-31 16:18:29 |只看作者 |坛友微信交流群
还有一个简单的方法,用apply函数
例如
apply(bb,2,FUNCTION,...)
具体用法参见help
不要疑惑,只要信。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 10:36