【问题标题】:R Finding logistic curve with nlsR用nls查找逻辑曲线
【发布时间】:2021-12-15 18:19:17
【问题描述】:

我对 R 中的面板数据的逻辑曲线有疑问:

https://docs.google.com/spreadsheets/d/1SO3EzFib7T3XqTz1xZCU2bZFTB0Ddhou/edit?usp=sharing&ouid=110784858039906954607&rtpof=true&sd=true

我试过了:

log <- nls(lrc~SSlogis(time, Asym, xmid, scal), data = data_log)

我有一个错误:'qr.solve(QR.B, cc)':singular matrix 'a' in solve。 我能做什么?

【问题讨论】:

    标签: r logistic-regression panel-data nls


    【解决方案1】:

    我得到一个不同的错误:

    nls 中的错误(y ~ 1/(1 + exp((xmid - x)/scal)), data = xy, start = list(xmid = aux[[1L]], : 步长因子 0.000488281 降低到 0.000976562 的“minFactor”以下

    (毫不奇怪,不同平台在数值“困难”问题上会得到略微不同的结果......)

    但是,当我使用您的数据时,plot(lrc ~ time, data = dd) 会产生以下结果:

    认为您可以为这些数据拟合逻辑曲线似乎很乐观,或者这种拟合非常有意义......

    我确实发现我可以为记录的数据添加逻辑,即nls(log(lrc) ...)

    plot(log(lrc) ~ time, data =dd)
    tvec <- seq(2008, 2016, by = 0.1)
    lines(tvec, predict(m2, newdata=data.frame(time=tvec)), col=2, lwd=2)
    

    如果我真的需要该图的逻辑系数(例如,与其他情况进行比较),我会为数据拟合线性模型,假设中点等于数据的中点,将缩放参数设置为等于线性斜率系数除以 4(这是逻辑的标准经验法则),并说无法估计渐近值。


    逐个单元地绘制所有数据并不会让您更有希望能够逐个单元地拟合逻辑曲线。虽然可能有一些单位的逻辑曲线是对数据的合理描述,但在大多数情况下并非如此。您可能需要备份并考虑您的分析策略——即,您希望从这些数据中学到什么,以及您将如何去做? (如果您可以适当地提出问题,您可以在CrossValidated 上发布。如果您是学生/实习生,您可能想向您的主管/老师/导师寻求建议......

    library(readxl)
    library(tidyverse)
    (dd <- read_excel("data2.xlsx")
      %>% pivot_longer(-code, names_transform = as.numeric,
                       names_to = "year")
      ## indices to break groups into chunks/facets
      %>% mutate(grp_cat = factor(as.numeric(factor(code)) %% 30))
    )
    gg1 <- ggplot(dd, aes(year, value, group = code,
                   colour=code)) + geom_point() +
      facet_wrap(~grp_cat, scale="free_y") +
      expand_limits(y=0) +
      theme_bw() +
      theme(legend.position = "none",
            panel.spacing = grid::unit(0, "lines"),
            axis.text.x = element_blank())
    gg1 + geom_smooth(se=FALSE)
    
    ggsave("all.png", width=8, height=8)
    

    【讨论】:

    • 感谢您的回答?也许更好的主意是估计我的面板数据中每个单元的逻辑曲线,而不是采用最高的渐近线?我尝试估计逻辑曲线以获得水平渐近线。这是我的各个单位的数据:docs.google.com/spreadsheets/d/…。你能帮助我吗?我是初学者,不知道如何估算 349 个单位的逻辑曲线
    • 非常感谢您的详尽解释。也许我对我的问题处理得不好。是否可以在我的面板数据中找到水平渐近线/添加逻辑趋势?您写道,可能有一些单位的逻辑曲线是对数据的合理描述。我怎样才能找到它们?如何跨单元使用 nls 和 SSlogis?
    • 我的问题是:当数据非常嘈杂且似乎没有明确定义的形状时,将逻辑趋势拟合到这些数据或定义水平渐近线有什么意义对他们来说?将逻辑曲线拟合到其中一些单位可能是可能的,但对于它们中的大多数而言,它或多或少是没有意义的(并且会给出一个非常不确定/定义不明确的水平渐近线)。
    猜你喜欢
    • 2020-03-02
    • 2016-02-02
    • 2013-08-29
    • 2016-08-09
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    相关资源
    最近更新 更多