Inverse regression procedures with robust linear models, quantile regression, and machine learning methodsWhat learning algorithm(s) should I consider to train a log-linear regression model?Errors when running Caret package in RIn online machine learning algorithm linear regression stochastic gradient , when new training data comes do we have to mix it with prevoius data?“length of 'dimnames' [1] not equal to array extent” error in linear regression summary in rData Fitting and Prediction in Machine learning modelsInverse prediction in Machine LearningFast pairwise simple linear regression between variables in a data frameWould a Logistic Regression Machine Learning Model Work Here?How can I simulate a dataset from a robust linear model or a quantile regression model?

Is "remove commented out code" correct English?

Can a rocket refuel on Mars from water?

How is it possible to have an ability score that is less than 3?

Infinite Abelian subgroup of infinite non Abelian group example

A reference to a well-known characterization of scattered compact spaces

Combinations of multiple lists

What do you call someone who asks many questions?

Can I ask the recruiters in my resume to put the reason why I am rejected?

Forgetting the musical notes while performing in concert

Doing something right before you need it - expression for this?

Why doesn't H₄O²⁺ exist?

If human space travel is limited by the G force vulnerability, is there a way to counter G forces?

How can saying a song's name be a copyright violation?

Why do I get two different answers for this counting problem?

Why is Collection not simply treated as Collection<?>

Is the Joker left-handed?

Twin primes whose sum is a cube

Would Slavery Reparations be considered Bills of Attainder and hence Illegal?

Where does SFDX store details about scratch orgs?

Is it inappropriate for a student to attend their mentor's dissertation defense?

What is the intuition behind short exact sequences of groups; in particular, what is the intuition behind group extensions?

What is the word for reserving something for yourself before others do?

Why does Kotter return in Welcome Back Kotter

Alternative to sending password over mail?



Inverse regression procedures with robust linear models, quantile regression, and machine learning methods


What learning algorithm(s) should I consider to train a log-linear regression model?Errors when running Caret package in RIn online machine learning algorithm linear regression stochastic gradient , when new training data comes do we have to mix it with prevoius data?“length of 'dimnames' [1] not equal to array extent” error in linear regression summary in rData Fitting and Prediction in Machine learning modelsInverse prediction in Machine LearningFast pairwise simple linear regression between variables in a data frameWould a Logistic Regression Machine Learning Model Work Here?How can I simulate a dataset from a robust linear model or a quantile regression model?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








1















Context



Often in dose-response models we regress some range of doses against a response variable, but we are really interested in identifying the dose required to elicit a particular response. Typically this is done with inverse regression techniques (i.e. after-fitting / reparameterisation). EDIT: To clarify - this is commonly done when you need to estimate the dose required to kill say 50%, or 99.99% for quarantine protocols. To derive these estimates people employ inverse regression techniques - the above link goes through this more carefully (see page 9).



Question



How can I carry out these inverse regression procedures using methods like robust linear models, quantile regression, or machine learning models (i.e. neural networks or support vector machines)? EDIT: To clarify, I want a programming solution to how I can estimate the dose required to elicit a response of 99.99 when the model I have fitted is one of the above mentioned. I have fitted example models below to these ends.



My data looks like this:



 df <- structure(list(Response = c(100, 91.1242603550296, 86.9822485207101, 
100, 0, 0, 90.5325443786982, 95.8579881656805, 88.7573964497041,
96.4497041420118, 82.2485207100592, 99.4082840236686, 99.4082840236686,
98.8165680473373, 91.7159763313609, 59.1715976331361, 44.9704142011834,
0, 100, 95.2662721893491, 100, 82.8402366863905, 7.69230769230769,
81.6568047337278, 62.7218934911243, 97.6331360946746, 73.9644970414201,
8.87573964497041, 0, 98.8165680473373, 78.1065088757396, 98.2248520710059,
52.6627218934911, 96.4497041420118, 52.0710059171598, 0, 62.043795620438,
84.6715328467153, 97.8102189781022, 4.37956204379562, 89.051094890511,
99.2700729927007, 99.2700729927007, 97.0802919708029, 81.7518248175183,
80.2919708029197, 90.5109489051095, 99.2700729927007, 96.3503649635037,
0, 0, 94.8905109489051, 79.5620437956204, 67.8832116788321, 73.7226277372263,
100, 97.0802919708029, 93.4306569343066, 86.8613138686131, 33.5766423357664,
32.1167883211679, 46.7153284671533, 98.5401459854015, 95.6204379562044,
86.1313868613139, 14.5985401459854, 92.7007299270073, 86.1313868613139,
0, 77.3722627737226, 89.051094890511, 80.2919708029197, 98.1818181818182,
96.3636363636364, 30.9090909090909, 0, 60.9090909090909, 100,
0, 83.6363636363636, 88.1818181818182, 97.2727272727273, 0, 0,
99.0909090909091, 100, 100, 91.8181818181818, 88.1818181818182,
46.3636363636364, 50.9090909090909, 99.0909090909091, 97.2727272727273,
100, 0, 92.7272727272727, 60.9090909090909, 90.9090909090909,
57.2727272727273, 76.3636363636364, 94.5454545454545, 50, 98.1818181818182,
16.3636363636364, 87.2727272727273, 92.7272727272727, 87.2727272727273,
88.1818181818182, 10.7438016528926, 91.7355371900827, 98.3471074380165,
60.3305785123967, 95.8677685950413, 0, 63.6363636363636, 71.900826446281,
0, 74.3801652892562, 76.8595041322314, 0, 61.9834710743802, 0,
0, 0, 84.297520661157, 47.1074380165289, 69.4214876033058, 97.5206611570248,
100, 61.1570247933884, 90.0826446280992, 78.5123966942149, 10.7438016528926,
100, 98.3471074380165, 100, 98.3471074380165, 93.3884297520661,
90.9090909090909, 57.8512396694215, 57.8512396694215, 92.5619834710744,
77.6859504132231, 69.4214876033058), Covariate = c(20, 14, 14,
20, 0, 0, 14, 14, 14, 16, 10, 20, 20, 20, 16, 10, 10, 0, 16,
16, 16, 10, 0, 12, 10, 12, 12, 0, 0, 20, 12, 16, 10, 12, 12,
0, 14, 14, 16, 0, 14, 20, 16, 20, 14, 12, 12, 20, 20, 0, 0, 14,
12, 10, 10, 20, 16, 16, 14, 10, 10, 10, 20, 16, 10, 0, 12, 12,
0, 12, 16, 14, 16, 14, 0, 0, 12, 20, 0, 12, 14, 14, 0, 0, 20,
20, 20, 14, 14, 10, 10, 20, 16, 16, 0, 12, 10, 10, 10, 16, 16,
12, 20, 10, 12, 12, 16, 14, 0, 16, 20, 12, 14, 10, 10, 0, 0,
12, 12, 10, 10, 0, 0, 0, 14, 12, 12, 20, 20, 14, 14, 14, 12,
20, 20, 20, 16, 16, 14, 10, 10, 16, 16, 16)), row.names = 433:576, class = "data.frame")


with my formula usually being something like:



Response ~ Covariate + I(Covariate^2)



Here is an example of the models I have fitted:



#Robust linear model
MASS::rlm(Response ~ Covariate + I(Covariate^2), data = df)

#Quantile regression
quantreg::rq(Response ~ Covariate + I(Covariate^2), data = df, tau = c(0.5, 0.95)) # In this case I want to predict the specified quantiles for the dose required to elicit a given response, although I realised this code doesn't do that...

#Machine learning algorithms were trained with caret
TRControl <- trainControl(method = "cv")

#Neural Network
caret::train(Response ~ Covariate, data = df, method = "neuralnet", trControl = TRControl)

#Support Vector Machine
caret::train(Response ~ Covariate, data = df, method = "polySVM", trControl = TRControl)









share|improve this question



















  • 1





    This sounds like more of a statistics question than a programming one. If so, this would be a better fit for Cross Validated

    – divibisan
    Mar 21 at 22:31











  • It does sit on the boundary... I put it here as I am looking for a programming solution having assumed it is not a novel concept. Happy to migrate it if need be.

    – André.B
    Mar 21 at 22:38











  • "interested in identifying the dose required to elicit a particular response" I'm not really sure I understand what you're asking. Usually one would fit a parametric (dose-response) model to the data which would allow you to directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value); so I'm not sure why you want to employ "inverse regression techniques". The dose-response model will allow you to determine concentrations that "elicit" any specific response.

    – Maurits Evers
    Mar 21 at 23:29












  • I have tried to clarify my question above; hopefully it is more clear what I am asking but please feel free to ask if anything still doesn't make sense. @MauritsEvers my understanding from the paper attached to my question is that an inverse regression technique is always required - in quarantine research Fieller's formula is usually used to these ends to calculate an interval for the estimate. How do you "directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value)"?

    – André.B
    Mar 21 at 23:57











  • At the very least you need to read ?formula so that you can understand why all your formulas will fail to deliver what you expect. I also question whether you know what you are doing with the last two (and maybe the last three) methods. I don't think formulas make any sense in those contexts.

    – 42-
    Mar 22 at 0:03


















1















Context



Often in dose-response models we regress some range of doses against a response variable, but we are really interested in identifying the dose required to elicit a particular response. Typically this is done with inverse regression techniques (i.e. after-fitting / reparameterisation). EDIT: To clarify - this is commonly done when you need to estimate the dose required to kill say 50%, or 99.99% for quarantine protocols. To derive these estimates people employ inverse regression techniques - the above link goes through this more carefully (see page 9).



Question



How can I carry out these inverse regression procedures using methods like robust linear models, quantile regression, or machine learning models (i.e. neural networks or support vector machines)? EDIT: To clarify, I want a programming solution to how I can estimate the dose required to elicit a response of 99.99 when the model I have fitted is one of the above mentioned. I have fitted example models below to these ends.



My data looks like this:



 df <- structure(list(Response = c(100, 91.1242603550296, 86.9822485207101, 
100, 0, 0, 90.5325443786982, 95.8579881656805, 88.7573964497041,
96.4497041420118, 82.2485207100592, 99.4082840236686, 99.4082840236686,
98.8165680473373, 91.7159763313609, 59.1715976331361, 44.9704142011834,
0, 100, 95.2662721893491, 100, 82.8402366863905, 7.69230769230769,
81.6568047337278, 62.7218934911243, 97.6331360946746, 73.9644970414201,
8.87573964497041, 0, 98.8165680473373, 78.1065088757396, 98.2248520710059,
52.6627218934911, 96.4497041420118, 52.0710059171598, 0, 62.043795620438,
84.6715328467153, 97.8102189781022, 4.37956204379562, 89.051094890511,
99.2700729927007, 99.2700729927007, 97.0802919708029, 81.7518248175183,
80.2919708029197, 90.5109489051095, 99.2700729927007, 96.3503649635037,
0, 0, 94.8905109489051, 79.5620437956204, 67.8832116788321, 73.7226277372263,
100, 97.0802919708029, 93.4306569343066, 86.8613138686131, 33.5766423357664,
32.1167883211679, 46.7153284671533, 98.5401459854015, 95.6204379562044,
86.1313868613139, 14.5985401459854, 92.7007299270073, 86.1313868613139,
0, 77.3722627737226, 89.051094890511, 80.2919708029197, 98.1818181818182,
96.3636363636364, 30.9090909090909, 0, 60.9090909090909, 100,
0, 83.6363636363636, 88.1818181818182, 97.2727272727273, 0, 0,
99.0909090909091, 100, 100, 91.8181818181818, 88.1818181818182,
46.3636363636364, 50.9090909090909, 99.0909090909091, 97.2727272727273,
100, 0, 92.7272727272727, 60.9090909090909, 90.9090909090909,
57.2727272727273, 76.3636363636364, 94.5454545454545, 50, 98.1818181818182,
16.3636363636364, 87.2727272727273, 92.7272727272727, 87.2727272727273,
88.1818181818182, 10.7438016528926, 91.7355371900827, 98.3471074380165,
60.3305785123967, 95.8677685950413, 0, 63.6363636363636, 71.900826446281,
0, 74.3801652892562, 76.8595041322314, 0, 61.9834710743802, 0,
0, 0, 84.297520661157, 47.1074380165289, 69.4214876033058, 97.5206611570248,
100, 61.1570247933884, 90.0826446280992, 78.5123966942149, 10.7438016528926,
100, 98.3471074380165, 100, 98.3471074380165, 93.3884297520661,
90.9090909090909, 57.8512396694215, 57.8512396694215, 92.5619834710744,
77.6859504132231, 69.4214876033058), Covariate = c(20, 14, 14,
20, 0, 0, 14, 14, 14, 16, 10, 20, 20, 20, 16, 10, 10, 0, 16,
16, 16, 10, 0, 12, 10, 12, 12, 0, 0, 20, 12, 16, 10, 12, 12,
0, 14, 14, 16, 0, 14, 20, 16, 20, 14, 12, 12, 20, 20, 0, 0, 14,
12, 10, 10, 20, 16, 16, 14, 10, 10, 10, 20, 16, 10, 0, 12, 12,
0, 12, 16, 14, 16, 14, 0, 0, 12, 20, 0, 12, 14, 14, 0, 0, 20,
20, 20, 14, 14, 10, 10, 20, 16, 16, 0, 12, 10, 10, 10, 16, 16,
12, 20, 10, 12, 12, 16, 14, 0, 16, 20, 12, 14, 10, 10, 0, 0,
12, 12, 10, 10, 0, 0, 0, 14, 12, 12, 20, 20, 14, 14, 14, 12,
20, 20, 20, 16, 16, 14, 10, 10, 16, 16, 16)), row.names = 433:576, class = "data.frame")


with my formula usually being something like:



Response ~ Covariate + I(Covariate^2)



Here is an example of the models I have fitted:



#Robust linear model
MASS::rlm(Response ~ Covariate + I(Covariate^2), data = df)

#Quantile regression
quantreg::rq(Response ~ Covariate + I(Covariate^2), data = df, tau = c(0.5, 0.95)) # In this case I want to predict the specified quantiles for the dose required to elicit a given response, although I realised this code doesn't do that...

#Machine learning algorithms were trained with caret
TRControl <- trainControl(method = "cv")

#Neural Network
caret::train(Response ~ Covariate, data = df, method = "neuralnet", trControl = TRControl)

#Support Vector Machine
caret::train(Response ~ Covariate, data = df, method = "polySVM", trControl = TRControl)









share|improve this question



















  • 1





    This sounds like more of a statistics question than a programming one. If so, this would be a better fit for Cross Validated

    – divibisan
    Mar 21 at 22:31











  • It does sit on the boundary... I put it here as I am looking for a programming solution having assumed it is not a novel concept. Happy to migrate it if need be.

    – André.B
    Mar 21 at 22:38











  • "interested in identifying the dose required to elicit a particular response" I'm not really sure I understand what you're asking. Usually one would fit a parametric (dose-response) model to the data which would allow you to directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value); so I'm not sure why you want to employ "inverse regression techniques". The dose-response model will allow you to determine concentrations that "elicit" any specific response.

    – Maurits Evers
    Mar 21 at 23:29












  • I have tried to clarify my question above; hopefully it is more clear what I am asking but please feel free to ask if anything still doesn't make sense. @MauritsEvers my understanding from the paper attached to my question is that an inverse regression technique is always required - in quarantine research Fieller's formula is usually used to these ends to calculate an interval for the estimate. How do you "directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value)"?

    – André.B
    Mar 21 at 23:57











  • At the very least you need to read ?formula so that you can understand why all your formulas will fail to deliver what you expect. I also question whether you know what you are doing with the last two (and maybe the last three) methods. I don't think formulas make any sense in those contexts.

    – 42-
    Mar 22 at 0:03














1












1








1


1






Context



Often in dose-response models we regress some range of doses against a response variable, but we are really interested in identifying the dose required to elicit a particular response. Typically this is done with inverse regression techniques (i.e. after-fitting / reparameterisation). EDIT: To clarify - this is commonly done when you need to estimate the dose required to kill say 50%, or 99.99% for quarantine protocols. To derive these estimates people employ inverse regression techniques - the above link goes through this more carefully (see page 9).



Question



How can I carry out these inverse regression procedures using methods like robust linear models, quantile regression, or machine learning models (i.e. neural networks or support vector machines)? EDIT: To clarify, I want a programming solution to how I can estimate the dose required to elicit a response of 99.99 when the model I have fitted is one of the above mentioned. I have fitted example models below to these ends.



My data looks like this:



 df <- structure(list(Response = c(100, 91.1242603550296, 86.9822485207101, 
100, 0, 0, 90.5325443786982, 95.8579881656805, 88.7573964497041,
96.4497041420118, 82.2485207100592, 99.4082840236686, 99.4082840236686,
98.8165680473373, 91.7159763313609, 59.1715976331361, 44.9704142011834,
0, 100, 95.2662721893491, 100, 82.8402366863905, 7.69230769230769,
81.6568047337278, 62.7218934911243, 97.6331360946746, 73.9644970414201,
8.87573964497041, 0, 98.8165680473373, 78.1065088757396, 98.2248520710059,
52.6627218934911, 96.4497041420118, 52.0710059171598, 0, 62.043795620438,
84.6715328467153, 97.8102189781022, 4.37956204379562, 89.051094890511,
99.2700729927007, 99.2700729927007, 97.0802919708029, 81.7518248175183,
80.2919708029197, 90.5109489051095, 99.2700729927007, 96.3503649635037,
0, 0, 94.8905109489051, 79.5620437956204, 67.8832116788321, 73.7226277372263,
100, 97.0802919708029, 93.4306569343066, 86.8613138686131, 33.5766423357664,
32.1167883211679, 46.7153284671533, 98.5401459854015, 95.6204379562044,
86.1313868613139, 14.5985401459854, 92.7007299270073, 86.1313868613139,
0, 77.3722627737226, 89.051094890511, 80.2919708029197, 98.1818181818182,
96.3636363636364, 30.9090909090909, 0, 60.9090909090909, 100,
0, 83.6363636363636, 88.1818181818182, 97.2727272727273, 0, 0,
99.0909090909091, 100, 100, 91.8181818181818, 88.1818181818182,
46.3636363636364, 50.9090909090909, 99.0909090909091, 97.2727272727273,
100, 0, 92.7272727272727, 60.9090909090909, 90.9090909090909,
57.2727272727273, 76.3636363636364, 94.5454545454545, 50, 98.1818181818182,
16.3636363636364, 87.2727272727273, 92.7272727272727, 87.2727272727273,
88.1818181818182, 10.7438016528926, 91.7355371900827, 98.3471074380165,
60.3305785123967, 95.8677685950413, 0, 63.6363636363636, 71.900826446281,
0, 74.3801652892562, 76.8595041322314, 0, 61.9834710743802, 0,
0, 0, 84.297520661157, 47.1074380165289, 69.4214876033058, 97.5206611570248,
100, 61.1570247933884, 90.0826446280992, 78.5123966942149, 10.7438016528926,
100, 98.3471074380165, 100, 98.3471074380165, 93.3884297520661,
90.9090909090909, 57.8512396694215, 57.8512396694215, 92.5619834710744,
77.6859504132231, 69.4214876033058), Covariate = c(20, 14, 14,
20, 0, 0, 14, 14, 14, 16, 10, 20, 20, 20, 16, 10, 10, 0, 16,
16, 16, 10, 0, 12, 10, 12, 12, 0, 0, 20, 12, 16, 10, 12, 12,
0, 14, 14, 16, 0, 14, 20, 16, 20, 14, 12, 12, 20, 20, 0, 0, 14,
12, 10, 10, 20, 16, 16, 14, 10, 10, 10, 20, 16, 10, 0, 12, 12,
0, 12, 16, 14, 16, 14, 0, 0, 12, 20, 0, 12, 14, 14, 0, 0, 20,
20, 20, 14, 14, 10, 10, 20, 16, 16, 0, 12, 10, 10, 10, 16, 16,
12, 20, 10, 12, 12, 16, 14, 0, 16, 20, 12, 14, 10, 10, 0, 0,
12, 12, 10, 10, 0, 0, 0, 14, 12, 12, 20, 20, 14, 14, 14, 12,
20, 20, 20, 16, 16, 14, 10, 10, 16, 16, 16)), row.names = 433:576, class = "data.frame")


with my formula usually being something like:



Response ~ Covariate + I(Covariate^2)



Here is an example of the models I have fitted:



#Robust linear model
MASS::rlm(Response ~ Covariate + I(Covariate^2), data = df)

#Quantile regression
quantreg::rq(Response ~ Covariate + I(Covariate^2), data = df, tau = c(0.5, 0.95)) # In this case I want to predict the specified quantiles for the dose required to elicit a given response, although I realised this code doesn't do that...

#Machine learning algorithms were trained with caret
TRControl <- trainControl(method = "cv")

#Neural Network
caret::train(Response ~ Covariate, data = df, method = "neuralnet", trControl = TRControl)

#Support Vector Machine
caret::train(Response ~ Covariate, data = df, method = "polySVM", trControl = TRControl)









share|improve this question
















Context



Often in dose-response models we regress some range of doses against a response variable, but we are really interested in identifying the dose required to elicit a particular response. Typically this is done with inverse regression techniques (i.e. after-fitting / reparameterisation). EDIT: To clarify - this is commonly done when you need to estimate the dose required to kill say 50%, or 99.99% for quarantine protocols. To derive these estimates people employ inverse regression techniques - the above link goes through this more carefully (see page 9).



Question



How can I carry out these inverse regression procedures using methods like robust linear models, quantile regression, or machine learning models (i.e. neural networks or support vector machines)? EDIT: To clarify, I want a programming solution to how I can estimate the dose required to elicit a response of 99.99 when the model I have fitted is one of the above mentioned. I have fitted example models below to these ends.



My data looks like this:



 df <- structure(list(Response = c(100, 91.1242603550296, 86.9822485207101, 
100, 0, 0, 90.5325443786982, 95.8579881656805, 88.7573964497041,
96.4497041420118, 82.2485207100592, 99.4082840236686, 99.4082840236686,
98.8165680473373, 91.7159763313609, 59.1715976331361, 44.9704142011834,
0, 100, 95.2662721893491, 100, 82.8402366863905, 7.69230769230769,
81.6568047337278, 62.7218934911243, 97.6331360946746, 73.9644970414201,
8.87573964497041, 0, 98.8165680473373, 78.1065088757396, 98.2248520710059,
52.6627218934911, 96.4497041420118, 52.0710059171598, 0, 62.043795620438,
84.6715328467153, 97.8102189781022, 4.37956204379562, 89.051094890511,
99.2700729927007, 99.2700729927007, 97.0802919708029, 81.7518248175183,
80.2919708029197, 90.5109489051095, 99.2700729927007, 96.3503649635037,
0, 0, 94.8905109489051, 79.5620437956204, 67.8832116788321, 73.7226277372263,
100, 97.0802919708029, 93.4306569343066, 86.8613138686131, 33.5766423357664,
32.1167883211679, 46.7153284671533, 98.5401459854015, 95.6204379562044,
86.1313868613139, 14.5985401459854, 92.7007299270073, 86.1313868613139,
0, 77.3722627737226, 89.051094890511, 80.2919708029197, 98.1818181818182,
96.3636363636364, 30.9090909090909, 0, 60.9090909090909, 100,
0, 83.6363636363636, 88.1818181818182, 97.2727272727273, 0, 0,
99.0909090909091, 100, 100, 91.8181818181818, 88.1818181818182,
46.3636363636364, 50.9090909090909, 99.0909090909091, 97.2727272727273,
100, 0, 92.7272727272727, 60.9090909090909, 90.9090909090909,
57.2727272727273, 76.3636363636364, 94.5454545454545, 50, 98.1818181818182,
16.3636363636364, 87.2727272727273, 92.7272727272727, 87.2727272727273,
88.1818181818182, 10.7438016528926, 91.7355371900827, 98.3471074380165,
60.3305785123967, 95.8677685950413, 0, 63.6363636363636, 71.900826446281,
0, 74.3801652892562, 76.8595041322314, 0, 61.9834710743802, 0,
0, 0, 84.297520661157, 47.1074380165289, 69.4214876033058, 97.5206611570248,
100, 61.1570247933884, 90.0826446280992, 78.5123966942149, 10.7438016528926,
100, 98.3471074380165, 100, 98.3471074380165, 93.3884297520661,
90.9090909090909, 57.8512396694215, 57.8512396694215, 92.5619834710744,
77.6859504132231, 69.4214876033058), Covariate = c(20, 14, 14,
20, 0, 0, 14, 14, 14, 16, 10, 20, 20, 20, 16, 10, 10, 0, 16,
16, 16, 10, 0, 12, 10, 12, 12, 0, 0, 20, 12, 16, 10, 12, 12,
0, 14, 14, 16, 0, 14, 20, 16, 20, 14, 12, 12, 20, 20, 0, 0, 14,
12, 10, 10, 20, 16, 16, 14, 10, 10, 10, 20, 16, 10, 0, 12, 12,
0, 12, 16, 14, 16, 14, 0, 0, 12, 20, 0, 12, 14, 14, 0, 0, 20,
20, 20, 14, 14, 10, 10, 20, 16, 16, 0, 12, 10, 10, 10, 16, 16,
12, 20, 10, 12, 12, 16, 14, 0, 16, 20, 12, 14, 10, 10, 0, 0,
12, 12, 10, 10, 0, 0, 0, 14, 12, 12, 20, 20, 14, 14, 14, 12,
20, 20, 20, 16, 16, 14, 10, 10, 16, 16, 16)), row.names = 433:576, class = "data.frame")


with my formula usually being something like:



Response ~ Covariate + I(Covariate^2)



Here is an example of the models I have fitted:



#Robust linear model
MASS::rlm(Response ~ Covariate + I(Covariate^2), data = df)

#Quantile regression
quantreg::rq(Response ~ Covariate + I(Covariate^2), data = df, tau = c(0.5, 0.95)) # In this case I want to predict the specified quantiles for the dose required to elicit a given response, although I realised this code doesn't do that...

#Machine learning algorithms were trained with caret
TRControl <- trainControl(method = "cv")

#Neural Network
caret::train(Response ~ Covariate, data = df, method = "neuralnet", trControl = TRControl)

#Support Vector Machine
caret::train(Response ~ Covariate, data = df, method = "polySVM", trControl = TRControl)






r machine-learning regression prediction






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 22 at 0:37







André.B

















asked Mar 21 at 22:04









André.BAndré.B

16712




16712







  • 1





    This sounds like more of a statistics question than a programming one. If so, this would be a better fit for Cross Validated

    – divibisan
    Mar 21 at 22:31











  • It does sit on the boundary... I put it here as I am looking for a programming solution having assumed it is not a novel concept. Happy to migrate it if need be.

    – André.B
    Mar 21 at 22:38











  • "interested in identifying the dose required to elicit a particular response" I'm not really sure I understand what you're asking. Usually one would fit a parametric (dose-response) model to the data which would allow you to directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value); so I'm not sure why you want to employ "inverse regression techniques". The dose-response model will allow you to determine concentrations that "elicit" any specific response.

    – Maurits Evers
    Mar 21 at 23:29












  • I have tried to clarify my question above; hopefully it is more clear what I am asking but please feel free to ask if anything still doesn't make sense. @MauritsEvers my understanding from the paper attached to my question is that an inverse regression technique is always required - in quarantine research Fieller's formula is usually used to these ends to calculate an interval for the estimate. How do you "directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value)"?

    – André.B
    Mar 21 at 23:57











  • At the very least you need to read ?formula so that you can understand why all your formulas will fail to deliver what you expect. I also question whether you know what you are doing with the last two (and maybe the last three) methods. I don't think formulas make any sense in those contexts.

    – 42-
    Mar 22 at 0:03













  • 1





    This sounds like more of a statistics question than a programming one. If so, this would be a better fit for Cross Validated

    – divibisan
    Mar 21 at 22:31











  • It does sit on the boundary... I put it here as I am looking for a programming solution having assumed it is not a novel concept. Happy to migrate it if need be.

    – André.B
    Mar 21 at 22:38











  • "interested in identifying the dose required to elicit a particular response" I'm not really sure I understand what you're asking. Usually one would fit a parametric (dose-response) model to the data which would allow you to directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value); so I'm not sure why you want to employ "inverse regression techniques". The dose-response model will allow you to determine concentrations that "elicit" any specific response.

    – Maurits Evers
    Mar 21 at 23:29












  • I have tried to clarify my question above; hopefully it is more clear what I am asking but please feel free to ask if anything still doesn't make sense. @MauritsEvers my understanding from the paper attached to my question is that an inverse regression technique is always required - in quarantine research Fieller's formula is usually used to these ends to calculate an interval for the estimate. How do you "directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value)"?

    – André.B
    Mar 21 at 23:57











  • At the very least you need to read ?formula so that you can understand why all your formulas will fail to deliver what you expect. I also question whether you know what you are doing with the last two (and maybe the last three) methods. I don't think formulas make any sense in those contexts.

    – 42-
    Mar 22 at 0:03








1




1





This sounds like more of a statistics question than a programming one. If so, this would be a better fit for Cross Validated

– divibisan
Mar 21 at 22:31





This sounds like more of a statistics question than a programming one. If so, this would be a better fit for Cross Validated

– divibisan
Mar 21 at 22:31













It does sit on the boundary... I put it here as I am looking for a programming solution having assumed it is not a novel concept. Happy to migrate it if need be.

– André.B
Mar 21 at 22:38





It does sit on the boundary... I put it here as I am looking for a programming solution having assumed it is not a novel concept. Happy to migrate it if need be.

– André.B
Mar 21 at 22:38













"interested in identifying the dose required to elicit a particular response" I'm not really sure I understand what you're asking. Usually one would fit a parametric (dose-response) model to the data which would allow you to directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value); so I'm not sure why you want to employ "inverse regression techniques". The dose-response model will allow you to determine concentrations that "elicit" any specific response.

– Maurits Evers
Mar 21 at 23:29






"interested in identifying the dose required to elicit a particular response" I'm not really sure I understand what you're asking. Usually one would fit a parametric (dose-response) model to the data which would allow you to directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value); so I'm not sure why you want to employ "inverse regression techniques". The dose-response model will allow you to determine concentrations that "elicit" any specific response.

– Maurits Evers
Mar 21 at 23:29














I have tried to clarify my question above; hopefully it is more clear what I am asking but please feel free to ask if anything still doesn't make sense. @MauritsEvers my understanding from the paper attached to my question is that an inverse regression technique is always required - in quarantine research Fieller's formula is usually used to these ends to calculate an interval for the estimate. How do you "directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value)"?

– André.B
Mar 21 at 23:57





I have tried to clarify my question above; hopefully it is more clear what I am asking but please feel free to ask if anything still doesn't make sense. @MauritsEvers my understanding from the paper attached to my question is that an inverse regression technique is always required - in quarantine research Fieller's formula is usually used to these ends to calculate an interval for the estimate. How do you "directly obtain an estimate of e.g. the dose necessary for a 50% reduction of the response quantity (the IC50 value)"?

– André.B
Mar 21 at 23:57













At the very least you need to read ?formula so that you can understand why all your formulas will fail to deliver what you expect. I also question whether you know what you are doing with the last two (and maybe the last three) methods. I don't think formulas make any sense in those contexts.

– 42-
Mar 22 at 0:03






At the very least you need to read ?formula so that you can understand why all your formulas will fail to deliver what you expect. I also question whether you know what you are doing with the last two (and maybe the last three) methods. I don't think formulas make any sense in those contexts.

– 42-
Mar 22 at 0:03













1 Answer
1






active

oldest

votes


















2














Further to my comments above, your data doesn't really resemble that of a typical dose-response measurement



library(ggplot2)
ggplot(df, aes(Covariate, log10(Response))) +
geom_point()


enter image description here



Here I assume that Covariate is the dose/concentration.



Do the different measurements for every Covariate relate to different experiments/groups? Do you plan on fitting multiple dose response curves do different groups in order to compare them?




A possible analysis strategy



Here is something that might give you some ideas. I'm using drc here because it allows me to fit a "sensible" dose-response curve to your data. A sensible dose-response model has horizontal asymptotes for dose → 0 and dose → ∞.




  1. In this particular example we fit a four parameter Weibull function to your data.



    library(drc)
    model <- drm(Response ~ Covariate, data = df, fct = W2.4())



  2. Let's plot original data and model predictions (including confidence interval)



    library(tidyverse)
    df.pred <- data.frame(Covariate = 1.1 * seq(min(df$Covariate), max(df$Covariate), length.out = 20)) %>%
    bind_cols(as.data.frame(predict(model, data.frame(Covariate = Covariate), interval = "confidence"))) %>%
    rename(Response = Prediction)

    ggplot(df, aes(Covariate, Response)) +
    geom_point() +
    geom_line(data = df.pred, aes(Covariate, Response), color = "blue") +
    geom_ribbon(data = df.pred, aes(x = Covariate, ymin = Lower, ymax = Upper), fill = "blue", alpha = 0.2)


    enter image description here




  3. We can now use uniroot to determine specific LDx values, which are defined as the dose required to reduce the maximum response by x / 100.



    getLDx <- function(model, x = 0.5) 
    maxResponse <- max(predict(model, data.frame(x = c(0, Inf))))
    uniroot(
    function(Covariate) predict(model, newdata = data.frame(Covariate = Covariate)) - x * maxResponse,
    interval = range(Covariate))$root



    This is basically an inversion of the model, so perhaps this is what the authors of the papers you link to in your original post refer to as "inverse regression techniques".




  4. Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)



    getLDx(model, x = 0.5)
    #[1] 9.465188


    From an inspection of the plot you can see that this value indeed corresponds to the dose where the response is 50% of the maximum response value.







share|improve this answer

























  • I know this is not typical - it is the only one my company would let me release online. Each value of the covariate is the dosage the subjects received.

    – André.B
    Mar 22 at 0:36











  • @André.B Ok, from a statistical modelling point of view I'd say there is little you can do here. I can guarantee that any model fit will be poor given the subject variability you have at specific doses. In other words, you could fit anything to the data, resulting estimates would have large uncertainties, making it hard to decide on any one model being the "best" model.

    – Maurits Evers
    Mar 22 at 0:40











  • I understand, but fortunately this is not the data that I will actually be working with - just the only data that I was allowed to release (probably for the reasons you mentioned). Honestly, thank you for engaging with my question and putting in the effort to understand it! I know that tone can be lost in text based discussions, but I really do appreciate the help.

    – André.B
    Mar 22 at 0:47






  • 1





    You're very welcome @André.B; it's an interesting discussion. In my line of work (biomedical drug efficacy studies) dose response analyses are commonly done along the lines of what's described in the drc paper which is therefore what I'm most familiar with. In any case, I wish you good luck with your further explorations.

    – Maurits Evers
    Mar 22 at 1:01







  • 1





    @André.B I've added a possible analysis strategy that may give you some ideas on how to proceed.

    – Maurits Evers
    Mar 22 at 2:33











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55289951%2finverse-regression-procedures-with-robust-linear-models-quantile-regression-an%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2














Further to my comments above, your data doesn't really resemble that of a typical dose-response measurement



library(ggplot2)
ggplot(df, aes(Covariate, log10(Response))) +
geom_point()


enter image description here



Here I assume that Covariate is the dose/concentration.



Do the different measurements for every Covariate relate to different experiments/groups? Do you plan on fitting multiple dose response curves do different groups in order to compare them?




A possible analysis strategy



Here is something that might give you some ideas. I'm using drc here because it allows me to fit a "sensible" dose-response curve to your data. A sensible dose-response model has horizontal asymptotes for dose → 0 and dose → ∞.




  1. In this particular example we fit a four parameter Weibull function to your data.



    library(drc)
    model <- drm(Response ~ Covariate, data = df, fct = W2.4())



  2. Let's plot original data and model predictions (including confidence interval)



    library(tidyverse)
    df.pred <- data.frame(Covariate = 1.1 * seq(min(df$Covariate), max(df$Covariate), length.out = 20)) %>%
    bind_cols(as.data.frame(predict(model, data.frame(Covariate = Covariate), interval = "confidence"))) %>%
    rename(Response = Prediction)

    ggplot(df, aes(Covariate, Response)) +
    geom_point() +
    geom_line(data = df.pred, aes(Covariate, Response), color = "blue") +
    geom_ribbon(data = df.pred, aes(x = Covariate, ymin = Lower, ymax = Upper), fill = "blue", alpha = 0.2)


    enter image description here




  3. We can now use uniroot to determine specific LDx values, which are defined as the dose required to reduce the maximum response by x / 100.



    getLDx <- function(model, x = 0.5) 
    maxResponse <- max(predict(model, data.frame(x = c(0, Inf))))
    uniroot(
    function(Covariate) predict(model, newdata = data.frame(Covariate = Covariate)) - x * maxResponse,
    interval = range(Covariate))$root



    This is basically an inversion of the model, so perhaps this is what the authors of the papers you link to in your original post refer to as "inverse regression techniques".




  4. Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)



    getLDx(model, x = 0.5)
    #[1] 9.465188


    From an inspection of the plot you can see that this value indeed corresponds to the dose where the response is 50% of the maximum response value.







share|improve this answer

























  • I know this is not typical - it is the only one my company would let me release online. Each value of the covariate is the dosage the subjects received.

    – André.B
    Mar 22 at 0:36











  • @André.B Ok, from a statistical modelling point of view I'd say there is little you can do here. I can guarantee that any model fit will be poor given the subject variability you have at specific doses. In other words, you could fit anything to the data, resulting estimates would have large uncertainties, making it hard to decide on any one model being the "best" model.

    – Maurits Evers
    Mar 22 at 0:40











  • I understand, but fortunately this is not the data that I will actually be working with - just the only data that I was allowed to release (probably for the reasons you mentioned). Honestly, thank you for engaging with my question and putting in the effort to understand it! I know that tone can be lost in text based discussions, but I really do appreciate the help.

    – André.B
    Mar 22 at 0:47






  • 1





    You're very welcome @André.B; it's an interesting discussion. In my line of work (biomedical drug efficacy studies) dose response analyses are commonly done along the lines of what's described in the drc paper which is therefore what I'm most familiar with. In any case, I wish you good luck with your further explorations.

    – Maurits Evers
    Mar 22 at 1:01







  • 1





    @André.B I've added a possible analysis strategy that may give you some ideas on how to proceed.

    – Maurits Evers
    Mar 22 at 2:33















2














Further to my comments above, your data doesn't really resemble that of a typical dose-response measurement



library(ggplot2)
ggplot(df, aes(Covariate, log10(Response))) +
geom_point()


enter image description here



Here I assume that Covariate is the dose/concentration.



Do the different measurements for every Covariate relate to different experiments/groups? Do you plan on fitting multiple dose response curves do different groups in order to compare them?




A possible analysis strategy



Here is something that might give you some ideas. I'm using drc here because it allows me to fit a "sensible" dose-response curve to your data. A sensible dose-response model has horizontal asymptotes for dose → 0 and dose → ∞.




  1. In this particular example we fit a four parameter Weibull function to your data.



    library(drc)
    model <- drm(Response ~ Covariate, data = df, fct = W2.4())



  2. Let's plot original data and model predictions (including confidence interval)



    library(tidyverse)
    df.pred <- data.frame(Covariate = 1.1 * seq(min(df$Covariate), max(df$Covariate), length.out = 20)) %>%
    bind_cols(as.data.frame(predict(model, data.frame(Covariate = Covariate), interval = "confidence"))) %>%
    rename(Response = Prediction)

    ggplot(df, aes(Covariate, Response)) +
    geom_point() +
    geom_line(data = df.pred, aes(Covariate, Response), color = "blue") +
    geom_ribbon(data = df.pred, aes(x = Covariate, ymin = Lower, ymax = Upper), fill = "blue", alpha = 0.2)


    enter image description here




  3. We can now use uniroot to determine specific LDx values, which are defined as the dose required to reduce the maximum response by x / 100.



    getLDx <- function(model, x = 0.5) 
    maxResponse <- max(predict(model, data.frame(x = c(0, Inf))))
    uniroot(
    function(Covariate) predict(model, newdata = data.frame(Covariate = Covariate)) - x * maxResponse,
    interval = range(Covariate))$root



    This is basically an inversion of the model, so perhaps this is what the authors of the papers you link to in your original post refer to as "inverse regression techniques".




  4. Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)



    getLDx(model, x = 0.5)
    #[1] 9.465188


    From an inspection of the plot you can see that this value indeed corresponds to the dose where the response is 50% of the maximum response value.







share|improve this answer

























  • I know this is not typical - it is the only one my company would let me release online. Each value of the covariate is the dosage the subjects received.

    – André.B
    Mar 22 at 0:36











  • @André.B Ok, from a statistical modelling point of view I'd say there is little you can do here. I can guarantee that any model fit will be poor given the subject variability you have at specific doses. In other words, you could fit anything to the data, resulting estimates would have large uncertainties, making it hard to decide on any one model being the "best" model.

    – Maurits Evers
    Mar 22 at 0:40











  • I understand, but fortunately this is not the data that I will actually be working with - just the only data that I was allowed to release (probably for the reasons you mentioned). Honestly, thank you for engaging with my question and putting in the effort to understand it! I know that tone can be lost in text based discussions, but I really do appreciate the help.

    – André.B
    Mar 22 at 0:47






  • 1





    You're very welcome @André.B; it's an interesting discussion. In my line of work (biomedical drug efficacy studies) dose response analyses are commonly done along the lines of what's described in the drc paper which is therefore what I'm most familiar with. In any case, I wish you good luck with your further explorations.

    – Maurits Evers
    Mar 22 at 1:01







  • 1





    @André.B I've added a possible analysis strategy that may give you some ideas on how to proceed.

    – Maurits Evers
    Mar 22 at 2:33













2












2








2







Further to my comments above, your data doesn't really resemble that of a typical dose-response measurement



library(ggplot2)
ggplot(df, aes(Covariate, log10(Response))) +
geom_point()


enter image description here



Here I assume that Covariate is the dose/concentration.



Do the different measurements for every Covariate relate to different experiments/groups? Do you plan on fitting multiple dose response curves do different groups in order to compare them?




A possible analysis strategy



Here is something that might give you some ideas. I'm using drc here because it allows me to fit a "sensible" dose-response curve to your data. A sensible dose-response model has horizontal asymptotes for dose → 0 and dose → ∞.




  1. In this particular example we fit a four parameter Weibull function to your data.



    library(drc)
    model <- drm(Response ~ Covariate, data = df, fct = W2.4())



  2. Let's plot original data and model predictions (including confidence interval)



    library(tidyverse)
    df.pred <- data.frame(Covariate = 1.1 * seq(min(df$Covariate), max(df$Covariate), length.out = 20)) %>%
    bind_cols(as.data.frame(predict(model, data.frame(Covariate = Covariate), interval = "confidence"))) %>%
    rename(Response = Prediction)

    ggplot(df, aes(Covariate, Response)) +
    geom_point() +
    geom_line(data = df.pred, aes(Covariate, Response), color = "blue") +
    geom_ribbon(data = df.pred, aes(x = Covariate, ymin = Lower, ymax = Upper), fill = "blue", alpha = 0.2)


    enter image description here




  3. We can now use uniroot to determine specific LDx values, which are defined as the dose required to reduce the maximum response by x / 100.



    getLDx <- function(model, x = 0.5) 
    maxResponse <- max(predict(model, data.frame(x = c(0, Inf))))
    uniroot(
    function(Covariate) predict(model, newdata = data.frame(Covariate = Covariate)) - x * maxResponse,
    interval = range(Covariate))$root



    This is basically an inversion of the model, so perhaps this is what the authors of the papers you link to in your original post refer to as "inverse regression techniques".




  4. Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)



    getLDx(model, x = 0.5)
    #[1] 9.465188


    From an inspection of the plot you can see that this value indeed corresponds to the dose where the response is 50% of the maximum response value.







share|improve this answer















Further to my comments above, your data doesn't really resemble that of a typical dose-response measurement



library(ggplot2)
ggplot(df, aes(Covariate, log10(Response))) +
geom_point()


enter image description here



Here I assume that Covariate is the dose/concentration.



Do the different measurements for every Covariate relate to different experiments/groups? Do you plan on fitting multiple dose response curves do different groups in order to compare them?




A possible analysis strategy



Here is something that might give you some ideas. I'm using drc here because it allows me to fit a "sensible" dose-response curve to your data. A sensible dose-response model has horizontal asymptotes for dose → 0 and dose → ∞.




  1. In this particular example we fit a four parameter Weibull function to your data.



    library(drc)
    model <- drm(Response ~ Covariate, data = df, fct = W2.4())



  2. Let's plot original data and model predictions (including confidence interval)



    library(tidyverse)
    df.pred <- data.frame(Covariate = 1.1 * seq(min(df$Covariate), max(df$Covariate), length.out = 20)) %>%
    bind_cols(as.data.frame(predict(model, data.frame(Covariate = Covariate), interval = "confidence"))) %>%
    rename(Response = Prediction)

    ggplot(df, aes(Covariate, Response)) +
    geom_point() +
    geom_line(data = df.pred, aes(Covariate, Response), color = "blue") +
    geom_ribbon(data = df.pred, aes(x = Covariate, ymin = Lower, ymax = Upper), fill = "blue", alpha = 0.2)


    enter image description here




  3. We can now use uniroot to determine specific LDx values, which are defined as the dose required to reduce the maximum response by x / 100.



    getLDx <- function(model, x = 0.5) 
    maxResponse <- max(predict(model, data.frame(x = c(0, Inf))))
    uniroot(
    function(Covariate) predict(model, newdata = data.frame(Covariate = Covariate)) - x * maxResponse,
    interval = range(Covariate))$root



    This is basically an inversion of the model, so perhaps this is what the authors of the papers you link to in your original post refer to as "inverse regression techniques".




  4. Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)



    getLDx(model, x = 0.5)
    #[1] 9.465188


    From an inspection of the plot you can see that this value indeed corresponds to the dose where the response is 50% of the maximum response value.








share|improve this answer














share|improve this answer



share|improve this answer








edited Mar 22 at 2:38

























answered Mar 22 at 0:31









Maurits EversMaurits Evers

30.4k41637




30.4k41637












  • I know this is not typical - it is the only one my company would let me release online. Each value of the covariate is the dosage the subjects received.

    – André.B
    Mar 22 at 0:36











  • @André.B Ok, from a statistical modelling point of view I'd say there is little you can do here. I can guarantee that any model fit will be poor given the subject variability you have at specific doses. In other words, you could fit anything to the data, resulting estimates would have large uncertainties, making it hard to decide on any one model being the "best" model.

    – Maurits Evers
    Mar 22 at 0:40











  • I understand, but fortunately this is not the data that I will actually be working with - just the only data that I was allowed to release (probably for the reasons you mentioned). Honestly, thank you for engaging with my question and putting in the effort to understand it! I know that tone can be lost in text based discussions, but I really do appreciate the help.

    – André.B
    Mar 22 at 0:47






  • 1





    You're very welcome @André.B; it's an interesting discussion. In my line of work (biomedical drug efficacy studies) dose response analyses are commonly done along the lines of what's described in the drc paper which is therefore what I'm most familiar with. In any case, I wish you good luck with your further explorations.

    – Maurits Evers
    Mar 22 at 1:01







  • 1





    @André.B I've added a possible analysis strategy that may give you some ideas on how to proceed.

    – Maurits Evers
    Mar 22 at 2:33

















  • I know this is not typical - it is the only one my company would let me release online. Each value of the covariate is the dosage the subjects received.

    – André.B
    Mar 22 at 0:36











  • @André.B Ok, from a statistical modelling point of view I'd say there is little you can do here. I can guarantee that any model fit will be poor given the subject variability you have at specific doses. In other words, you could fit anything to the data, resulting estimates would have large uncertainties, making it hard to decide on any one model being the "best" model.

    – Maurits Evers
    Mar 22 at 0:40











  • I understand, but fortunately this is not the data that I will actually be working with - just the only data that I was allowed to release (probably for the reasons you mentioned). Honestly, thank you for engaging with my question and putting in the effort to understand it! I know that tone can be lost in text based discussions, but I really do appreciate the help.

    – André.B
    Mar 22 at 0:47






  • 1





    You're very welcome @André.B; it's an interesting discussion. In my line of work (biomedical drug efficacy studies) dose response analyses are commonly done along the lines of what's described in the drc paper which is therefore what I'm most familiar with. In any case, I wish you good luck with your further explorations.

    – Maurits Evers
    Mar 22 at 1:01







  • 1





    @André.B I've added a possible analysis strategy that may give you some ideas on how to proceed.

    – Maurits Evers
    Mar 22 at 2:33
















I know this is not typical - it is the only one my company would let me release online. Each value of the covariate is the dosage the subjects received.

– André.B
Mar 22 at 0:36





I know this is not typical - it is the only one my company would let me release online. Each value of the covariate is the dosage the subjects received.

– André.B
Mar 22 at 0:36













@André.B Ok, from a statistical modelling point of view I'd say there is little you can do here. I can guarantee that any model fit will be poor given the subject variability you have at specific doses. In other words, you could fit anything to the data, resulting estimates would have large uncertainties, making it hard to decide on any one model being the "best" model.

– Maurits Evers
Mar 22 at 0:40





@André.B Ok, from a statistical modelling point of view I'd say there is little you can do here. I can guarantee that any model fit will be poor given the subject variability you have at specific doses. In other words, you could fit anything to the data, resulting estimates would have large uncertainties, making it hard to decide on any one model being the "best" model.

– Maurits Evers
Mar 22 at 0:40













I understand, but fortunately this is not the data that I will actually be working with - just the only data that I was allowed to release (probably for the reasons you mentioned). Honestly, thank you for engaging with my question and putting in the effort to understand it! I know that tone can be lost in text based discussions, but I really do appreciate the help.

– André.B
Mar 22 at 0:47





I understand, but fortunately this is not the data that I will actually be working with - just the only data that I was allowed to release (probably for the reasons you mentioned). Honestly, thank you for engaging with my question and putting in the effort to understand it! I know that tone can be lost in text based discussions, but I really do appreciate the help.

– André.B
Mar 22 at 0:47




1




1





You're very welcome @André.B; it's an interesting discussion. In my line of work (biomedical drug efficacy studies) dose response analyses are commonly done along the lines of what's described in the drc paper which is therefore what I'm most familiar with. In any case, I wish you good luck with your further explorations.

– Maurits Evers
Mar 22 at 1:01






You're very welcome @André.B; it's an interesting discussion. In my line of work (biomedical drug efficacy studies) dose response analyses are commonly done along the lines of what's described in the drc paper which is therefore what I'm most familiar with. In any case, I wish you good luck with your further explorations.

– Maurits Evers
Mar 22 at 1:01





1




1





@André.B I've added a possible analysis strategy that may give you some ideas on how to proceed.

– Maurits Evers
Mar 22 at 2:33





@André.B I've added a possible analysis strategy that may give you some ideas on how to proceed.

– Maurits Evers
Mar 22 at 2:33



















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55289951%2finverse-regression-procedures-with-robust-linear-models-quantile-regression-an%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript