因此,我正在尝试使用二元逻辑回归模型来估算疾病的几率,这是最初的疾病暴发数据(有196个观察结果,我删除了一些数据条目):
第1栏:身份证(人)
第2栏:人的年龄
第3栏:SES(该人的社会经济地位)(1 =上层阶级,2 =中产阶级,3 =下层阶级)
第4栏:Sect(分类:两个不同的区域)
第5栏:Y(1 =疾病,0 =无疾病)
第6栏:储蓄(1 =人有储蓄,0 =没有储蓄)
1 33 1 1 0 1
2 35 1 1 0 1
3 6 1 1 0 0
...
194 31 3 1 0 0
195 85 3 1 0 1
196 24 2 1 0 0
我尝试了以下命令来适应二元回归模型:
lm1=glm(Y~factor(Age)+factor(SES)+factor(Sect)+factor(Savings),family=binomial("logit"))
summary(lm1)
并不奇怪,这是一个烂摊子,因为有太多的年龄条款(年龄条款从2到85)...所以我的问题是,有人能够帮助我修改我的命令所以我'我能否有一个年龄估计,例如,5或10年的间隔增量?
此外,上述模型不包含任何互动条款。所以,如果我要考虑,说SES *年龄互动,我想看看每5年或10年的年龄估计,我该如何写输入命令?
答案 0 :(得分:2)
使用cut
将数字转换为系数,点击HERE了解有关剪切的更多信息。
您可能感兴趣的标志是breaks=
:
如果你只将一个数字传递给那个标志,它会将整个范围分成等效的间隔,就像我在下面给出的例子一样。您还可以传递一个数字向量,该向量将指定区间的划分方式。
data(mtcars)
library(plyr)
mydata <- mtcars
# Here I cut the whole numeric range into 10 equal intervals
mydata$myhp <- cut(mydata$hp, 10)
# Here is how the data looks like:
mpg cyl disp hp drat wt qsec vs am gear carb myhp
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 (108,137]
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 (108,137]
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 (80.1,108]
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 (108,137]
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 (165,194]
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 (80.1,108]
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 (222,250]
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 (51.7,80.1]
> str(mydata)
'data.frame': 32 obs. of 12 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
....
$ myhp: Factor w/ 10 levels "(51.7,80.1]",..: 3 3 2 3 5 2 7 1 2 3 ...