Poisson 가족과 함께 GLM에 대한 조언을 얻고 싶었습니다.
일정 기간 동안 각 개인이 찍은 물린 횟수에 대한 데이터 세트가 있습니다. 관찰 된 개인들이 서로 다른 기간 동안 수유하고 있었기 때문에 각 개인의 바이트 수 / 분으로 계산했을 때 정수가 아닌 숫자로 끝났습니다. 이제 지금까지 읽은 내용을 바탕으로 Poisson 제품군으로 GLM을 수행 할 수 있어야합니다. 그러나 오류가 발생하고 R이 정수가 아닌 것을 사용하고 있다는 사실을 좋아하지 않기 때문일 수 있습니다. 누구에게 조언이 있습니까?
Example <- structure(list(Species = c("Fish1", "Fish2", "Fish3", "Fish4",
"Fish5", "Fish6", "Fish7", "Fish1", "Fish2", "Fish3", "Fish4",
"Fish5", "Fish6", "Fish7", "Fish1", "Fish2", "Fish3", "Fish4",
"Fish5", "Fish6", "Fish7"), Site = c(1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3), Bite_Rate = c(3.5, 7.5,
0, 0, 2.45, 5.5, 6.5, 6.5, 7.5, 8.03, 32.1, 15.6, 18.2, 19.1,
20.5, 20.5, 3.5, 5.7, 6.7, 23.2, 0)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -21L), spec = structure(list(
cols = list(Species = structure(list(), class = c("collector_character",
"collector")), Site = structure(list(), class = c("collector_double",
"collector")), Bite_Rate = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
str(Example) # check structure
Example$Species<-as.factor(Example$Species) # set species as a factor
str(Example) # check structure
glm<-glm(Species~Bite_Rate, data=Example, family = poisson) # create the GLM
GLM을 실행할 때의 오류 메시지는 다음과 같습니다.
Error in if (any(y < 0)) stop("negative values not allowed for the 'Poisson' family") :
missing value where TRUE/FALSE needed
In addition: Warning message:
In Ops.factor(y, 0) : ‘<’ not meaningful for factors
나는 실제로 나를 조금 쫓아내는 음수 값이 없습니다. 어떤 조언이라도 대단히 감사하겠습니다!
편집 : 의견을 바탕으로 물린 횟수와 관찰 시간이 초 단위로 표시되도록 예제 데이터를 업데이트했습니다.
Example <- structure(list(Species = structure(c(1L, 2L, 3L, 4L, 5L, 6L,
7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L), .Label = c("Fish1",
"Fish2", "Fish3", "Fish4", "Fish5", "Fish6", "Fish7"), class = "factor"),
Site = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3,
3, 3, 3, 3, 3), Bites = c(0, 10, 18, 17, 6, 0, 1, 0, 19,
12, 7, 3, 5, 1, 5, 0, 10, 18, 17, 7, 25), Observed_Seconds = c(50,
33, 47, 20, 17, 10, 14, 21, 48, 10, 50, 33, 47, 20, 17, 10,
14, 21, 48, 10, 90)), row.names = c(NA, -21L), spec = structure(list(
cols = list(Species = structure(list(), class = c("collector_character",
"collector")), Site = structure(list(), class = c("collector_double",
"collector")), Bites = structure(list(), class = c("collector_double",
"collector")), Observed_Seconds = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"))
감사합니다!
정규화 한 초 (분모)와 실제 바이트 (수)를 알아야합니다.
다음으로 분을 오프셋으로 포함하고 응답 변수는 ~의 왼쪽에 있습니다.
fit = glm(Bites ~ Species,offset=log(Observed_Seconds),
family=poisson,data=Example)
요약을 볼 수 있습니다.
summary(fit)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
SpeciesFish1 -2.8679 0.4472 -6.413 1.42e-10 ***
SpeciesFish2 -1.1436 0.1857 -6.158 7.35e-10 ***
SpeciesFish3 -0.5738 0.1581 -3.629 0.000284 ***
SpeciesFish4 -0.7732 0.1543 -5.011 5.42e-07 ***
SpeciesFish5 -1.3269 0.1961 -6.766 1.33e-11 ***
SpeciesFish6 -1.7198 0.2887 -5.958 2.56e-09 ***
SpeciesFish7 -1.5244 0.1925 -7.921 2.35e-15 ***
매우 중요해 보이지만 확인해야 할 좋은 점은 데이터가 과도하게 분산되어 있는지 여부와 다른 요소 (예 : 사이트)도 포함하는 것입니다.
fit_quasi = glm(Bites ~ Species + factor(Site),offset=log(Observed_Seconds),
family=quasipoisson,data=Example)
summary(fit_quasi)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.9754 1.0713 -2.777 0.0167 *
SpeciesFish2 1.8487 1.1434 1.617 0.1319
SpeciesFish3 2.2731 1.1152 2.038 0.0642 .
SpeciesFish4 2.1246 1.1205 1.896 0.0823 .
SpeciesFish5 1.3533 1.1604 1.166 0.2662
SpeciesFish6 1.2754 1.2658 1.008 0.3336
SpeciesFish7 0.8922 1.1719 0.761 0.4612
factor(Site)2 -0.2325 0.5132 -0.453 0.6587
factor(Site)3 0.6118 0.4677 1.308 0.2154
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for quasipoisson family taken to be 5.521045)
포아송을 따르는 경우 분산은 약 1이지만이 경우에는 과다 분산됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다