私はこの問題を解決するのを助けてくれることを願っています。 x軸で2乗項(x2)を使用しています(値は0から100までです)。元のxは正と負の値を持ちます(値は-10から10になります)。 x2では3DグラフのX軸で値はすべて正の値です。 x2 = 100はx = -10^2とx = 10 ^から得られる値であり、x2 = 25はx = -5^2とx = 5^2などから来ると考える。私はグラフの「半分」しか持っていません。 1)X軸に-10から10までの元の縮尺でグラフを作成します。 2)グラフの他の半分を完成させて非線形の関係にする(すなわち、-10から0に対応する表面を完成させる。これは私が今持っているものの鏡であると仮定する)。異なる色を使用して軸とミラーグラフを変更してRの非線形面を完成させようR
あなたは非線形な関係をよりよく見ることができますが、私は、コードを簡素化するためにそれらをここに含まれていませんでした。
平方根が常に正であるため、負の値をプロットxに戻すことができないため、Excelでデータを複製しました。負の値を追加しました(値は-100から100になります)。もう一度Rリストを作成しました。これは解決策ではありませんが、それでもx2のスケールは同じですが、とにかく動作しません。
これは私がグラフをプロットする方法である:
データ:https://www.dropbox.com/s/fv943jf35eqtkd8/NSSH.csv?dl=0
リンク機能コード:
logexp <- function(days = 1)
{
linkfun <- function(mu) qlogis(mu^(1/days))
linkinv <- function(eta) plogis(eta)^days
mu.eta <- function(eta) days * plogis(eta)^(days-1) *
.Call("logit_mu_eta", eta, PACKAGE = "stats")
valideta <- function(eta) TRUE
link <- paste("logexp(", days, ")", sep="")
structure(list(linkfun = linkfun, linkinv = linkinv,
mu.eta = mu.eta, valideta = valideta, name = link),
class = "link-glm")
}
3Dグラフ:
library(akima)
x <- NSSH$reLDM
x2<- x^2
y <- NSSH$yr
y2 <-y^2
n <-NSSH$AgeDay1
z <- NSSH$survive
m <- glm(z~x2+y+y2+x2:y+n,family=binomial(link=logexp(NSSH$exposure)))
# interaction
i <- 25
xtemp <- seq(min(x),max(x),length.out=i)
xrange <- rep(xtemp,times=i)
x2temp <- seq(min(0),max(100),length.out=i)
x2range <- rep(x2temp,times=i)
ytemp <- seq(min(y),max(y),length.out=i)
yrange <- rep(ytemp,each=i)
y2temp <- seq(min(y2),max(y2),length.out=i)
y2range <- rep(y2temp,each=i)
ntemp <- rep(mean(n),times=i)
nrange <- rep(ntemp,times=i)
newdata <- data.frame(x2=x2range,y=yrange,y2=y2range,n=nrange)
zhat <- predict(m,newdata=newdata)
NS <- zhat^27
xyz <- interp(x2range,yrange,NS)
quartz()
persp(xyz,
theta = 35, phi = 50,col="blue", border="grey40", ticktype = "detailed", zlim=c(0,1)) -> res2
が方法はありますI私は "ミラー"として持っている "半分"のグラフをコピーして、その部分の隣に置くことができます私はすでにxの元のスケールを使用していますか?
おかげであなたの助けのためにたくさん!
更新日:
3Dグラフは完璧です!
しかし、私は等高線図を作るために、「半分グラフ」を使用する場合には、次のようになります。
そして今、それはこのようになります新しいグラフで、私は次の0の周りなぜ起源だろう値0.7(赤い円内の領域)は、最初の等高線プロットと同じには見えません。あなたは何か考えていますか?それを修正することは可能ですか?再度、感謝します。
image(xyz2,col = "white")
contour(xyz2,add=T)
おかげでそれが動作ロットの@ cuttlefish44 !!! NSはtypoではないので、z値の最終的な推定は、(繁殖力を用いて)27の累乗(またはインキュベーション日)の変換を用いて行わなければならない。 – MSS
あなたは投稿の更新を見てください、私は質問がありますし、多分あなたは再び、おかげで助けることができます! – MSS
はい@ cuttlefish44、私はzlim 0,1を返します。私の新しい質問(私はこれについて新しい記事を書いておくべきですか?)は、値を示す等高線プロットについてです。ラインが0から近づくと、カーブ上の「うつ病」(赤い円を参照してください)最初の等高線図のように連続的に上昇します。 – MSS