Luigi Marongiu
2021-Oct-02 08:14 UTC
[R] how to predict X given Y using logit regresion in R?
Hello, I have set a glm model using probit. I would like to use it to predict X given Y. I have followed this example: ``` f2<-data.frame(age=c(10,20,30),weight=c(100,200,300)) f3<-data.frame(age=c(15,25)) f4<-data.frame(age=18) mod<-lm(weight~age,data=f2)> predict(mod,f3)1 150> predict(mod,f4)1 180 ``` I have set the following: ``` df <- data.frame(concentration = c(1, 10, 100, 1000, 10000), positivity = c(0.86, 1, 1, 1, 1)) model <- glm(positivity~concentration,family = binomial(link "logit"), data=df)> e3<-data.frame(concentration=c(11, 101), positivity=c(1, 1)) > predict(model, e3)1 2 5.645045 46.727573 ``` but: ```> e4<-data.frame(positivity=0.95) > e4positivity 1 0.95> predict(model, e4)Error in eval(predvars, data, env) : object 'concentration' not found ``` Why did the thing worked for f4 but not e4? How do I get X given Y? Do I need to find the inverse function of logit (which one?) and apply this to the regression or is there a simpler method? Also, is it possible to plot the model to get a smooter line than `plot(positivity ~ concentration, data = df, log = "x", type="o")`? Thanks -- Best regards, Luigi
Luigi Marongiu
2021-Oct-02 14:33 UTC
[R] how to predict X given Y using logit regresion in R?
I tried with: ``` library(chemCal) inverse.predict(model, 0.95)> inverse.predict(model, 0.95)$Prediction [1] 0.4565871 $`Standard Error` [1] 5.525725e-10 $Confidence [1] 1.758532e-09 $`Confidence Limits` [1] 0.4565871 0.4565871 ``` but the value 0.457 does not sound good, it should be about 1.7. Could it be that model is based on glm whereas inverse.predict uses linear regression? On Sat, Oct 2, 2021 at 10:14 AM Luigi Marongiu <marongiu.luigi at gmail.com> wrote:> > Hello, > I have set a glm model using probit. I would like to use it to predict > X given Y. I have followed this example: > ``` > f2<-data.frame(age=c(10,20,30),weight=c(100,200,300)) > f3<-data.frame(age=c(15,25)) > f4<-data.frame(age=18) > mod<-lm(weight~age,data=f2) > > predict(mod,f3) > 1 > 150 > > predict(mod,f4) > 1 > 180 > ``` > > I have set the following: > ``` > df <- data.frame(concentration = c(1, 10, 100, 1000, 10000), > positivity = c(0.86, 1, 1, 1, 1)) > model <- glm(positivity~concentration,family = binomial(link > "logit"), data=df) > > e3<-data.frame(concentration=c(11, 101), positivity=c(1, 1)) > > predict(model, e3) > 1 2 > 5.645045 46.727573 > ``` > but: > ``` > > e4<-data.frame(positivity=0.95) > > e4 > positivity > 1 0.95 > > predict(model, e4) > Error in eval(predvars, data, env) : object 'concentration' not found > ``` > Why did the thing worked for f4 but not e4? How do I get X given Y? > Do I need to find the inverse function of logit (which one?) and apply > this to the regression or is there a simpler method? > Also, is it possible to plot the model to get a smooter line than > `plot(positivity ~ concentration, data = df, log = "x", type="o")`? > Thanks > -- > Best regards, > Luigi-- Best regards, Luigi
Luigi Marongiu
2021-Oct-02 20:36 UTC
[R] how to predict X given Y using logit regresion in R?
Hello, I also tried with ``` library(MASS)> dose.p(model,p=.95)Dose SE p = 0.95: 1.70912 96.26511 ``` which is closer to the expected 1.72 but with a very large error (I expected 1.10-2.34). Is this regression correct? On Sat, Oct 2, 2021 at 10:14 AM Luigi Marongiu <marongiu.luigi at gmail.com> wrote:> > Hello, > I have set a glm model using probit. I would like to use it to predict > X given Y. I have followed this example: > ``` > f2<-data.frame(age=c(10,20,30),weight=c(100,200,300)) > f3<-data.frame(age=c(15,25)) > f4<-data.frame(age=18) > mod<-lm(weight~age,data=f2) > > predict(mod,f3) > 1 > 150 > > predict(mod,f4) > 1 > 180 > ``` > > I have set the following: > ``` > df <- data.frame(concentration = c(1, 10, 100, 1000, 10000), > positivity = c(0.86, 1, 1, 1, 1)) > model <- glm(positivity~concentration,family = binomial(link > "logit"), data=df) > > e3<-data.frame(concentration=c(11, 101), positivity=c(1, 1)) > > predict(model, e3) > 1 2 > 5.645045 46.727573 > ``` > but: > ``` > > e4<-data.frame(positivity=0.95) > > e4 > positivity > 1 0.95 > > predict(model, e4) > Error in eval(predvars, data, env) : object 'concentration' not found > ``` > Why did the thing worked for f4 but not e4? How do I get X given Y? > Do I need to find the inverse function of logit (which one?) and apply > this to the regression or is there a simpler method? > Also, is it possible to plot the model to get a smooter line than > `plot(positivity ~ concentration, data = df, log = "x", type="o")`? > Thanks > -- > Best regards, > Luigi-- Best regards, Luigi