簡體   English   中英

使用R包plyr時無法獲得nls置信區間

[英]Trouble getting nls confidence intervals when using R package plyr

我使用R包plyr進行了一些非線性回歸,現在有了非線性回歸擬合的列表,我想將p值和這些擬合的95%置信區間放入data.frame。 但是,當我這樣做時,我總是收到錯誤“錯誤:$運算符對原子向量無效”。 這是一些虛構數據,其中模型為y = A / x,而我用來擬合的plyr命令適合:

 set.seed(253)
 Data <- data.frame("Group"=rep(c("Tx1", "Tx2", "Tx3", "Healthy"), each=14),
               "X"=rep(c(5,6,7,8,9,10,12.5,15,17.5,20,22.5,25,27.5,30),4),
               "A.obs"=c(rnorm(14, mean=500, sd=80),
                         rnorm(14, mean=250, sd=30),
                         rnorm(14, mean=350, sd=75),
                         rnorm(14, mean=50, sd=5)))
 Data$Y <- Data$A.obs/Data$X

 NLmodels <- dlply(Data, "Group", 
              function(x) nls(x$Y ~ A/x$X, data=x, start=list(A=50), 
                              algorithm="port", lower=list(A=50)))

這是我嘗試將列表中的數據提取到data.frame中的方法:

 lci <- function(x) suppressMessages(confint(x)[1]) # Lower 95% CI
 uci <- function(x) suppressMessages(confint(x)[2]) # Upper 95% CI
 pval <- function(x) summary(x)$coef[1,4]

 NLmodels.df <- ldply(NLmodels, function(x) coef(x), LCI=lci(x), UCI=uci(x), pvalue=pval(x))

我認為問題在於,通常,當您在nls對象上運行confint()時,您會收到消息“等待分析完成……”,並且該消息可能會導致ldply()命令出現故障。 因此,添加了excludeMessages(),但這並不能解決我的問題。 它仍然不會運行,只會給我該錯誤消息。

有任何想法嗎? 先感謝您!

為了避免更復雜的子設置,請嘗試將摘要功能簡化為:

ldply(NLmodels, function(x) c(coef(x),confint(x),p=summary(x)$coef[1,4]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM