全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5472 4
2013-02-18
我在文献上看到的使用bootstrap法估计Logistic回归模型里交互作用S指数的可信区间,按照它提供的程序运行,但出现错误提示,麻烦各位帮我看看是哪出问题了?谢谢啊!
程序是:
<-library(boot) /*安装加载 Boot 软件包。
<-s1 <- function(datsam, indices){
         d<-datsam[indices] /*允许 Bootstrap 从原样本数据再抽样。
      fitlr <- glm(case ~ packyr * radon+age, family=binomial, data=d)
         s <- (exp(fitlr$coef[2]+fitlr$coef[3]+fitlr$coef[5])-1)/(exp(fitlr$coef[2])-1+exp(fitlr$coef[3])-1)} /*自定义从再抽样的样本中计算两连续变量交互作用S指数的功能函数。
运行后的提示:
错误: 意外的符号在"s2<-function(datsam,indices){d<-datsam[indices] fitlr"里

二维码

扫码加我 拉你入群

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

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

全部回复
2013-2-18 17:39:05
d<-datsam[indices] 写错了,调用函数应该使用括号,应该是d<-datsam(indices)。
改过之后应该没有问题。
二维码

扫码加我 拉你入群

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

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

2013-2-18 23:28:22
parazhu 发表于 2013-2-18 17:39
d
谢谢parazhu的回复!
可是按照你说的改动后还是提示
错误: 意外的符号在"s2<-function(datsam,indices){d<-datsam(indices) fitlr"里
二维码

扫码加我 拉你入群

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

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

2013-2-19 08:35:04
不好意思,我看错了。我猜测你的datsam是你原始的数据,那么datsam是一个dataframe,而indice是抽样之后的位置标记。那么问题应该出在d<-datsam[indices],因为[,]里面应该是行列参数,现在如果只给出一个就有问题了。改成 d<-datsam[indices,],应该就可以解决问题了。
但这里你给的信息还不太全面,上面是我的猜测。
我写一段代码,你看一下:

> wly[1:3,2:4]我的数据
         rstk      rcall        rput
1 0.001405482 0.04561051 -0.01015237
2 0.027702603 0.15324035  0.02020271
3 0.073717576 0.21985948  0.15700375

> nrow(wly)*/数据的总数
[1] 284
> n=sample(284,10)*/对数据进行bootstrap随机取样(注意这里是对位置进行取样)
> n*/取样数据的行坐标
[1]  17 143 111  65  63  45 142  22 164 249
> wly[n,]*/新的数据集
      stk         rstk        rcall        rput
17  9.19 -0.019397160 -0.037638851 -0.05443521
143 12.95  0.014780510  0.014445425  0.02429269
111 12.90  0.005441133  0.004106782 -0.03448618
65 13.41 -0.050883069 -0.043189933  0.22116139
63 14.33  0.013347581  0.021202208 -0.04927105
45 12.29  0.015580471 -0.002436055 -0.11705656
142 12.76  0.026202372  0.048790164  0.02489755
22 12.66 -0.010997754  0.004089985  0.33119982
164 16.55 -0.023881732 -0.050867219 -0.04149973
249 32.70 -0.043387508 -0.047038374  0.04932507

在你的函数中function(datsam, indices),datsam是原始数据集,indices是取样之后的位置参数。
二维码

扫码加我 拉你入群

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

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

2013-2-19 22:47:21
parazhu 发表于 2013-2-19 08:35
不好意思,我看错了。我猜测你的datsam是你原始的数据,那么datsam是一个dataframe,而indice是抽样之后的位 ...
谢谢parazhu的回复!我按照你的提示改动了,并且试了几次后发现大括号里的几个选项要分行写才能运行,我原来是同一行输入的。如下的程序运行就可以了:
>-library(boot)
>-s1 <- function(datsam, indices){
+d<-datsam[indices,]
+fitlr <- glm(case ~ packyr * radon+age, family=binomial, data=d)
+s <- (exp(fitlr$coef[2]+fitlr$coef[3]+fitlr$coef[5])-1)/(exp(fitlr$coef[2])-1+exp(fitlr$coef[3])-1)}
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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