Needs["RLink`"]
(* For Mac and MMA 10*)
SetEnvironment[ "DYLD_LIBRARY_PATH" ->"/Library/Frameworks/R.framework/Resources/lib"]
InstallR["RHomeLocation" -> "/Library/Frameworks/R.framework/Resources", "RVersion" -> 3];
REvaluate["R.version.string"]
(* Load packages*)
REvaluate["library(psych);"]
REvaluate["library(nortest);"]
REvaluate["library(GenABEL);"]
(* 因素分析,主成分法萃取,變異及大化法轉軸 *)
myfac=Map[REvaluate["{xx<-principal(iris[,1:4],nfactors="<>ToString[#]<>",
rotate=\"varimax\");xx$loadings}"]&,{2,3,4}];
myfac
(* 輸出因素負荷矩陣 *)
Reverse[SortBy[myfac[[1,1]],{#[[1]],#[[2]]}&]]//TableForm
TableForm/@myfac[[All,1]]
(* 因素分析資料*)
fadata = {
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 4, 5, 6},
{1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 3, 4, 3, 3, 3, 4, 6, 5},
{3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, 6},
{3, 3, 4, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 5, 6, 4},
{1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 6, 4, 5},
{1, 1, 1, 2, 1, 3, 3, 3, 4, 3, 1, 1, 1, 2, 1, 6, 5, 4}};
(* 定義資料*)
RSet["factor", Transpose@fadata];
(* 在R中計算相關係數矩陣,傳回MMA小數後四捨五入 *)
Round[REvaluate["cor(factor)"], 0.0001] // MatrixForm
(* 因素分析 *)
REvaluate["factanal(factor, factors = 3)$loadings"]
(* 輸出因素負荷矩陣 *)
TableForm[#[[1]], TableHeadings -> {None, #[[-1, -1, -1, -1]]}] & /@
{REvaluate["factanal(factor, factors = 3)$loadings"]} // Column
(* 迴歸分析 *)
REvaluate["{
data(iris)
reg <- lm( Sepal.Length ~ Species, data=iris )
summary.text <- capture.output(print( summary(reg)) )
}"]
StringJoin@Riffle[#, "\n"] &@REvaluate["{
data(iris)
reg <- lm( Sepal.Length ~ Species, data=iris )
summary.text <- capture.output(print( summary(reg)) )
}"]
(* 產生常態隨機變數 *)
mydata=REvaluate["rnorm(100,mean=0,sd=1)"]&/@Range[100];
(* MMA次數分配 *)
\[ScriptCapitalD] = HistogramDistribution[mydata[[1]]]
(* MMA PDF & CDF *)
GraphicsRow[DiscretePlot[#[\[ScriptCapitalD], x], {x, -4, 4, .01},
PlotLabel -> #] & /@ {PDF, CDF}]
(* shapiro test, ks.test *)
shapiro[data_] := Block[{temp},
RSet["temp", data];
REvaluate[
"{xx=shapiro.test(temp); yy=ks.test(temp,\"pnorm\",0,1); zz=lillie.test(temp);
c(xx$statistic,xx$p.value,yy$statistic,yy$p.value,zz$statistic,zz$p.value)}"][[1]] ]
RSet["rn1", RandomReal[{0, 10}, 1000]];
rn2 = RandomReal[NormalDistribution[0, 1], 1000];
REvaluate["rntransform(rn1)"] // Short
Histogram[#, Frame -> True] & /@ {rn2, REvaluate["rntransform(rn1)"]}
ShapiroWilkTest[#, {"TestStatistic", "PValue"}] & /@ {rn2, REvaluate["rntransform(rn1)"]}
(* 利用RCurl擷取網路資料 *)
gosspost[n_]:=REvaluate["
{library(RCurl);
curl<-getCurlHandle();
curlSetOpt(cookie=\"over18=1\",followlocation=TRUE,curl=curl);
url<-\"https://www.ptt.cc/bbs/Gossiping/index" <> ToString[n] <>
".html\";
html<-getURL(url,curl=curl)
}"][[1]];
Gossiping =
Cases[ImportString[
StringReplace[gosspost[#], {"\n" -> "", "\t" -> ""}],
"XMLObject"],
XMLElement[
"div", {"class" -> "r-ent"}, {XMLElement[
"div", {"class" -> "nrec"}, {XMLElement[
"span", {"class" -> "hl f2"}, {_}]}],
XMLElement["div", {"class" -> "mark"}, {}],
XMLElement[
"div", {"class" -> "title"}, {XMLElement[
"a", {"shape" -> "rect",
"href" -> postlink_}, {posttile_}]}],
XMLElement[
"div", {"class" -> "meta"}, {XMLElement[
"div", {"class" -> "date"}, {_}],
XMLElement[
"div", {"class" -> "author"}, {author_}]}]}] :> {postlink,
posttile, author},
Infinity] & /@ Range[20861, 20862, 1];
Flatten[Gossiping, 1] // TableForm
Use R within Mathematica
由 戴忠淵 於 2017年6月22日星期四
下午10:22 發表

讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~