99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀R語言的一個(gè)小范例:數(shù)值模擬和繪圖_數(shù)據(jù)分析師培訓(xùn)
R語言的一個(gè)小范例:數(shù)值模擬和繪圖_數(shù)據(jù)分析師培訓(xùn)
2015-06-30
收藏

R語言的一個(gè)小范例:數(shù)值模擬和繪圖_數(shù)據(jù)分析師培訓(xùn)


 下午上課,要給經(jīng)濟(jì)工程專業(yè)的本科生簡要介紹一下用于統(tǒng)計(jì)分析和繪圖的R語言??紤]到他們所在的年級(jí)并沒有系統(tǒng)的學(xué)完統(tǒng)計(jì)學(xué)和計(jì)量經(jīng)濟(jì)學(xué),打算不從回歸分析入手,先教他們對(duì)R的基本操作有個(gè)了解。寫了如下這段代碼,準(zhǔn)備課上帶同學(xué)們做一下。順便發(fā)到網(wǎng)上,供大家參考。

背景:

       假定\beta是一個(gè)由\alpha \in (0,1)決定的量,滿足關(guān)系\beta = \left( \frac{\alpha} {1-\alpha}\right)^{-\alpha}       問在\alpha的取值空間內(nèi),\beta值的走勢如何,以及最大值出現(xiàn)在什么地方,并繪圖說明。

talk is cheap. show me the code (廢話少說,放碼過來)

       一點(diǎn)一點(diǎn)寫,并適當(dāng)做說明

qiu <- function(alpha){(alpha / (1-alpha))^{-alpha}}

       這段代碼的意思是,定義一個(gè)名為qiu的function,輸入值alpha之后,會(huì)自動(dòng)求得對(duì)應(yīng)的值。比如

> qiu(0.67)
[1] 0.622206

       現(xiàn)在我們來搞alpha。

x <- seq(0.001,0.99, by=0.001)

       定義一個(gè)數(shù)組x,取值從0.01開始,每次增加0.001單位,直到0.999。然后看看x這個(gè)數(shù)組的情況吧

x
length(x)

       結(jié)果就不貼出來了?,F(xiàn)在,把x的值交給qiu來處理,生成的一系列值,我們定義為y。

y <- qiu(x)

       畫個(gè)草圖來看看分布情況如何

plot(y~x)

       顯然,隨著x從0到1, y并不是單調(diào)變化的:先增大,后減小。那么,y的最高值是多少?對(duì)應(yīng)的x值是多大?

max(y)
x[which.max(y)]

       第一行告訴你y的最大值1.3211

       第二行的which.max(y)告訴你當(dāng)y值最大時(shí),所對(duì)應(yīng)的編號(hào)是218。把218帶入x中,找到對(duì)應(yīng)的x的值:x[218]=0.218

schx=c(x[which.max(y)])
schy=c(max(y))

       分別將y值最大時(shí)的x和y值,定義為schx和schy,供下文使用。

       重新畫張圖,前面那張?zhí)罅?/span>

dev.off()
plot(y~x, ylim=c(0,1.5), xlim=c(0,1), type="l", ylab=expression(beta), xlab=expression(alpha))

       第一行dev.off()告訴R的繪圖程序,關(guān)閉此前的圖。第二行的ylim和xlim定義x和y軸的取值范圍。type是告訴plot程序,散點(diǎn)圖以line的形式呈現(xiàn)。ylab和xlab是x和y軸的名稱:由于我們需要使用希臘字母,因此需要使用expression(alpha)和expression(beta)來打出\alpha\beta。

       比原來那張圖看著帥一些了是吧。繼續(xù)調(diào)整。

par(new=TRUE)
plot(max(y)~x[which.max(y)], pch=2, lty=3, col="red",ylim=c(0,1.5), xlim=c(0,1), ylab="", xlab="")

       第一行告訴繪圖程序,我下面要在原有那張圖的基礎(chǔ)上,繼續(xù)添加內(nèi)容,不要覆蓋原圖。

       第二行中,把y最大值時(shí)的點(diǎn)標(biāo)出來,pch表示這個(gè)點(diǎn)的形狀(1是空心圓,2是空心三角,等等,你們自己試試看從1到20吧)。col="red",將這個(gè)點(diǎn)畫成紅色。ylab和xlab設(shè)為空,ylim和xlim和上文的值相同,使得兩張圖x軸、y軸重合。

       差不多行了。如果你想繼續(xù)和我一樣騷包一點(diǎn)的話,跟我向下繼續(xù)設(shè)置。

text(schx, schy-0.2, substitute(paste("(", xx ,", ", yy, ")"), list(xx=schx,yy=schy)))

       這行代碼的作用是,在途中加入一段文字。語法text(a,b,c)的意思是,a代表橫坐標(biāo)的位置,b代表縱坐標(biāo)的位置,c代表所需要加入的語言。a和b加在一起,告訴plot()需要把一段文字c放在(a,b)這個(gè)地方。

       c需要做進(jìn)一步的說明。"(", 以及 ")", 表示這其中是有純文字部分的,plot()直接把它們打出來即可(注意逗號(hào)是要保留的)。加在兩個(gè)小括號(hào)中間的是xx和yy,這是兩個(gè)值。

              substitute(paste(),list()):

       substitute()中包括兩部分,一部分是paste(),一部分是list()。paste告訴plot()要加入這段東西了,其中包括兩個(gè)待賦值的xx和yy。list()為它們分別賦值。

       看看效果吧。

       看起來還可以。要是能把\beta = \left( \frac{\alpha}{1-\alpha} \right)^{-\alpha}       這個(gè)式子也寫上去就更完美了。

text(0.4, 0.5, 
substitute(
paste(beta == (frac(alpha, 1-alpha))^{-alpha}, 
",", 
"0<", alpha, "<1")
)
)

       收工。這張圖看起來還是有些難看。。。。不過基本信息都已經(jīng)有了。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }