для примера ОП.

ая регрессия случайной нормали по дате не удалась, но идентичные данные с маленькими целыми числами вместо дат работают, как и ожидалось.

# Example dataset with 100 observations at 2 second intervals.
set.seed(1)
df <- data.frame(x=as.POSIXct("2017-03-14 09:00:00") + seq(0, 199, 2),
                 y=rnorm(100))

#> head(df)
#                     x          y
# 1 2017-03-14 09:00:00 -0.6264538
# 2 2017-03-14 09:00:02  0.1836433
# 3 2017-03-14 09:00:04 -0.8356286

# Simple regression model.
m <- lm(y ~ x, data=df)

Наклон отсутствует из-за особенностей в данных. Вызов резюме показывает это:

summary(m)

# Coefficients: (1 not defined because of singularities)
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept)  0.10889    0.08982   1.212    0.228
# x                 NA         NA      NA       NA

Может ли это быть из-заPOSIXct учебный класс?

# Convert date variable to integer.
df$x2 <- as.integer(df$x)
lm(y ~ x2, data=df)

# Coefficients:
# (Intercept)           x2  
#      0.1089           NA

Нет, коэффициент дляx2 до сих пор отсутствует.

Что если мы сделаем базовую линиюx2 нуль?

# Subtract minimum of x.
df$x3 <- df$x2 - min(df$x2)
lm(y ~ x3, data=df)

# Coefficients:
# (Intercept)           x3  
#   0.1312147   -0.0002255

Это работает!

Еще один пример, чтобы исключить, что это связано с переменной datetime.

# Subtract large constant from date (data is now from 1985).
df$x4 <- df$x - 1000000000
lm(y ~ x4, data=df)

# Coefficients:
# (Intercept)           x4  
#   1.104e+05   -2.255e-04

Не ожидается (почему идентичный набор данных с разницей в 30 лет может вызвать другое поведение?), Но это тоже работает.

Может быть что.Machine$integer.max (2147483647 на моем ПК) как-то связано с этим, но я не могу понять это. Буду очень признателен, если кто-нибудь сможет объяснить, что здесь происходит.

Ответы на вопрос(1)

Ваш ответ на вопрос