私はglmを使用してモデルフィットを生成しています。私のデータには、整数変数とカテゴリ変数が混在しています。カテゴリ変数はコードの形式であり、したがってデータの整数型です。最初にモデルを生成しようとしたとき、整数型のカテゴリ変数をそのまま渡してモデルを得ました。私は一度それを確認するためにp値を見ていたが、それは重要ではなかった重要な変数であることに気づいた。R glm異なるタイプの同じカテゴリ変数に対して異なるp値を生成する
これは、の形式変数である可能性があります。フォームで問題が発生しています。コード3と同じようにコード1よりも重要度が高くなる可能性があります(これは確かで、誰かがこれを確認できるならば大変です))。いくつかの研究をすると、カテゴリ整数変数をファクタに変換できることがわかりました。私は同じことをして、モデルを再生成しました。
バイナリに変換すると書かれていた記事もありましたので、私はそれをうまく行いました。私が感じる
- R1 >>バイナリ
に変換カテゴリ変数とカテゴリ因子変数
- p値が異なっているとして、考慮するかを混乱してい
- 1は
- は、私は出力と出力3のp値を関連することができ、より正確であると思われます2?
- どのようにGLMような変数を扱うんループの内側
- ホープGLMは
- 問題ではありません私のデータベースが大きい、我々はdata.table使用してGLM行うことができますか?
私は
library("plyr")
library("foreign")
library("data.table")
#####Generating sample data
set.seed(1200)
id <- 1:100
bill <- sample(1:3,100,replace = T)
nos <- sample(1:40,100,replace = T)
stru <- sample(1:4,100,replace = T)
type <- sample(1:7,100,replace = T)
value <- sample(100:1000,100,replace = T)
df1 <- data.frame(id,bill,nos,stru,type,value)
var1 <- c("bill","nos","stru")
options(scipen = 999)
r1 <- data.frame()
for(type1 in unique(df1$type)){
for(var in var1){
# dynamically generate formula
fmla <- as.formula(paste0("value ~ ", var))
# fit glm model
fit <- glm(fmla, data=df1[df1$type == type1,],family='quasipoisson')
p.value <- coef(summary(fit))[8]
cfit <- coef(summary(fit))
# create data frame
df2 <- data.frame(var = var, type = type1, basket="value",p.value = cfit[8],stringsAsFactors = F)
r1 <- rbind(r1, df2)
}
}
##### converting the categorical numeric variables to factor variables
df1$bill_f <- as.factor(bill)
df1$stru_f <- as.factor(stru)
var1 <- c("bill_f","nos","stru_f")
r2 <- data.frame()
for(type1 in unique(df1$type)){
for(var in var1){
# dynamically generate formula
fmla <- as.formula(paste0("value ~ ", var))
# fit glm model
fit <- glm(fmla, data=df1[df1$type == type1,],family='quasipoisson')
p.value <- coef(summary(fit))[8]
cfit <- coef(summary(fit))
# create data frame
df2 <- data.frame(var = var, type = type1, basket="value",p.value = cfit[8],stringsAsFactors = F)
r2 <- rbind(r2, df2)
}
}
#####converting the categorical numeric variables to binary format (1/0)
df1$bill_1 <- ifelse(df1$bill == 1,1,0)
df1$bill_2 <- ifelse(df1$bill == 2,1,0)
df1$bill_3 <- ifelse(df1$bill == 3,1,0)
df1$stru_1 <- ifelse(df1$stru == 1,1,0)
df1$stru_2 <- ifelse(df1$stru == 2,1,0)
df1$stru_3 <- ifelse(df1$stru == 3,1,0)
df1$stru_4 <- ifelse(df1$stru == 4,1,0)
var1 <- c("bill_1","bill_2","bill_3","nos","stru_1","stru_2","stru_3")
r3 <- data.frame()
for(type1 in unique(df1$type)){
for(var in var1){
# dynamically generate formula
fmla <- as.formula(paste0("value ~ ", var))
# fit glm model
fit <- glm(fmla, data=df1[df1$type == type1,],family='quasipoisson')
p.value <- coef(summary(fit))[8]
cfit <- coef(summary(fit))
# create data frame
df2 <- data.frame(var = var, type = type1, basket="value",p.value = cfit[8],stringsAsFactors = F)
r3 <- rbind(r3, df2)
}
}
なぜ動的に式を生成しますか? – Koot6133
@ Koot6133、私は異なる変数としたがって式の使用を変更したい – user1412