Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何对非二元变量进行逻辑回归?_R_Regression_Logistic Regression_Estimation - Fatal编程技术网

R 如何对非二元变量进行逻辑回归?

R 如何对非二元变量进行逻辑回归?,r,regression,logistic-regression,estimation,R,Regression,Logistic Regression,Estimation,我一直在寻找这个答案,我真的很惊讶没有找到它。我只想在R 让我们定义一些人工数据: set.seed(42) y <- sample(0:2, 100, replace = T) x <- rnorm(100) 但是我得到的信息是,y应该在区间[0,1]内。你知道我怎么做这个回归吗 请注意-我知道执行多层次逻辑回归并不是那么简单,有几种方法可以做到这一点,例如一对所有。但在我查找时,我找不到任何错误消息。如果您阅读了错误消息,它会提示您可能会成功: y <- sample(s

我一直在寻找这个答案,我真的很惊讶没有找到它。我只想在R

让我们定义一些人工数据:

set.seed(42)
y <- sample(0:2, 100, replace = T)
x <- rnorm(100)
但是我得到的信息是,
y
应该在区间[0,1]内。你知道我怎么做这个回归吗


请注意-我知道执行多层次逻辑回归并不是那么简单,有几种方法可以做到这一点,例如一对所有。但在我查找时,我找不到任何错误消息。

如果您阅读了错误消息,它会提示您可能会成功:

y <- sample(seq(0,1,length=3), 100, replace = T)

y如果您阅读错误消息,它会提示您可能会成功:

y <- sample(seq(0,1,length=3), 100, replace = T)
y
set.seed(42)
y
set.seed(42)

由glm实施的y逻辑回归仅适用于2个水平的输出,而不是3个水平

这条消息有点夸张,因为您可以在逻辑回归中将y变量指定为0和1,或者指定为一个比例(0和1之间),并使用
权重
参数指定该比例的受试者数量


如果在响应中有3个或3个以上的有序级别,则需要使用一个泛化,一个常见的泛化是比例赔率逻辑回归(也称为其他名称)。MASS包中的
polr
函数和rms包中的
lrm
函数(可能还有其他包中的其他函数)适合这些类型的模型,但
glm
不适合。由
glm
实现的逻辑回归只适用于2个输出级别,而不是3个

这条消息有点夸张,因为您可以在逻辑回归中将y变量指定为0和1,或者指定为一个比例(0和1之间),并使用
权重
参数指定该比例的受试者数量

如果在响应中有3个或3个以上的有序级别,则需要使用一个泛化,一个常见的泛化是比例赔率逻辑回归(也称为其他名称)。MASS包中的
polr
功能和rms包中的
lrm
功能(可能还有其他包中的其他功能)适合这些类型的型号,但
glm
不适合

# weights:  9 (4 variable)
initial  value 109.861229 
final  value 104.977336 
converged
Call:
multinom(formula = y ~ x)

Coefficients:
   (Intercept)           x
1 -0.001529465  0.29386524
2 -0.649236723 -0.01933747

Residual Deviance: 209.9547 
AIC: 217.9547 
Call:
polr(formula = ordered(y) ~ x)

Coefficients:
         x 
0.06411137 

Intercepts:
       0|1        1|2 
-0.4102819  1.3218487 

Residual Deviance: 212.165 
AIC: 218.165