使用Logistic回归分析砖房价格时遇‘y值需0<=y<=1’错误求助
问题根源与解决方案
错误原因
你搞反了Logistic回归的变量角色:Logistic回归要求因变量必须是二分类(0/1或布尔值),而你把连续型的房价(Price)放在了因变量位置——房价数值远大于1,自然触发y values must be 0 <= y <= 1的报错。
针对你的研究问题的正确模型
你的核心需求是判断“砖房是否比非砖房更贵”,这个问题对应线性回归,因为你要比较两类房子的连续型房价差异:
# 线性回归:用Brick预测Price,直接看Brick的系数判断砖房溢价 glm(Price ~ Brick, data = mc) # 或者用基础的lm函数,结果一致 lm(Price ~ Brick, data = mc)
模型中Brick的系数会直接告诉你:砖房比非砖房的平均房价高多少。
满足作业要求的Logistic回归用法
如果必须对比Logistic与线性回归,Logistic回归对应的问题应该是**“用房价预测房子是否是砖房”**,此时二分类的Brick是因变量,连续型的Price是自变量:
- 确保
Brick已转为0/1(你已经完成这一步) - 运行正确的Logistic回归代码:
glm(Brick ~ Price, data = mc, family = "binomial")
- 解决系数微小的问题:
因为Price的数值量级大(比如单位是万元),回归系数会被缩放得极小。你可以对Price做标准化处理,让系数更易读:
# 标准化Price,生成新列 mc$Price_scaled <- scale(mc$Price) # 用标准化后的Price做Logistic回归 glm(Brick ~ Price_scaled, data = mc, family = "binomial")
此时的系数代表:房价每变化1个标准差,房子是砖房的对数发生比的变化量。
总结
- 原始报错是因为违反了Logistic回归的因变量类型要求;
- 对应“砖房是否更贵”的研究问题,线性回归是适配的模型;
- 若要使用Logistic回归,需调整变量角色为“用房价预测是否是砖房”,必要时标准化自变量优化系数可读性。
内容的提问来源于stack exchange,提问作者bay
相关产品推荐
相关产品推荐

