현재 matlab에서 R로 마이그레이션 중이며 원하는 작업을 찾을 수 있습니다.데이터가 추정 할 매개 변수의 함수 일 때 R의 비선형 최소 제곱근
관측치가 미국의 주 (state) 인 R에서 비선형 모델을 추정하고 싶습니다. 주름이 모델은 다음과 같다, 즉 독립 변수 중 하나의 파라미터를 이용하여 계산 군 이상 상태 레벨 인덱스가 추정되도록이다
Y_s이 상태 레벨 변수 X_cs이다log(Y_s) = log(phi) + log(f(theta, X_cs)) + u_s
상태 내의 변수에 대한 카운티 수준의 관측치를 포함하는 벡터이고, f()는 상태에 대해 계산 된 인덱스의 스칼라 값을 반환합니다.
지금까지 함수에 전달 된대로 데이터를 변환하는 동안 R의 nls
함수를 사용해 보았습니다. 인덱스의 세부 사항에서 추출 코드의 간단한 버전은 다음과 같습니다
library(dplyr)
state <- c("AK", "AK", "CA", "CA", "MA", "MA", "NY", "NY")
Y <- c(3, 3, 5, 5, 6, 6, 4, 4)
X <- c(4, 5, 2, 3, 3, 5, 3, 7)
Sample <- data.frame(state, Y, X)
f <- function(data, theta) {
output <- data %>%
group_by(state) %>%
summarise(index = mean(X**theta),
Y = mean(Y))
}
model <- nls(Y ~ log(phi) + log(index),
data = f(Sample, theta),
start = list(phi = exp(3), theta = 1.052))
이 그라디언트가 단수임을 말해, 오류를 반환합니다. 내 생각에 R은 수식에 theta
매개 변수를 사용하는 방법을 알 수 없기 때문입니다.
nls
을 사용하는 방법이 있습니까? 수동으로 최소화 할 기준 함수 (예 : log(Y_s) - log(phi) - log(f(theta, X_cs))
)를 정의하고 최소화 루틴을 사용하여 매개 변수 값을 추정 할 수 있음을 알고 있습니다. 그러나 나는 매개 변수 추정치에 대한 신뢰 구간을 가지는 것과 같은 nls
의 사후 예측 기능을 사용하려고합니다. 어떤 도움을 많이 주셨습니다.
감사합니다. @Roland. 방금 작성한이 패키지에 포함 된 패키지 만 포함하도록 질문을 편집하고 교차 게시 된 버전의 질문을 삭제했습니다. 여러분의 솔루션이 어떻게 작동하는지 이해하기 위해서 - 표준 에러와 같은 것을 계산할 때, nls 패키지는'length (Y)'가 'length (unique (Y))'보다는'observations'의 수라고 생각합니다. 맞지? –
상태 당 데이터 수의 수가 다른 경우 가중치를 포함했습니다. 표준 오류 및 p 값이이 문제에 대해 중요하다면 부트 스트랩 표준 오류를 계산하려고합니다 (충분한 양의 데이터가 있다고 가정). – Roland
감사합니다. 부트 스트랩을 사용하는 특별한 이유가 있습니까? 일반적인 비선형 성 이외의 것이 있습니까? 47 개 주에서 그룹화 된 약 3000 개의 카운티에 대한 관찰이 있습니다. –