Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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_Vector_Linear Regression_Logistic Regression_Dummy Variable - Fatal编程技术网

R 在逻辑回归中添加虚拟变量向量

R 在逻辑回归中添加虚拟变量向量,r,vector,linear-regression,logistic-regression,dummy-variable,R,Vector,Linear Regression,Logistic Regression,Dummy Variable,我目前正在尝试进行逻辑回归,其中一个变量是32个虚拟变量的向量。每个假人代表一种犯罪类型。例如: narcotics <- ifelse(train$PRIMARY.DESCRIPTION == "NARCOTICS", 1,0) 我认为这是可行的,因为它们来自同一个数据集,并且假人代表其中一列的每个唯一元素。当我分别输入每个虚拟变量时,它是成功的,但我想压缩回归并使其更有效 提前感谢如果您希望每种类型的犯罪都成为自己的预测因素,您需要将它们绑定到训练,然后在lm公式中指定变量。(实际上

我目前正在尝试进行逻辑回归,其中一个变量是32个虚拟变量的向量。每个假人代表一种犯罪类型。例如:

narcotics <- ifelse(train$PRIMARY.DESCRIPTION == "NARCOTICS", 1,0)
我认为这是可行的,因为它们来自同一个数据集,并且假人代表其中一列的每个唯一元素。当我分别输入每个虚拟变量时,它是成功的,但我想压缩回归并使其更有效


提前感谢

如果您希望每种类型的犯罪都成为自己的预测因素,您需要将它们绑定到
训练
,然后在
lm
公式中指定变量。(实际上,对于logit,它应该是
glm()

对于更简洁的公式,请在
glm()
data=
参数中子集
train
,以仅包括响应变量和预期设计矩阵。然后使用
street1~。
作为公式

train <- cbind(train, narcotics, theft)I
model.vars <- c("narcotics", "theft", "street1")
logit.mod.train <- glm(street1 ~ ., data = train[,model.vars], family = "binomial")
model.frame.default中出错(公式=响应~PRIMARY.DESCRIPTION+: 可变长度不同(针对'crime.type'找到)


错误消息显示
变量长度不同
。可能与您创建
crime.type
的方式有关。您的意思是
crime.type谢谢我们的回答。我忘了提到street1实际上是犯罪地点的虚拟变量。因此列是location.DESCRIPTION,元素是street。因此e是:street1没关系。我算出了。谢谢!因为street1是一个虚拟变量,所以我从model.vars中排除了它,它工作了!如果这个解决方案有帮助,请单击答案旁边的复选标记将其标记为接受。
logit.mod.train <- lm(street1 ~ BEAT+WARD+X.COORDINATE+Y.COORDINATE+LATITUDE+LONGITUDE+crime.type, data = train, family = "binomial")
street1 <- ifelse(train$LOCATION.DESCRIPTION == "STREET", 1,0). 
Error in model.frame.default(formula = street1 ~ BEAT + WARD + X.COORDINATE +  : 
variable lengths differ (found for 'crime.type')
train <- cbind(train, narcotics, theft)I
model.vars <- c("narcotics", "theft", "street1")
logit.mod.train <- glm(street1 ~ ., data = train[,model.vars], family = "binomial")
N <- 100
train <- data.frame(PRIMARY.DESCRIPTION=sample(c("A","B"), replace = T, size = N),
                    response = rbinom(n=N, prob=0.7, size=1))
dim(train) # 100  2

narcotics <- ifelse(train$PRIMARY.DESCRIPTION == "A", 1, 0) 
length(narcotics) # 100

theft <-  ifelse(train$PRIMARY.DESCRIPTION == "B", 1, 0)
length(theft) # 100

crime.type <- c(desc.A, desc.B)
length(crime.type) # 200

logit.mod.train <- glm(response ~ PRIMARY.DESCRIPTION+crime.type, data = train, family = "binomial")