0

所以我试图为一个问题拟合一个二元逻辑回归模型来估计疾病的几率,这里是原始的疾病爆发数据(有 196 个观察值,我删除了一些数据条目):

第 1 列:ID(人)

第 2 栏:人的年龄

第 3 列:SES(个人的社会经济地位)(1=上层,2=中层,3=下层)

Column 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*Age 交互,并且我想查看每 5 年或 10 年的年龄估计值,我应该如何编写输入命令?

4

1 回答 1

2

用于cut将数字转换为因子,单击此处了解有关剪切的更多信息。

您可能感兴趣的标志将是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 ...
于 2013-12-04T03:06:00.287 回答