使用R中的glmulti包用于阿凯克权重穷举搜索多重回归(Using the glmulti pac

2019-07-29 01:03发布

我想知道,如果有人可以帮助我了解为什么我收到一条错误信息,当我输入脚本到R.对于我期待到效果6种不同的变量(我认为这是63个组合或模型)的背景资料升技(X )对总初级和净生态系统生产(Y)seperatly在我的环境科学荣誉项目不同空间尺度。 我已经决定使用与akaikes信息准则(AIC)穷举搜索多元回归分析,试图找到最合适的一组模型。 (和分层分区比较差异归因于不同的X变量)我想要得到的权重,所以我可以排名该款机型“最能满足”的标准看是否有一个或那套衣服休息,因此一组他们的是一个更可能适合的数据。

我最近发布了类似的问题在hier.part包装上交叉验证收到了巨大的答复,被告知来这里,如果我在未来的任何类似的问题。

我使用的R包是glmulti。 这可以在这里找到

我使用的脚本是这样的

require(glmulti)
GPPANDDRIVER<-read.table("C:\\Databases at different scales for R\\River Rhine and Netherlands\\GPP and drivers rhineland (comma delimited).csv",header=T,sep=",")
GPP<-GPPANDDRIVER$GPP
IND_VARS<-subset(GPPANDDRIVER,select=-GPP)
#  glmulti S4 generic 
glmulti(y=GPP, xr=IND_VARS, data, exclude = c(), name = "glmulti.analysis", intercept = TRUE, marginality = FALSE, bunch=30, chunk = 1, chunks = 1,
level = 2, minsize = 0, maxsize = -1, minK = 0, maxK = -1, method = "h", crit = "aic", confsetsize = 63, popsize = 40, mutrate = 10^-3, sexrate = 0.1, imm = 0.3, plotty = TRUE, report = TRUE, deltaM = 0.05, deltaB = 0.05, conseq = 5, fitfunction = "glm", resumefile = "id", includeobjects=TRUE,)

这是在本例中提到的莱茵兰的链接的.csv数据网站, http://www.filedropper.com/gppanddriversrhinelandcommadelimited

我非常新的与R,所以我推测popsize指这个规模,所以我用40 40重复的号码,我还承担了可能的模型,我认为这是63由于6个变量confsetsize意味着多少?

如果有人能够帮助这将不胜感激

感谢您的耐心和道歉的基本问题

理查德

编辑我只是想今天上午运行脚本,它现在崩溃R.

Answer 1:

这为我工作。 我认为最主要的是不要盲目在模型中包含调用的所有参数。 大多数的这些有默认值,所以(如果包的作者已经做他们的工作),你应该能够离开他们,因为他们并没有太担心(尽管当然,你应该RTFM和( 尝试 )明白他们的意思。 ..)

dat <- read.csv("GPPdriversRhineland.csv")
library(glmulti)

我决定用较短的标签重命名的预测:

prednames <- c("NDVI","solar.rad","avg.temp","precip",
                "nutr.avail","water.cap")
names(dat)[1:6] <- prednames

这是所有你需要适应的主要影响所有组合:既然你有六个预测,有64个1级车型(包括空模型)。

g1 <- glmulti("GPP",xr=prednames,data=dat,level=1)

对于一个更大的挑战计算:

g2 <- glmulti("GPP",xr=prednames,data=dat,level=2)

我相信,有2^(choose(6,2)+6)这里= 210万可能的模式。 我没有看过?glmulti不够紧密告诉它如何停止装修款。 我刚开始它关闭(到目前为止它已经评估66000种机型),但它已发现约AIC一个500.5 2级车型,这是集合的1级车型比518的最小AIC 更好 .. 。

PS我设置多一点发挥各地,试图遗传算法的方法,而不是穷尽方法(我没有看到一个明显的方式告诉glmulti “使用穷举的方法,但停止ñ尝试后”)。 即使有稍微宽松高于默认遗传算法的设置,它似乎停留在AIC约504得到的,在(部分)彻底筛选我第一次尝试中找到的值以上。

例如:

g2 <- glmulti("GPP",xr=prednames,data=dat,level=2,marginality=TRUE,
              method="g",conseq=25,popsize=500,mutrate=1e-2)

PPS:我是在详尽的情况下获得更好的结果的原因是,我不得不marginality=FALSE ,即模型被允许离开了参与包括在模型互动,主效果参数。 这并不一定是明智的。 如果我关掉边缘化约束,那么遗传算法能够踏踏实实地AIC = 499没有太多的麻烦...

glmulti("GPP",xr=prednames,data=dat,level=2,marginality=TRUE,
              method="d")

也很有用:它打印出一个给定的规范中定义的候选机型的数量。



文章来源: Using the glmulti package in R for exhaustive search multiple regression for akaike weights
标签: r regression