【发布时间】:2014-01-30 22:39:21
【问题描述】:
假设我必须在回归中估计系数 a,b:
y=a*x+b*z+c
我事先知道 y 总是在 y>=0 和 y
样本数据:
mydata<-data.frame(y=c(0,1,3,4,9,11),x=c(1,3,4,7,10,11),z=c(1,1,1,9,6,7))
round(predict(lm(y~x+z,data=mydata)),2)
1 2 3 4 5 6
-0.87 1.79 3.12 4.30 9.34 10.32
第一个预测值为
我尝试了没有截距的模型:所有预测都是 >0,但是 y 的第三个预测是 >x (4.03>3)
round(predict(lm(y~x+z-1,data=mydata)),2)
1 2 3 4 5 6
0.76 2.94 4.03 4.67 8.92 9.68
我也考虑过用 proportion y/x 代替 y:
mydata$y2x<-mydata$y/mydata$x
round(predict(lm(y2x~x+z,data=mydata)),2)
1 2 3 4 5 6
0.15 0.39 0.50 0.49 0.97 1.04
round(predict(lm(y2x~x+z-1,data=mydata)),2)
1 2 3 4 5 6
0.08 0.33 0.46 0.47 0.99 1.07
但现在第六个预测>1,但比例应该在[0,1]范围内。
我还尝试应用 glm 与 offset 选项一起使用的方法:Regression for a Rate variable in R
和
http://en.wikipedia.org/wiki/Poisson_regression#.22Exposure.22_and_offset
但这并不成功。
请注意,在我的数据因变量中:y/x 比例既是零膨胀又是一膨胀。 任何想法,在 R ('glm','lm') 中构建模型的合适方法是什么?
【问题讨论】:
-
您尝试了什么,为什么没有成功,我们是否也能获得作业学分?
-
如果您提供数据或代表性子集,您更有可能获得帮助,正如@AndyClifton 所说,展示您尝试过的内容。此外,在您的模型中,y 出现在 LHS 和 RHS 上。这是故意的吗?
-
我会检查产生超出此范围的系数的数据集。为什么坚信他们总是在你的范围内?如果数据是模拟的,我认为他们中的一些人走在边缘没有问题。
-
这是一个统计问题。您没有提供任何有关
y实际含义的信息,但我怀疑您应该使用广义线性模型。 -
我的错误我已经纠正了:y 只在 LHS 上。数据不是模拟的,并且不能违反生成数据规则 0
标签: r regression