【发布时间】:2021-12-15 18:19:17
【问题描述】:
我对 R 中的面板数据的逻辑曲线有疑问:
我试过了:
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
我对 R 中的面板数据的逻辑曲线有疑问:
我试过了:
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
我得到一个不同的错误:
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)
【讨论】: