Reponse must have 3 or more levels
I am trying to perform a ordinal logistic regression using R, but I keep getting this error which says: response must have 3 or more levels. What does "response" mean in R? Tried searching on google but nothing is explained on the meaning of response in R. I am pasting the snapshot of the data I am trying to regress and the code I have written so far:
m <- polr(as.factor(Gender) ~ VeryUnsat + Unsat + Sat + VerySat, data = df, Hess=TRUE)
summary(m)
ctable <- coef(summary(m))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(m)
exp(coef(m))
exp(cbind(OR = coef(m), ci))`
r regression
|
show 1 more comment
I am trying to perform a ordinal logistic regression using R, but I keep getting this error which says: response must have 3 or more levels. What does "response" mean in R? Tried searching on google but nothing is explained on the meaning of response in R. I am pasting the snapshot of the data I am trying to regress and the code I have written so far:
m <- polr(as.factor(Gender) ~ VeryUnsat + Unsat + Sat + VerySat, data = df, Hess=TRUE)
summary(m)
ctable <- coef(summary(m))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(m)
exp(coef(m))
exp(cbind(OR = coef(m), ci))`
r regression
1
"Response" is the outcome you're trying to model. Right now it looks like you have your formula backwards, as the response/outcome should be on the left-hand side of~
, where you currently haveGender
.
– Marius
Nov 15 '18 at 3:34
So how do I fix this? Age has 3 levels, but not gender...
– TotalGadha
Nov 15 '18 at 3:38
Pls provide data, no pictures. Check?dput
.
– vaettchen
Nov 15 '18 at 3:46
I am new to this community, how do I provide my data here? It is in an excel file..
– TotalGadha
Nov 15 '18 at 3:47
What are you trying to model here? It looks like your response/outcome should be satisfaction, which has 4 levels. You need something likepolr(Satisfaction ~ age + gender + other_predictors)
, but you may have to reshape your data so it's "long" and you have one row per observation first.
– Marius
Nov 15 '18 at 3:49
|
show 1 more comment
I am trying to perform a ordinal logistic regression using R, but I keep getting this error which says: response must have 3 or more levels. What does "response" mean in R? Tried searching on google but nothing is explained on the meaning of response in R. I am pasting the snapshot of the data I am trying to regress and the code I have written so far:
m <- polr(as.factor(Gender) ~ VeryUnsat + Unsat + Sat + VerySat, data = df, Hess=TRUE)
summary(m)
ctable <- coef(summary(m))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(m)
exp(coef(m))
exp(cbind(OR = coef(m), ci))`
r regression
I am trying to perform a ordinal logistic regression using R, but I keep getting this error which says: response must have 3 or more levels. What does "response" mean in R? Tried searching on google but nothing is explained on the meaning of response in R. I am pasting the snapshot of the data I am trying to regress and the code I have written so far:
m <- polr(as.factor(Gender) ~ VeryUnsat + Unsat + Sat + VerySat, data = df, Hess=TRUE)
summary(m)
ctable <- coef(summary(m))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(m)
exp(coef(m))
exp(cbind(OR = coef(m), ci))`
r regression
r regression
asked Nov 15 '18 at 3:32
TotalGadhaTotalGadha
336
336
1
"Response" is the outcome you're trying to model. Right now it looks like you have your formula backwards, as the response/outcome should be on the left-hand side of~
, where you currently haveGender
.
– Marius
Nov 15 '18 at 3:34
So how do I fix this? Age has 3 levels, but not gender...
– TotalGadha
Nov 15 '18 at 3:38
Pls provide data, no pictures. Check?dput
.
– vaettchen
Nov 15 '18 at 3:46
I am new to this community, how do I provide my data here? It is in an excel file..
– TotalGadha
Nov 15 '18 at 3:47
What are you trying to model here? It looks like your response/outcome should be satisfaction, which has 4 levels. You need something likepolr(Satisfaction ~ age + gender + other_predictors)
, but you may have to reshape your data so it's "long" and you have one row per observation first.
– Marius
Nov 15 '18 at 3:49
|
show 1 more comment
1
"Response" is the outcome you're trying to model. Right now it looks like you have your formula backwards, as the response/outcome should be on the left-hand side of~
, where you currently haveGender
.
– Marius
Nov 15 '18 at 3:34
So how do I fix this? Age has 3 levels, but not gender...
– TotalGadha
Nov 15 '18 at 3:38
Pls provide data, no pictures. Check?dput
.
– vaettchen
Nov 15 '18 at 3:46
I am new to this community, how do I provide my data here? It is in an excel file..
– TotalGadha
Nov 15 '18 at 3:47
What are you trying to model here? It looks like your response/outcome should be satisfaction, which has 4 levels. You need something likepolr(Satisfaction ~ age + gender + other_predictors)
, but you may have to reshape your data so it's "long" and you have one row per observation first.
– Marius
Nov 15 '18 at 3:49
1
1
"Response" is the outcome you're trying to model. Right now it looks like you have your formula backwards, as the response/outcome should be on the left-hand side of
~
, where you currently have Gender
.– Marius
Nov 15 '18 at 3:34
"Response" is the outcome you're trying to model. Right now it looks like you have your formula backwards, as the response/outcome should be on the left-hand side of
~
, where you currently have Gender
.– Marius
Nov 15 '18 at 3:34
So how do I fix this? Age has 3 levels, but not gender...
– TotalGadha
Nov 15 '18 at 3:38
So how do I fix this? Age has 3 levels, but not gender...
– TotalGadha
Nov 15 '18 at 3:38
Pls provide data, no pictures. Check
?dput
.– vaettchen
Nov 15 '18 at 3:46
Pls provide data, no pictures. Check
?dput
.– vaettchen
Nov 15 '18 at 3:46
I am new to this community, how do I provide my data here? It is in an excel file..
– TotalGadha
Nov 15 '18 at 3:47
I am new to this community, how do I provide my data here? It is in an excel file..
– TotalGadha
Nov 15 '18 at 3:47
What are you trying to model here? It looks like your response/outcome should be satisfaction, which has 4 levels. You need something like
polr(Satisfaction ~ age + gender + other_predictors)
, but you may have to reshape your data so it's "long" and you have one row per observation first.– Marius
Nov 15 '18 at 3:49
What are you trying to model here? It looks like your response/outcome should be satisfaction, which has 4 levels. You need something like
polr(Satisfaction ~ age + gender + other_predictors)
, but you may have to reshape your data so it's "long" and you have one row per observation first.– Marius
Nov 15 '18 at 3:49
|
show 1 more comment
1 Answer
1
active
oldest
votes
You should look at the example of polr method.
Just type ?polr in your command line in RStudio
You will see that your response variable is not well defined for what polr expects (unless I am misunderstanding what you try to do)
polr tries to model multilevel ordered variables such as Sat in the example.
I see two problems in your data:
you have aggregated data, a count of how many samples have each level of satisfaction for each combination of age and gender.
your response variable is splitted across different columns. Starting from the non-aggregated data you need to convert to a single variable with multiple possible values (VeryUnsat, Unsat, Sat, VerySat)
You may be able to use the aggregated data if the method allows to specify some weights to each combination (haven't checked the details of the method).
add a comment |
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%2f53312036%2freponse-must-have-3-or-more-levels%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
You should look at the example of polr method.
Just type ?polr in your command line in RStudio
You will see that your response variable is not well defined for what polr expects (unless I am misunderstanding what you try to do)
polr tries to model multilevel ordered variables such as Sat in the example.
I see two problems in your data:
you have aggregated data, a count of how many samples have each level of satisfaction for each combination of age and gender.
your response variable is splitted across different columns. Starting from the non-aggregated data you need to convert to a single variable with multiple possible values (VeryUnsat, Unsat, Sat, VerySat)
You may be able to use the aggregated data if the method allows to specify some weights to each combination (haven't checked the details of the method).
add a comment |
You should look at the example of polr method.
Just type ?polr in your command line in RStudio
You will see that your response variable is not well defined for what polr expects (unless I am misunderstanding what you try to do)
polr tries to model multilevel ordered variables such as Sat in the example.
I see two problems in your data:
you have aggregated data, a count of how many samples have each level of satisfaction for each combination of age and gender.
your response variable is splitted across different columns. Starting from the non-aggregated data you need to convert to a single variable with multiple possible values (VeryUnsat, Unsat, Sat, VerySat)
You may be able to use the aggregated data if the method allows to specify some weights to each combination (haven't checked the details of the method).
add a comment |
You should look at the example of polr method.
Just type ?polr in your command line in RStudio
You will see that your response variable is not well defined for what polr expects (unless I am misunderstanding what you try to do)
polr tries to model multilevel ordered variables such as Sat in the example.
I see two problems in your data:
you have aggregated data, a count of how many samples have each level of satisfaction for each combination of age and gender.
your response variable is splitted across different columns. Starting from the non-aggregated data you need to convert to a single variable with multiple possible values (VeryUnsat, Unsat, Sat, VerySat)
You may be able to use the aggregated data if the method allows to specify some weights to each combination (haven't checked the details of the method).
You should look at the example of polr method.
Just type ?polr in your command line in RStudio
You will see that your response variable is not well defined for what polr expects (unless I am misunderstanding what you try to do)
polr tries to model multilevel ordered variables such as Sat in the example.
I see two problems in your data:
you have aggregated data, a count of how many samples have each level of satisfaction for each combination of age and gender.
your response variable is splitted across different columns. Starting from the non-aggregated data you need to convert to a single variable with multiple possible values (VeryUnsat, Unsat, Sat, VerySat)
You may be able to use the aggregated data if the method allows to specify some weights to each combination (haven't checked the details of the method).
answered Nov 15 '18 at 3:57
PicarusPicarus
5801722
5801722
add a comment |
add a comment |
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%2f53312036%2freponse-must-have-3-or-more-levels%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
"Response" is the outcome you're trying to model. Right now it looks like you have your formula backwards, as the response/outcome should be on the left-hand side of
~
, where you currently haveGender
.– Marius
Nov 15 '18 at 3:34
So how do I fix this? Age has 3 levels, but not gender...
– TotalGadha
Nov 15 '18 at 3:38
Pls provide data, no pictures. Check
?dput
.– vaettchen
Nov 15 '18 at 3:46
I am new to this community, how do I provide my data here? It is in an excel file..
– TotalGadha
Nov 15 '18 at 3:47
What are you trying to model here? It looks like your response/outcome should be satisfaction, which has 4 levels. You need something like
polr(Satisfaction ~ age + gender + other_predictors)
, but you may have to reshape your data so it's "long" and you have one row per observation first.– Marius
Nov 15 '18 at 3:49