`
Я построил кусочно-линейную регрессионную линейную модель , чтобы представить рост бактерий как функцию рН культуральной среды. Это было сделано с помощью функции segmented () пакета «segmented». Допущения выполнены, и R-квадрат силен. Это позволяет мне определить ниже переломный момент, на рост которого негативно влияет pH.
Во-вторых, я хочу сделать обратный прогноз (x от y), чтобы определить значение x (pH ) для которого значение y (рост) равно 0. Эта критическая точка (CP) имеет большое биологическое значение.
Прогноз значения x для y = 0 равен легко определить с помощью алгебры:
x = yb / a = -b / a
где y = 0, a - наклон левой части кусочной регрессии, b является пересечением левой части кусочной регрессии
Задача состоит в том, чтобы определить интервал прогнозирования значения x
Поскольку я работаю с кусочно-линейной регрессией, Функции inverse.predict () и investr () бесполезны. Другое решение может заключаться в обращении модели (x = ay + b вместо y = ax + b, другими словами: pH = рост + b вместо роста = pH + b), а затем использовать функцию предиката.segmented () в порядок определения критической точки и интервал ее прогнозирования. Следовательно, этот метод не работает в моем случае, так как результат функции отличается от результата с алгеброй.
Есть ли у вас какие-либо другие решения?
Я хотел бы извлечь модель левой линейной регрессии кусочной регрессии, чтобы использовать функцию inverse.predict () на этом, но я не знаю, как это сделать. Есть ли у вас какие-либо формулы для ручного расчета интервала прогнозирования обратного прогнозирования? Я не нашел никакой информации о inte rnet ...
В приложении, пожалуйста, нашел данные и код.
Большое спасибо за помощь!
#pH
x<-c(7.3,7.8,7.1,7.7,7.2,6.7,7.6,6.5,6.9,7.0,7.4,6.8,6.5,6.6,7.5)
#Growth Rate
y<-c(86.52,115.43,103.99,96.13,85.56,40.43,82.31,38.88,
76.44,60.55,70.76,41.95,-2.14,17.11,79.29)
#Data
data<-data.frame(x,y)
#Linear model
lm <- lm(y~x,data=data)
#Piecewise linear regression model
sm <- segmented(lm, seg.Z = ~x,psi=mean(data$x))
МЕТОД 1: определить критическую точку (x для y = 0) с помощью алгебры
#intercept of the left linear regression
intercept1<-intercept(sm)$x[1,1]
#slope of the left linear regression
slope1<-slope(sm)$x[1,1]
#Predict Critical-Point (x = -b/a)
CP1<-(-intercept1)/slope1
МЕТОД 2: определить критическую точку (x для y = 0) с обратной моделью
#y value for prediction
predict<-data.frame(y=as.numeric(0.0))
#reversed model
invlm <- lm(x~y,data=data)
invsm <- segmented(invlm, seg.Z = ~y,psi=mean(data$y))
#prediction
CP2<-predict.segmented(invsm,predict,interval="prediction")
#return the x predicted value for y = 0 and its prediction interval
CP1 рассчитано с алгебраическим методом отличается от CP2, рассчитанного с помощью обратного метода
Метод обратного метода не подходит
Как рассчитать интервал прогнозирования с помощью метода алгебры для кусочно-линейной регрессии? ** Есть ли другой способ?