[英]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.