scitb5函数1( 二 )

<-c("pathsize", "lnpos", "er", "pr", "histgrad","pathscat", "ln_yesno")Interaction<-c("histgrad","er", "pr")
使用函数生成交互效应表 , 使用cox回归必须定义时间 , 不然会报错
out<-scitb5(data=http://www.kingceram.com/post/bc,x="age",y="status",Interaction=Interaction,cov = cov1,time="time",family="cox")
接下来做线性回归 , 这里使用的是包的汽车数据
bc<-as.data.frame(ggplot2::mpg)dput(names(bc))
分类变量转成因子
bc$cyl<-as.factor(bc$cyl)bc$model<-as.factor(bc$model)bc$drv<-as.factor(bc$drv)bc$fl<-as.factor(bc$fl)bc$class<-as.factor(bc$class)bc$trans<-as.factor(bc$trans)
定义协变量和分类变量
cov1<-c("model", "displ","cyl", "trans", "drv", "cty", "hwy", "fl", "class")Interaction<-c("drv","fl","class","model")
做表 , 线性回归中这里系数 , 使用β表示 。
out<-scitb5(data=http://www.kingceram.com/post/bc,x="displ",y="hwy",Interaction=Interaction,cov = cov1,family="linear")
这里出现一个问题 , 为什么我们这里定义了“drv",“fl”,“class”,“model"4个分层变量 , 然后最终只做出了“drv"这个变量 , 
信息提示"fl”,“class”,"model"这3个变量不适合进行分层 。

scitb5函数1

文章插图
[1] “fl is Notfor ”
[1] “class is Notfor ”
[1] “model is Notfor ”
这个问题我等会再说 , 我们通过一个粉丝的数据来说明这个问题 , 我们先导入这个数据
bc<-read.csv("E:/r/fensi/final1.csv",sep=',',header=TRUE)dput(names(bc))
转换分类变量为因子
bc[,c("x2", "x3", "x4", "x5", "x6", "x7")] <- lapply(bc[,c("x2", "x3", "x4", "x5", "x6", "x7")], factor)str(bc)
定义协变量和交互变量
Interaction<-c("x2", "x3", "x4","x5")cov<-c("x2", "x3", "x4", "x5", "x6", "x7")
生成表格 , 这里也是值生成了3个 , x5没有生成
out<-scitb5(data=http://www.kingceram.com/post/bc,x="x1",y="y",Interaction=Interaction,cov = cov,family="logit")
显示"x5 is Notfor " , 意思是x5这个变量不适合做分层交互 , 为什么呢?我们先来看一下x5这个数据它 , 分的层很多 , 分类4个层
levels(factor(bc[,"x5"]))
我们取一个亚组来看看 , 它x5==1的时候x6、x7的数据全部是0 , 没有其他的变量了 , 这样组合不了模型 , 所以会报错 , 所以函数会自动放弃这个变量 。
be<-subset(bc,bc$x5==1)
所以说 , 如果你的数据不多 , 分层变量中分为太多类型 , 会导致建模失败 , 不能进行分类 。我在在其他的包也试了一下 , 也是一样建模失败 。
获取函数代码请参看这篇文章:
函数1.4版本(交互效应函数P for )发布----用于一键生成交互效应表
本函数还在继续更新中 , 如有错误或者有什么好的建议 , 欢迎和我联系 。