Скажем, у меня есть три временных рядов:Nanin линейное время серии регрессии
y <- c(7, 8, 9, 2, 4, 5, 9, 4)
x <- c(9, 3, 5, 2, 7, 1, 6, 1) and
z <- c(NaN, NaN, NaN, 9, 10, 3, 5, 3)
Теперь я хочу, чтобы вычислить следующую регрессию с R: reg1 <- lm(y~x+z)
затем summary(reg1)
дает мне следующий вывод:
Call:
lm(formula = y ~ x + z)
Residuals:
ALL 3 residuals are 0: no residual degrees of freedom!
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.2414 NA NA NA
x 0.5172 NA NA NA
z -0.5862 NA NA NA
Residual standard error: NaN on 0 degrees of freedom
(3 observations deleted due to missingness)
Multiple R-squared: 1, Adjusted R-squared: NaN
F-statistic: NaN on 2 and 0 DF, p-value: NA
Таким образом, кажется, что коэффициенты оценены, но ни один из t-значений и т. Д. Мой вопрос здесь: 1) почему нет сообщения об ошибке и 2) как я могу опустить NaN из регрессии, так что R дает мне t - значения и т. д.? Благодаря
спасибо. Просто добавил еще несколько точек данных, а затем он сработал! Но часть моей проблемы все еще остается. Переменная z фактически выглядит так: z <- c (0, 0, 0, 9, 10, 3, 9, 4). Теперь мне нужно взять журнал z: r <- log (z). Но если я хочу запустить регрессию: reg1 <- lm (y ~ x + r), я получаю следующее сообщение: Ошибка в lm.fit (x, y, offset = offset, singular.ok = singular.ok,. ..): NA/NaN/Inf в 'x'. Как я могу опустить NaN из моей регрессии? –
безопасно просто заменить 0 в моем кадре данных на Na? Если в переменной z есть значение 0, это означает, что в этот момент времени не было никакого наблюдения. –
просто отфильтруйте нули из ваших данных: 'd <- data.frame (x, y, z); lm (log (z) ~ x + y, d, subset = z> 0) ' –