Линейная регрессия в 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 ответов
#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)