Линейная регрессия в R (нормальные и логарифмические данные)

Я хочу выполнить линейную регрессию в R для данных в нормальном и в двойном логарифмическом графике.

на обычные данные набор данных может быть следующее:

lin <- data.frame(x = c(0:6), y = c(0.3, 0.1, 0.9, 3.1, 5, 4.9, 6.2))
plot (lin$x, lin$y)

там я хочу вычислить линию для линейной регрессии только для точек данных 2, 3 и 4.

на двойные логарифмические данные набор данных может иметь следующий вид:

data = data.frame(
    x=c(1:15),
    y=c(
        1.000, 0.742, 0.623, 0.550, 0.500, 0.462, 0.433,
        0.051, 0.043, 0.037, 0.032, 0.028, 0.025, 0.022, 0.020
      )
    )
plot (data$x, data$y, log="xy")

здесь я хочу нарисовать линию регрессии для наборы 1:7 и 8:15.

Ho могу ли я вычислить уклон и y-смещение als, а также параметры для подгонки (R^2, p-значение)?

Как это делается для нормальных и логарифмических данных?

Спасибо за помощь,

Свен

2 ответов


в R линейные модели наименьших квадратов устанавливаются через


#Split the data into two groups
data1 <- data[1:7, ]
data2 <- data[8:15, ]

#Perform the regression
model1 <- lm(log(y) ~ log(x), data1)
model2 <- lm(log(y) ~ log(x), data2)
summary(model1)
summary(model2)

#Plot it
with(data, plot(x, y, log="xy"))
lines(1:7, exp(predict(model1, data.frame(x = 1:7))))
lines(8:15, exp(predict(model2, data.frame(x = 8:15))))

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

data$group <- factor(rep(letters[1:2], times = 7:8))

и запуск какой-то модели на весь набор данных, например,

model_all <- lm(log(y) ~ log(x) * group, data)
summary(model_all)