TL; DR은 주로 약 연속 사회자 생각으로 패키지의 저자처럼 보이는; 당신이 mod1="cultureEuropean"
를 지정하면
그것은이에 서비스 될 것이다 (... 그것은 분별 또는 아니라면 내가 아무 생각이 없음) 함수가 대답을 돌려줍니다 (즉,이 출력에 매개 변수 대응의 이름과 일치합니다)
:
sibdat2 <- read.csv("sibdat2.csv")
library(pequod)
newmod <- lmres(SLS ~ csibdiff*culture, data=sibdat2)
newmodss <- simpleSlope(newmod, pred="csibdiff", mod1="culture")
이 데이터를 확인 : 커뮤니티하여 pequod
패키지 (maintainer("pequod")
)이 문제에 대해 알고의 관리자들 ...
읽기 데이터를하자 오류를 복제하는
summary(sibdat2)
우리는 csibdiff
일부 NA
값을해야합니까, 그래서이 ...
sibdat2B <- na.omit(sibdat2)
을 제거하려고하지만 실제로는 (이전과 같은 오류가) 도움이되지 않습니다.
플롯 데이터가 하나 더 여기가에 없을거야
library(ggplot2); theme_set(theme_bw())
ggplot(sibdat2B,aes(csibdiff,SLS,colour=culture))+
stat_sum(aes(size=factor(..n..))) +
geom_smooth(method="lm")
다른 기묘하지만, 분명히 잘못된 아무것도 확인 ...
사용 traceback()
문제가 위치를 대략적으로 볼 수 :
traceback()
3: simple.slope(object, pred, mod1, mod2, coded)
2: simpleSlope.default(newmod, pred = "csibdiff", mod1 = "culture")
1: simpleSlope(newmod, pred = "csibdiff", mod1 = "culture")
우리는 바로 범죄 현장으로 이동합니다 options(error=recover)
를 사용하지만,의 대신 단계별 디버깅을 시도 할 수있다 ...
debug(pequod:::simple.slope)
우리는 우리가 볼 수 있습니다 통해 이동으로 :
nomZ <- names(regr$coef)[pos_mod]
nomZ ## character(0)
조금 더 먼 것을 보면 pos_mod
도 길이가 0 인 정수임을 알 수 있습니다. 먼 뒤로, 우리는 코드가 수식어의 이름에 대한 매개 변수 이름 (분산 - 공분산 행렬의 행 이름)을 조사하고있는 것을 볼 수 있습니다 ... 그러나 그것은 없습니다.
는
debug: pos_pred_mod1 <- fI + grep(paste0("\\b", mod1, "\\b"), jj[(fI +
1):(fI + fII)])
Browse[2]> pos_mod
## integer(0)
Browse[2]> jj[1:fI]
## [[1]]
## [1] "(Intercept)"
##
## [[2]]
## [1] "csibdiff"
##
## [[3]]
## [1] "cultureEuropean"
Browse[2]> mod1
## [1] "culture"
이 솔루션은
(newmodss <- simpleSlope(newmod, pred="csibdiff", mod1="cultureEuropean"))
## Simple Slope:
## simple slope standard error t-value p.value
## Low cultureEuropean (-1 SD) -0.2720128 0.2264635 -1.201133 0.2336911
## High cultureEuropean (+1 SD) 0.2149291 0.1668690 1.288011 0.2019241
우리는
NaNs produced
에 대한 몇 가지 경고를받을 수 있나요 ...
이 것을 변수를 찾기 위해
simpleSlope
에게 - 당신은 멀리 자신을 발굴해야합니다 당신이 그들에 대해 걱정할 필요가 있는지보기 위해서.
'nomZ'는 길이가 0 인 것을 의미합니다. 즉, 아무것도 없습니다. 예를 들어'if (c() % in % 1 : 5) 1 else 2'를 시도해보십시오. 여기서'c()'는 빈 벡터입니다. 'nomZ'가 변수가 아니라면 (예 :'simpleSlope'의 내부 변수), 수학이 실패하는 특이점이나 다른 수학적 시나리오를 타격 할 가능성이 큽니다. – r2evans
재생산 가능한 예제를 제공해 주시겠습니까? –
@BenBolker 데이터 세트에 대한 링크를 추가했습니다! – user6591823