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;
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
|
show 11 more comments
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
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
|
show 11 more comments
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
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
r machine-learning regression prediction
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
|
show 11 more comments
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
|
show 11 more comments
1 Answer
1
active
oldest
votes
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()
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 → ∞
.
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())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)We can now use
uniroot
to determine specific LDx values, which are defined as the dose required to reduce the maximum response byx
/ 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))$rootThis 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".
Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)
getLDx(model, x = 0.5)
#[1] 9.465188From 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.
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 thedrc
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
|
show 2 more comments
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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()
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 → ∞
.
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())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)We can now use
uniroot
to determine specific LDx values, which are defined as the dose required to reduce the maximum response byx
/ 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))$rootThis 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".
Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)
getLDx(model, x = 0.5)
#[1] 9.465188From 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.
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 thedrc
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
|
show 2 more comments
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()
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 → ∞
.
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())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)We can now use
uniroot
to determine specific LDx values, which are defined as the dose required to reduce the maximum response byx
/ 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))$rootThis 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".
Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)
getLDx(model, x = 0.5)
#[1] 9.465188From 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.
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 thedrc
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
|
show 2 more comments
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()
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 → ∞
.
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())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)We can now use
uniroot
to determine specific LDx values, which are defined as the dose required to reduce the maximum response byx
/ 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))$rootThis 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".
Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)
getLDx(model, x = 0.5)
#[1] 9.465188From 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.
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()
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 → ∞
.
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())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)We can now use
uniroot
to determine specific LDx values, which are defined as the dose required to reduce the maximum response byx
/ 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))$rootThis 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".
Let's calculate the LD50 value (i.e. the dose required to reduce the response by 50%)
getLDx(model, x = 0.5)
#[1] 9.465188From 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.
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 thedrc
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
|
show 2 more comments
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 thedrc
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
|
show 2 more comments
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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